lazy-render-virtual-scroll 1.4.0 → 1.6.0
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 +32 -288
- package/backend-helpers/README.md +233 -0
- package/backend-helpers/example.ts +114 -0
- package/backend-helpers/frontend-example.tsx +122 -0
- package/backend-helpers/pagination.ts +159 -0
- package/dist/adapters/react/index.d.ts +187 -1
- package/dist/cjs/adapters/react/LazyList.js +377 -0
- package/dist/cjs/adapters/react/LazyList.js.map +1 -1
- package/dist/cjs/adapters/react/adapters/react/components/AdaptiveScrollView.d.ts +16 -0
- package/dist/cjs/adapters/react/adapters/react/components/AdaptiveScrollView.d.ts.map +1 -0
- package/dist/cjs/adapters/react/adapters/react/components/IntelligentLazyList.d.ts +16 -0
- package/dist/cjs/adapters/react/adapters/react/components/IntelligentLazyList.d.ts.map +1 -0
- package/dist/cjs/adapters/react/adapters/react/components/SmartInfiniteScroll.d.ts +15 -0
- package/dist/cjs/adapters/react/adapters/react/components/SmartInfiniteScroll.d.ts.map +1 -0
- package/dist/cjs/adapters/react/adapters/react/components/index.d.ts +7 -0
- package/dist/cjs/adapters/react/adapters/react/components/index.d.ts.map +1 -0
- package/dist/cjs/adapters/react/adapters/react/hooks/index.d.ts +7 -0
- package/dist/cjs/adapters/react/adapters/react/hooks/index.d.ts.map +1 -0
- package/dist/cjs/adapters/react/adapters/react/hooks/useAdaptiveLoading.d.ts +39 -0
- package/dist/cjs/adapters/react/adapters/react/hooks/useAdaptiveLoading.d.ts.map +1 -0
- package/dist/cjs/adapters/react/adapters/react/hooks/useIntelligentScroll.d.ts +37 -0
- package/dist/cjs/adapters/react/adapters/react/hooks/useIntelligentScroll.d.ts.map +1 -0
- package/dist/cjs/adapters/react/adapters/react/hooks/useSmartPagination.d.ts +57 -0
- package/dist/cjs/adapters/react/adapters/react/hooks/useSmartPagination.d.ts.map +1 -0
- package/dist/cjs/adapters/react/adapters/react/index.d.ts +2 -0
- package/dist/cjs/adapters/react/adapters/react/index.d.ts.map +1 -1
- package/dist/cjs/adapters/react/components/AdaptiveScrollView.d.ts +16 -0
- package/dist/cjs/adapters/react/components/AdaptiveScrollView.d.ts.map +1 -0
- package/dist/cjs/adapters/react/components/IntelligentLazyList.d.ts +16 -0
- package/dist/cjs/adapters/react/components/IntelligentLazyList.d.ts.map +1 -0
- package/dist/cjs/adapters/react/components/SmartInfiniteScroll.d.ts +15 -0
- package/dist/cjs/adapters/react/components/SmartInfiniteScroll.d.ts.map +1 -0
- package/dist/cjs/adapters/react/components/index.d.ts +7 -0
- package/dist/cjs/adapters/react/components/index.d.ts.map +1 -0
- package/dist/cjs/adapters/react/core/BatchSizeOptimizer.d.ts +84 -0
- package/dist/cjs/adapters/react/core/BatchSizeOptimizer.d.ts.map +1 -0
- package/dist/cjs/adapters/react/core/DynamicHeightEngine.d.ts +107 -0
- package/dist/cjs/adapters/react/core/DynamicHeightEngine.d.ts.map +1 -0
- package/dist/cjs/adapters/react/core/Engine.d.ts +3 -0
- package/dist/cjs/adapters/react/core/Engine.d.ts.map +1 -1
- package/dist/cjs/adapters/react/core/HeightMeasurementCache.d.ts +92 -0
- package/dist/cjs/adapters/react/core/HeightMeasurementCache.d.ts.map +1 -0
- package/dist/cjs/adapters/react/core/IntelligentPagination.d.ts +113 -0
- package/dist/cjs/adapters/react/core/IntelligentPagination.d.ts.map +1 -0
- package/dist/cjs/adapters/react/core/PreemptiveCache.d.ts +83 -0
- package/dist/cjs/adapters/react/core/PreemptiveCache.d.ts.map +1 -0
- package/dist/cjs/adapters/react/core/PriorityRequestQueue.d.ts +56 -0
- package/dist/cjs/adapters/react/core/PriorityRequestQueue.d.ts.map +1 -0
- package/dist/cjs/adapters/react/core/RequestDeduplicator.d.ts +35 -0
- package/dist/cjs/adapters/react/core/RequestDeduplicator.d.ts.map +1 -0
- package/dist/cjs/adapters/react/core/SmartPrefetchAlgorithm.d.ts +63 -0
- package/dist/cjs/adapters/react/core/SmartPrefetchAlgorithm.d.ts.map +1 -0
- package/dist/cjs/adapters/react/core/VariableHeightManager.d.ts +84 -0
- package/dist/cjs/adapters/react/core/VariableHeightManager.d.ts.map +1 -0
- package/dist/cjs/adapters/react/hooks/index.d.ts +7 -0
- package/dist/cjs/adapters/react/hooks/index.d.ts.map +1 -0
- package/dist/cjs/adapters/react/hooks/useAdaptiveLoading.d.ts +39 -0
- package/dist/cjs/adapters/react/hooks/useAdaptiveLoading.d.ts.map +1 -0
- package/dist/cjs/adapters/react/hooks/useIntelligentScroll.d.ts +37 -0
- package/dist/cjs/adapters/react/hooks/useIntelligentScroll.d.ts.map +1 -0
- package/dist/cjs/adapters/react/hooks/useSmartPagination.d.ts +57 -0
- package/dist/cjs/adapters/react/hooks/useSmartPagination.d.ts.map +1 -0
- package/dist/cjs/adapters/react/index.d.ts +9 -0
- package/dist/cjs/adapters/react/index.d.ts.map +1 -1
- package/dist/cjs/adapters/react/index.js +1738 -0
- package/dist/cjs/adapters/react/index.js.map +1 -1
- package/dist/cjs/adapters/react/useLazyList.js +377 -0
- package/dist/cjs/adapters/react/useLazyList.js.map +1 -1
- package/dist/cjs/angular/adapters/react/components/AdaptiveScrollView.d.ts +16 -0
- package/dist/cjs/angular/adapters/react/components/AdaptiveScrollView.d.ts.map +1 -0
- package/dist/cjs/angular/adapters/react/components/IntelligentLazyList.d.ts +16 -0
- package/dist/cjs/angular/adapters/react/components/IntelligentLazyList.d.ts.map +1 -0
- package/dist/cjs/angular/adapters/react/components/SmartInfiniteScroll.d.ts +15 -0
- package/dist/cjs/angular/adapters/react/components/SmartInfiniteScroll.d.ts.map +1 -0
- package/dist/cjs/angular/adapters/react/components/index.d.ts +7 -0
- package/dist/cjs/angular/adapters/react/components/index.d.ts.map +1 -0
- package/dist/cjs/angular/adapters/react/hooks/index.d.ts +7 -0
- package/dist/cjs/angular/adapters/react/hooks/index.d.ts.map +1 -0
- package/dist/cjs/angular/adapters/react/hooks/useAdaptiveLoading.d.ts +39 -0
- package/dist/cjs/angular/adapters/react/hooks/useAdaptiveLoading.d.ts.map +1 -0
- package/dist/cjs/angular/adapters/react/hooks/useIntelligentScroll.d.ts +37 -0
- package/dist/cjs/angular/adapters/react/hooks/useIntelligentScroll.d.ts.map +1 -0
- package/dist/cjs/angular/adapters/react/hooks/useSmartPagination.d.ts +57 -0
- package/dist/cjs/angular/adapters/react/hooks/useSmartPagination.d.ts.map +1 -0
- package/dist/cjs/angular/adapters/react/index.d.ts +2 -0
- package/dist/cjs/angular/adapters/react/index.d.ts.map +1 -1
- package/dist/cjs/angular/core/BatchSizeOptimizer.d.ts +84 -0
- package/dist/cjs/angular/core/BatchSizeOptimizer.d.ts.map +1 -0
- package/dist/cjs/angular/core/DynamicHeightEngine.d.ts +107 -0
- package/dist/cjs/angular/core/DynamicHeightEngine.d.ts.map +1 -0
- package/dist/cjs/angular/core/Engine.d.ts +3 -0
- package/dist/cjs/angular/core/Engine.d.ts.map +1 -1
- package/dist/cjs/angular/core/HeightMeasurementCache.d.ts +92 -0
- package/dist/cjs/angular/core/HeightMeasurementCache.d.ts.map +1 -0
- package/dist/cjs/angular/core/IntelligentPagination.d.ts +113 -0
- package/dist/cjs/angular/core/IntelligentPagination.d.ts.map +1 -0
- package/dist/cjs/angular/core/PreemptiveCache.d.ts +83 -0
- package/dist/cjs/angular/core/PreemptiveCache.d.ts.map +1 -0
- package/dist/cjs/angular/core/PriorityRequestQueue.d.ts +56 -0
- package/dist/cjs/angular/core/PriorityRequestQueue.d.ts.map +1 -0
- package/dist/cjs/angular/core/RequestDeduplicator.d.ts +35 -0
- package/dist/cjs/angular/core/RequestDeduplicator.d.ts.map +1 -0
- package/dist/cjs/angular/core/SmartPrefetchAlgorithm.d.ts +63 -0
- package/dist/cjs/angular/core/SmartPrefetchAlgorithm.d.ts.map +1 -0
- package/dist/cjs/angular/core/VariableHeightManager.d.ts +84 -0
- package/dist/cjs/angular/core/VariableHeightManager.d.ts.map +1 -0
- package/dist/cjs/angular/index.d.ts +9 -0
- package/dist/cjs/angular/index.d.ts.map +1 -1
- package/dist/cjs/angular/index.js +377 -0
- package/dist/cjs/angular/index.js.map +1 -1
- package/dist/cjs/core/BatchSizeOptimizer.d.ts +84 -0
- package/dist/cjs/core/BatchSizeOptimizer.d.ts.map +1 -0
- package/dist/cjs/core/DynamicHeightEngine.d.ts +107 -0
- package/dist/cjs/core/DynamicHeightEngine.d.ts.map +1 -0
- package/dist/cjs/core/Engine.d.ts +3 -0
- package/dist/cjs/core/Engine.d.ts.map +1 -1
- package/dist/cjs/core/HeightMeasurementCache.d.ts +92 -0
- package/dist/cjs/core/HeightMeasurementCache.d.ts.map +1 -0
- package/dist/cjs/core/IntelligentPagination.d.ts +113 -0
- package/dist/cjs/core/IntelligentPagination.d.ts.map +1 -0
- package/dist/cjs/core/PreemptiveCache.d.ts +83 -0
- package/dist/cjs/core/PreemptiveCache.d.ts.map +1 -0
- package/dist/cjs/core/PriorityRequestQueue.d.ts +56 -0
- package/dist/cjs/core/PriorityRequestQueue.d.ts.map +1 -0
- package/dist/cjs/core/RequestDeduplicator.d.ts +35 -0
- package/dist/cjs/core/RequestDeduplicator.d.ts.map +1 -0
- package/dist/cjs/core/SmartPrefetchAlgorithm.d.ts +63 -0
- package/dist/cjs/core/SmartPrefetchAlgorithm.d.ts.map +1 -0
- package/dist/cjs/core/VariableHeightManager.d.ts +84 -0
- package/dist/cjs/core/VariableHeightManager.d.ts.map +1 -0
- package/dist/cjs/index.d.ts +9 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1545 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/svelte/adapters/react/components/AdaptiveScrollView.d.ts +16 -0
- package/dist/cjs/svelte/adapters/react/components/AdaptiveScrollView.d.ts.map +1 -0
- package/dist/cjs/svelte/adapters/react/components/IntelligentLazyList.d.ts +16 -0
- package/dist/cjs/svelte/adapters/react/components/IntelligentLazyList.d.ts.map +1 -0
- package/dist/cjs/svelte/adapters/react/components/SmartInfiniteScroll.d.ts +15 -0
- package/dist/cjs/svelte/adapters/react/components/SmartInfiniteScroll.d.ts.map +1 -0
- package/dist/cjs/svelte/adapters/react/components/index.d.ts +7 -0
- package/dist/cjs/svelte/adapters/react/components/index.d.ts.map +1 -0
- package/dist/cjs/svelte/adapters/react/hooks/index.d.ts +7 -0
- package/dist/cjs/svelte/adapters/react/hooks/index.d.ts.map +1 -0
- package/dist/cjs/svelte/adapters/react/hooks/useAdaptiveLoading.d.ts +39 -0
- package/dist/cjs/svelte/adapters/react/hooks/useAdaptiveLoading.d.ts.map +1 -0
- package/dist/cjs/svelte/adapters/react/hooks/useIntelligentScroll.d.ts +37 -0
- package/dist/cjs/svelte/adapters/react/hooks/useIntelligentScroll.d.ts.map +1 -0
- package/dist/cjs/svelte/adapters/react/hooks/useSmartPagination.d.ts +57 -0
- package/dist/cjs/svelte/adapters/react/hooks/useSmartPagination.d.ts.map +1 -0
- package/dist/cjs/svelte/adapters/react/index.d.ts +2 -0
- package/dist/cjs/svelte/adapters/react/index.d.ts.map +1 -1
- package/dist/cjs/svelte/core/BatchSizeOptimizer.d.ts +84 -0
- package/dist/cjs/svelte/core/BatchSizeOptimizer.d.ts.map +1 -0
- package/dist/cjs/svelte/core/DynamicHeightEngine.d.ts +107 -0
- package/dist/cjs/svelte/core/DynamicHeightEngine.d.ts.map +1 -0
- package/dist/cjs/svelte/core/Engine.d.ts +3 -0
- package/dist/cjs/svelte/core/Engine.d.ts.map +1 -1
- package/dist/cjs/svelte/core/HeightMeasurementCache.d.ts +92 -0
- package/dist/cjs/svelte/core/HeightMeasurementCache.d.ts.map +1 -0
- package/dist/cjs/svelte/core/IntelligentPagination.d.ts +113 -0
- package/dist/cjs/svelte/core/IntelligentPagination.d.ts.map +1 -0
- package/dist/cjs/svelte/core/PreemptiveCache.d.ts +83 -0
- package/dist/cjs/svelte/core/PreemptiveCache.d.ts.map +1 -0
- package/dist/cjs/svelte/core/PriorityRequestQueue.d.ts +56 -0
- package/dist/cjs/svelte/core/PriorityRequestQueue.d.ts.map +1 -0
- package/dist/cjs/svelte/core/RequestDeduplicator.d.ts +35 -0
- package/dist/cjs/svelte/core/RequestDeduplicator.d.ts.map +1 -0
- package/dist/cjs/svelte/core/SmartPrefetchAlgorithm.d.ts +63 -0
- package/dist/cjs/svelte/core/SmartPrefetchAlgorithm.d.ts.map +1 -0
- package/dist/cjs/svelte/core/VariableHeightManager.d.ts +84 -0
- package/dist/cjs/svelte/core/VariableHeightManager.d.ts.map +1 -0
- package/dist/cjs/svelte/index.d.ts +9 -0
- package/dist/cjs/svelte/index.d.ts.map +1 -1
- package/dist/cjs/svelte/index.js +377 -0
- package/dist/cjs/svelte/index.js.map +1 -1
- package/dist/cjs/vue/adapters/react/components/AdaptiveScrollView.d.ts +16 -0
- package/dist/cjs/vue/adapters/react/components/AdaptiveScrollView.d.ts.map +1 -0
- package/dist/cjs/vue/adapters/react/components/IntelligentLazyList.d.ts +16 -0
- package/dist/cjs/vue/adapters/react/components/IntelligentLazyList.d.ts.map +1 -0
- package/dist/cjs/vue/adapters/react/components/SmartInfiniteScroll.d.ts +15 -0
- package/dist/cjs/vue/adapters/react/components/SmartInfiniteScroll.d.ts.map +1 -0
- package/dist/cjs/vue/adapters/react/components/index.d.ts +7 -0
- package/dist/cjs/vue/adapters/react/components/index.d.ts.map +1 -0
- package/dist/cjs/vue/adapters/react/hooks/index.d.ts +7 -0
- package/dist/cjs/vue/adapters/react/hooks/index.d.ts.map +1 -0
- package/dist/cjs/vue/adapters/react/hooks/useAdaptiveLoading.d.ts +39 -0
- package/dist/cjs/vue/adapters/react/hooks/useAdaptiveLoading.d.ts.map +1 -0
- package/dist/cjs/vue/adapters/react/hooks/useIntelligentScroll.d.ts +37 -0
- package/dist/cjs/vue/adapters/react/hooks/useIntelligentScroll.d.ts.map +1 -0
- package/dist/cjs/vue/adapters/react/hooks/useSmartPagination.d.ts +57 -0
- package/dist/cjs/vue/adapters/react/hooks/useSmartPagination.d.ts.map +1 -0
- package/dist/cjs/vue/adapters/react/index.d.ts +2 -0
- package/dist/cjs/vue/adapters/react/index.d.ts.map +1 -1
- package/dist/cjs/vue/core/BatchSizeOptimizer.d.ts +84 -0
- package/dist/cjs/vue/core/BatchSizeOptimizer.d.ts.map +1 -0
- package/dist/cjs/vue/core/DynamicHeightEngine.d.ts +107 -0
- package/dist/cjs/vue/core/DynamicHeightEngine.d.ts.map +1 -0
- package/dist/cjs/vue/core/Engine.d.ts +3 -0
- package/dist/cjs/vue/core/Engine.d.ts.map +1 -1
- package/dist/cjs/vue/core/HeightMeasurementCache.d.ts +92 -0
- package/dist/cjs/vue/core/HeightMeasurementCache.d.ts.map +1 -0
- package/dist/cjs/vue/core/IntelligentPagination.d.ts +113 -0
- package/dist/cjs/vue/core/IntelligentPagination.d.ts.map +1 -0
- package/dist/cjs/vue/core/PreemptiveCache.d.ts +83 -0
- package/dist/cjs/vue/core/PreemptiveCache.d.ts.map +1 -0
- package/dist/cjs/vue/core/PriorityRequestQueue.d.ts +56 -0
- package/dist/cjs/vue/core/PriorityRequestQueue.d.ts.map +1 -0
- package/dist/cjs/vue/core/RequestDeduplicator.d.ts +35 -0
- package/dist/cjs/vue/core/RequestDeduplicator.d.ts.map +1 -0
- package/dist/cjs/vue/core/SmartPrefetchAlgorithm.d.ts +63 -0
- package/dist/cjs/vue/core/SmartPrefetchAlgorithm.d.ts.map +1 -0
- package/dist/cjs/vue/core/VariableHeightManager.d.ts +84 -0
- package/dist/cjs/vue/core/VariableHeightManager.d.ts.map +1 -0
- package/dist/cjs/vue/index.d.ts +9 -0
- package/dist/cjs/vue/index.d.ts.map +1 -1
- package/dist/cjs/vue/index.js +377 -0
- package/dist/cjs/vue/index.js.map +1 -1
- package/dist/esm/adapters/react/LazyList.js +377 -0
- package/dist/esm/adapters/react/LazyList.js.map +1 -1
- package/dist/esm/adapters/react/adapters/react/components/AdaptiveScrollView.d.ts +16 -0
- package/dist/esm/adapters/react/adapters/react/components/AdaptiveScrollView.d.ts.map +1 -0
- package/dist/esm/adapters/react/adapters/react/components/IntelligentLazyList.d.ts +16 -0
- package/dist/esm/adapters/react/adapters/react/components/IntelligentLazyList.d.ts.map +1 -0
- package/dist/esm/adapters/react/adapters/react/components/SmartInfiniteScroll.d.ts +15 -0
- package/dist/esm/adapters/react/adapters/react/components/SmartInfiniteScroll.d.ts.map +1 -0
- package/dist/esm/adapters/react/adapters/react/components/index.d.ts +7 -0
- package/dist/esm/adapters/react/adapters/react/components/index.d.ts.map +1 -0
- package/dist/esm/adapters/react/adapters/react/hooks/index.d.ts +7 -0
- package/dist/esm/adapters/react/adapters/react/hooks/index.d.ts.map +1 -0
- package/dist/esm/adapters/react/adapters/react/hooks/useAdaptiveLoading.d.ts +39 -0
- package/dist/esm/adapters/react/adapters/react/hooks/useAdaptiveLoading.d.ts.map +1 -0
- package/dist/esm/adapters/react/adapters/react/hooks/useIntelligentScroll.d.ts +37 -0
- package/dist/esm/adapters/react/adapters/react/hooks/useIntelligentScroll.d.ts.map +1 -0
- package/dist/esm/adapters/react/adapters/react/hooks/useSmartPagination.d.ts +57 -0
- package/dist/esm/adapters/react/adapters/react/hooks/useSmartPagination.d.ts.map +1 -0
- package/dist/esm/adapters/react/adapters/react/index.d.ts +2 -0
- package/dist/esm/adapters/react/adapters/react/index.d.ts.map +1 -1
- package/dist/esm/adapters/react/components/AdaptiveScrollView.d.ts +16 -0
- package/dist/esm/adapters/react/components/AdaptiveScrollView.d.ts.map +1 -0
- package/dist/esm/adapters/react/components/IntelligentLazyList.d.ts +16 -0
- package/dist/esm/adapters/react/components/IntelligentLazyList.d.ts.map +1 -0
- package/dist/esm/adapters/react/components/SmartInfiniteScroll.d.ts +15 -0
- package/dist/esm/adapters/react/components/SmartInfiniteScroll.d.ts.map +1 -0
- package/dist/esm/adapters/react/components/index.d.ts +7 -0
- package/dist/esm/adapters/react/components/index.d.ts.map +1 -0
- package/dist/esm/adapters/react/core/BatchSizeOptimizer.d.ts +84 -0
- package/dist/esm/adapters/react/core/BatchSizeOptimizer.d.ts.map +1 -0
- package/dist/esm/adapters/react/core/DynamicHeightEngine.d.ts +107 -0
- package/dist/esm/adapters/react/core/DynamicHeightEngine.d.ts.map +1 -0
- package/dist/esm/adapters/react/core/Engine.d.ts +3 -0
- package/dist/esm/adapters/react/core/Engine.d.ts.map +1 -1
- package/dist/esm/adapters/react/core/HeightMeasurementCache.d.ts +92 -0
- package/dist/esm/adapters/react/core/HeightMeasurementCache.d.ts.map +1 -0
- package/dist/esm/adapters/react/core/IntelligentPagination.d.ts +113 -0
- package/dist/esm/adapters/react/core/IntelligentPagination.d.ts.map +1 -0
- package/dist/esm/adapters/react/core/PreemptiveCache.d.ts +83 -0
- package/dist/esm/adapters/react/core/PreemptiveCache.d.ts.map +1 -0
- package/dist/esm/adapters/react/core/PriorityRequestQueue.d.ts +56 -0
- package/dist/esm/adapters/react/core/PriorityRequestQueue.d.ts.map +1 -0
- package/dist/esm/adapters/react/core/RequestDeduplicator.d.ts +35 -0
- package/dist/esm/adapters/react/core/RequestDeduplicator.d.ts.map +1 -0
- package/dist/esm/adapters/react/core/SmartPrefetchAlgorithm.d.ts +63 -0
- package/dist/esm/adapters/react/core/SmartPrefetchAlgorithm.d.ts.map +1 -0
- package/dist/esm/adapters/react/core/VariableHeightManager.d.ts +84 -0
- package/dist/esm/adapters/react/core/VariableHeightManager.d.ts.map +1 -0
- package/dist/esm/adapters/react/hooks/index.d.ts +7 -0
- package/dist/esm/adapters/react/hooks/index.d.ts.map +1 -0
- package/dist/esm/adapters/react/hooks/useAdaptiveLoading.d.ts +39 -0
- package/dist/esm/adapters/react/hooks/useAdaptiveLoading.d.ts.map +1 -0
- package/dist/esm/adapters/react/hooks/useIntelligentScroll.d.ts +37 -0
- package/dist/esm/adapters/react/hooks/useIntelligentScroll.d.ts.map +1 -0
- package/dist/esm/adapters/react/hooks/useSmartPagination.d.ts +57 -0
- package/dist/esm/adapters/react/hooks/useSmartPagination.d.ts.map +1 -0
- package/dist/esm/adapters/react/index.d.ts +9 -0
- package/dist/esm/adapters/react/index.d.ts.map +1 -1
- package/dist/esm/adapters/react/index.js +1733 -1
- package/dist/esm/adapters/react/index.js.map +1 -1
- package/dist/esm/adapters/react/useLazyList.js +377 -0
- package/dist/esm/adapters/react/useLazyList.js.map +1 -1
- package/dist/esm/angular/adapters/react/components/AdaptiveScrollView.d.ts +16 -0
- package/dist/esm/angular/adapters/react/components/AdaptiveScrollView.d.ts.map +1 -0
- package/dist/esm/angular/adapters/react/components/IntelligentLazyList.d.ts +16 -0
- package/dist/esm/angular/adapters/react/components/IntelligentLazyList.d.ts.map +1 -0
- package/dist/esm/angular/adapters/react/components/SmartInfiniteScroll.d.ts +15 -0
- package/dist/esm/angular/adapters/react/components/SmartInfiniteScroll.d.ts.map +1 -0
- package/dist/esm/angular/adapters/react/components/index.d.ts +7 -0
- package/dist/esm/angular/adapters/react/components/index.d.ts.map +1 -0
- package/dist/esm/angular/adapters/react/hooks/index.d.ts +7 -0
- package/dist/esm/angular/adapters/react/hooks/index.d.ts.map +1 -0
- package/dist/esm/angular/adapters/react/hooks/useAdaptiveLoading.d.ts +39 -0
- package/dist/esm/angular/adapters/react/hooks/useAdaptiveLoading.d.ts.map +1 -0
- package/dist/esm/angular/adapters/react/hooks/useIntelligentScroll.d.ts +37 -0
- package/dist/esm/angular/adapters/react/hooks/useIntelligentScroll.d.ts.map +1 -0
- package/dist/esm/angular/adapters/react/hooks/useSmartPagination.d.ts +57 -0
- package/dist/esm/angular/adapters/react/hooks/useSmartPagination.d.ts.map +1 -0
- package/dist/esm/angular/adapters/react/index.d.ts +2 -0
- package/dist/esm/angular/adapters/react/index.d.ts.map +1 -1
- package/dist/esm/angular/core/BatchSizeOptimizer.d.ts +84 -0
- package/dist/esm/angular/core/BatchSizeOptimizer.d.ts.map +1 -0
- package/dist/esm/angular/core/DynamicHeightEngine.d.ts +107 -0
- package/dist/esm/angular/core/DynamicHeightEngine.d.ts.map +1 -0
- package/dist/esm/angular/core/Engine.d.ts +3 -0
- package/dist/esm/angular/core/Engine.d.ts.map +1 -1
- package/dist/esm/angular/core/HeightMeasurementCache.d.ts +92 -0
- package/dist/esm/angular/core/HeightMeasurementCache.d.ts.map +1 -0
- package/dist/esm/angular/core/IntelligentPagination.d.ts +113 -0
- package/dist/esm/angular/core/IntelligentPagination.d.ts.map +1 -0
- package/dist/esm/angular/core/PreemptiveCache.d.ts +83 -0
- package/dist/esm/angular/core/PreemptiveCache.d.ts.map +1 -0
- package/dist/esm/angular/core/PriorityRequestQueue.d.ts +56 -0
- package/dist/esm/angular/core/PriorityRequestQueue.d.ts.map +1 -0
- package/dist/esm/angular/core/RequestDeduplicator.d.ts +35 -0
- package/dist/esm/angular/core/RequestDeduplicator.d.ts.map +1 -0
- package/dist/esm/angular/core/SmartPrefetchAlgorithm.d.ts +63 -0
- package/dist/esm/angular/core/SmartPrefetchAlgorithm.d.ts.map +1 -0
- package/dist/esm/angular/core/VariableHeightManager.d.ts +84 -0
- package/dist/esm/angular/core/VariableHeightManager.d.ts.map +1 -0
- package/dist/esm/angular/index.d.ts +9 -0
- package/dist/esm/angular/index.d.ts.map +1 -1
- package/dist/esm/angular/index.js +377 -0
- package/dist/esm/angular/index.js.map +1 -1
- package/dist/esm/core/BatchSizeOptimizer.d.ts +84 -0
- package/dist/esm/core/BatchSizeOptimizer.d.ts.map +1 -0
- package/dist/esm/core/DynamicHeightEngine.d.ts +107 -0
- package/dist/esm/core/DynamicHeightEngine.d.ts.map +1 -0
- package/dist/esm/core/Engine.d.ts +3 -0
- package/dist/esm/core/Engine.d.ts.map +1 -1
- package/dist/esm/core/HeightMeasurementCache.d.ts +92 -0
- package/dist/esm/core/HeightMeasurementCache.d.ts.map +1 -0
- package/dist/esm/core/IntelligentPagination.d.ts +113 -0
- package/dist/esm/core/IntelligentPagination.d.ts.map +1 -0
- package/dist/esm/core/PreemptiveCache.d.ts +83 -0
- package/dist/esm/core/PreemptiveCache.d.ts.map +1 -0
- package/dist/esm/core/PriorityRequestQueue.d.ts +56 -0
- package/dist/esm/core/PriorityRequestQueue.d.ts.map +1 -0
- package/dist/esm/core/RequestDeduplicator.d.ts +35 -0
- package/dist/esm/core/RequestDeduplicator.d.ts.map +1 -0
- package/dist/esm/core/SmartPrefetchAlgorithm.d.ts +63 -0
- package/dist/esm/core/SmartPrefetchAlgorithm.d.ts.map +1 -0
- package/dist/esm/core/VariableHeightManager.d.ts +84 -0
- package/dist/esm/core/VariableHeightManager.d.ts.map +1 -0
- package/dist/esm/index.d.ts +9 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1537 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/svelte/adapters/react/components/AdaptiveScrollView.d.ts +16 -0
- package/dist/esm/svelte/adapters/react/components/AdaptiveScrollView.d.ts.map +1 -0
- package/dist/esm/svelte/adapters/react/components/IntelligentLazyList.d.ts +16 -0
- package/dist/esm/svelte/adapters/react/components/IntelligentLazyList.d.ts.map +1 -0
- package/dist/esm/svelte/adapters/react/components/SmartInfiniteScroll.d.ts +15 -0
- package/dist/esm/svelte/adapters/react/components/SmartInfiniteScroll.d.ts.map +1 -0
- package/dist/esm/svelte/adapters/react/components/index.d.ts +7 -0
- package/dist/esm/svelte/adapters/react/components/index.d.ts.map +1 -0
- package/dist/esm/svelte/adapters/react/hooks/index.d.ts +7 -0
- package/dist/esm/svelte/adapters/react/hooks/index.d.ts.map +1 -0
- package/dist/esm/svelte/adapters/react/hooks/useAdaptiveLoading.d.ts +39 -0
- package/dist/esm/svelte/adapters/react/hooks/useAdaptiveLoading.d.ts.map +1 -0
- package/dist/esm/svelte/adapters/react/hooks/useIntelligentScroll.d.ts +37 -0
- package/dist/esm/svelte/adapters/react/hooks/useIntelligentScroll.d.ts.map +1 -0
- package/dist/esm/svelte/adapters/react/hooks/useSmartPagination.d.ts +57 -0
- package/dist/esm/svelte/adapters/react/hooks/useSmartPagination.d.ts.map +1 -0
- package/dist/esm/svelte/adapters/react/index.d.ts +2 -0
- package/dist/esm/svelte/adapters/react/index.d.ts.map +1 -1
- package/dist/esm/svelte/core/BatchSizeOptimizer.d.ts +84 -0
- package/dist/esm/svelte/core/BatchSizeOptimizer.d.ts.map +1 -0
- package/dist/esm/svelte/core/DynamicHeightEngine.d.ts +107 -0
- package/dist/esm/svelte/core/DynamicHeightEngine.d.ts.map +1 -0
- package/dist/esm/svelte/core/Engine.d.ts +3 -0
- package/dist/esm/svelte/core/Engine.d.ts.map +1 -1
- package/dist/esm/svelte/core/HeightMeasurementCache.d.ts +92 -0
- package/dist/esm/svelte/core/HeightMeasurementCache.d.ts.map +1 -0
- package/dist/esm/svelte/core/IntelligentPagination.d.ts +113 -0
- package/dist/esm/svelte/core/IntelligentPagination.d.ts.map +1 -0
- package/dist/esm/svelte/core/PreemptiveCache.d.ts +83 -0
- package/dist/esm/svelte/core/PreemptiveCache.d.ts.map +1 -0
- package/dist/esm/svelte/core/PriorityRequestQueue.d.ts +56 -0
- package/dist/esm/svelte/core/PriorityRequestQueue.d.ts.map +1 -0
- package/dist/esm/svelte/core/RequestDeduplicator.d.ts +35 -0
- package/dist/esm/svelte/core/RequestDeduplicator.d.ts.map +1 -0
- package/dist/esm/svelte/core/SmartPrefetchAlgorithm.d.ts +63 -0
- package/dist/esm/svelte/core/SmartPrefetchAlgorithm.d.ts.map +1 -0
- package/dist/esm/svelte/core/VariableHeightManager.d.ts +84 -0
- package/dist/esm/svelte/core/VariableHeightManager.d.ts.map +1 -0
- package/dist/esm/svelte/index.d.ts +9 -0
- package/dist/esm/svelte/index.d.ts.map +1 -1
- package/dist/esm/svelte/index.js +377 -0
- package/dist/esm/svelte/index.js.map +1 -1
- package/dist/esm/vue/adapters/react/components/AdaptiveScrollView.d.ts +16 -0
- package/dist/esm/vue/adapters/react/components/AdaptiveScrollView.d.ts.map +1 -0
- package/dist/esm/vue/adapters/react/components/IntelligentLazyList.d.ts +16 -0
- package/dist/esm/vue/adapters/react/components/IntelligentLazyList.d.ts.map +1 -0
- package/dist/esm/vue/adapters/react/components/SmartInfiniteScroll.d.ts +15 -0
- package/dist/esm/vue/adapters/react/components/SmartInfiniteScroll.d.ts.map +1 -0
- package/dist/esm/vue/adapters/react/components/index.d.ts +7 -0
- package/dist/esm/vue/adapters/react/components/index.d.ts.map +1 -0
- package/dist/esm/vue/adapters/react/hooks/index.d.ts +7 -0
- package/dist/esm/vue/adapters/react/hooks/index.d.ts.map +1 -0
- package/dist/esm/vue/adapters/react/hooks/useAdaptiveLoading.d.ts +39 -0
- package/dist/esm/vue/adapters/react/hooks/useAdaptiveLoading.d.ts.map +1 -0
- package/dist/esm/vue/adapters/react/hooks/useIntelligentScroll.d.ts +37 -0
- package/dist/esm/vue/adapters/react/hooks/useIntelligentScroll.d.ts.map +1 -0
- package/dist/esm/vue/adapters/react/hooks/useSmartPagination.d.ts +57 -0
- package/dist/esm/vue/adapters/react/hooks/useSmartPagination.d.ts.map +1 -0
- package/dist/esm/vue/adapters/react/index.d.ts +2 -0
- package/dist/esm/vue/adapters/react/index.d.ts.map +1 -1
- package/dist/esm/vue/core/BatchSizeOptimizer.d.ts +84 -0
- package/dist/esm/vue/core/BatchSizeOptimizer.d.ts.map +1 -0
- package/dist/esm/vue/core/DynamicHeightEngine.d.ts +107 -0
- package/dist/esm/vue/core/DynamicHeightEngine.d.ts.map +1 -0
- package/dist/esm/vue/core/Engine.d.ts +3 -0
- package/dist/esm/vue/core/Engine.d.ts.map +1 -1
- package/dist/esm/vue/core/HeightMeasurementCache.d.ts +92 -0
- package/dist/esm/vue/core/HeightMeasurementCache.d.ts.map +1 -0
- package/dist/esm/vue/core/IntelligentPagination.d.ts +113 -0
- package/dist/esm/vue/core/IntelligentPagination.d.ts.map +1 -0
- package/dist/esm/vue/core/PreemptiveCache.d.ts +83 -0
- package/dist/esm/vue/core/PreemptiveCache.d.ts.map +1 -0
- package/dist/esm/vue/core/PriorityRequestQueue.d.ts +56 -0
- package/dist/esm/vue/core/PriorityRequestQueue.d.ts.map +1 -0
- package/dist/esm/vue/core/RequestDeduplicator.d.ts +35 -0
- package/dist/esm/vue/core/RequestDeduplicator.d.ts.map +1 -0
- package/dist/esm/vue/core/SmartPrefetchAlgorithm.d.ts +63 -0
- package/dist/esm/vue/core/SmartPrefetchAlgorithm.d.ts.map +1 -0
- package/dist/esm/vue/core/VariableHeightManager.d.ts +84 -0
- package/dist/esm/vue/core/VariableHeightManager.d.ts.map +1 -0
- package/dist/esm/vue/index.d.ts +9 -0
- package/dist/esm/vue/index.d.ts.map +1 -1
- package/dist/esm/vue/index.js +377 -0
- package/dist/esm/vue/index.js.map +1 -1
- package/dist/index.d.ts +681 -1
- package/package.json +7 -2
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FRONTEND EXAMPLE - Integration with lazy-render
|
|
3
|
+
* Solves the 1 million cards performance issue
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import React, { useState } from 'react';
|
|
7
|
+
import { LazyList, useLazyList } from 'lazy-render-virtual-scroll';
|
|
8
|
+
|
|
9
|
+
interface Card {
|
|
10
|
+
id: number;
|
|
11
|
+
title: string;
|
|
12
|
+
category: string;
|
|
13
|
+
createdAt: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface PaginationInfo {
|
|
17
|
+
page: number;
|
|
18
|
+
limit: number;
|
|
19
|
+
total: number;
|
|
20
|
+
totalPages: number;
|
|
21
|
+
hasMore: boolean;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* ✅ CORRECT FRONTEND IMPLEMENTATION
|
|
26
|
+
* Uses lazy-render with paginated API
|
|
27
|
+
*/
|
|
28
|
+
export const ColorfulDashboard: React.FC = () => {
|
|
29
|
+
const [items, setItems] = useState<Card[]>([]);
|
|
30
|
+
const [page, setPage] = useState(1);
|
|
31
|
+
const [hasMore, setHasMore] = useState(true);
|
|
32
|
+
const [pagination, setPagination] = useState<PaginationInfo | null>(null);
|
|
33
|
+
|
|
34
|
+
// Fetch more data when user scrolls
|
|
35
|
+
const fetchMore = async () => {
|
|
36
|
+
if (!hasMore) return [];
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
// Fetch only 50 items at a time
|
|
40
|
+
const response = await fetch(
|
|
41
|
+
`/api/monitoring/cards?page=${page}&limit=50`
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
if (!response.ok) {
|
|
45
|
+
throw new Error('Failed to fetch cards');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const result = await response.json();
|
|
49
|
+
|
|
50
|
+
// Update state with new items
|
|
51
|
+
setItems(prev => [...prev, ...result.data]);
|
|
52
|
+
setPagination(result.pagination);
|
|
53
|
+
setPage(prev => prev + 1);
|
|
54
|
+
setHasMore(result.pagination.hasMore);
|
|
55
|
+
|
|
56
|
+
return result.data;
|
|
57
|
+
} catch (error) {
|
|
58
|
+
console.error('Error fetching more cards:', error);
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// Use lazy-render hook
|
|
64
|
+
const { visibleRange, isLoading } = useLazyList({
|
|
65
|
+
itemHeight: 200,
|
|
66
|
+
viewportHeight: 600,
|
|
67
|
+
bufferSize: 5,
|
|
68
|
+
fetchMore
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
// Render individual card
|
|
72
|
+
const renderCard = (card: Card, index: number) => (
|
|
73
|
+
<div
|
|
74
|
+
key={card.id}
|
|
75
|
+
style={{
|
|
76
|
+
height: '200px',
|
|
77
|
+
borderBottom: '1px solid #eee',
|
|
78
|
+
padding: '16px'
|
|
79
|
+
}}
|
|
80
|
+
>
|
|
81
|
+
<h3>{card.title}</h3>
|
|
82
|
+
<p>Category: {card.category}</p>
|
|
83
|
+
<p>Created: {new Date(card.createdAt).toLocaleDateString()}</p>
|
|
84
|
+
</div>
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
return (
|
|
88
|
+
<div style={{ padding: '20px' }}>
|
|
89
|
+
<h1>Colorful Dashboard</h1>
|
|
90
|
+
|
|
91
|
+
{/* Pagination Info */}
|
|
92
|
+
{pagination && (
|
|
93
|
+
<div style={{ marginBottom: '16px' }}>
|
|
94
|
+
<p>
|
|
95
|
+
Showing {items.length} of {pagination.total} cards
|
|
96
|
+
{isLoading && ' • Loading...'}
|
|
97
|
+
</p>
|
|
98
|
+
</div>
|
|
99
|
+
)}
|
|
100
|
+
|
|
101
|
+
{/* LazyList with virtual scrolling */}
|
|
102
|
+
<LazyList
|
|
103
|
+
items={items}
|
|
104
|
+
itemHeight={200}
|
|
105
|
+
viewportHeight={600}
|
|
106
|
+
fetchMore={fetchMore}
|
|
107
|
+
renderItem={renderCard}
|
|
108
|
+
bufferSize={5}
|
|
109
|
+
overscan={2}
|
|
110
|
+
/>
|
|
111
|
+
|
|
112
|
+
{/* Load More Button (optional fallback) */}
|
|
113
|
+
{!hasMore && (
|
|
114
|
+
<div style={{ textAlign: 'center', padding: '20px' }}>
|
|
115
|
+
<p>No more cards to load</p>
|
|
116
|
+
</div>
|
|
117
|
+
)}
|
|
118
|
+
</div>
|
|
119
|
+
);
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
export default ColorfulDashboard;
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backend Pagination Helper for lazy-render
|
|
3
|
+
* Solves the 1 million cards performance issue
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export interface PaginationParams {
|
|
7
|
+
page: number;
|
|
8
|
+
limit: number;
|
|
9
|
+
cursor?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface PaginatedResponse<T> {
|
|
13
|
+
data: T[];
|
|
14
|
+
pagination: {
|
|
15
|
+
page: number;
|
|
16
|
+
limit: number;
|
|
17
|
+
total: number;
|
|
18
|
+
totalPages: number;
|
|
19
|
+
hasMore: boolean;
|
|
20
|
+
nextCursor?: string;
|
|
21
|
+
prevCursor?: string;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Calculate pagination metadata
|
|
27
|
+
*/
|
|
28
|
+
export function calculatePagination<T>(
|
|
29
|
+
items: T[],
|
|
30
|
+
page: number,
|
|
31
|
+
limit: number,
|
|
32
|
+
total: number
|
|
33
|
+
): PaginatedResponse<T> {
|
|
34
|
+
const totalPages = Math.ceil(total / limit);
|
|
35
|
+
const hasMore = page < totalPages;
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
data: items,
|
|
39
|
+
pagination: {
|
|
40
|
+
page,
|
|
41
|
+
limit,
|
|
42
|
+
total,
|
|
43
|
+
totalPages,
|
|
44
|
+
hasMore,
|
|
45
|
+
nextCursor: hasMore ? String(page + 1) : undefined,
|
|
46
|
+
prevCursor: page > 1 ? String(page - 1) : undefined
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Validate pagination parameters
|
|
53
|
+
*/
|
|
54
|
+
export function validatePaginationParams(params: PaginationParams): {
|
|
55
|
+
page: number;
|
|
56
|
+
limit: number;
|
|
57
|
+
errors: string[];
|
|
58
|
+
} {
|
|
59
|
+
const errors: string[] = [];
|
|
60
|
+
|
|
61
|
+
// Validate page
|
|
62
|
+
const page = parseInt(String(params.page)) || 1;
|
|
63
|
+
if (page < 1) {
|
|
64
|
+
errors.push('Page must be greater than 0');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Validate limit
|
|
68
|
+
const limit = parseInt(String(params.limit)) || 50;
|
|
69
|
+
if (limit < 1) {
|
|
70
|
+
errors.push('Limit must be greater than 0');
|
|
71
|
+
}
|
|
72
|
+
if (limit > 1000) {
|
|
73
|
+
errors.push('Limit cannot exceed 1000 items per page');
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return {
|
|
77
|
+
page: page < 1 ? 1 : page,
|
|
78
|
+
limit: limit < 1 ? 50 : limit > 1000 ? 1000 : limit,
|
|
79
|
+
errors
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Express.js middleware for pagination
|
|
85
|
+
*/
|
|
86
|
+
export function paginationMiddleware(
|
|
87
|
+
req: any,
|
|
88
|
+
res: any,
|
|
89
|
+
next: () => void
|
|
90
|
+
) {
|
|
91
|
+
const { page, limit, cursor } = req.query;
|
|
92
|
+
|
|
93
|
+
const validated = validatePaginationParams({
|
|
94
|
+
page: parseInt(String(page)) || 1,
|
|
95
|
+
limit: parseInt(String(limit)) || 50,
|
|
96
|
+
cursor
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
if (validated.errors.length > 0) {
|
|
100
|
+
return res.status(400).json({
|
|
101
|
+
error: 'Invalid pagination parameters',
|
|
102
|
+
details: validated.errors
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
req.pagination = {
|
|
107
|
+
page: validated.page,
|
|
108
|
+
limit: validated.limit,
|
|
109
|
+
cursor: validated.cursor
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
next();
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Example Express route handler
|
|
117
|
+
*/
|
|
118
|
+
export function createPaginatedRoute<T>(
|
|
119
|
+
getDataFunction: (skip: number, limit: number) => Promise<{ items: T[]; total: number }>,
|
|
120
|
+
options: {
|
|
121
|
+
defaultLimit?: number;
|
|
122
|
+
maxLimit?: number;
|
|
123
|
+
} = {}
|
|
124
|
+
) {
|
|
125
|
+
const defaultLimit = options.defaultLimit || 50;
|
|
126
|
+
const maxLimit = options.maxLimit || 1000;
|
|
127
|
+
|
|
128
|
+
return async (req: any, res: any) => {
|
|
129
|
+
try {
|
|
130
|
+
const page = parseInt(req.query.page) || 1;
|
|
131
|
+
const limit = Math.min(
|
|
132
|
+
parseInt(req.query.limit) || defaultLimit,
|
|
133
|
+
maxLimit
|
|
134
|
+
);
|
|
135
|
+
const skip = (page - 1) * limit;
|
|
136
|
+
|
|
137
|
+
// Get data with pagination
|
|
138
|
+
const { items, total } = await getDataFunction(skip, limit);
|
|
139
|
+
|
|
140
|
+
// Return paginated response
|
|
141
|
+
const response = calculatePagination(items, page, limit, total);
|
|
142
|
+
|
|
143
|
+
res.json(response);
|
|
144
|
+
} catch (error) {
|
|
145
|
+
console.error('Pagination error:', error);
|
|
146
|
+
res.status(500).json({
|
|
147
|
+
error: 'Failed to fetch data',
|
|
148
|
+
message: error instanceof Error ? error.message : 'Unknown error'
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export default {
|
|
155
|
+
calculatePagination,
|
|
156
|
+
validatePaginationParams,
|
|
157
|
+
paginationMiddleware,
|
|
158
|
+
createPaginatedRoute
|
|
159
|
+
};
|
|
@@ -51,4 +51,190 @@ interface LazyListProps extends EngineConfig {
|
|
|
51
51
|
}
|
|
52
52
|
declare const LazyList: React.ForwardRefExoticComponent<LazyListProps & React.RefAttributes<HTMLDivElement>>;
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
/**
|
|
55
|
+
* Intelligent Pagination
|
|
56
|
+
* Adaptive page size with cursor-based pagination
|
|
57
|
+
*/
|
|
58
|
+
interface PaginationState {
|
|
59
|
+
currentPage: number;
|
|
60
|
+
pageSize: number;
|
|
61
|
+
totalItems: number;
|
|
62
|
+
totalPages: number;
|
|
63
|
+
hasMore: boolean;
|
|
64
|
+
cursor?: string;
|
|
65
|
+
nextCursor?: string;
|
|
66
|
+
prevCursor?: string;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
interface UseIntelligentScrollConfig {
|
|
70
|
+
itemHeight?: number;
|
|
71
|
+
viewportHeight?: number;
|
|
72
|
+
bufferSize?: number;
|
|
73
|
+
fetchMore: FetchMoreCallback;
|
|
74
|
+
enablePrefetch?: boolean;
|
|
75
|
+
enableCache?: boolean;
|
|
76
|
+
cacheSize?: number;
|
|
77
|
+
}
|
|
78
|
+
interface IntelligentScrollState {
|
|
79
|
+
visibleRange: VisibleRange;
|
|
80
|
+
isLoading: boolean;
|
|
81
|
+
scrollVelocity: number;
|
|
82
|
+
scrollDirection: 'up' | 'down' | 'stationary';
|
|
83
|
+
scrollPattern: 'fast-scroll' | 'slow-scroll' | 'paused' | 'oscillating' | 'steady';
|
|
84
|
+
prefetchConfidence: number;
|
|
85
|
+
cacheHitRate: number;
|
|
86
|
+
totalItems: number;
|
|
87
|
+
}
|
|
88
|
+
declare const useIntelligentScroll: (config: UseIntelligentScrollConfig) => {
|
|
89
|
+
visibleRange: VisibleRange;
|
|
90
|
+
isLoading: boolean;
|
|
91
|
+
scrollVelocity: number;
|
|
92
|
+
scrollDirection: "up" | "down" | "stationary";
|
|
93
|
+
scrollPattern: "fast-scroll" | "slow-scroll" | "paused" | "oscillating" | "steady";
|
|
94
|
+
prefetchConfidence: number;
|
|
95
|
+
cacheHitRate: number;
|
|
96
|
+
totalItems: number;
|
|
97
|
+
setContainerRef: (element: HTMLElement | null) => (() => void) | undefined;
|
|
98
|
+
getCachedData: (index: number) => any;
|
|
99
|
+
cacheData: (index: number, data: any, priority?: "low" | "normal" | "high" | "critical") => void;
|
|
100
|
+
getPaginationState: () => PaginationState | null;
|
|
101
|
+
refresh: () => void;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
interface UseAdaptiveLoadingConfig {
|
|
105
|
+
initialBatchSize?: number;
|
|
106
|
+
minBatchSize?: number;
|
|
107
|
+
maxBatchSize?: number;
|
|
108
|
+
fetchMore: () => Promise<any[]>;
|
|
109
|
+
enableNetworkAdaptation?: boolean;
|
|
110
|
+
enablePerformanceAdaptation?: boolean;
|
|
111
|
+
}
|
|
112
|
+
interface AdaptiveLoadingState {
|
|
113
|
+
currentBatchSize: number;
|
|
114
|
+
networkQuality: 'excellent' | 'good' | 'poor' | 'offline';
|
|
115
|
+
performanceScore: number;
|
|
116
|
+
isLoading: boolean;
|
|
117
|
+
loadedItems: number;
|
|
118
|
+
avgLoadTime: number;
|
|
119
|
+
adaptationCount: number;
|
|
120
|
+
}
|
|
121
|
+
declare const useAdaptiveLoading: (config: UseAdaptiveLoadingConfig) => {
|
|
122
|
+
loadMore: () => Promise<any[]>;
|
|
123
|
+
getCurrentBatchSize: () => number;
|
|
124
|
+
getStats: () => {
|
|
125
|
+
currentBatchSize: number;
|
|
126
|
+
networkQuality: "excellent" | "good" | "poor" | "offline";
|
|
127
|
+
performanceScore: number;
|
|
128
|
+
avgLoadTime: number;
|
|
129
|
+
adaptationCount: number;
|
|
130
|
+
loadedItems: number;
|
|
131
|
+
};
|
|
132
|
+
reset: () => void;
|
|
133
|
+
currentBatchSize: number;
|
|
134
|
+
networkQuality: "excellent" | "good" | "poor" | "offline";
|
|
135
|
+
performanceScore: number;
|
|
136
|
+
isLoading: boolean;
|
|
137
|
+
loadedItems: number;
|
|
138
|
+
avgLoadTime: number;
|
|
139
|
+
adaptationCount: number;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
interface UseSmartPaginationConfig {
|
|
143
|
+
initialPage?: number;
|
|
144
|
+
initialPageSize?: number;
|
|
145
|
+
minPageSize?: number;
|
|
146
|
+
maxPageSize?: number;
|
|
147
|
+
enableAdaptation?: boolean;
|
|
148
|
+
}
|
|
149
|
+
interface SmartPaginationState {
|
|
150
|
+
currentPage: number;
|
|
151
|
+
pageSize: number;
|
|
152
|
+
totalItems: number;
|
|
153
|
+
totalPages: number;
|
|
154
|
+
hasMore: boolean;
|
|
155
|
+
cursor?: string;
|
|
156
|
+
nextCursor?: string;
|
|
157
|
+
prevCursor?: string;
|
|
158
|
+
avgLoadTime: number;
|
|
159
|
+
isAdapting: boolean;
|
|
160
|
+
}
|
|
161
|
+
declare const useSmartPagination: (config?: UseSmartPaginationConfig) => {
|
|
162
|
+
nextPage: (loadDataFn?: () => Promise<void>) => Promise<void>;
|
|
163
|
+
prevPage: () => void;
|
|
164
|
+
goToPage: (page: number) => void;
|
|
165
|
+
goToCursor: (cursor: string) => void;
|
|
166
|
+
setTotalItems: (total: number) => void;
|
|
167
|
+
getFetchRange: () => {
|
|
168
|
+
skip: number;
|
|
169
|
+
limit: number;
|
|
170
|
+
};
|
|
171
|
+
getCurrentCursor: () => string | undefined;
|
|
172
|
+
getStats: () => {
|
|
173
|
+
currentPage: number;
|
|
174
|
+
pageSize: number;
|
|
175
|
+
totalItems: number;
|
|
176
|
+
totalPages: number;
|
|
177
|
+
hasMore: boolean;
|
|
178
|
+
avgLoadTime: number;
|
|
179
|
+
currentCursor: string | undefined;
|
|
180
|
+
loadHistory: {
|
|
181
|
+
page: number;
|
|
182
|
+
time: number;
|
|
183
|
+
}[];
|
|
184
|
+
} | null;
|
|
185
|
+
reset: () => void;
|
|
186
|
+
currentPage: number;
|
|
187
|
+
pageSize: number;
|
|
188
|
+
totalItems: number;
|
|
189
|
+
totalPages: number;
|
|
190
|
+
hasMore: boolean;
|
|
191
|
+
cursor?: string;
|
|
192
|
+
nextCursor?: string;
|
|
193
|
+
prevCursor?: string;
|
|
194
|
+
avgLoadTime: number;
|
|
195
|
+
isAdapting: boolean;
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
interface IntelligentLazyListProps {
|
|
199
|
+
items: any[];
|
|
200
|
+
itemHeight: number;
|
|
201
|
+
viewportHeight: number;
|
|
202
|
+
fetchMore: () => Promise<any[]>;
|
|
203
|
+
renderItem: (item: any, index: number) => React.ReactNode;
|
|
204
|
+
bufferSize?: number;
|
|
205
|
+
enablePrefetch?: boolean;
|
|
206
|
+
enableCache?: boolean;
|
|
207
|
+
className?: string;
|
|
208
|
+
style?: React.CSSProperties;
|
|
209
|
+
}
|
|
210
|
+
declare const IntelligentLazyList: React.FC<IntelligentLazyListProps>;
|
|
211
|
+
|
|
212
|
+
interface AdaptiveScrollViewProps {
|
|
213
|
+
children: React.ReactNode;
|
|
214
|
+
fetchMore: () => Promise<any[]>;
|
|
215
|
+
initialBatchSize?: number;
|
|
216
|
+
minBatchSize?: number;
|
|
217
|
+
maxBatchSize?: number;
|
|
218
|
+
enableNetworkAdaptation?: boolean;
|
|
219
|
+
enablePerformanceAdaptation?: boolean;
|
|
220
|
+
className?: string;
|
|
221
|
+
style?: React.CSSProperties;
|
|
222
|
+
onLoadMore?: (items: any[]) => void;
|
|
223
|
+
}
|
|
224
|
+
declare const AdaptiveScrollView: React.FC<AdaptiveScrollViewProps>;
|
|
225
|
+
|
|
226
|
+
interface SmartInfiniteScrollProps {
|
|
227
|
+
fetchMore: (page: number, limit: number) => Promise<any[]>;
|
|
228
|
+
renderItem: (item: any, index: number) => React.ReactNode;
|
|
229
|
+
initialPageSize?: number;
|
|
230
|
+
minPageSize?: number;
|
|
231
|
+
maxPageSize?: number;
|
|
232
|
+
enableAdaptation?: boolean;
|
|
233
|
+
className?: string;
|
|
234
|
+
style?: React.CSSProperties;
|
|
235
|
+
emptyMessage?: string;
|
|
236
|
+
}
|
|
237
|
+
declare const SmartInfiniteScroll: React.FC<SmartInfiniteScrollProps>;
|
|
238
|
+
|
|
239
|
+
export { AdaptiveScrollView, IntelligentLazyList, LazyList, SmartInfiniteScroll, useAdaptiveLoading, useIntelligentScroll, useLazyList, useSmartPagination };
|
|
240
|
+
export type { AdaptiveLoadingState, AdaptiveScrollViewProps, IntelligentLazyListProps, IntelligentScrollState, SmartInfiniteScrollProps, SmartPaginationState, UseAdaptiveLoadingConfig, UseIntelligentScrollConfig, UseSmartPaginationConfig };
|