lazy-render-virtual-scroll 1.0.6 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +14 -1
  2. package/dist/cjs/adapters/angular/lazy-scroll.component.d.ts +28 -0
  3. package/dist/cjs/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  4. package/dist/cjs/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  5. package/dist/cjs/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  6. package/dist/cjs/adapters/index.d.ts +7 -0
  7. package/dist/cjs/adapters/index.d.ts.map +1 -0
  8. package/dist/cjs/adapters/svelte/lazyScrollAction.d.ts +13 -0
  9. package/dist/cjs/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  10. package/dist/cjs/adapters/vue/useLazyScroll.d.ts +13 -0
  11. package/dist/cjs/adapters/vue/useLazyScroll.d.ts.map +1 -0
  12. package/dist/cjs/core/AdaptiveBufferCalculator.d.ts +46 -0
  13. package/dist/cjs/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  14. package/dist/cjs/core/ContentComplexityAnalyzer.d.ts +13 -0
  15. package/dist/cjs/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  16. package/dist/cjs/core/DevicePerformanceMonitor.d.ts +22 -0
  17. package/dist/cjs/core/DevicePerformanceMonitor.d.ts.map +1 -0
  18. package/dist/cjs/core/Engine.d.ts +5 -1
  19. package/dist/cjs/core/Engine.d.ts.map +1 -1
  20. package/dist/cjs/core/GPUAccelerator.d.ts +23 -0
  21. package/dist/cjs/core/GPUAccelerator.d.ts.map +1 -0
  22. package/dist/cjs/core/MemoryManager.d.ts +33 -0
  23. package/dist/cjs/core/MemoryManager.d.ts.map +1 -0
  24. package/dist/cjs/core/PerformanceOptimizer.d.ts +39 -0
  25. package/dist/cjs/core/PerformanceOptimizer.d.ts.map +1 -0
  26. package/dist/cjs/index.d.ts +12 -0
  27. package/dist/cjs/index.d.ts.map +1 -1
  28. package/dist/cjs/index.js +1486 -14
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/esm/adapters/angular/lazy-scroll.component.d.ts +28 -0
  31. package/dist/esm/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  32. package/dist/esm/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  33. package/dist/esm/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  34. package/dist/esm/adapters/index.d.ts +7 -0
  35. package/dist/esm/adapters/index.d.ts.map +1 -0
  36. package/dist/esm/adapters/svelte/lazyScrollAction.d.ts +13 -0
  37. package/dist/esm/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  38. package/dist/esm/adapters/vue/useLazyScroll.d.ts +13 -0
  39. package/dist/esm/adapters/vue/useLazyScroll.d.ts.map +1 -0
  40. package/dist/esm/core/AdaptiveBufferCalculator.d.ts +46 -0
  41. package/dist/esm/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  42. package/dist/esm/core/ContentComplexityAnalyzer.d.ts +13 -0
  43. package/dist/esm/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  44. package/dist/esm/core/DevicePerformanceMonitor.d.ts +22 -0
  45. package/dist/esm/core/DevicePerformanceMonitor.d.ts.map +1 -0
  46. package/dist/esm/core/Engine.d.ts +5 -1
  47. package/dist/esm/core/Engine.d.ts.map +1 -1
  48. package/dist/esm/core/GPUAccelerator.d.ts +23 -0
  49. package/dist/esm/core/GPUAccelerator.d.ts.map +1 -0
  50. package/dist/esm/core/MemoryManager.d.ts +33 -0
  51. package/dist/esm/core/MemoryManager.d.ts.map +1 -0
  52. package/dist/esm/core/PerformanceOptimizer.d.ts +39 -0
  53. package/dist/esm/core/PerformanceOptimizer.d.ts.map +1 -0
  54. package/dist/esm/index.d.ts +12 -0
  55. package/dist/esm/index.d.ts.map +1 -1
  56. package/dist/esm/index.js +1474 -15
  57. package/dist/esm/index.js.map +1 -1
  58. package/dist/index.d.ts +531 -2
  59. package/package.json +3 -1
package/README.md CHANGED
@@ -28,10 +28,23 @@ A framework-agnostic virtual scrolling and lazy rendering solution that efficien
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
30
  - **Intelligent Scroll Detection**: Analyzes scroll velocity, direction, and patterns
31
- - **Adaptive Buffer Management**: Dynamically adjusts buffer size based on scroll behavior
31
+ - **Adaptive Buffer Management**: Dynamically adjusts buffer size based on multiple factors
32
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
33
36
  - **Memory Efficient**: Automatically cleans up off-screen elements
37
+ - **Multi-Framework Support**: Easy integration with React, Vue, Angular, Svelte, and vanilla JavaScript
38
+ - **Advanced Performance Optimization**: Frame-rate optimized updates and GPU acceleration
39
+ - **Memory Management**: Intelligent caching and cleanup for optimal memory usage
40
+ - **GPU Acceleration**: Hardware-accelerated rendering for smooth performance
41
+ - **Frame Budget Optimization**: Limits updates to maintain 60fps performance
42
+ - **Batch Update Processing**: Reduces DOM manipulations for better performance
34
43
  - **React Adapter**: Easy integration with React applications
44
+ - **Vue Adapter**: Composition API integration with Vue 3
45
+ - **Angular Adapter**: Directive and component for Angular applications
46
+ - **Svelte Adapter**: Action and component for Svelte applications
47
+ - **Vanilla JS Support**: Web Components and plain JavaScript implementation
35
48
  - **Configurable Buffer**: Adjustable buffer size for optimal performance
36
49
  - **Overscan Support**: Additional buffer for smoother scrolling
37
50
  - **Predictive Loading**: Anticipates user needs based on scroll patterns
@@ -0,0 +1,28 @@
1
+ import { TemplateRef, AfterViewInit, OnDestroy } from '@angular/core';
2
+ export declare class LazyScrollComponent implements AfterViewInit, OnDestroy {
3
+ items: any[];
4
+ itemHeight: number;
5
+ viewportHeight: number;
6
+ bufferSize: number;
7
+ fetchMore: () => Promise<any>;
8
+ visibleRangeChange: any;
9
+ loadingChange: any;
10
+ itemTemplate: TemplateRef<any>;
11
+ visibleRange: {
12
+ start: number;
13
+ end: number;
14
+ };
15
+ isLoading: boolean;
16
+ get topPadding(): number;
17
+ get bottomPadding(): number;
18
+ get visibleItems(): any[];
19
+ ngAfterViewInit(): void;
20
+ ngOnDestroy(): void;
21
+ onVisibleRangeChange(range: {
22
+ start: number;
23
+ end: number;
24
+ }): void;
25
+ onLoadingChange(loading: boolean): void;
26
+ trackByFn(index: number, item: any): any;
27
+ }
28
+ //# sourceMappingURL=lazy-scroll.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-scroll.component.d.ts","sourceRoot":"","sources":["../../../src/adapters/angular/lazy-scroll.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG5H,qBAwDa,mBAAoB,YAAW,aAAa,EAAE,SAAS;IACzD,KAAK,EAAE,GAAG,EAAE,CAAM;IAClB,UAAU,EAAE,MAAM,CAAM;IACxB,cAAc,EAAE,MAAM,CAAO;IAC7B,UAAU,EAAE,MAAM,CAAK;IACvB,SAAS,EAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAE9B,kBAAkB,MAAsD;IACxE,aAAa,MAA+B;IAGtD,YAAY,EAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAEhC,YAAY;;;MAAwB;IACpC,SAAS,UAAS;IAElB,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,YAAY,IAAI,GAAG,EAAE,CAExB;IAED,eAAe;IAIf,WAAW;IAIX,oBAAoB,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;IAK1D,eAAe,CAAC,OAAO,EAAE,OAAO;IAKhC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG;CAGzC"}
@@ -0,0 +1,21 @@
1
+ import { ElementRef, OnInit, OnDestroy } from '@angular/core';
2
+ import { FetchMoreCallback } from '../../core/types';
3
+ export declare class LazyScrollDirective implements OnInit, OnDestroy {
4
+ private el;
5
+ items: any[];
6
+ itemHeight: number;
7
+ viewportHeight: number;
8
+ bufferSize: number;
9
+ fetchMore: FetchMoreCallback;
10
+ visibleRangeChange: any;
11
+ loadingChange: any;
12
+ private engine;
13
+ private scrollListener;
14
+ constructor(el: ElementRef);
15
+ ngOnInit(): void;
16
+ ngOnDestroy(): void;
17
+ private onScroll;
18
+ refresh(): void;
19
+ getVisibleRange(): import("../../core/types").VisibleRange;
20
+ }
21
+ //# sourceMappingURL=lazy-scroll.directive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-scroll.directive.d.ts","sourceRoot":"","sources":["../../../src/adapters/angular/lazy-scroll.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,EAAE,SAAS,EAA+B,MAAM,eAAe,CAAC;AAEtG,OAAO,EAAgB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEnE,qBAGa,mBAAoB,YAAW,MAAM,EAAE,SAAS;IAa/C,OAAO,CAAC,EAAE;IAZb,KAAK,EAAE,GAAG,EAAE,CAAM;IAClB,UAAU,EAAE,MAAM,CAAM;IACxB,cAAc,EAAE,MAAM,CAAO;IAC7B,UAAU,EAAE,MAAM,CAAK;IACvB,SAAS,EAAG,iBAAiB,CAAC;IAE7B,kBAAkB,MAAsD;IACxE,aAAa,MAA+B;IAEtD,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,cAAc,CAAyC;gBAE3C,EAAE,EAAE,UAAU;IAElC,QAAQ;IAoBR,WAAW;IAWX,OAAO,CAAC,QAAQ;IAYhB,OAAO;IAQP,eAAe;CAMhB"}
@@ -0,0 +1,7 @@
1
+ export { useLazyScroll } from './vue/useLazyScroll';
2
+ export { LazyScrollDirective } from './angular/lazy-scroll.directive';
3
+ export { LazyScrollComponent } from './angular/lazy-scroll.component';
4
+ export { lazyScroll } from './svelte/lazyScrollAction';
5
+ export { LazyScroll, createLazyScroll } from './vanilla/lazyScroll';
6
+ export { default as LazyScrollElement } from './vanilla/LazyScrollElement';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAIvD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { FetchMoreCallback } from '../../core/types';
2
+ interface LazyScrollConfig {
3
+ itemHeight: number;
4
+ viewportHeight: number;
5
+ bufferSize?: number;
6
+ fetchMore: FetchMoreCallback;
7
+ }
8
+ export declare function lazyScroll(node: HTMLElement, config: LazyScrollConfig): {
9
+ update(newConfig: LazyScrollConfig): void;
10
+ destroy(): void;
11
+ };
12
+ export {};
13
+ //# sourceMappingURL=lazyScrollAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazyScrollAction.d.ts","sourceRoot":"","sources":["../../../src/adapters/svelte/lazyScrollAction.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEnE,UAAU,gBAAgB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,iBAAiB,CAAC;CAC9B;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB;sBAsBhD,gBAAgB;;EAgBrC"}
@@ -0,0 +1,13 @@
1
+ import { EngineConfig, FetchMoreCallback } from '../../core/types';
2
+ interface LazyScrollConfig extends EngineConfig {
3
+ fetchMore: FetchMoreCallback;
4
+ }
5
+ export declare const useLazyScroll: (config: LazyScrollConfig) => {
6
+ visibleRange: any;
7
+ loadedItems: any;
8
+ isLoading: any;
9
+ containerRef: any;
10
+ refresh: () => void;
11
+ };
12
+ export {};
13
+ //# sourceMappingURL=useLazyScroll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLazyScroll.d.ts","sourceRoot":"","sources":["../../../src/adapters/vue/useLazyScroll.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAgB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEjF,UAAU,gBAAiB,SAAQ,YAAY;IAC7C,SAAS,EAAE,iBAAiB,CAAC;CAC9B;AAED,eAAO,MAAM,aAAa,GAAI,QAAQ,gBAAgB;;;;;;CA4DrD,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"}
@@ -8,6 +8,10 @@ export declare class Engine {
8
8
  private networkDetector;
9
9
  private networkAwarePrefetchManager;
10
10
  private networkAwareRequestQueue;
11
+ private adaptiveBufferCalculator;
12
+ private performanceOptimizer;
13
+ private memoryManager;
14
+ private gpuAccelerator;
11
15
  private state;
12
16
  private fetchMoreCallback;
13
17
  private totalItems;
@@ -15,7 +19,7 @@ export declare class Engine {
15
19
  /**
16
20
  * Update scroll position and recalculate visible range with intelligent detection
17
21
  */
18
- updateScrollPosition(scrollTop: number): void;
22
+ updateScrollPosition(scrollTop: number): Promise<void>;
19
23
  /**
20
24
  * Get the current visible range
21
25
  */
@@ -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;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"}
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;AAarF,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;IAC3D,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAiB;IAEvC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,YAAY;IAiChC;;OAEG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC5D;;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;CAQhB"}
@@ -0,0 +1,23 @@
1
+ export declare class GPUAccelerator {
2
+ private gpuAccelerationEnabled;
3
+ private gpuElements;
4
+ private animationFrameId;
5
+ constructor();
6
+ private isGPUSupported;
7
+ enableForElement(element: HTMLElement): void;
8
+ disableForElement(element: HTMLElement): void;
9
+ enableForElements(elements: HTMLElement[]): void;
10
+ batchUpdate(elements: HTMLElement[], enable: boolean): void;
11
+ optimizeScrollContainer(container: HTMLElement): void;
12
+ optimizeItem(item: HTMLElement): void;
13
+ getStatus(): {
14
+ enabled: boolean;
15
+ supported: boolean;
16
+ elementCount: number;
17
+ };
18
+ optimizeForScenario(scenario: 'scrolling' | 'animation' | 'static'): void;
19
+ cleanup(): void;
20
+ isAccelerated(element: HTMLElement): boolean;
21
+ getRecommendations(): string[];
22
+ }
23
+ //# sourceMappingURL=GPUAccelerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GPUAccelerator.d.ts","sourceRoot":"","sources":["../../src/core/GPUAccelerator.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IACzB,OAAO,CAAC,sBAAsB,CAAkB;IAChD,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,gBAAgB,CAAuB;;IAO/C,OAAO,CAAC,cAAc;IAQtB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAc5C,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAc7C,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI;IAKhD,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAW3D,uBAAuB,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAUrD,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IASrC,SAAS,IAAI;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB;IAcD,mBAAmB,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,IAAI;IAqBzE,OAAO,IAAI,IAAI;IAUf,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO;IAK5C,kBAAkB,IAAI,MAAM,EAAE;CAa/B"}
@@ -0,0 +1,33 @@
1
+ export declare class MemoryManager {
2
+ private itemCache;
3
+ private maxCacheSize;
4
+ private cleanupThreshold;
5
+ private visibleRange;
6
+ private totalItems;
7
+ constructor(maxCacheSize?: number);
8
+ setVisibleRange(range: {
9
+ start: number;
10
+ end: number;
11
+ }): void;
12
+ setTotalItems(total: number): void;
13
+ get(key: number): any | null;
14
+ set(key: number, value: any): void;
15
+ has(key: number): boolean;
16
+ delete(key: number): boolean;
17
+ clear(): void;
18
+ cleanupCache(): void;
19
+ private getDistanceFromVisible;
20
+ getStats(): {
21
+ size: number;
22
+ maxCacheSize: number;
23
+ visibleItems: number;
24
+ offScreenItems: number;
25
+ memoryEstimate: number;
26
+ };
27
+ private estimateObjectSize;
28
+ pruneEssential(): void;
29
+ private isEssential;
30
+ getSize(): number;
31
+ getKeys(): number[];
32
+ }
33
+ //# sourceMappingURL=MemoryManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryManager.d.ts","sourceRoot":"","sources":["../../src/core/MemoryManager.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,YAAY,CAAwD;IAC5E,OAAO,CAAC,UAAU,CAAa;gBAEnB,YAAY,GAAE,MAAa;IAKvC,eAAe,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAK5D,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAK5B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAUlC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAK5B,KAAK,IAAI,IAAI;IAKb,YAAY,IAAI,IAAI;IAwCpB,OAAO,CAAC,sBAAsB;IAa9B,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;KACxB;IAuBD,OAAO,CAAC,kBAAkB;IAsB1B,cAAc,IAAI,IAAI;IAkBtB,OAAO,CAAC,WAAW;IAOnB,OAAO,IAAI,MAAM;IAKjB,OAAO,IAAI,MAAM,EAAE;CAGpB"}
@@ -0,0 +1,39 @@
1
+ export declare class PerformanceOptimizer {
2
+ private frameBudget;
3
+ private lastFrameTime;
4
+ private animationFrameId;
5
+ private isOptimizing;
6
+ private lastUpdate;
7
+ private minUpdateInterval;
8
+ private updateQueue;
9
+ private isProcessingQueue;
10
+ private cleanupThreshold;
11
+ private gcInterval;
12
+ constructor();
13
+ scheduleOptimizedUpdate(updateFn: () => void): void;
14
+ private processUpdateQueue;
15
+ private getTimeRemaining;
16
+ optimizeMemory(cleanupFn: (startIndex: number, endIndex: number) => void, visibleRange: {
17
+ start: number;
18
+ end: number;
19
+ }): void;
20
+ enableGPUCssAcceleration(element: HTMLElement): void;
21
+ disableGPUCssAcceleration(element: HTMLElement): void;
22
+ getOptimizationProfile(): {
23
+ frameRate: number;
24
+ batchSize: number;
25
+ bufferMultiplier: number;
26
+ updateInterval: number;
27
+ };
28
+ private isLowEndDevice;
29
+ private setupPerformanceMonitoring;
30
+ getPerformanceInsights(): {
31
+ frameRate: number;
32
+ memoryUsage: number | null;
33
+ updateFrequency: number;
34
+ optimizationActive: boolean;
35
+ };
36
+ private getMemoryUsage;
37
+ cleanup(): void;
38
+ }
39
+ //# sourceMappingURL=PerformanceOptimizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PerformanceOptimizer.d.ts","sourceRoot":"","sources":["../../src/core/PerformanceOptimizer.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,YAAY,CAAkB;IAGtC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,iBAAiB,CAAc;IAGvC,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,iBAAiB,CAAkB;IAG3C,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,UAAU,CAAuB;;IAOzC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;YA4BrC,kBAAkB;IA4BhC,OAAO,CAAC,gBAAgB;IAWxB,cAAc,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,EAAE,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAe7H,wBAAwB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAQpD,yBAAyB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAOrD,sBAAsB,IAAI;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;KACxB;IAuBD,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,0BAA0B;IA6ClC,sBAAsB,IAAI;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;KAC7B;IASD,OAAO,CAAC,cAAc;IAStB,OAAO,IAAI,IAAI;CAYhB"}
@@ -6,7 +6,19 @@ export { IntelligentScrollDetector } from './core/IntelligentScrollDetector';
6
6
  export { NetworkSpeedDetector } from './core/NetworkSpeedDetector';
7
7
  export { NetworkAwarePrefetchManager } from './core/NetworkAwarePrefetchManager';
8
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 { PerformanceOptimizer } from './core/PerformanceOptimizer';
13
+ export { MemoryManager } from './core/MemoryManager';
14
+ export { GPUAccelerator } from './core/GPUAccelerator';
9
15
  export type { EngineConfig, VisibleRange, FetchMoreCallback, EngineState, ScrollAnalysis } from './core/types';
16
+ export { useLazyScroll } from './adapters/vue/useLazyScroll';
17
+ export { LazyScrollDirective } from './adapters/angular/lazy-scroll.directive';
18
+ export { LazyScrollComponent } from './adapters/angular/lazy-scroll.component';
19
+ export { lazyScroll } from './adapters/svelte/lazyScrollAction';
20
+ export { LazyScroll, createLazyScroll } from './adapters/vanilla/lazyScroll';
21
+ export { default as LazyScrollElement } from './adapters/vanilla/LazyScrollElement';
10
22
  export { ScrollObserver } from './platform/browser/ScrollObserver';
11
23
  export { useLazyList } from './adapters/react/useLazyList';
12
24
  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,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"}
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,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG/G,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAI7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAG/E,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAIhE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAGpF,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"}