lazy-render-virtual-scroll 1.0.5 → 1.0.7

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 (59) hide show
  1. package/README.md +6 -0
  2. package/dist/cjs/adapters/react/useLazyList.d.ts +10 -1
  3. package/dist/cjs/adapters/react/useLazyList.d.ts.map +1 -1
  4. package/dist/cjs/core/AdaptiveBufferCalculator.d.ts +46 -0
  5. package/dist/cjs/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  6. package/dist/cjs/core/ContentComplexityAnalyzer.d.ts +13 -0
  7. package/dist/cjs/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  8. package/dist/cjs/core/DevicePerformanceMonitor.d.ts +22 -0
  9. package/dist/cjs/core/DevicePerformanceMonitor.d.ts.map +1 -0
  10. package/dist/cjs/core/Engine.d.ts +10 -5
  11. package/dist/cjs/core/Engine.d.ts.map +1 -1
  12. package/dist/cjs/core/IntelligentScrollDetector.d.ts +19 -0
  13. package/dist/cjs/core/IntelligentScrollDetector.d.ts.map +1 -0
  14. package/dist/cjs/core/NetworkAwarePrefetchManager.d.ts +10 -0
  15. package/dist/cjs/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  16. package/dist/cjs/core/NetworkAwareRequestQueue.d.ts +20 -0
  17. package/dist/cjs/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  18. package/dist/cjs/core/NetworkSpeedDetector.d.ts +16 -0
  19. package/dist/cjs/core/NetworkSpeedDetector.d.ts.map +1 -0
  20. package/dist/cjs/core/PrefetchManager.d.ts +7 -4
  21. package/dist/cjs/core/PrefetchManager.d.ts.map +1 -1
  22. package/dist/cjs/core/WindowManager.d.ts +4 -0
  23. package/dist/cjs/core/WindowManager.d.ts.map +1 -1
  24. package/dist/cjs/core/types.d.ts +8 -0
  25. package/dist/cjs/core/types.d.ts.map +1 -1
  26. package/dist/cjs/index.d.ts +8 -1
  27. package/dist/cjs/index.d.ts.map +1 -1
  28. package/dist/cjs/index.js +709 -16
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/esm/adapters/react/useLazyList.d.ts +10 -1
  31. package/dist/esm/adapters/react/useLazyList.d.ts.map +1 -1
  32. package/dist/esm/core/AdaptiveBufferCalculator.d.ts +46 -0
  33. package/dist/esm/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  34. package/dist/esm/core/ContentComplexityAnalyzer.d.ts +13 -0
  35. package/dist/esm/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  36. package/dist/esm/core/DevicePerformanceMonitor.d.ts +22 -0
  37. package/dist/esm/core/DevicePerformanceMonitor.d.ts.map +1 -0
  38. package/dist/esm/core/Engine.d.ts +10 -5
  39. package/dist/esm/core/Engine.d.ts.map +1 -1
  40. package/dist/esm/core/IntelligentScrollDetector.d.ts +19 -0
  41. package/dist/esm/core/IntelligentScrollDetector.d.ts.map +1 -0
  42. package/dist/esm/core/NetworkAwarePrefetchManager.d.ts +10 -0
  43. package/dist/esm/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  44. package/dist/esm/core/NetworkAwareRequestQueue.d.ts +20 -0
  45. package/dist/esm/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  46. package/dist/esm/core/NetworkSpeedDetector.d.ts +16 -0
  47. package/dist/esm/core/NetworkSpeedDetector.d.ts.map +1 -0
  48. package/dist/esm/core/PrefetchManager.d.ts +7 -4
  49. package/dist/esm/core/PrefetchManager.d.ts.map +1 -1
  50. package/dist/esm/core/WindowManager.d.ts +4 -0
  51. package/dist/esm/core/WindowManager.d.ts.map +1 -1
  52. package/dist/esm/core/types.d.ts +8 -0
  53. package/dist/esm/core/types.d.ts.map +1 -1
  54. package/dist/esm/index.d.ts +8 -1
  55. package/dist/esm/index.d.ts.map +1 -1
  56. package/dist/esm/index.js +703 -17
  57. package/dist/esm/index.js.map +1 -1
  58. package/dist/index.d.ts +184 -11
  59. package/package.json +3 -1
package/README.md CHANGED
@@ -27,11 +27,17 @@ A framework-agnostic virtual scrolling and lazy rendering solution that efficien
27
27
 
28
28
  - **Framework Agnostic Core**: Pure logic implementation that works across different environments
29
29
  - **Virtual Scrolling**: Only renders visible items to improve performance
30
+ - **Intelligent Scroll Detection**: Analyzes scroll velocity, direction, and patterns
31
+ - **Adaptive Buffer Management**: Dynamically adjusts buffer size based on multiple factors
30
32
  - **Smart Prefetching**: Loads data ahead of user scroll to prevent loading gaps
33
+ - **Network Awareness**: Adapts to network conditions and bandwidth limitations
34
+ - **Device Performance Monitoring**: Adjusts behavior based on device capabilities
35
+ - **Content Complexity Analysis**: Optimizes for different content types and complexity
31
36
  - **Memory Efficient**: Automatically cleans up off-screen elements
32
37
  - **React Adapter**: Easy integration with React applications
33
38
  - **Configurable Buffer**: Adjustable buffer size for optimal performance
34
39
  - **Overscan Support**: Additional buffer for smoother scrolling
40
+ - **Predictive Loading**: Anticipates user needs based on scroll patterns
35
41
 
36
42
  ## Installation
37
43
 
@@ -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;AAEjF,UAAU,cAAe,SAAQ,YAAY;IAC3C,SAAS,EAAE,iBAAiB,CAAC;CAC9B;AAED,eAAO,MAAM,WAAW,GAAI,QAAQ,cAAc;;;;+BA4Cd,WAAW,GAAG,IAAI;;CAkCrD,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"}
@@ -0,0 +1,46 @@
1
+ export declare class AdaptiveBufferCalculator {
2
+ private scrollFactor;
3
+ private networkFactor;
4
+ private performanceFactor;
5
+ private contentFactor;
6
+ private performanceMonitor;
7
+ private contentAnalyzer;
8
+ constructor();
9
+ calculateOptimalBuffer(params: {
10
+ scrollVelocity: number;
11
+ networkQuality: 'excellent' | 'good' | 'poor' | 'offline';
12
+ baseBuffer: number;
13
+ visibleItems: any[];
14
+ }): Promise<number>;
15
+ private calculateScrollBuffer;
16
+ private calculateNetworkAdjustment;
17
+ private calculatePerformanceAdjustment;
18
+ private calculateContentAdjustment;
19
+ getAdaptiveInsights(params: {
20
+ scrollVelocity: number;
21
+ networkQuality: 'excellent' | 'good' | 'poor' | 'offline';
22
+ baseBuffer: number;
23
+ visibleItems: any[];
24
+ }): Promise<{
25
+ currentBuffer: number;
26
+ performance: {
27
+ frameRate: number;
28
+ score: number;
29
+ };
30
+ network: {
31
+ quality: string;
32
+ adjustment: number;
33
+ };
34
+ complexity: {
35
+ score: number;
36
+ breakdown: any;
37
+ };
38
+ factors: {
39
+ scroll: number;
40
+ network: number;
41
+ performance: number;
42
+ content: number;
43
+ };
44
+ }>;
45
+ }
46
+ //# sourceMappingURL=AdaptiveBufferCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdaptiveBufferCalculator.d.ts","sourceRoot":"","sources":["../../src/core/AdaptiveBufferCalculator.ts"],"names":[],"mappings":"AAGA,qBAAa,wBAAwB;IACnC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,iBAAiB,CAAe;IACxC,OAAO,CAAC,aAAa,CAAe;IAEpC,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,eAAe,CAA4B;;IAQ7C,sBAAsB,CAAC,MAAM,EAAE;QACnC,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QAC1D,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,GAAG,EAAE,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BnB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,8BAA8B;IAKtC,OAAO,CAAC,0BAA0B;IAM5B,mBAAmB,CAAC,MAAM,EAAE;QAChC,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QAC1D,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,GAAG,EAAE,CAAC;KACrB,GAAG,OAAO,CAAC;QACV,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAClD,OAAO,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;QACjD,UAAU,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,GAAG,CAAA;SAAE,CAAC;QAC9C,OAAO,EAAE;YACP,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE,MAAM,CAAC;YAChB,WAAW,EAAE,MAAM,CAAC;YACpB,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;CA2BH"}
@@ -0,0 +1,13 @@
1
+ export declare class ContentComplexityAnalyzer {
2
+ analyzeContentComplexity(items: any[]): number;
3
+ private analyzeTextComplexity;
4
+ private analyzeMediaComplexity;
5
+ private analyzeComponentComplexity;
6
+ getComplexityInsights(items: any[]): {
7
+ averageComplexity: number;
8
+ textComplexity: number;
9
+ mediaComplexity: number;
10
+ componentComplexity: number;
11
+ };
12
+ }
13
+ //# sourceMappingURL=ContentComplexityAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentComplexityAnalyzer.d.ts","sourceRoot":"","sources":["../../src/core/ContentComplexityAnalyzer.ts"],"names":[],"mappings":"AAAA,qBAAa,yBAAyB;IAEpC,wBAAwB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM;IAkB9C,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,0BAA0B;IAiBlC,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG;QACnC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;KAC7B;CAyBF"}
@@ -0,0 +1,22 @@
1
+ export declare class DevicePerformanceMonitor {
2
+ private frameRateHistory;
3
+ private memoryUsageHistory;
4
+ private gcMonitoring;
5
+ private readonly HISTORY_SIZE;
6
+ constructor();
7
+ getFrameRate(): Promise<number>;
8
+ getAverageFrameRate(): number;
9
+ getMemoryInfo(): {
10
+ used: number;
11
+ total: number;
12
+ } | null;
13
+ assessPerformance(): Promise<number>;
14
+ private setupPerformanceMonitoring;
15
+ getPerformanceInsights(): {
16
+ frameRate: number;
17
+ performanceScore: number;
18
+ memoryUsed: number | null;
19
+ memoryTotal: number | null;
20
+ };
21
+ }
22
+ //# sourceMappingURL=DevicePerformanceMonitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevicePerformanceMonitor.d.ts","sourceRoot":"","sources":["../../src/core/DevicePerformanceMonitor.ts"],"names":[],"mappings":"AAAA,qBAAa,wBAAwB;IACnC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAM;;IAO7B,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAyBrC,mBAAmB,IAAI,MAAM;IAO7B,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;KAAE,GAAG,IAAI;IAelD,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAgB1C,OAAO,CAAC,0BAA0B;IAQlC,sBAAsB,IAAI;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B;CAcF"}
@@ -4,24 +4,29 @@ export declare class Engine {
4
4
  private windowManager;
5
5
  private prefetchManager;
6
6
  private requestQueue;
7
+ private intelligentScrollDetector;
8
+ private networkDetector;
9
+ private networkAwarePrefetchManager;
10
+ private networkAwareRequestQueue;
11
+ private adaptiveBufferCalculator;
7
12
  private state;
8
13
  private fetchMoreCallback;
9
14
  private totalItems;
10
15
  constructor(config: EngineConfig);
11
16
  /**
12
- * Update scroll position and recalculate visible range
17
+ * Update scroll position and recalculate visible range with intelligent detection
13
18
  */
14
- updateScrollPosition(scrollTop: number): void;
19
+ updateScrollPosition(scrollTop: number): Promise<void>;
15
20
  /**
16
21
  * Get the current visible range
17
22
  */
18
23
  getVisibleRange(): VisibleRange;
19
24
  /**
20
- * Check if more items should be fetched
25
+ * Check if more items should be fetched with intelligent and network-aware detection
21
26
  */
22
- shouldFetchMore(): boolean;
27
+ shouldFetchMore(): Promise<boolean>;
23
28
  /**
24
- * Fetch more items
29
+ * Fetch more items with network awareness
25
30
  */
26
31
  fetchMore(): Promise<void>;
27
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../src/core/Engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAKrF,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAe;IAEnC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,YAAY;IAyBhC;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAU7C;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,eAAe,IAAI,OAAO;IAW1B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBhC;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAIvD;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAQlE;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
1
+ {"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../src/core/Engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAUrF,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,yBAAyB,CAA4B;IAC7D,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,2BAA2B,CAA8B;IACjE,OAAO,CAAC,wBAAwB,CAA2B;IAC3D,OAAO,CAAC,wBAAwB,CAA2B;IAE3D,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,YAAY;IA8BhC;;OAEG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B5D;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAsBzC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBhC;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAIvD;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAQlE;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
@@ -0,0 +1,19 @@
1
+ export declare class IntelligentScrollDetector {
2
+ private lastScrollTop;
3
+ private lastTime;
4
+ private velocityHistory;
5
+ private readonly HISTORY_SIZE;
6
+ private scrollTimeout;
7
+ private isIdle;
8
+ constructor();
9
+ calculateVelocity(scrollTop: number): number;
10
+ private getAverageVelocity;
11
+ getDirection(velocity: number): 'up' | 'down' | 'stationary';
12
+ calculateBuffer(velocity: number): number;
13
+ calculatePrefetchDistance(velocity: number): number;
14
+ predictPosition(currentPosition: number, velocity: number, msAhead?: number): number;
15
+ getIsIdle(): boolean;
16
+ private resetIdleTimer;
17
+ cleanup(): void;
18
+ }
19
+ //# sourceMappingURL=IntelligentScrollDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntelligentScrollDetector.d.ts","sourceRoot":"","sources":["../../src/core/IntelligentScrollDetector.ts"],"names":[],"mappings":"AAAA,qBAAa,yBAAyB;IACpC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAK;IAClC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,MAAM,CAAiB;;IAO/B,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IA2B5C,OAAO,CAAC,kBAAkB;IAQ1B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,YAAY;IAM5D,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAezC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAUnD,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,MAAY,GAAG,MAAM;IAKzF,SAAS,IAAI,OAAO;IAKpB,OAAO,CAAC,cAAc;IAWtB,OAAO,IAAI,IAAI;CAKhB"}
@@ -0,0 +1,10 @@
1
+ import { NetworkSpeedDetector } from './NetworkSpeedDetector';
2
+ export declare class NetworkAwarePrefetchManager {
3
+ private networkDetector;
4
+ private basePrefetchDistance;
5
+ constructor(networkDetector: NetworkSpeedDetector);
6
+ calculateNetworkAdjustedPrefetch(velocity: number): Promise<number>;
7
+ calculateNetworkAdjustedBatchSize(velocity: number): Promise<number>;
8
+ shouldDelayPrefetch(): Promise<boolean>;
9
+ }
10
+ //# sourceMappingURL=NetworkAwarePrefetchManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkAwarePrefetchManager.d.ts","sourceRoot":"","sources":["../../src/core/NetworkAwarePrefetchManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,qBAAa,2BAA2B;IACtC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,oBAAoB,CAAO;gBAEvB,eAAe,EAAE,oBAAoB;IAK3C,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BnE,iCAAiC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BpE,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;CAI9C"}
@@ -0,0 +1,20 @@
1
+ import { NetworkSpeedDetector } from './NetworkSpeedDetector';
2
+ export declare class NetworkAwareRequestQueue {
3
+ private networkDetector;
4
+ private queue;
5
+ private processing;
6
+ private maxConcurrent;
7
+ private offlineQueue;
8
+ constructor(networkDetector: NetworkSpeedDetector);
9
+ add(requestFn: () => Promise<any>): Promise<any>;
10
+ private processQueue;
11
+ private handleOfflineRequest;
12
+ private processOfflineQueue;
13
+ getQueueStatus(): {
14
+ pending: number;
15
+ offline: number;
16
+ maxConcurrent: number;
17
+ };
18
+ clear(): void;
19
+ }
20
+ //# sourceMappingURL=NetworkAwareRequestQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkAwareRequestQueue.d.ts","sourceRoot":"","sources":["../../src/core/NetworkAwareRequestQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,qBAAa,wBAAwB;IACnC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,YAAY,CAAiC;gBAEzC,eAAe,EAAE,oBAAoB;IAK3C,GAAG,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;YA+BxC,YAAY;YA8BZ,oBAAoB;YAsBpB,mBAAmB;IAgBjC,cAAc,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IAS7E,KAAK,IAAI,IAAI;CAKd"}
@@ -0,0 +1,16 @@
1
+ export declare class NetworkSpeedDetector {
2
+ private bandwidthHistory;
3
+ private latencyHistory;
4
+ private readonly HISTORY_SIZE;
5
+ estimateBandwidth(): Promise<number>;
6
+ measureLatency(): Promise<number>;
7
+ assessConnectionQuality(): Promise<'excellent' | 'good' | 'poor' | 'offline'>;
8
+ private getAverageBandwidth;
9
+ private getAverageLatency;
10
+ getNetworkStats(): {
11
+ bandwidth: number;
12
+ latency: number;
13
+ history: number[];
14
+ };
15
+ }
16
+ //# sourceMappingURL=NetworkSpeedDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkSpeedDetector.d.ts","sourceRoot":"","sources":["../../src/core/NetworkSpeedDetector.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAK;IAG5B,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IA6BpC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAsBjC,uBAAuB,IAAI,OAAO,CAAC,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAgBnF,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,iBAAiB;IAOzB,eAAe,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;CAO7E"}
@@ -1,12 +1,15 @@
1
1
  export declare class PrefetchManager {
2
- private bufferSize;
3
- constructor(bufferSize?: number);
4
2
  /**
5
- * Determine if more items should be fetched based on visible range and loaded items
3
+ * This class is kept for backward compatibility
4
+ * Intelligent prefetching is now handled in the Engine class
5
+ */
6
+ constructor();
7
+ /**
8
+ * Legacy method - not used in intelligent mode
6
9
  */
7
10
  shouldPrefetch(visibleEnd: number, totalLoaded: number): boolean;
8
11
  /**
9
- * Update buffer size if it changes
12
+ * Update buffer size if it changes (for backward compatibility)
10
13
  */
11
14
  updateBufferSize(size: number): void;
12
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PrefetchManager.d.ts","sourceRoot":"","sources":["../../src/core/PrefetchManager.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,GAAE,MAAU;IAIlC;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAKhE;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAGrC"}
1
+ {"version":3,"file":"PrefetchManager.d.ts","sourceRoot":"","sources":["../../src/core/PrefetchManager.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAe;IAC1B;;;OAGG;;IAGH;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAKhE;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAIrC"}
@@ -16,5 +16,9 @@ export declare class WindowManager {
16
16
  * Update item height if it changes
17
17
  */
18
18
  updateItemHeight(height: number): void;
19
+ /**
20
+ * Update buffer size if it changes
21
+ */
22
+ updateBufferSize(size: number): void;
19
23
  }
20
24
  //# sourceMappingURL=WindowManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WindowManager.d.ts","sourceRoot":"","sources":["../../src/core/WindowManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU;IAM9E;;OAEG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAmBtD;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGvC"}
1
+ {"version":3,"file":"WindowManager.d.ts","sourceRoot":"","sources":["../../src/core/WindowManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU;IAM9E;;OAEG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAmBtD;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAItC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAGrC"}
@@ -17,4 +17,12 @@ export interface EngineState {
17
17
  loadedItems: number;
18
18
  isLoading: boolean;
19
19
  }
20
+ export interface ScrollAnalysis {
21
+ velocity: number;
22
+ direction: 'up' | 'down' | 'stationary';
23
+ buffer: number;
24
+ prefetchDistance: number;
25
+ predictedPosition: number;
26
+ isIdle: boolean;
27
+ }
20
28
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,YAAY,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CACjB"}
@@ -2,7 +2,14 @@ export { Engine } from './core/Engine';
2
2
  export { WindowManager } from './core/WindowManager';
3
3
  export { PrefetchManager } from './core/PrefetchManager';
4
4
  export { RequestQueue } from './core/RequestQueue';
5
- export type { EngineConfig, VisibleRange, FetchMoreCallback, EngineState } from './core/types';
5
+ export { IntelligentScrollDetector } from './core/IntelligentScrollDetector';
6
+ export { NetworkSpeedDetector } from './core/NetworkSpeedDetector';
7
+ export { NetworkAwarePrefetchManager } from './core/NetworkAwarePrefetchManager';
8
+ export { NetworkAwareRequestQueue } from './core/NetworkAwareRequestQueue';
9
+ export { AdaptiveBufferCalculator } from './core/AdaptiveBufferCalculator';
10
+ export { DevicePerformanceMonitor } from './core/DevicePerformanceMonitor';
11
+ export { ContentComplexityAnalyzer } from './core/ContentComplexityAnalyzer';
12
+ export type { EngineConfig, VisibleRange, FetchMoreCallback, EngineState, ScrollAnalysis } from './core/types';
6
13
  export { ScrollObserver } from './platform/browser/ScrollObserver';
7
14
  export { useLazyList } from './adapters/react/useLazyList';
8
15
  export { LazyList } from './adapters/react/LazyList';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG/F,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGrD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG/G,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGrD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}