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.
- package/README.md +6 -0
- 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/AdaptiveBufferCalculator.d.ts +46 -0
- package/dist/cjs/core/AdaptiveBufferCalculator.d.ts.map +1 -0
- package/dist/cjs/core/ContentComplexityAnalyzer.d.ts +13 -0
- package/dist/cjs/core/ContentComplexityAnalyzer.d.ts.map +1 -0
- package/dist/cjs/core/DevicePerformanceMonitor.d.ts +22 -0
- package/dist/cjs/core/DevicePerformanceMonitor.d.ts.map +1 -0
- package/dist/cjs/core/Engine.d.ts +10 -5
- 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 +8 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +709 -16
- 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/AdaptiveBufferCalculator.d.ts +46 -0
- package/dist/esm/core/AdaptiveBufferCalculator.d.ts.map +1 -0
- package/dist/esm/core/ContentComplexityAnalyzer.d.ts +13 -0
- package/dist/esm/core/ContentComplexityAnalyzer.d.ts.map +1 -0
- package/dist/esm/core/DevicePerformanceMonitor.d.ts +22 -0
- package/dist/esm/core/DevicePerformanceMonitor.d.ts.map +1 -0
- package/dist/esm/core/Engine.d.ts +10 -5
- 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 +8 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +703 -17
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.ts +184 -11
- 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;
|
|
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;
|
|
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
|
-
*
|
|
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
|
|
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;
|
|
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"}
|
package/dist/cjs/core/types.d.ts
CHANGED
|
@@ -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"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -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
|
|
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';
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -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/
|
|
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"}
|