lazy-render-virtual-scroll 1.0.5 → 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.
Files changed (47) hide show
  1. package/README.md +3 -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/Engine.d.ts +8 -4
  5. package/dist/cjs/core/Engine.d.ts.map +1 -1
  6. package/dist/cjs/core/IntelligentScrollDetector.d.ts +19 -0
  7. package/dist/cjs/core/IntelligentScrollDetector.d.ts.map +1 -0
  8. package/dist/cjs/core/NetworkAwarePrefetchManager.d.ts +10 -0
  9. package/dist/cjs/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  10. package/dist/cjs/core/NetworkAwareRequestQueue.d.ts +20 -0
  11. package/dist/cjs/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  12. package/dist/cjs/core/NetworkSpeedDetector.d.ts +16 -0
  13. package/dist/cjs/core/NetworkSpeedDetector.d.ts.map +1 -0
  14. package/dist/cjs/core/PrefetchManager.d.ts +7 -4
  15. package/dist/cjs/core/PrefetchManager.d.ts.map +1 -1
  16. package/dist/cjs/core/WindowManager.d.ts +4 -0
  17. package/dist/cjs/core/WindowManager.d.ts.map +1 -1
  18. package/dist/cjs/core/types.d.ts +8 -0
  19. package/dist/cjs/core/types.d.ts.map +1 -1
  20. package/dist/cjs/index.d.ts +5 -1
  21. package/dist/cjs/index.d.ts.map +1 -1
  22. package/dist/cjs/index.js +436 -13
  23. package/dist/cjs/index.js.map +1 -1
  24. package/dist/esm/adapters/react/useLazyList.d.ts +10 -1
  25. package/dist/esm/adapters/react/useLazyList.d.ts.map +1 -1
  26. package/dist/esm/core/Engine.d.ts +8 -4
  27. package/dist/esm/core/Engine.d.ts.map +1 -1
  28. package/dist/esm/core/IntelligentScrollDetector.d.ts +19 -0
  29. package/dist/esm/core/IntelligentScrollDetector.d.ts.map +1 -0
  30. package/dist/esm/core/NetworkAwarePrefetchManager.d.ts +10 -0
  31. package/dist/esm/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  32. package/dist/esm/core/NetworkAwareRequestQueue.d.ts +20 -0
  33. package/dist/esm/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  34. package/dist/esm/core/NetworkSpeedDetector.d.ts +16 -0
  35. package/dist/esm/core/NetworkSpeedDetector.d.ts.map +1 -0
  36. package/dist/esm/core/PrefetchManager.d.ts +7 -4
  37. package/dist/esm/core/PrefetchManager.d.ts.map +1 -1
  38. package/dist/esm/core/WindowManager.d.ts +4 -0
  39. package/dist/esm/core/WindowManager.d.ts.map +1 -1
  40. package/dist/esm/core/types.d.ts +8 -0
  41. package/dist/esm/core/types.d.ts.map +1 -1
  42. package/dist/esm/index.d.ts +5 -1
  43. package/dist/esm/index.d.ts.map +1 -1
  44. package/dist/esm/index.js +433 -14
  45. package/dist/esm/index.js.map +1 -1
  46. package/dist/index.d.ts +101 -10
  47. package/package.json +1 -1
package/README.md CHANGED
@@ -27,11 +27,14 @@ 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 scroll behavior
30
32
  - **Smart Prefetching**: Loads data ahead of user scroll to prevent loading gaps
31
33
  - **Memory Efficient**: Automatically cleans up off-screen elements
32
34
  - **React Adapter**: Easy integration with React applications
33
35
  - **Configurable Buffer**: Adjustable buffer size for optimal performance
34
36
  - **Overscan Support**: Additional buffer for smoother scrolling
37
+ - **Predictive Loading**: Anticipates user needs based on scroll patterns
35
38
 
36
39
  ## Installation
37
40
 
@@ -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"}
@@ -4,12 +4,16 @@ 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;
7
11
  private state;
8
12
  private fetchMoreCallback;
9
13
  private totalItems;
10
14
  constructor(config: EngineConfig);
11
15
  /**
12
- * Update scroll position and recalculate visible range
16
+ * Update scroll position and recalculate visible range with intelligent detection
13
17
  */
14
18
  updateScrollPosition(scrollTop: number): void;
15
19
  /**
@@ -17,11 +21,11 @@ export declare class Engine {
17
21
  */
18
22
  getVisibleRange(): VisibleRange;
19
23
  /**
20
- * Check if more items should be fetched
24
+ * Check if more items should be fetched with intelligent and network-aware detection
21
25
  */
22
- shouldFetchMore(): boolean;
26
+ shouldFetchMore(): Promise<boolean>;
23
27
  /**
24
- * Fetch more items
28
+ * Fetch more items with network awareness
25
29
  */
26
30
  fetchMore(): Promise<void>;
27
31
  /**
@@ -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;AASrF,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;IAE3D,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,YAAY;IA6BhC;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAoB7C;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAmBzC;;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,11 @@ 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 type { EngineConfig, VisibleRange, FetchMoreCallback, EngineState, ScrollAnalysis } from './core/types';
6
10
  export { ScrollObserver } from './platform/browser/ScrollObserver';
7
11
  export { useLazyList } from './adapters/react/useLazyList';
8
12
  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,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"}