@lightningtv/solid 3.0.0-2 → 3.0.0-20

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 (126) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +6 -0
  3. package/dist/src/jsx-runtime.d.ts +1 -3
  4. package/dist/src/primitives/Column.jsx +9 -10
  5. package/dist/src/primitives/Column.jsx.map +1 -1
  6. package/dist/src/primitives/Grid.d.ts +15 -6
  7. package/dist/src/primitives/Grid.jsx +35 -22
  8. package/dist/src/primitives/Grid.jsx.map +1 -1
  9. package/dist/src/primitives/Image.d.ts +8 -0
  10. package/dist/src/primitives/Image.jsx +24 -0
  11. package/dist/src/primitives/Image.jsx.map +1 -0
  12. package/dist/src/primitives/KeepAlive.d.ts +30 -0
  13. package/dist/src/primitives/KeepAlive.jsx +77 -0
  14. package/dist/src/primitives/KeepAlive.jsx.map +1 -0
  15. package/dist/src/primitives/Lazy.d.ts +8 -7
  16. package/dist/src/primitives/Lazy.jsx +49 -23
  17. package/dist/src/primitives/Lazy.jsx.map +1 -1
  18. package/dist/src/primitives/Marquee.d.ts +64 -0
  19. package/dist/src/primitives/Marquee.jsx +86 -0
  20. package/dist/src/primitives/Marquee.jsx.map +1 -0
  21. package/dist/src/primitives/Preserve.d.ts +4 -0
  22. package/dist/src/primitives/Preserve.jsx +11 -0
  23. package/dist/src/primitives/Preserve.jsx.map +1 -0
  24. package/dist/src/primitives/Row.jsx +9 -10
  25. package/dist/src/primitives/Row.jsx.map +1 -1
  26. package/dist/src/primitives/Suspense.d.ts +22 -0
  27. package/dist/src/primitives/Suspense.jsx +33 -0
  28. package/dist/src/primitives/Suspense.jsx.map +1 -0
  29. package/dist/src/primitives/Virtual.d.ts +18 -0
  30. package/dist/src/primitives/Virtual.jsx +434 -0
  31. package/dist/src/primitives/Virtual.jsx.map +1 -0
  32. package/dist/src/primitives/VirtualGrid.d.ts +13 -0
  33. package/dist/src/primitives/VirtualGrid.jsx +139 -0
  34. package/dist/src/primitives/VirtualGrid.jsx.map +1 -0
  35. package/dist/src/primitives/VirtualList.d.ts +11 -0
  36. package/dist/src/primitives/VirtualList.jsx +96 -0
  37. package/dist/src/primitives/VirtualList.jsx.map +1 -0
  38. package/dist/src/primitives/VirtualRow.d.ts +13 -0
  39. package/dist/src/primitives/VirtualRow.jsx +97 -0
  40. package/dist/src/primitives/VirtualRow.jsx.map +1 -0
  41. package/dist/src/primitives/Visible.d.ts +0 -1
  42. package/dist/src/primitives/Visible.jsx +1 -1
  43. package/dist/src/primitives/Visible.jsx.map +1 -1
  44. package/dist/src/primitives/announcer/announcer.d.ts +2 -0
  45. package/dist/src/primitives/announcer/announcer.js +7 -5
  46. package/dist/src/primitives/announcer/announcer.js.map +1 -1
  47. package/dist/src/primitives/announcer/index.d.ts +5 -1
  48. package/dist/src/primitives/announcer/index.js +8 -2
  49. package/dist/src/primitives/announcer/index.js.map +1 -1
  50. package/dist/src/primitives/announcer/speech.d.ts +2 -2
  51. package/dist/src/primitives/announcer/speech.js +157 -28
  52. package/dist/src/primitives/announcer/speech.js.map +1 -1
  53. package/dist/src/primitives/createFocusStack.d.ts +4 -4
  54. package/dist/src/primitives/createFocusStack.jsx +15 -6
  55. package/dist/src/primitives/createFocusStack.jsx.map +1 -1
  56. package/dist/src/primitives/createTag.d.ts +8 -0
  57. package/dist/src/primitives/createTag.jsx +20 -0
  58. package/dist/src/primitives/createTag.jsx.map +1 -0
  59. package/dist/src/primitives/index.d.ts +13 -3
  60. package/dist/src/primitives/index.js +13 -3
  61. package/dist/src/primitives/index.js.map +1 -1
  62. package/dist/src/primitives/types.d.ts +3 -0
  63. package/dist/src/primitives/useHold.d.ts +27 -0
  64. package/dist/src/primitives/useHold.js +54 -0
  65. package/dist/src/primitives/useHold.js.map +1 -0
  66. package/dist/src/primitives/useMouse.d.ts +24 -1
  67. package/dist/src/primitives/useMouse.js +153 -47
  68. package/dist/src/primitives/useMouse.js.map +1 -1
  69. package/dist/src/primitives/utils/chainFunctions.d.ts +30 -4
  70. package/dist/src/primitives/utils/chainFunctions.js +14 -3
  71. package/dist/src/primitives/utils/chainFunctions.js.map +1 -1
  72. package/dist/src/primitives/utils/createBlurredImage.d.ts +56 -0
  73. package/dist/src/primitives/utils/createBlurredImage.js +223 -0
  74. package/dist/src/primitives/utils/createBlurredImage.js.map +1 -0
  75. package/dist/src/primitives/utils/createSpriteMap.d.ts +2 -2
  76. package/dist/src/primitives/utils/createSpriteMap.js.map +1 -1
  77. package/dist/src/primitives/utils/handleNavigation.d.ts +85 -5
  78. package/dist/src/primitives/utils/handleNavigation.js +242 -69
  79. package/dist/src/primitives/utils/handleNavigation.js.map +1 -1
  80. package/dist/src/primitives/utils/withScrolling.d.ts +8 -1
  81. package/dist/src/primitives/utils/withScrolling.js +25 -6
  82. package/dist/src/primitives/utils/withScrolling.js.map +1 -1
  83. package/dist/src/render.d.ts +6 -5
  84. package/dist/src/render.js +4 -0
  85. package/dist/src/render.js.map +1 -1
  86. package/dist/src/solidOpts.d.ts +3 -2
  87. package/dist/src/solidOpts.js +31 -15
  88. package/dist/src/solidOpts.js.map +1 -1
  89. package/dist/src/universal.d.ts +25 -0
  90. package/dist/src/universal.js +232 -0
  91. package/dist/src/universal.js.map +1 -0
  92. package/dist/src/utils.d.ts +2 -0
  93. package/dist/src/utils.js +8 -0
  94. package/dist/src/utils.js.map +1 -1
  95. package/dist/tsconfig.tsbuildinfo +1 -1
  96. package/jsx-runtime.d.ts +2 -4
  97. package/package.json +19 -10
  98. package/src/primitives/Column.tsx +10 -12
  99. package/src/primitives/Grid.tsx +57 -33
  100. package/src/primitives/Image.tsx +36 -0
  101. package/src/primitives/KeepAlive.tsx +124 -0
  102. package/src/primitives/Lazy.tsx +60 -37
  103. package/src/primitives/Marquee.tsx +149 -0
  104. package/src/primitives/Preserve.tsx +18 -0
  105. package/src/primitives/Row.tsx +11 -12
  106. package/src/primitives/Suspense.tsx +39 -0
  107. package/src/primitives/Virtual.tsx +478 -0
  108. package/src/primitives/VirtualGrid.tsx +199 -0
  109. package/src/primitives/Visible.tsx +1 -2
  110. package/src/primitives/announcer/announcer.ts +16 -10
  111. package/src/primitives/announcer/index.ts +12 -2
  112. package/src/primitives/announcer/speech.ts +188 -27
  113. package/src/primitives/createFocusStack.tsx +18 -7
  114. package/src/primitives/createTag.tsx +31 -0
  115. package/src/primitives/index.ts +17 -3
  116. package/src/primitives/types.ts +10 -0
  117. package/src/primitives/useHold.ts +69 -0
  118. package/src/primitives/useMouse.ts +283 -66
  119. package/src/primitives/utils/chainFunctions.ts +40 -9
  120. package/src/primitives/utils/createBlurredImage.ts +366 -0
  121. package/src/primitives/utils/createSpriteMap.ts +6 -4
  122. package/src/primitives/utils/handleNavigation.ts +307 -84
  123. package/src/primitives/utils/withScrolling.ts +47 -16
  124. package/src/render.ts +9 -7
  125. package/src/solidOpts.ts +34 -19
  126. package/src/utils.ts +10 -0
@@ -0,0 +1,434 @@
1
+ import * as s from 'solid-js';
2
+ import * as lng from '@lightningtv/solid';
3
+ import * as lngp from '@lightningtv/solid/primitives';
4
+ import { List } from '@solid-primitives/list';
5
+ import * as utils from '../utils.js';
6
+ function createVirtual(component, props, keyHandlers) {
7
+ const isRow = component === lngp.Row;
8
+ const axis = isRow ? 'x' : 'y';
9
+ const [cursor, setCursor] = s.createSignal(props.selected ?? 0);
10
+ const bufferSize = s.createMemo(() => props.bufferSize || 2);
11
+ const scrollIndex = s.createMemo(() => props.scrollIndex || 0);
12
+ const items = s.createMemo(() => props.each || []);
13
+ const itemCount = s.createMemo(() => items().length);
14
+ const scrollType = s.createMemo(() => props.scroll || 'auto');
15
+ const selected = () => {
16
+ if (props.wrap) {
17
+ return Math.max(bufferSize(), scrollIndex());
18
+ }
19
+ return props.selected || 0;
20
+ };
21
+ let cachedScaledSize;
22
+ let targetPosition;
23
+ let cachedAnimationController;
24
+ const uniformSize = s.createMemo(() => {
25
+ return props.uniformSize !== false;
26
+ });
27
+ const [slice, setSlice] = s.createSignal({
28
+ start: 0,
29
+ slice: [],
30
+ selected: 0,
31
+ delta: 0,
32
+ shiftBy: 0,
33
+ atStart: true,
34
+ });
35
+ function normalizeDeltaForWindow(delta, windowLen) {
36
+ if (!windowLen)
37
+ return 0;
38
+ const half = windowLen / 2;
39
+ if (delta > half)
40
+ return delta - windowLen;
41
+ if (delta < -half)
42
+ return delta + windowLen;
43
+ return delta;
44
+ }
45
+ function computeSize(selected = 0) {
46
+ if (uniformSize() && cachedScaledSize) {
47
+ return cachedScaledSize;
48
+ }
49
+ else if (viewRef) {
50
+ const gap = viewRef.gap || 0;
51
+ const dimension = isRow ? 'width' : 'height'; // This can't be moved up as it depends on viewRef
52
+ const prevSelectedChild = viewRef.children[selected];
53
+ if (prevSelectedChild instanceof lng.ElementNode) {
54
+ const itemSize = prevSelectedChild[dimension] || 0;
55
+ const focusStyle = prevSelectedChild.style?.focus;
56
+ const scale = (focusStyle?.scale ?? prevSelectedChild.scale ?? 1);
57
+ const scaledSize = itemSize * (props.factorScale ? scale : 1) + gap;
58
+ cachedScaledSize = scaledSize;
59
+ return scaledSize;
60
+ }
61
+ }
62
+ return 0;
63
+ }
64
+ function computeSlice(c, delta, prev) {
65
+ const total = itemCount();
66
+ if (total === 0)
67
+ return { start: 0, slice: [], selected: 0, delta, shiftBy: 0, atStart: true };
68
+ const length = props.displaySize + bufferSize();
69
+ let start = prev.start;
70
+ let selected = prev.selected;
71
+ let atStart = prev.atStart;
72
+ let shiftBy = -delta;
73
+ switch (scrollType()) {
74
+ case 'always':
75
+ if (props.wrap) {
76
+ start = utils.mod(c - 1, total);
77
+ selected = 1;
78
+ }
79
+ else {
80
+ start = utils.clamp(c - bufferSize(), 0, Math.max(0, total - props.displaySize - bufferSize()));
81
+ if (delta === 0 && c > 3) {
82
+ shiftBy = c < 3 ? -c : -2;
83
+ selected = 2;
84
+ }
85
+ else {
86
+ selected =
87
+ c < bufferSize()
88
+ ? c
89
+ : c >= total - props.displaySize
90
+ ? c - (total - props.displaySize) + bufferSize()
91
+ : bufferSize();
92
+ }
93
+ }
94
+ break;
95
+ case 'auto':
96
+ if (props.wrap) {
97
+ if (delta === 0) {
98
+ selected = scrollIndex() || 1;
99
+ start = utils.mod(c - (scrollIndex() || 1), total);
100
+ }
101
+ else {
102
+ start = utils.mod(c - (prev.selected || 1), total);
103
+ }
104
+ }
105
+ else {
106
+ if (delta < 0) {
107
+ // Moving left
108
+ if (prev.start > 0 && prev.selected >= props.displaySize) {
109
+ // Move selection left inside slice
110
+ start = prev.start;
111
+ selected = prev.selected - 1;
112
+ }
113
+ else if (prev.start > 0) {
114
+ // Move selection left inside slice
115
+ start = prev.start - 1;
116
+ selected = prev.selected;
117
+ // shiftBy = 0;
118
+ }
119
+ else if (prev.start === 0 && !prev.atStart) {
120
+ start = 0;
121
+ selected = prev.selected - 1;
122
+ atStart = true;
123
+ }
124
+ else if (selected >= props.displaySize - 1) {
125
+ // Shift window left, keep selection pinned
126
+ start = 0;
127
+ selected = prev.selected - 1;
128
+ }
129
+ else {
130
+ start = 0;
131
+ selected = prev.selected - 1;
132
+ shiftBy = 0;
133
+ }
134
+ }
135
+ else if (delta > 0) {
136
+ // Moving right
137
+ if (prev.selected < scrollIndex()) {
138
+ // Move selection right inside slice
139
+ start = prev.start;
140
+ selected = prev.selected + 1;
141
+ shiftBy = 0;
142
+ }
143
+ else if (prev.selected === scrollIndex() || atStart) {
144
+ start = prev.start;
145
+ selected = prev.selected + 1;
146
+ atStart = false;
147
+ }
148
+ else if (prev.start === 0 && prev.selected === 0) {
149
+ start = 0;
150
+ selected = 1;
151
+ atStart = false;
152
+ }
153
+ else if (prev.start >= total - props.displaySize) {
154
+ // At end: clamp slice, selection drifts right
155
+ start = prev.start;
156
+ selected = c - start;
157
+ shiftBy = 0;
158
+ }
159
+ else {
160
+ // Shift window right, keep selection pinned
161
+ start = prev.start + 1;
162
+ selected = Math.max(prev.selected, scrollIndex() + 1);
163
+ ;
164
+ }
165
+ }
166
+ else {
167
+ // Initial setup
168
+ if (c > 0) {
169
+ start = Math.min(c - (scrollIndex() || 1), total - props.displaySize - bufferSize());
170
+ selected = Math.max(scrollIndex() || 1, c - start);
171
+ shiftBy = total - c < 3 ? c - total : -1;
172
+ atStart = false;
173
+ }
174
+ else {
175
+ start = prev.start;
176
+ selected = prev.selected;
177
+ }
178
+ }
179
+ }
180
+ break;
181
+ case 'edge':
182
+ const startScrolling = Math.max(1, props.displaySize + (atStart ? -1 : 0));
183
+ if (props.wrap) {
184
+ if (delta > 0) {
185
+ if (prev.selected < startScrolling) {
186
+ selected = prev.selected + 1;
187
+ shiftBy = 0;
188
+ }
189
+ else if (prev.selected === startScrolling && atStart) {
190
+ selected = prev.selected + 1;
191
+ atStart = false;
192
+ }
193
+ else {
194
+ start = utils.mod(prev.start + 1, total);
195
+ selected = prev.selected;
196
+ }
197
+ }
198
+ else if (delta < 0) {
199
+ if (prev.selected > 1) {
200
+ selected = prev.selected - 1;
201
+ shiftBy = 0;
202
+ }
203
+ else {
204
+ start = utils.mod(prev.start - 1, total);
205
+ selected = 1;
206
+ }
207
+ }
208
+ else {
209
+ start = utils.mod(c - 1, total);
210
+ selected = 1;
211
+ shiftBy = -1;
212
+ atStart = false;
213
+ }
214
+ }
215
+ else {
216
+ if (delta === 0 && c > 0) {
217
+ //initial setup
218
+ selected = c > startScrolling ? startScrolling : c;
219
+ start = Math.max(0, c - startScrolling + 1);
220
+ shiftBy = c > startScrolling ? -1 : 0;
221
+ atStart = c < startScrolling;
222
+ }
223
+ else if (delta > 0) {
224
+ if (prev.selected < startScrolling) {
225
+ selected = prev.selected + 1;
226
+ shiftBy = 0;
227
+ }
228
+ else if (prev.selected === startScrolling && atStart) {
229
+ selected = prev.selected + 1;
230
+ atStart = false;
231
+ }
232
+ else {
233
+ start = prev.start + 1;
234
+ selected = prev.selected;
235
+ atStart = false;
236
+ }
237
+ }
238
+ else if (delta < 0) {
239
+ if (prev.selected > 1) {
240
+ selected = prev.selected - 1;
241
+ shiftBy = 0;
242
+ }
243
+ else if (c > 1) {
244
+ start = Math.max(0, c - 1);
245
+ selected = 1;
246
+ }
247
+ else if (c === 1) {
248
+ start = 0;
249
+ selected = 1;
250
+ }
251
+ else {
252
+ start = 0;
253
+ selected = 0;
254
+ shiftBy = atStart ? 0 : shiftBy;
255
+ atStart = true;
256
+ }
257
+ }
258
+ }
259
+ break;
260
+ case 'none':
261
+ default:
262
+ start = 0;
263
+ selected = c;
264
+ shiftBy = 0;
265
+ break;
266
+ }
267
+ let newSlice = prev.slice;
268
+ if (start !== prev.start || newSlice.length === 0) {
269
+ newSlice = props.wrap
270
+ ? Array.from({ length }, (_, i) => items()[utils.mod(start + i, total)])
271
+ : items().slice(start, start + length);
272
+ }
273
+ const state = { start, slice: newSlice, selected, delta, shiftBy, atStart };
274
+ if (props.debugInfo) {
275
+ console.log(`[Virtual]`, {
276
+ cursor: c,
277
+ delta,
278
+ start,
279
+ selected,
280
+ shiftBy,
281
+ slice: state.slice,
282
+ });
283
+ }
284
+ return state;
285
+ }
286
+ let viewRef;
287
+ function scrollToIndex(index) {
288
+ s.untrack(() => {
289
+ if (itemCount() === 0)
290
+ return;
291
+ lastNavTime = performance.now();
292
+ if (originalPosition !== undefined) {
293
+ viewRef.lng[axis] = originalPosition;
294
+ targetPosition = originalPosition;
295
+ }
296
+ if (!lng.hasFocus(viewRef)) {
297
+ // force focus as scrollToIndex is manually called
298
+ viewRef.setFocus();
299
+ }
300
+ updateSelected([utils.clamp(index, 0, itemCount() - 1)]);
301
+ });
302
+ }
303
+ let lastNavTime = 0;
304
+ function getAdaptiveDuration(duration = 250) {
305
+ const now = performance.now();
306
+ const delta = now - lastNavTime;
307
+ lastNavTime = now;
308
+ if (delta < duration)
309
+ return delta;
310
+ return duration;
311
+ }
312
+ let originalPosition;
313
+ const onSelectedChanged = function (_idx, elm, _active, _lastIdx) {
314
+ let idx = _idx;
315
+ let lastIdx = _lastIdx || 0;
316
+ let active = _active;
317
+ const noChange = idx === lastIdx;
318
+ const total = itemCount();
319
+ originalPosition = originalPosition ?? elm[axis];
320
+ if (props.onSelectedChanged) {
321
+ props.onSelectedChanged.call(this, idx, this, active, lastIdx);
322
+ }
323
+ if (noChange)
324
+ return;
325
+ const rawDelta = idx - (lastIdx ?? 0);
326
+ const windowLen = elm?.children?.length ?? props.displaySize + bufferSize();
327
+ const delta = props.wrap
328
+ ? normalizeDeltaForWindow(rawDelta, windowLen)
329
+ : rawDelta;
330
+ setCursor(c => {
331
+ const next = c + delta;
332
+ return props.wrap
333
+ ? utils.mod(next, total)
334
+ : utils.clamp(next, 0, total - 1);
335
+ });
336
+ const newState = computeSlice(cursor(), delta, slice());
337
+ setSlice(newState);
338
+ elm.selected = newState.selected;
339
+ if (props.onEndReachedThreshold !== undefined &&
340
+ cursor() >= itemCount() - props.onEndReachedThreshold) {
341
+ props.onEndReached?.();
342
+ }
343
+ if (newState.shiftBy === 0)
344
+ return;
345
+ const prevChildPos = (targetPosition ?? this[axis]) + active[axis];
346
+ queueMicrotask(() => {
347
+ elm.updateLayout();
348
+ const childSize = computeSize(slice().selected);
349
+ if (cachedAnimationController && cachedAnimationController.state === 'running') {
350
+ cachedAnimationController.stop();
351
+ ;
352
+ }
353
+ if (lng.Config.animationsEnabled) {
354
+ this.lng[axis] = prevChildPos - active[axis];
355
+ let offset = this.lng[axis] + (childSize * slice().shiftBy);
356
+ targetPosition = offset;
357
+ cachedAnimationController = this.animate({ [axis]: offset }, { ...this.animationSettings, duration: getAdaptiveDuration(this.animationSettings?.duration) }).start();
358
+ }
359
+ else {
360
+ this.lng[axis] = this.lng[axis] + (childSize * slice().shiftBy);
361
+ }
362
+ });
363
+ };
364
+ const updateSelected = ([sel, _items]) => {
365
+ if (!viewRef || sel === undefined || itemCount() === 0)
366
+ return;
367
+ const item = items()[sel];
368
+ setCursor(sel);
369
+ const newState = computeSlice(cursor(), 0, slice());
370
+ setSlice(newState);
371
+ queueMicrotask(() => {
372
+ viewRef.updateLayout();
373
+ let activeIndex = viewRef.children.findIndex(x => x.item === item);
374
+ if (activeIndex === -1)
375
+ return;
376
+ viewRef.selected = activeIndex;
377
+ if (lng.hasFocus(viewRef)) {
378
+ viewRef.children[activeIndex]?.setFocus();
379
+ }
380
+ });
381
+ };
382
+ let doOnce = false;
383
+ s.createEffect(s.on([() => props.wrap, items], () => {
384
+ if (!viewRef || itemCount() === 0 || !props.wrap || doOnce)
385
+ return;
386
+ doOnce = true;
387
+ // offset just for wrap so we keep one item before
388
+ queueMicrotask(() => {
389
+ const childSize = computeSize(slice().selected);
390
+ viewRef.lng[axis] = (viewRef.lng[axis] || 0) + (childSize * -1);
391
+ // Original Position is offset to support scrollToIndex
392
+ originalPosition = viewRef.lng[axis];
393
+ targetPosition = viewRef.lng[axis];
394
+ });
395
+ }));
396
+ s.createEffect(s.on([() => props.selected, items], updateSelected));
397
+ s.createEffect(s.on(items, () => {
398
+ if (!viewRef || itemCount() === 0)
399
+ return;
400
+ if (cursor() >= itemCount()) {
401
+ setCursor(itemCount() - 1);
402
+ }
403
+ const newState = computeSlice(cursor(), 0, slice());
404
+ setSlice(newState);
405
+ viewRef.selected = newState.selected;
406
+ }));
407
+ return (<view {...props} {...keyHandlers} ref={lngp.chainRefs(el => { viewRef = el; }, props.ref)} selected={selected()} cursor={cursor()} forwardFocus={/* @once */lngp.navigableForwardFocus} scrollToIndex={/* @once */scrollToIndex} onSelectedChanged={/* @once */onSelectedChanged} style={/* @once */lng.combineStyles(props.style, component === lngp.Row
408
+ ? {
409
+ display: 'flex',
410
+ gap: 30,
411
+ transition: { x: { duration: 250, easing: 'ease-out' } },
412
+ }
413
+ : {
414
+ display: 'flex',
415
+ flexDirection: 'column',
416
+ gap: 30,
417
+ transition: { y: { duration: 250, easing: 'ease-out' } },
418
+ })}>
419
+ <List each={slice().slice}>{props.children}</List>
420
+ </view>);
421
+ }
422
+ export function VirtualRow(props) {
423
+ return createVirtual(lngp.Row, props, {
424
+ onLeft: lngp.chainFunctions(props.onLeft, lngp.handleNavigation('left')),
425
+ onRight: lngp.chainFunctions(props.onRight, lngp.handleNavigation('right')),
426
+ });
427
+ }
428
+ export function VirtualColumn(props) {
429
+ return createVirtual(lngp.Column, props, {
430
+ onUp: lngp.chainFunctions(props.onUp, lngp.handleNavigation('up')),
431
+ onDown: lngp.chainFunctions(props.onDown, lngp.handleNavigation('down')),
432
+ });
433
+ }
434
+ //# sourceMappingURL=Virtual.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Virtual.jsx","sourceRoot":"","sources":["../../../src/primitives/Virtual.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import * as s from 'solid-js';
2
+ import * as lng from '@lightningtv/solid';
3
+ import * as lngp from '@lightningtv/solid/primitives';
4
+ export type VirtualGridProps<T> = lng.NewOmit<lngp.RowProps, 'children'> & {
5
+ each: readonly T[] | undefined | null | false;
6
+ columns: number;
7
+ rows?: number;
8
+ buffer?: number;
9
+ onEndReached?: () => void;
10
+ onEndReachedThreshold?: number;
11
+ children: (item: s.Accessor<T>, index: s.Accessor<number>) => s.JSX.Element;
12
+ };
13
+ export declare function VirtualGrid<T>(props: VirtualGridProps<T>): s.JSX.Element;
@@ -0,0 +1,139 @@
1
+ import * as s from 'solid-js';
2
+ import * as lng from '@lightningtv/solid';
3
+ import * as lngp from '@lightningtv/solid/primitives';
4
+ import { List } from '@solid-primitives/list';
5
+ import * as utils from '../utils.js';
6
+ const columnScroll = lngp.withScrolling(false);
7
+ const rowStyles = {
8
+ display: 'flex',
9
+ flexWrap: 'wrap',
10
+ transition: {
11
+ y: true,
12
+ },
13
+ };
14
+ export function VirtualGrid(props) {
15
+ const bufferSize = () => props.buffer ?? 2;
16
+ const [cursor, setCursor] = s.createSignal(props.selected ?? 0);
17
+ const items = s.createMemo(() => props.each || []);
18
+ const itemsPerRow = () => props.columns;
19
+ const numberOfRows = () => props.rows ?? 1;
20
+ const totalVisibleItems = () => itemsPerRow() * numberOfRows();
21
+ const start = s.createMemo(() => {
22
+ const perRow = itemsPerRow();
23
+ const newRowIndex = Math.floor(cursor() / perRow);
24
+ const rawStart = newRowIndex * perRow - bufferSize() * perRow;
25
+ return Math.max(0, rawStart);
26
+ });
27
+ const end = s.createMemo(() => {
28
+ const perRow = itemsPerRow();
29
+ const newRowIndex = Math.floor(cursor() / perRow);
30
+ const rawEnd = (newRowIndex + bufferSize()) * perRow + totalVisibleItems();
31
+ return Math.min(items().length, rawEnd);
32
+ });
33
+ const [slice, setSlice] = s.createSignal(items().slice(start(), end()));
34
+ let viewRef;
35
+ function onVerticalNav(dir) {
36
+ return function () {
37
+ const perRow = itemsPerRow();
38
+ const currentRowIndex = Math.floor(cursor() / perRow);
39
+ const maxRows = Math.floor(items().length / perRow);
40
+ if (currentRowIndex === 0 && dir === -1
41
+ || currentRowIndex === maxRows && dir === 1)
42
+ return;
43
+ const selected = this.selected || 0;
44
+ const offset = dir * perRow;
45
+ const newIndex = utils.clamp(selected + offset, 0, items().length - 1);
46
+ const lastIdx = selected;
47
+ this.selected = newIndex;
48
+ const active = this.children[this.selected];
49
+ if (active instanceof lng.ElementNode) {
50
+ active.setFocus();
51
+ chainedOnSelectedChanged.call(this, this.selected, this, active, lastIdx);
52
+ return true;
53
+ }
54
+ };
55
+ }
56
+ const onUp = onVerticalNav(-1);
57
+ const onDown = onVerticalNav(1);
58
+ const onSelectedChanged = function (_idx, elm, active, _lastIdx) {
59
+ let idx = _idx;
60
+ let lastIdx = _lastIdx;
61
+ const perRow = itemsPerRow();
62
+ const newRowIndex = Math.floor(idx / perRow);
63
+ const prevRowIndex = Math.floor((lastIdx || 0) / perRow);
64
+ const prevStart = start();
65
+ setCursor(prevStart + idx);
66
+ if (newRowIndex === prevRowIndex)
67
+ return;
68
+ setSlice(items().slice(start(), end()));
69
+ // this.selected is relative to the slice
70
+ // and it doesn't get corrected automatically after children change
71
+ const idxCorrection = prevStart - start();
72
+ if (lastIdx)
73
+ lastIdx += idxCorrection;
74
+ idx += idxCorrection;
75
+ this.selected += idxCorrection;
76
+ if (props.onEndReachedThreshold !== undefined && cursor() >= items().length - props.onEndReachedThreshold) {
77
+ props.onEndReached?.();
78
+ }
79
+ queueMicrotask(() => {
80
+ const prevRowY = this.y + active.y;
81
+ this.updateLayout();
82
+ this.lng.y = prevRowY - active.y;
83
+ columnScroll(idx, elm, active, lastIdx);
84
+ });
85
+ };
86
+ const chainedOnSelectedChanged = lngp.chainFunctions(props.onSelectedChanged, onSelectedChanged);
87
+ let cachedSelected;
88
+ const updateSelected = ([selected, _items]) => {
89
+ if (!viewRef || selected == null)
90
+ return;
91
+ if (cachedSelected !== undefined) {
92
+ selected = cachedSelected;
93
+ cachedSelected = undefined;
94
+ }
95
+ if (selected >= items().length && props.onEndReached) {
96
+ props.onEndReached?.();
97
+ cachedSelected = selected;
98
+ return;
99
+ }
100
+ const item = items()[selected];
101
+ let active = viewRef.children.find(x => x.item === item);
102
+ const lastSelected = viewRef.selected;
103
+ if (active instanceof lng.ElementNode) {
104
+ viewRef.selected = viewRef.children.indexOf(active);
105
+ active.setFocus();
106
+ chainedOnSelectedChanged.call(viewRef, viewRef.selected, viewRef, active, lastSelected);
107
+ }
108
+ else {
109
+ setCursor(selected);
110
+ setSlice(items().slice(start(), end()));
111
+ queueMicrotask(() => {
112
+ viewRef.updateLayout();
113
+ active = viewRef.children.find(x => x.item === item);
114
+ if (active instanceof lng.ElementNode) {
115
+ viewRef.selected = viewRef.children.indexOf(active);
116
+ active.setFocus();
117
+ chainedOnSelectedChanged.call(viewRef, viewRef.selected, viewRef, active, lastSelected);
118
+ }
119
+ });
120
+ }
121
+ };
122
+ const scrollToIndex = (index) => {
123
+ s.untrack(() => updateSelected([index]));
124
+ };
125
+ s.createEffect(s.on([() => props.selected, items], updateSelected));
126
+ s.createEffect(s.on(items, () => {
127
+ if (!viewRef)
128
+ return;
129
+ if (cachedSelected !== undefined) {
130
+ updateSelected([cachedSelected]);
131
+ return;
132
+ }
133
+ setSlice(items().slice(start(), end()));
134
+ }, { defer: true }));
135
+ return (<view {...props} scroll={props.scroll || 'always'} ref={lngp.chainRefs(el => { viewRef = el; }, props.ref)} selected={props.selected || 0} cursor={cursor()} onLeft={/* @once */lngp.chainFunctions(props.onLeft, lngp.navigableHandleNavigation)} onRight={/* @once */lngp.chainFunctions(props.onRight, lngp.navigableHandleNavigation)} onUp={/* @once */lngp.chainFunctions(props.onUp, onUp)} onDown={/* @once */lngp.chainFunctions(props.onDown, onDown)} forwardFocus={/* @once */lngp.navigableForwardFocus} onCreate={/* @once */props.selected ? lngp.chainFunctions(props.onCreate, columnScroll) : props.onCreate} scrollToIndex={/* @once */scrollToIndex} onSelectedChanged={/* @once */chainedOnSelectedChanged} style={/* @once */lng.combineStyles(props.style, rowStyles)}>
136
+ <List each={slice()}>{props.children}</List>
137
+ </view>);
138
+ }
139
+ //# sourceMappingURL=VirtualGrid.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VirtualGrid.jsx","sourceRoot":"","sources":["../../../src/primitives/VirtualGrid.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import * as s from 'solid-js';
2
+ import * as lng from '@lightningtv/solid';
3
+ import * as lngp from '@lightningtv/solid/primitives';
4
+ export type VirtualListProps<T> = lng.NewOmit<lngp.RowProps, 'children'> & {
5
+ each: readonly T[] | undefined | null | false;
6
+ displaySize: number;
7
+ bufferSize?: number;
8
+ fallback?: s.JSX.Element;
9
+ children: (item: s.Accessor<T>, index: s.Accessor<number>) => s.JSX.Element;
10
+ };
11
+ export declare function VirtualList<T>(props: VirtualListProps<T>): s.JSX.Element;