@lightningtv/solid 2.10.6 → 2.10.8

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.
@@ -7,10 +7,11 @@ export type VirtualProps<T> = lng.NewOmit<lngp.RowProps, 'children'> & {
7
7
  bufferSize?: number;
8
8
  wrap?: boolean;
9
9
  scrollIndex?: number;
10
- doScroll?: lngp.Scroller;
11
10
  onEndReached?: () => void;
12
11
  onEndReachedThreshold?: number;
13
- fallback?: s.JSX.Element;
12
+ debugInfo?: boolean;
13
+ factorScale?: boolean;
14
+ uniformSize?: boolean;
14
15
  children: (item: s.Accessor<T>, index: s.Accessor<number>) => s.JSX.Element;
15
16
  };
16
17
  export declare function VirtualRow<T>(props: VirtualProps<T>): lng.JSX.Element;
@@ -3,12 +3,10 @@ import * as lng from '@lightningtv/solid';
3
3
  import * as lngp from '@lightningtv/solid/primitives';
4
4
  import { List } from '@solid-primitives/list';
5
5
  import * as utils from '../utils.js';
6
- function createVirtual(component, props, scrollFn, keyHandlers) {
6
+ function createVirtual(component, props, keyHandlers) {
7
7
  const [cursor, setCursor] = s.createSignal(props.selected ?? 0);
8
8
  const bufferSize = s.createMemo(() => props.bufferSize || 2);
9
- const scrollIndex = s.createMemo(() => {
10
- return props.scrollIndex || 0;
11
- });
9
+ const scrollIndex = s.createMemo(() => props.scrollIndex || 0);
12
10
  const items = s.createMemo(() => props.each || []);
13
11
  const itemCount = s.createMemo(() => items().length);
14
12
  const scrollType = s.createMemo(() => props.scroll || 'auto');
@@ -18,158 +16,363 @@ function createVirtual(component, props, scrollFn, keyHandlers) {
18
16
  }
19
17
  return props.selected || 0;
20
18
  };
21
- const start = () => {
22
- if (itemCount() === 0)
19
+ let cachedScaledSize;
20
+ let targetPosition;
21
+ let cachedAnimationController;
22
+ const uniformSize = s.createMemo(() => {
23
+ return props.uniformSize !== false;
24
+ });
25
+ const [slice, setSlice] = s.createSignal({
26
+ start: 0,
27
+ slice: [],
28
+ selected: 0,
29
+ delta: 0,
30
+ shiftBy: 0,
31
+ atStart: true,
32
+ });
33
+ function normalizeDeltaForWindow(delta, windowLen) {
34
+ if (!windowLen)
23
35
  return 0;
24
- if (props.wrap) {
25
- return utils.mod(cursor() - Math.max(bufferSize(), scrollIndex()), itemCount());
26
- }
27
- if (scrollType() === 'always') {
28
- return Math.min(Math.max(cursor() - bufferSize(), 0), itemCount() - props.displaySize - bufferSize());
36
+ const half = windowLen / 2;
37
+ if (delta > half)
38
+ return delta - windowLen;
39
+ if (delta < -half)
40
+ return delta + windowLen;
41
+ return delta;
42
+ }
43
+ function computeSize(selected = 0) {
44
+ if (uniformSize() && cachedScaledSize) {
45
+ return cachedScaledSize;
29
46
  }
30
- if (scrollType() === 'auto') {
31
- return utils.clamp(cursor() - Math.max(bufferSize(), scrollIndex()), 0, Math.max(0, itemCount() - props.displaySize - bufferSize()));
47
+ else if (viewRef) {
48
+ const gap = viewRef.gap || 0;
49
+ const isRow = component === lngp.Row;
50
+ const dimension = isRow ? 'width' : 'height';
51
+ const prevSelectedChild = viewRef.children[selected];
52
+ if (prevSelectedChild instanceof lng.ElementNode) {
53
+ const itemSize = prevSelectedChild[dimension] || 0;
54
+ const focusStyle = prevSelectedChild.style?.focus;
55
+ const scale = (focusStyle?.scale ?? prevSelectedChild.scale ?? 1);
56
+ const scaledSize = itemSize * (props.factorScale ? scale : 1) + gap;
57
+ cachedScaledSize = scaledSize;
58
+ return scaledSize;
59
+ }
32
60
  }
33
- return utils.clamp(cursor() - bufferSize(), 0, Math.max(0, itemCount() - props.displaySize));
34
- };
35
- const end = () => {
36
- if (itemCount() === 0)
37
- return 0;
38
- if (props.wrap) {
39
- return (start() + props.displaySize + bufferSize()) % itemCount();
61
+ return 0;
62
+ }
63
+ function computeSlice(c, delta, prev) {
64
+ const total = itemCount();
65
+ if (total === 0)
66
+ return { start: 0, slice: [], selected: 0, delta, shiftBy: 0, atStart: true };
67
+ const length = props.displaySize + bufferSize();
68
+ let start = prev.start;
69
+ let selected = prev.selected;
70
+ let atStart = prev.atStart;
71
+ let shiftBy = -delta;
72
+ switch (scrollType()) {
73
+ case 'always':
74
+ if (props.wrap) {
75
+ start = utils.mod(c - 1, total);
76
+ selected = 1;
77
+ }
78
+ else {
79
+ start = utils.clamp(c - bufferSize(), 0, Math.max(0, total - props.displaySize - bufferSize()));
80
+ if (delta === 0 && c > 3) {
81
+ shiftBy = c < 3 ? -c : -2;
82
+ selected = 2;
83
+ }
84
+ else {
85
+ selected =
86
+ c < bufferSize()
87
+ ? c
88
+ : c >= total - props.displaySize
89
+ ? c - (total - props.displaySize) + bufferSize()
90
+ : bufferSize();
91
+ }
92
+ }
93
+ break;
94
+ case 'auto':
95
+ if (props.wrap) {
96
+ if (scrollIndex() && prev.selected < scrollIndex()) {
97
+ start = total - 1;
98
+ selected = Math.max(1, prev.selected + delta);
99
+ }
100
+ else {
101
+ start = utils.mod(c - (scrollIndex() || 1), total);
102
+ selected = Math.max(1, prev.selected);
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()) {
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 - 1);
183
+ if (props.wrap) {
184
+ if (delta > 0) {
185
+ if (prev.selected < startScrolling) {
186
+ selected = prev.selected + 1;
187
+ shiftBy = 0;
188
+ }
189
+ else {
190
+ start = utils.mod(prev.start + 1, total);
191
+ selected = startScrolling;
192
+ }
193
+ }
194
+ else if (delta < 0) {
195
+ if (prev.selected > 1) {
196
+ selected = prev.selected - 1;
197
+ shiftBy = 0;
198
+ }
199
+ else {
200
+ start = utils.mod(prev.start - 1, total);
201
+ selected = 1;
202
+ }
203
+ }
204
+ else {
205
+ start = utils.mod(c - 1, total);
206
+ selected = 1;
207
+ }
208
+ }
209
+ else {
210
+ if (delta === 0 && c > 0) {
211
+ //initial setup
212
+ selected = c > startScrolling ? startScrolling : c;
213
+ start = Math.max(0, c - startScrolling + 1);
214
+ shiftBy = c > startScrolling ? -1 : 0;
215
+ atStart = c < startScrolling;
216
+ }
217
+ else if (delta > 0) {
218
+ if (prev.selected < startScrolling - 1) {
219
+ selected = prev.selected + 1;
220
+ shiftBy = 0;
221
+ }
222
+ else {
223
+ start = prev.start + 1;
224
+ selected = prev.selected;
225
+ atStart = false;
226
+ }
227
+ }
228
+ else if (delta < 0) {
229
+ if (prev.selected > 1) {
230
+ selected = prev.selected - 1;
231
+ shiftBy = 0;
232
+ }
233
+ else if (c > 1) {
234
+ start = Math.max(0, c - 1);
235
+ selected = 1;
236
+ }
237
+ else if (!atStart) {
238
+ start = 0;
239
+ selected = 0;
240
+ atStart = true;
241
+ }
242
+ else {
243
+ start = 0;
244
+ selected = 0;
245
+ shiftBy = 0;
246
+ atStart = true;
247
+ }
248
+ }
249
+ }
250
+ break;
251
+ case 'none':
252
+ default:
253
+ start = 0;
254
+ selected = c;
255
+ shiftBy = 0;
256
+ break;
40
257
  }
41
- return Math.min(itemCount(), start() + props.displaySize + bufferSize());
42
- };
43
- const getSlice = s.createMemo(() => {
44
- if (itemCount() === 0)
45
- return [];
46
- if (!props.wrap) {
47
- return items().slice(start(), end());
258
+ let newSlice = prev.slice;
259
+ if (start !== prev.start || newSlice.length === 0) {
260
+ newSlice = props.wrap
261
+ ? Array.from({ length }, (_, i) => items()[utils.mod(start + i, total)])
262
+ : items().slice(start, start + length);
48
263
  }
49
- // Wrapping slice
50
- const sIdx = start();
51
- const eIdx = (sIdx + props.displaySize + bufferSize()) % itemCount();
52
- if (sIdx < eIdx) {
53
- return items().slice(sIdx, eIdx);
264
+ const state = { start, slice: newSlice, selected, delta, shiftBy, atStart };
265
+ if (props.debugInfo) {
266
+ console.log(`[Virtual]`, {
267
+ cursor: c,
268
+ delta,
269
+ start,
270
+ selected,
271
+ shiftBy,
272
+ slice: state.slice,
273
+ });
54
274
  }
55
- return [...items().slice(sIdx), ...items().slice(0, eIdx)];
56
- });
57
- const [slice, setSlice] = s.createSignal(getSlice());
275
+ return state;
276
+ }
58
277
  let viewRef;
59
278
  function scrollToIndex(index) {
60
279
  if (itemCount() === 0)
61
280
  return;
62
- let target = index;
63
- if (props.wrap) {
64
- target = utils.mod(index, itemCount());
65
- }
66
- else {
67
- target = utils.clamp(index, 0, itemCount() - 1);
68
- }
69
- updateSelected([target]);
281
+ updateSelected([utils.clamp(index, 0, itemCount() - 1)]);
282
+ }
283
+ let lastNavTime = 0;
284
+ function getAdaptiveDuration(duration = 250) {
285
+ const now = performance.now();
286
+ const delta = now - lastNavTime;
287
+ lastNavTime = now;
288
+ if (delta < duration)
289
+ return delta;
290
+ return duration;
70
291
  }
71
292
  const onSelectedChanged = function (_idx, elm, _active, _lastIdx) {
72
293
  let idx = _idx;
73
294
  let lastIdx = _lastIdx || 0;
74
295
  let active = _active;
75
296
  const initialRun = idx === lastIdx;
297
+ const total = itemCount();
298
+ const isRow = component === lngp.Row;
299
+ const axis = isRow ? 'x' : 'y';
300
+ if (props.onSelectedChanged) {
301
+ props.onSelectedChanged.call(this, idx, this, active, lastIdx);
302
+ }
76
303
  if (initialRun && !props.wrap)
77
304
  return;
305
+ const rawDelta = idx - (lastIdx ?? 0);
306
+ const windowLen = elm?.children?.length ?? props.displaySize + bufferSize();
307
+ const delta = props.wrap
308
+ ? normalizeDeltaForWindow(rawDelta, windowLen)
309
+ : rawDelta;
78
310
  if (!initialRun) {
79
- if (props.wrap) {
80
- setCursor(c => utils.mod(c + idx - lastIdx, itemCount()));
81
- }
82
- else {
83
- setCursor(c => utils.clamp(c + idx - lastIdx, 0, Math.max(0, itemCount() - 1)));
84
- }
85
- setSlice(getSlice());
86
- const c = cursor();
87
- const scroll = scrollType();
88
- if (props.wrap) {
89
- this.selected = Math.max(bufferSize(), scrollIndex());
90
- }
91
- else if (props.scrollIndex) {
92
- this.selected = Math.min(c, props.scrollIndex);
93
- if (c >= itemCount() - props.displaySize + bufferSize()) {
94
- this.selected = c - (itemCount() - props.displaySize) + bufferSize();
95
- }
96
- }
97
- else if (scroll === 'always' || scroll === 'auto') {
98
- if (c < bufferSize()) {
99
- this.selected = c;
100
- }
101
- else if (c >= itemCount() - props.displaySize) {
102
- this.selected = c - (itemCount() - props.displaySize) + bufferSize();
103
- }
104
- else {
105
- this.selected = bufferSize();
106
- }
107
- }
108
- if (props.onEndReachedThreshold !== undefined && cursor() >= items().length - props.onEndReachedThreshold) {
311
+ setCursor(c => {
312
+ const next = c + delta;
313
+ return props.wrap
314
+ ? utils.mod(next, total)
315
+ : utils.clamp(next, 0, total - 1);
316
+ });
317
+ const newState = computeSlice(cursor(), delta, slice());
318
+ setSlice(newState);
319
+ elm.selected = newState.selected;
320
+ if (props.onEndReachedThreshold !== undefined &&
321
+ cursor() >= itemCount() - props.onEndReachedThreshold) {
109
322
  props.onEndReached?.();
110
323
  }
324
+ if (newState.shiftBy === 0)
325
+ return;
111
326
  }
112
- const isRow = component === lngp.Row;
113
- const prevChildPos = isRow
114
- ? this.x + active.x
115
- : this.y + active.y;
327
+ const prevChildPos = (targetPosition ?? this[axis]) + active[axis];
116
328
  queueMicrotask(() => {
117
- this.updateLayout();
118
- if (this._initialPosition === undefined && props.wrap) {
119
- this.offset = 0;
120
- const axis = isRow ? 'x' : 'y';
121
- this._initialPosition = this[axis];
122
- if (scrollIndex() > 0) {
123
- active = this.children[1];
124
- }
329
+ elm.updateLayout();
330
+ const childSize = computeSize(slice().selected);
331
+ if (cachedAnimationController && cachedAnimationController.state === 'running') {
332
+ cachedAnimationController.stop();
333
+ ;
125
334
  }
126
- if (component === lngp.Row) {
127
- this.lng.x = this._targetPosition = prevChildPos - active.x;
128
- }
129
- else {
130
- this.lng.y = this._targetPosition = prevChildPos - active.y;
131
- }
132
- scrollFn(idx, elm, active, lastIdx);
335
+ this.lng[axis] = prevChildPos - active[axis];
336
+ let offset = this.lng[axis] + (childSize * slice().shiftBy);
337
+ targetPosition = offset;
338
+ cachedAnimationController = this.animate({ [axis]: offset }, { ...this.animationSettings, duration: getAdaptiveDuration(this.animationSettings?.duration) }).start();
133
339
  });
134
340
  };
135
- const chainedOnSelectedChanged = lngp.chainFunctions(props.onSelectedChanged, onSelectedChanged);
136
- const updateSelected = ([selected, _items]) => {
137
- if (!viewRef || selected === undefined)
341
+ const updateSelected = ([sel, _items]) => {
342
+ if (!viewRef || sel === undefined || itemCount() === 0)
138
343
  return;
139
- const sel = selected;
140
344
  const item = items()[sel];
141
- let active = viewRef.children.find(x => x.item === item);
142
- const lastSelected = viewRef.selected;
143
- if (active instanceof lng.ElementNode) {
144
- viewRef.selected = viewRef.children.indexOf(active);
145
- chainedOnSelectedChanged.call(viewRef, viewRef.selected, viewRef, active, lastSelected);
146
- active.setFocus();
147
- }
148
- else {
149
- setCursor(sel);
150
- setSlice(getSlice());
151
- queueMicrotask(() => {
152
- viewRef.updateLayout();
153
- active = viewRef.children.find(x => x.item === item);
154
- if (active instanceof lng.ElementNode) {
155
- viewRef.selected = viewRef.children.indexOf(active);
156
- chainedOnSelectedChanged.call(viewRef, viewRef.selected, viewRef, active, lastSelected);
157
- }
158
- });
159
- }
345
+ setCursor(sel);
346
+ const newState = computeSlice(cursor(), 0, slice());
347
+ setSlice(newState);
348
+ queueMicrotask(() => {
349
+ viewRef.updateLayout();
350
+ if (slice().shiftBy) {
351
+ const isRow = component === lngp.Row;
352
+ const axis = isRow ? 'x' : 'y';
353
+ const childSize = computeSize(slice().selected);
354
+ viewRef.lng[axis] = viewRef.lng[axis] + (childSize * slice().shiftBy);
355
+ targetPosition = viewRef.lng[axis];
356
+ }
357
+ let activeIndex = viewRef.children.findIndex(x => x.item === item);
358
+ if (activeIndex === -1)
359
+ return;
360
+ viewRef.selected = activeIndex;
361
+ viewRef.children[activeIndex]?.setFocus();
362
+ });
160
363
  };
161
- s.createEffect(s.on([() => props.selected, items], updateSelected));
364
+ s.createEffect(s.on([() => props.selected, items], updateSelected, { defer: true }));
162
365
  s.createEffect(s.on(items, () => {
163
- if (!viewRef)
366
+ if (!viewRef || itemCount() === 0)
164
367
  return;
165
368
  if (cursor() >= itemCount()) {
166
- setCursor(Math.max(0, itemCount() - 1));
369
+ setCursor(itemCount() - 1);
167
370
  }
168
- setSlice(getSlice());
169
- }, { defer: true }));
170
- return (<view {...props} ref={lngp.chainRefs(el => { viewRef = el; }, props.ref)} selected={selected()} cursor={cursor()} {...keyHandlers} forwardFocus={/* @once */lngp.navigableForwardFocus} scrollToIndex={/* @once */scrollToIndex} onCreate={/* @once */props.selected
171
- ? lngp.chainFunctions(props.onCreate, scrollFn)
172
- : props.onCreate} onSelectedChanged={/* @once */chainedOnSelectedChanged} style={/* @once */lng.combineStyles(props.style, component === lngp.Row
371
+ const newState = computeSlice(cursor(), 0, slice());
372
+ setSlice(newState);
373
+ viewRef.selected = newState.selected;
374
+ }));
375
+ 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
173
376
  ? {
174
377
  display: 'flex',
175
378
  gap: 30,
@@ -181,19 +384,19 @@ function createVirtual(component, props, scrollFn, keyHandlers) {
181
384
  gap: 30,
182
385
  transition: { y: { duration: 250, easing: 'ease-out' } },
183
386
  })}>
184
- <List each={slice()}>{props.children}</List>
387
+ <List each={slice().slice}>{props.children}</List>
185
388
  </view>);
186
389
  }
187
390
  export function VirtualRow(props) {
188
- return createVirtual(lngp.Row, props, props.doScroll || lngp.withScrolling(true), {
189
- onLeft: lngp.chainFunctions(props.onLeft, lngp.navigableHandleNavigation),
190
- onRight: lngp.chainFunctions(props.onRight, lngp.navigableHandleNavigation),
391
+ return createVirtual(lngp.Row, props, {
392
+ onLeft: lngp.chainFunctions(props.onLeft, lngp.handleNavigation('left')),
393
+ onRight: lngp.chainFunctions(props.onRight, lngp.handleNavigation('right')),
191
394
  });
192
395
  }
193
396
  export function VirtualColumn(props) {
194
- return createVirtual(lngp.Column, props, props.doScroll || lngp.withScrolling(false), {
195
- onUp: lngp.chainFunctions(props.onUp, lngp.navigableHandleNavigation),
196
- onDown: lngp.chainFunctions(props.onDown, lngp.navigableHandleNavigation),
397
+ return createVirtual(lngp.Column, props, {
398
+ onUp: lngp.chainFunctions(props.onUp, lngp.handleNavigation('up')),
399
+ onDown: lngp.chainFunctions(props.onDown, lngp.handleNavigation('down')),
197
400
  });
198
401
  }
199
402
  //# sourceMappingURL=Virtual.jsx.map
@@ -1 +1 @@
1
- {"version":3,"file":"Virtual.jsx","sourceRoot":"","sources":["../../../src/primitives/Virtual.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Virtual.jsx","sourceRoot":"","sources":["../../../src/primitives/Virtual.tsx"],"names":[],"mappings":"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"}