lazy-render-virtual-scroll 1.0.4 → 1.0.6
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 +4 -1
- package/dist/cjs/adapters/react/useLazyList.d.ts +10 -1
- package/dist/cjs/adapters/react/useLazyList.d.ts.map +1 -1
- package/dist/cjs/core/Engine.d.ts +8 -4
- package/dist/cjs/core/Engine.d.ts.map +1 -1
- package/dist/cjs/core/IntelligentScrollDetector.d.ts +19 -0
- package/dist/cjs/core/IntelligentScrollDetector.d.ts.map +1 -0
- package/dist/cjs/core/NetworkAwarePrefetchManager.d.ts +10 -0
- package/dist/cjs/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
- package/dist/cjs/core/NetworkAwareRequestQueue.d.ts +20 -0
- package/dist/cjs/core/NetworkAwareRequestQueue.d.ts.map +1 -0
- package/dist/cjs/core/NetworkSpeedDetector.d.ts +16 -0
- package/dist/cjs/core/NetworkSpeedDetector.d.ts.map +1 -0
- package/dist/cjs/core/PrefetchManager.d.ts +7 -4
- package/dist/cjs/core/PrefetchManager.d.ts.map +1 -1
- package/dist/cjs/core/WindowManager.d.ts +4 -0
- package/dist/cjs/core/WindowManager.d.ts.map +1 -1
- package/dist/cjs/core/types.d.ts +8 -0
- package/dist/cjs/core/types.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +5 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +436 -13
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/adapters/react/useLazyList.d.ts +10 -1
- package/dist/esm/adapters/react/useLazyList.d.ts.map +1 -1
- package/dist/esm/core/Engine.d.ts +8 -4
- package/dist/esm/core/Engine.d.ts.map +1 -1
- package/dist/esm/core/IntelligentScrollDetector.d.ts +19 -0
- package/dist/esm/core/IntelligentScrollDetector.d.ts.map +1 -0
- package/dist/esm/core/NetworkAwarePrefetchManager.d.ts +10 -0
- package/dist/esm/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
- package/dist/esm/core/NetworkAwareRequestQueue.d.ts +20 -0
- package/dist/esm/core/NetworkAwareRequestQueue.d.ts.map +1 -0
- package/dist/esm/core/NetworkSpeedDetector.d.ts +16 -0
- package/dist/esm/core/NetworkSpeedDetector.d.ts.map +1 -0
- package/dist/esm/core/PrefetchManager.d.ts +7 -4
- package/dist/esm/core/PrefetchManager.d.ts.map +1 -1
- package/dist/esm/core/WindowManager.d.ts +4 -0
- package/dist/esm/core/WindowManager.d.ts.map +1 -1
- package/dist/esm/core/types.d.ts +8 -0
- package/dist/esm/core/types.d.ts.map +1 -1
- package/dist/esm/index.d.ts +5 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +433 -14
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.ts +101 -10
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -36,24 +36,33 @@ class WindowManager {
|
|
|
36
36
|
updateItemHeight(height) {
|
|
37
37
|
this.itemHeight = height;
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Update buffer size if it changes
|
|
41
|
+
*/
|
|
42
|
+
updateBufferSize(size) {
|
|
43
|
+
this.bufferSize = size;
|
|
44
|
+
}
|
|
39
45
|
}
|
|
40
46
|
|
|
41
47
|
class PrefetchManager {
|
|
42
|
-
constructor(bufferSize = 5) {
|
|
43
|
-
this.bufferSize = bufferSize;
|
|
44
|
-
}
|
|
45
48
|
/**
|
|
46
|
-
*
|
|
49
|
+
* This class is kept for backward compatibility
|
|
50
|
+
* Intelligent prefetching is now handled in the Engine class
|
|
51
|
+
*/
|
|
52
|
+
constructor() { }
|
|
53
|
+
/**
|
|
54
|
+
* Legacy method - not used in intelligent mode
|
|
47
55
|
*/
|
|
48
56
|
shouldPrefetch(visibleEnd, totalLoaded) {
|
|
49
57
|
// Simple rule: if visible end is approaching the loaded boundary, fetch more
|
|
50
|
-
return visibleEnd >= totalLoaded -
|
|
58
|
+
return visibleEnd >= totalLoaded - 5; // Default buffer
|
|
51
59
|
}
|
|
52
60
|
/**
|
|
53
|
-
* Update buffer size if it changes
|
|
61
|
+
* Update buffer size if it changes (for backward compatibility)
|
|
54
62
|
*/
|
|
55
63
|
updateBufferSize(size) {
|
|
56
|
-
|
|
64
|
+
// This method exists for backward compatibility
|
|
65
|
+
// Intelligent prefetching is now handled in the Engine class
|
|
57
66
|
}
|
|
58
67
|
}
|
|
59
68
|
|
|
@@ -116,6 +125,369 @@ class RequestQueue {
|
|
|
116
125
|
}
|
|
117
126
|
}
|
|
118
127
|
|
|
128
|
+
class IntelligentScrollDetector {
|
|
129
|
+
constructor() {
|
|
130
|
+
this.lastScrollTop = 0;
|
|
131
|
+
this.lastTime = 0;
|
|
132
|
+
this.velocityHistory = [];
|
|
133
|
+
this.HISTORY_SIZE = 5;
|
|
134
|
+
this.scrollTimeout = null;
|
|
135
|
+
this.isIdle = true;
|
|
136
|
+
this.lastTime = performance.now();
|
|
137
|
+
}
|
|
138
|
+
// Calculate velocity from scroll event
|
|
139
|
+
calculateVelocity(scrollTop) {
|
|
140
|
+
const now = performance.now();
|
|
141
|
+
const deltaY = scrollTop - this.lastScrollTop;
|
|
142
|
+
const deltaTime = now - this.lastTime;
|
|
143
|
+
// Calculate velocity (pixels per millisecond)
|
|
144
|
+
const velocity = deltaTime > 0 ? deltaY / deltaTime : 0;
|
|
145
|
+
// Store in history for smoothing
|
|
146
|
+
this.velocityHistory.push(velocity);
|
|
147
|
+
if (this.velocityHistory.length > this.HISTORY_SIZE) {
|
|
148
|
+
this.velocityHistory.shift();
|
|
149
|
+
}
|
|
150
|
+
// Update for next calculation
|
|
151
|
+
this.lastScrollTop = scrollTop;
|
|
152
|
+
this.lastTime = now;
|
|
153
|
+
// Update idle state
|
|
154
|
+
this.isIdle = false;
|
|
155
|
+
this.resetIdleTimer();
|
|
156
|
+
// Return smoothed velocity (average of recent values)
|
|
157
|
+
return this.getAverageVelocity();
|
|
158
|
+
}
|
|
159
|
+
// Get smoothed velocity from history
|
|
160
|
+
getAverageVelocity() {
|
|
161
|
+
if (this.velocityHistory.length === 0)
|
|
162
|
+
return 0;
|
|
163
|
+
const sum = this.velocityHistory.reduce((acc, vel) => acc + vel, 0);
|
|
164
|
+
return sum / this.velocityHistory.length;
|
|
165
|
+
}
|
|
166
|
+
// Determine scroll direction from velocity
|
|
167
|
+
getDirection(velocity) {
|
|
168
|
+
if (Math.abs(velocity) < 0.1)
|
|
169
|
+
return 'stationary';
|
|
170
|
+
return velocity > 0 ? 'down' : 'up';
|
|
171
|
+
}
|
|
172
|
+
// Calculate buffer size based on scroll velocity
|
|
173
|
+
calculateBuffer(velocity) {
|
|
174
|
+
const absVelocity = Math.abs(velocity);
|
|
175
|
+
if (absVelocity > 1.5) {
|
|
176
|
+
return 20; // Large buffer for fast scrolling
|
|
177
|
+
}
|
|
178
|
+
else if (absVelocity > 1.0) {
|
|
179
|
+
return 10; // Medium buffer
|
|
180
|
+
}
|
|
181
|
+
else if (absVelocity > 0.3) {
|
|
182
|
+
return 7; // Small buffer for medium scrolling
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
return 5; // Minimal buffer when nearly stationary
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// Calculate prefetch distance based on velocity
|
|
189
|
+
calculatePrefetchDistance(velocity) {
|
|
190
|
+
const absVelocity = Math.abs(velocity);
|
|
191
|
+
if (absVelocity > 2.0)
|
|
192
|
+
return 1200; // Far ahead for fast scrolling
|
|
193
|
+
if (absVelocity > 1.0)
|
|
194
|
+
return 800; // Medium distance
|
|
195
|
+
if (absVelocity > 0.3)
|
|
196
|
+
return 400; // Close distance for slow scroll
|
|
197
|
+
return 200; // Minimal prefetch when nearly stationary
|
|
198
|
+
}
|
|
199
|
+
// Predict where user will be in X milliseconds
|
|
200
|
+
predictPosition(currentPosition, velocity, msAhead = 500) {
|
|
201
|
+
return currentPosition + (velocity * msAhead);
|
|
202
|
+
}
|
|
203
|
+
// Check if user is currently idle
|
|
204
|
+
getIsIdle() {
|
|
205
|
+
return this.isIdle;
|
|
206
|
+
}
|
|
207
|
+
// Reset idle timer
|
|
208
|
+
resetIdleTimer() {
|
|
209
|
+
if (this.scrollTimeout) {
|
|
210
|
+
clearTimeout(this.scrollTimeout);
|
|
211
|
+
}
|
|
212
|
+
this.scrollTimeout = window.setTimeout(() => {
|
|
213
|
+
this.isIdle = true;
|
|
214
|
+
}, 150); // 150ms after last scroll = idle
|
|
215
|
+
}
|
|
216
|
+
// Clean up resources
|
|
217
|
+
cleanup() {
|
|
218
|
+
if (this.scrollTimeout) {
|
|
219
|
+
clearTimeout(this.scrollTimeout);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
class NetworkSpeedDetector {
|
|
225
|
+
constructor() {
|
|
226
|
+
this.bandwidthHistory = [];
|
|
227
|
+
this.latencyHistory = [];
|
|
228
|
+
this.HISTORY_SIZE = 5;
|
|
229
|
+
}
|
|
230
|
+
// Estimate available bandwidth
|
|
231
|
+
async estimateBandwidth() {
|
|
232
|
+
const startTime = performance.now();
|
|
233
|
+
const testData = new Array(10000).fill('test_data').join('');
|
|
234
|
+
try {
|
|
235
|
+
// Send test request to measure bandwidth
|
|
236
|
+
const response = await fetch('/api/network-test', {
|
|
237
|
+
method: 'POST',
|
|
238
|
+
body: testData
|
|
239
|
+
});
|
|
240
|
+
const endTime = performance.now();
|
|
241
|
+
const duration = (endTime - startTime) / 1000; // seconds
|
|
242
|
+
const dataSize = testData.length; // bytes
|
|
243
|
+
const bandwidth = dataSize / duration; // bytes per second
|
|
244
|
+
this.bandwidthHistory.push(bandwidth);
|
|
245
|
+
if (this.bandwidthHistory.length > this.HISTORY_SIZE) {
|
|
246
|
+
this.bandwidthHistory.shift();
|
|
247
|
+
}
|
|
248
|
+
return this.getAverageBandwidth();
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
// If network test fails, return a conservative estimate
|
|
252
|
+
return 100000; // 100 KB/s as fallback
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// Measure network latency
|
|
256
|
+
async measureLatency() {
|
|
257
|
+
try {
|
|
258
|
+
const startTime = performance.now();
|
|
259
|
+
await fetch('/api/ping');
|
|
260
|
+
const endTime = performance.now();
|
|
261
|
+
const latency = endTime - startTime;
|
|
262
|
+
this.latencyHistory.push(latency);
|
|
263
|
+
if (this.latencyHistory.length > this.HISTORY_SIZE) {
|
|
264
|
+
this.latencyHistory.shift();
|
|
265
|
+
}
|
|
266
|
+
return this.getAverageLatency();
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
// If ping fails, return a high latency as fallback
|
|
270
|
+
return 1000; // 1 second as fallback
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// Assess overall connection quality
|
|
274
|
+
async assessConnectionQuality() {
|
|
275
|
+
try {
|
|
276
|
+
const [bandwidth, latency] = await Promise.all([
|
|
277
|
+
this.estimateBandwidth(),
|
|
278
|
+
this.measureLatency()
|
|
279
|
+
]);
|
|
280
|
+
if (latency > 1000)
|
|
281
|
+
return 'poor'; // High latency
|
|
282
|
+
if (bandwidth < 100000)
|
|
283
|
+
return 'poor'; // Low bandwidth (< 100 KB/s)
|
|
284
|
+
if (latency > 500 || bandwidth < 500000)
|
|
285
|
+
return 'good'; // Moderate
|
|
286
|
+
return 'excellent'; // Fast and responsive
|
|
287
|
+
}
|
|
288
|
+
catch (_a) {
|
|
289
|
+
return 'offline';
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
getAverageBandwidth() {
|
|
293
|
+
if (this.bandwidthHistory.length === 0)
|
|
294
|
+
return 0;
|
|
295
|
+
const sum = this.bandwidthHistory.reduce((a, b) => a + b, 0);
|
|
296
|
+
return sum / this.bandwidthHistory.length;
|
|
297
|
+
}
|
|
298
|
+
getAverageLatency() {
|
|
299
|
+
if (this.latencyHistory.length === 0)
|
|
300
|
+
return 0;
|
|
301
|
+
const sum = this.latencyHistory.reduce((a, b) => a + b, 0);
|
|
302
|
+
return sum / this.latencyHistory.length;
|
|
303
|
+
}
|
|
304
|
+
// Get current network statistics
|
|
305
|
+
getNetworkStats() {
|
|
306
|
+
return {
|
|
307
|
+
bandwidth: this.getAverageBandwidth(),
|
|
308
|
+
latency: this.getAverageLatency(),
|
|
309
|
+
history: [...this.bandwidthHistory]
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
class NetworkAwarePrefetchManager {
|
|
315
|
+
constructor(networkDetector) {
|
|
316
|
+
this.basePrefetchDistance = 400; // Base prefetch distance in pixels
|
|
317
|
+
this.networkDetector = networkDetector;
|
|
318
|
+
}
|
|
319
|
+
// Calculate prefetch distance based on network conditions
|
|
320
|
+
async calculateNetworkAdjustedPrefetch(velocity) {
|
|
321
|
+
const connectionQuality = await this.networkDetector.assessConnectionQuality();
|
|
322
|
+
// Base prefetch distance from scroll velocity
|
|
323
|
+
let baseDistance = this.basePrefetchDistance;
|
|
324
|
+
if (Math.abs(velocity) > 2.0)
|
|
325
|
+
baseDistance = 1200;
|
|
326
|
+
else if (Math.abs(velocity) > 1.0)
|
|
327
|
+
baseDistance = 800;
|
|
328
|
+
else if (Math.abs(velocity) > 0.3)
|
|
329
|
+
baseDistance = 400;
|
|
330
|
+
else
|
|
331
|
+
baseDistance = 200;
|
|
332
|
+
// Adjust based on network quality
|
|
333
|
+
switch (connectionQuality) {
|
|
334
|
+
case 'excellent':
|
|
335
|
+
return Math.round(baseDistance * 1.5); // Extra prefetch on fast networks
|
|
336
|
+
case 'good':
|
|
337
|
+
return Math.round(baseDistance * 1.2); // Slightly more prefetch
|
|
338
|
+
case 'poor':
|
|
339
|
+
return Math.round(baseDistance * 0.7); // Less prefetch on slow networks
|
|
340
|
+
case 'offline':
|
|
341
|
+
return Math.round(baseDistance * 0.3); // Minimal prefetch when offline
|
|
342
|
+
default:
|
|
343
|
+
return baseDistance;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
// Calculate batch size based on network conditions
|
|
347
|
+
async calculateNetworkAdjustedBatchSize(velocity) {
|
|
348
|
+
const connectionQuality = await this.networkDetector.assessConnectionQuality();
|
|
349
|
+
// Base batch size from scroll velocity
|
|
350
|
+
let baseBatchSize = 10; // Default batch size
|
|
351
|
+
if (Math.abs(velocity) > 2.0)
|
|
352
|
+
baseBatchSize = 20; // Fast scroll needs more
|
|
353
|
+
else if (Math.abs(velocity) > 1.0)
|
|
354
|
+
baseBatchSize = 15;
|
|
355
|
+
else if (Math.abs(velocity) > 0.3)
|
|
356
|
+
baseBatchSize = 10;
|
|
357
|
+
else
|
|
358
|
+
baseBatchSize = 5; // Slow scroll needs less
|
|
359
|
+
// Adjust based on network quality
|
|
360
|
+
switch (connectionQuality) {
|
|
361
|
+
case 'excellent':
|
|
362
|
+
return Math.min(baseBatchSize * 2, 50); // Large batches on fast networks
|
|
363
|
+
case 'good':
|
|
364
|
+
return Math.min(baseBatchSize * 1.5, 30); // Medium batches
|
|
365
|
+
case 'poor':
|
|
366
|
+
return Math.max(Math.round(baseBatchSize * 0.5), 5); // Small batches on slow networks
|
|
367
|
+
case 'offline':
|
|
368
|
+
return Math.max(Math.round(baseBatchSize * 0.3), 3); // Minimal batches when offline
|
|
369
|
+
default:
|
|
370
|
+
return baseBatchSize;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// Determine if prefetch should be delayed based on network conditions
|
|
374
|
+
async shouldDelayPrefetch() {
|
|
375
|
+
const connectionQuality = await this.networkDetector.assessConnectionQuality();
|
|
376
|
+
return connectionQuality === 'poor';
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
class NetworkAwareRequestQueue {
|
|
381
|
+
constructor(networkDetector) {
|
|
382
|
+
this.queue = [];
|
|
383
|
+
this.processing = false;
|
|
384
|
+
this.maxConcurrent = 1;
|
|
385
|
+
this.offlineQueue = [];
|
|
386
|
+
this.networkDetector = networkDetector;
|
|
387
|
+
}
|
|
388
|
+
// Add request with network-aware concurrency
|
|
389
|
+
async add(requestFn) {
|
|
390
|
+
// Adjust concurrency based on network conditions
|
|
391
|
+
const connectionQuality = await this.networkDetector.assessConnectionQuality();
|
|
392
|
+
switch (connectionQuality) {
|
|
393
|
+
case 'excellent':
|
|
394
|
+
this.maxConcurrent = 3; // Allow more concurrent requests
|
|
395
|
+
break;
|
|
396
|
+
case 'good':
|
|
397
|
+
this.maxConcurrent = 2; // Moderate concurrency
|
|
398
|
+
break;
|
|
399
|
+
case 'poor':
|
|
400
|
+
this.maxConcurrent = 1; // Sequential requests on slow networks
|
|
401
|
+
break;
|
|
402
|
+
case 'offline':
|
|
403
|
+
// Queue for later when online
|
|
404
|
+
return this.handleOfflineRequest(requestFn);
|
|
405
|
+
default:
|
|
406
|
+
this.maxConcurrent = 1;
|
|
407
|
+
}
|
|
408
|
+
return new Promise((resolve, reject) => {
|
|
409
|
+
this.queue.push(() => requestFn().then(resolve).catch(reject));
|
|
410
|
+
if (!this.processing) {
|
|
411
|
+
this.processQueue();
|
|
412
|
+
}
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
// Process queue with network-aware concurrency
|
|
416
|
+
async processQueue() {
|
|
417
|
+
if (this.queue.length === 0) {
|
|
418
|
+
this.processing = false;
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
this.processing = true;
|
|
422
|
+
// Process up to maxConcurrent requests
|
|
423
|
+
const concurrentRequests = [];
|
|
424
|
+
const count = Math.min(this.maxConcurrent, this.queue.length);
|
|
425
|
+
for (let i = 0; i < count; i++) {
|
|
426
|
+
const requestFn = this.queue.shift();
|
|
427
|
+
if (requestFn) {
|
|
428
|
+
concurrentRequests.push(requestFn());
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
try {
|
|
432
|
+
await Promise.all(concurrentRequests);
|
|
433
|
+
}
|
|
434
|
+
catch (error) {
|
|
435
|
+
console.error('Network-aware request queue error:', error);
|
|
436
|
+
}
|
|
437
|
+
// Process remaining items
|
|
438
|
+
await this.processQueue();
|
|
439
|
+
}
|
|
440
|
+
// Handle requests when offline
|
|
441
|
+
async handleOfflineRequest(requestFn) {
|
|
442
|
+
// Store request for later execution
|
|
443
|
+
return new Promise((resolve, reject) => {
|
|
444
|
+
// Add to offline queue
|
|
445
|
+
this.offlineQueue.push(() => requestFn().then(resolve).catch(reject));
|
|
446
|
+
// Check for network restoration periodically
|
|
447
|
+
const checkOnline = () => {
|
|
448
|
+
if (navigator.onLine) {
|
|
449
|
+
// Process offline queue
|
|
450
|
+
this.processOfflineQueue();
|
|
451
|
+
resolve(null); // Resolve with null since we can't return the actual result
|
|
452
|
+
}
|
|
453
|
+
else {
|
|
454
|
+
setTimeout(checkOnline, 5000); // Check again in 5 seconds
|
|
455
|
+
}
|
|
456
|
+
};
|
|
457
|
+
checkOnline();
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
// Process offline queue when back online
|
|
461
|
+
async processOfflineQueue() {
|
|
462
|
+
const offlineRequests = [...this.offlineQueue];
|
|
463
|
+
this.offlineQueue = [];
|
|
464
|
+
for (const requestFn of offlineRequests) {
|
|
465
|
+
try {
|
|
466
|
+
await requestFn();
|
|
467
|
+
}
|
|
468
|
+
catch (error) {
|
|
469
|
+
console.error('Offline request failed:', error);
|
|
470
|
+
// Add back to offline queue for retry
|
|
471
|
+
this.offlineQueue.push(requestFn);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
// Get current queue status
|
|
476
|
+
getQueueStatus() {
|
|
477
|
+
return {
|
|
478
|
+
pending: this.queue.length,
|
|
479
|
+
offline: this.offlineQueue.length,
|
|
480
|
+
maxConcurrent: this.maxConcurrent
|
|
481
|
+
};
|
|
482
|
+
}
|
|
483
|
+
// Clear all queues
|
|
484
|
+
clear() {
|
|
485
|
+
this.queue = [];
|
|
486
|
+
this.offlineQueue = [];
|
|
487
|
+
this.processing = false;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
|
|
119
491
|
class Engine {
|
|
120
492
|
constructor(config) {
|
|
121
493
|
this.fetchMoreCallback = null;
|
|
@@ -126,6 +498,10 @@ class Engine {
|
|
|
126
498
|
this.windowManager = new WindowManager(this.config.itemHeight, this.config.viewportHeight, this.config.bufferSize);
|
|
127
499
|
this.prefetchManager = new PrefetchManager(this.config.bufferSize);
|
|
128
500
|
this.requestQueue = new RequestQueue(1); // Single request at a time
|
|
501
|
+
this.intelligentScrollDetector = new IntelligentScrollDetector();
|
|
502
|
+
this.networkDetector = new NetworkSpeedDetector();
|
|
503
|
+
this.networkAwarePrefetchManager = new NetworkAwarePrefetchManager(this.networkDetector);
|
|
504
|
+
this.networkAwareRequestQueue = new NetworkAwareRequestQueue(this.networkDetector);
|
|
129
505
|
this.totalItems = this.config.totalItems || Number.MAX_SAFE_INTEGER;
|
|
130
506
|
this.state = {
|
|
131
507
|
scrollTop: 0,
|
|
@@ -135,9 +511,16 @@ class Engine {
|
|
|
135
511
|
};
|
|
136
512
|
}
|
|
137
513
|
/**
|
|
138
|
-
* Update scroll position and recalculate visible range
|
|
514
|
+
* Update scroll position and recalculate visible range with intelligent detection
|
|
139
515
|
*/
|
|
140
516
|
updateScrollPosition(scrollTop) {
|
|
517
|
+
// Calculate velocity and other intelligent metrics
|
|
518
|
+
const velocity = this.intelligentScrollDetector.calculateVelocity(scrollTop);
|
|
519
|
+
this.intelligentScrollDetector.getDirection(velocity);
|
|
520
|
+
// Calculate adaptive buffer based on scroll behavior
|
|
521
|
+
const adaptiveBuffer = this.intelligentScrollDetector.calculateBuffer(velocity);
|
|
522
|
+
// Update window manager with adaptive buffer
|
|
523
|
+
this.windowManager.updateBufferSize(adaptiveBuffer);
|
|
141
524
|
this.state.scrollTop = scrollTop;
|
|
142
525
|
this.state.visibleRange = this.windowManager.calculateVisibleRange(scrollTop);
|
|
143
526
|
// Check if we need to fetch more items
|
|
@@ -152,26 +535,35 @@ class Engine {
|
|
|
152
535
|
return this.state.visibleRange;
|
|
153
536
|
}
|
|
154
537
|
/**
|
|
155
|
-
* Check if more items should be fetched
|
|
538
|
+
* Check if more items should be fetched with intelligent and network-aware detection
|
|
156
539
|
*/
|
|
157
|
-
shouldFetchMore() {
|
|
540
|
+
async shouldFetchMore() {
|
|
158
541
|
if (!this.fetchMoreCallback)
|
|
159
542
|
return false;
|
|
160
543
|
if (this.state.isLoading)
|
|
161
544
|
return false;
|
|
162
545
|
if (this.state.loadedItems >= this.totalItems)
|
|
163
546
|
return false;
|
|
164
|
-
|
|
547
|
+
// Get current velocity for intelligent prefetching
|
|
548
|
+
const velocity = this.intelligentScrollDetector.calculateVelocity(this.state.scrollTop);
|
|
549
|
+
// Calculate network-adjusted prefetch distance
|
|
550
|
+
const prefetchDistance = await this.networkAwarePrefetchManager.calculateNetworkAdjustedPrefetch(velocity);
|
|
551
|
+
// Use intelligent prefetch logic
|
|
552
|
+
const visibleEnd = this.state.visibleRange.end;
|
|
553
|
+
const totalLoaded = this.state.loadedItems;
|
|
554
|
+
// Intelligent prefetch: if visible end is approaching the loaded boundary
|
|
555
|
+
return visibleEnd >= totalLoaded - prefetchDistance;
|
|
165
556
|
}
|
|
166
557
|
/**
|
|
167
|
-
* Fetch more items
|
|
558
|
+
* Fetch more items with network awareness
|
|
168
559
|
*/
|
|
169
560
|
async fetchMore() {
|
|
170
561
|
if (!this.fetchMoreCallback || this.state.isLoading)
|
|
171
562
|
return;
|
|
172
563
|
this.state.isLoading = true;
|
|
173
564
|
try {
|
|
174
|
-
|
|
565
|
+
// Use network-aware request queue
|
|
566
|
+
const result = await this.networkAwareRequestQueue.add(this.fetchMoreCallback);
|
|
175
567
|
// Assuming the result contains new items
|
|
176
568
|
// In a real implementation, this would update the loaded items count
|
|
177
569
|
this.state.loadedItems += Array.isArray(result) ? result.length : 1;
|
|
@@ -215,7 +607,9 @@ class Engine {
|
|
|
215
607
|
*/
|
|
216
608
|
cleanup() {
|
|
217
609
|
this.requestQueue.clear();
|
|
610
|
+
this.networkAwareRequestQueue.clear();
|
|
218
611
|
this.fetchMoreCallback = null;
|
|
612
|
+
this.intelligentScrollDetector.cleanup();
|
|
219
613
|
}
|
|
220
614
|
}
|
|
221
615
|
|
|
@@ -294,6 +688,14 @@ const useLazyList = (config) => {
|
|
|
294
688
|
const [visibleRange, setVisibleRange] = React.useState({ start: 0, end: 0 });
|
|
295
689
|
const [loadedItems, setLoadedItems] = React.useState([]);
|
|
296
690
|
const [isLoading, setIsLoading] = React.useState(false);
|
|
691
|
+
const [scrollAnalysis, setScrollAnalysis] = React.useState({
|
|
692
|
+
velocity: 0,
|
|
693
|
+
direction: 'stationary',
|
|
694
|
+
buffer: 5,
|
|
695
|
+
prefetchDistance: 400,
|
|
696
|
+
predictedPosition: 0,
|
|
697
|
+
isIdle: true
|
|
698
|
+
});
|
|
297
699
|
// Initialize engine
|
|
298
700
|
React.useEffect(() => {
|
|
299
701
|
engineRef.current = new Engine(engineConfig);
|
|
@@ -343,6 +745,7 @@ const useLazyList = (config) => {
|
|
|
343
745
|
visibleRange,
|
|
344
746
|
loadedItems,
|
|
345
747
|
isLoading,
|
|
748
|
+
scrollAnalysis,
|
|
346
749
|
setContainerRef,
|
|
347
750
|
// Helper function to trigger manual refresh
|
|
348
751
|
refresh: () => {
|
|
@@ -350,6 +753,22 @@ const useLazyList = (config) => {
|
|
|
350
753
|
if (engineRef.current) {
|
|
351
754
|
engineRef.current.updateScrollPosition(((_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.scrollTop) || 0);
|
|
352
755
|
}
|
|
756
|
+
},
|
|
757
|
+
// Function to get current scroll analysis
|
|
758
|
+
getScrollAnalysis: () => {
|
|
759
|
+
if (engineRef.current) {
|
|
760
|
+
// In a real implementation, we would get the analysis from the engine
|
|
761
|
+
// For now, we'll return the current state
|
|
762
|
+
return scrollAnalysis;
|
|
763
|
+
}
|
|
764
|
+
return {
|
|
765
|
+
velocity: 0,
|
|
766
|
+
direction: 'stationary',
|
|
767
|
+
buffer: 5,
|
|
768
|
+
prefetchDistance: 400,
|
|
769
|
+
predictedPosition: 0,
|
|
770
|
+
isIdle: true
|
|
771
|
+
};
|
|
353
772
|
}
|
|
354
773
|
};
|
|
355
774
|
};
|
|
@@ -424,7 +843,11 @@ function throttle(func, limit) {
|
|
|
424
843
|
}
|
|
425
844
|
|
|
426
845
|
exports.Engine = Engine;
|
|
846
|
+
exports.IntelligentScrollDetector = IntelligentScrollDetector;
|
|
427
847
|
exports.LazyList = LazyList;
|
|
848
|
+
exports.NetworkAwarePrefetchManager = NetworkAwarePrefetchManager;
|
|
849
|
+
exports.NetworkAwareRequestQueue = NetworkAwareRequestQueue;
|
|
850
|
+
exports.NetworkSpeedDetector = NetworkSpeedDetector;
|
|
428
851
|
exports.PrefetchManager = PrefetchManager;
|
|
429
852
|
exports.RequestQueue = RequestQueue;
|
|
430
853
|
exports.ScrollObserver = ScrollObserver;
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/core/WindowManager.ts","../../src/core/PrefetchManager.ts","../../src/core/RequestQueue.ts","../../src/core/Engine.ts","../../src/platform/browser/ScrollObserver.ts","../../src/adapters/react/useLazyList.ts","../../src/adapters/react/LazyList.tsx","../../src/utils/debounce.ts","../../src/utils/throttle.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["useRef","useState","useEffect","useCallback","forwardRef"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/core/WindowManager.ts","../../src/core/PrefetchManager.ts","../../src/core/RequestQueue.ts","../../src/core/IntelligentScrollDetector.ts","../../src/core/NetworkSpeedDetector.ts","../../src/core/NetworkAwarePrefetchManager.ts","../../src/core/NetworkAwareRequestQueue.ts","../../src/core/Engine.ts","../../src/platform/browser/ScrollObserver.ts","../../src/adapters/react/useLazyList.ts","../../src/adapters/react/LazyList.tsx","../../src/utils/debounce.ts","../../src/utils/throttle.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["useRef","useState","useEffect","useCallback","forwardRef"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EngineConfig, VisibleRange, FetchMoreCallback } from '../../core/types';
|
|
1
|
+
import { EngineConfig, VisibleRange, FetchMoreCallback, ScrollAnalysis } from '../../core/types';
|
|
2
2
|
interface LazyListConfig extends EngineConfig {
|
|
3
3
|
fetchMore: FetchMoreCallback;
|
|
4
4
|
}
|
|
@@ -6,8 +6,17 @@ export declare const useLazyList: (config: LazyListConfig) => {
|
|
|
6
6
|
visibleRange: VisibleRange;
|
|
7
7
|
loadedItems: any[];
|
|
8
8
|
isLoading: boolean;
|
|
9
|
+
scrollAnalysis: ScrollAnalysis;
|
|
9
10
|
setContainerRef: (element: HTMLElement | null) => (() => void) | undefined;
|
|
10
11
|
refresh: () => void;
|
|
12
|
+
getScrollAnalysis: () => {
|
|
13
|
+
velocity: number;
|
|
14
|
+
direction: string;
|
|
15
|
+
buffer: number;
|
|
16
|
+
prefetchDistance: number;
|
|
17
|
+
predictedPosition: number;
|
|
18
|
+
isIdle: boolean;
|
|
19
|
+
};
|
|
11
20
|
};
|
|
12
21
|
export {};
|
|
13
22
|
//# sourceMappingURL=useLazyList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLazyList.d.ts","sourceRoot":"","sources":["../../../src/adapters/react/useLazyList.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"useLazyList.d.ts","sourceRoot":"","sources":["../../../src/adapters/react/useLazyList.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEjG,UAAU,cAAe,SAAQ,YAAY;IAC3C,SAAS,EAAE,iBAAiB,CAAC;CAC9B;AAED,eAAO,MAAM,WAAW,GAAI,QAAQ,cAAc;;;;;+BAoDd,WAAW,GAAG,IAAI;;;;;;;;;;CAmDrD,CAAC"}
|