lazy-render-virtual-scroll 1.0.8 → 1.0.9

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 (450) hide show
  1. package/dist/angular/index.d.ts +57 -0
  2. package/dist/cjs/angular/adapters/angular/lazy-scroll.component.d.ts +28 -0
  3. package/dist/cjs/angular/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  4. package/dist/cjs/angular/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  5. package/dist/cjs/angular/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  6. package/dist/cjs/angular/adapters/index.d.ts +7 -0
  7. package/dist/cjs/angular/adapters/index.d.ts.map +1 -0
  8. package/dist/cjs/angular/adapters/react/LazyList.d.ts +12 -0
  9. package/dist/cjs/angular/adapters/react/LazyList.d.ts.map +1 -0
  10. package/dist/cjs/angular/adapters/react/useLazyList.d.ts +22 -0
  11. package/dist/cjs/angular/adapters/react/useLazyList.d.ts.map +1 -0
  12. package/dist/cjs/angular/adapters/svelte/lazyScrollAction.d.ts +13 -0
  13. package/dist/cjs/angular/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  14. package/dist/cjs/angular/adapters/vue/useLazyScroll.d.ts +13 -0
  15. package/dist/cjs/angular/adapters/vue/useLazyScroll.d.ts.map +1 -0
  16. package/dist/cjs/angular/core/AdaptiveBufferCalculator.d.ts +46 -0
  17. package/dist/cjs/angular/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  18. package/dist/cjs/angular/core/ContentComplexityAnalyzer.d.ts +13 -0
  19. package/dist/cjs/angular/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  20. package/dist/cjs/angular/core/DevicePerformanceMonitor.d.ts +22 -0
  21. package/dist/cjs/angular/core/DevicePerformanceMonitor.d.ts.map +1 -0
  22. package/dist/cjs/angular/core/Engine.d.ts +56 -0
  23. package/dist/cjs/angular/core/Engine.d.ts.map +1 -0
  24. package/dist/cjs/angular/core/GPUAccelerator.d.ts +23 -0
  25. package/dist/cjs/angular/core/GPUAccelerator.d.ts.map +1 -0
  26. package/dist/cjs/angular/core/IntelligentScrollDetector.d.ts +19 -0
  27. package/dist/cjs/angular/core/IntelligentScrollDetector.d.ts.map +1 -0
  28. package/dist/cjs/angular/core/MemoryManager.d.ts +33 -0
  29. package/dist/cjs/angular/core/MemoryManager.d.ts.map +1 -0
  30. package/dist/cjs/angular/core/NetworkAwarePrefetchManager.d.ts +10 -0
  31. package/dist/cjs/angular/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  32. package/dist/cjs/angular/core/NetworkAwareRequestQueue.d.ts +20 -0
  33. package/dist/cjs/angular/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  34. package/dist/cjs/angular/core/NetworkSpeedDetector.d.ts +16 -0
  35. package/dist/cjs/angular/core/NetworkSpeedDetector.d.ts.map +1 -0
  36. package/dist/cjs/angular/core/PerformanceOptimizer.d.ts +39 -0
  37. package/dist/cjs/angular/core/PerformanceOptimizer.d.ts.map +1 -0
  38. package/dist/cjs/angular/core/PrefetchManager.d.ts +16 -0
  39. package/dist/cjs/angular/core/PrefetchManager.d.ts.map +1 -0
  40. package/dist/cjs/angular/core/RequestQueue.d.ts +23 -0
  41. package/dist/cjs/angular/core/RequestQueue.d.ts.map +1 -0
  42. package/dist/cjs/angular/core/WindowManager.d.ts +24 -0
  43. package/dist/cjs/angular/core/WindowManager.d.ts.map +1 -0
  44. package/dist/cjs/angular/core/types.d.ts +28 -0
  45. package/dist/cjs/angular/core/types.d.ts.map +1 -0
  46. package/dist/cjs/angular/index.d.ts +23 -0
  47. package/dist/cjs/angular/index.d.ts.map +1 -0
  48. package/dist/cjs/angular/index.js +1717 -0
  49. package/dist/cjs/angular/index.js.map +1 -0
  50. package/dist/cjs/angular/platform/browser/ScrollObserver.d.ts +25 -0
  51. package/dist/cjs/angular/platform/browser/ScrollObserver.d.ts.map +1 -0
  52. package/dist/cjs/angular/utils/debounce.d.ts +5 -0
  53. package/dist/cjs/angular/utils/debounce.d.ts.map +1 -0
  54. package/dist/cjs/angular/utils/throttle.d.ts +5 -0
  55. package/dist/cjs/angular/utils/throttle.d.ts.map +1 -0
  56. package/dist/cjs/core/GPUAccelerator.d.ts.map +1 -1
  57. package/dist/cjs/core/PerformanceOptimizer.d.ts.map +1 -1
  58. package/dist/cjs/index.d.ts +2 -6
  59. package/dist/cjs/index.d.ts.map +1 -1
  60. package/dist/cjs/index.js +193 -603
  61. package/dist/cjs/index.js.map +1 -1
  62. package/dist/cjs/svelte/adapters/angular/lazy-scroll.component.d.ts +28 -0
  63. package/dist/cjs/svelte/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  64. package/dist/cjs/svelte/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  65. package/dist/cjs/svelte/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  66. package/dist/cjs/svelte/adapters/index.d.ts +7 -0
  67. package/dist/cjs/svelte/adapters/index.d.ts.map +1 -0
  68. package/dist/cjs/svelte/adapters/react/LazyList.d.ts +12 -0
  69. package/dist/cjs/svelte/adapters/react/LazyList.d.ts.map +1 -0
  70. package/dist/cjs/svelte/adapters/react/useLazyList.d.ts +22 -0
  71. package/dist/cjs/svelte/adapters/react/useLazyList.d.ts.map +1 -0
  72. package/dist/cjs/svelte/adapters/svelte/lazyScrollAction.d.ts +13 -0
  73. package/dist/cjs/svelte/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  74. package/dist/cjs/svelte/adapters/vue/useLazyScroll.d.ts +13 -0
  75. package/dist/cjs/svelte/adapters/vue/useLazyScroll.d.ts.map +1 -0
  76. package/dist/cjs/svelte/core/AdaptiveBufferCalculator.d.ts +46 -0
  77. package/dist/cjs/svelte/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  78. package/dist/cjs/svelte/core/ContentComplexityAnalyzer.d.ts +13 -0
  79. package/dist/cjs/svelte/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  80. package/dist/cjs/svelte/core/DevicePerformanceMonitor.d.ts +22 -0
  81. package/dist/cjs/svelte/core/DevicePerformanceMonitor.d.ts.map +1 -0
  82. package/dist/cjs/svelte/core/Engine.d.ts +56 -0
  83. package/dist/cjs/svelte/core/Engine.d.ts.map +1 -0
  84. package/dist/cjs/svelte/core/GPUAccelerator.d.ts +23 -0
  85. package/dist/cjs/svelte/core/GPUAccelerator.d.ts.map +1 -0
  86. package/dist/cjs/svelte/core/IntelligentScrollDetector.d.ts +19 -0
  87. package/dist/cjs/svelte/core/IntelligentScrollDetector.d.ts.map +1 -0
  88. package/dist/cjs/svelte/core/MemoryManager.d.ts +33 -0
  89. package/dist/cjs/svelte/core/MemoryManager.d.ts.map +1 -0
  90. package/dist/cjs/svelte/core/NetworkAwarePrefetchManager.d.ts +10 -0
  91. package/dist/cjs/svelte/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  92. package/dist/cjs/svelte/core/NetworkAwareRequestQueue.d.ts +20 -0
  93. package/dist/cjs/svelte/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  94. package/dist/cjs/svelte/core/NetworkSpeedDetector.d.ts +16 -0
  95. package/dist/cjs/svelte/core/NetworkSpeedDetector.d.ts.map +1 -0
  96. package/dist/cjs/svelte/core/PerformanceOptimizer.d.ts +39 -0
  97. package/dist/cjs/svelte/core/PerformanceOptimizer.d.ts.map +1 -0
  98. package/dist/cjs/svelte/core/PrefetchManager.d.ts +16 -0
  99. package/dist/cjs/svelte/core/PrefetchManager.d.ts.map +1 -0
  100. package/dist/cjs/svelte/core/RequestQueue.d.ts +23 -0
  101. package/dist/cjs/svelte/core/RequestQueue.d.ts.map +1 -0
  102. package/dist/cjs/svelte/core/WindowManager.d.ts +24 -0
  103. package/dist/cjs/svelte/core/WindowManager.d.ts.map +1 -0
  104. package/dist/cjs/svelte/core/types.d.ts +28 -0
  105. package/dist/cjs/svelte/core/types.d.ts.map +1 -0
  106. package/dist/cjs/svelte/index.d.ts +23 -0
  107. package/dist/cjs/svelte/index.d.ts.map +1 -0
  108. package/dist/cjs/svelte/index.js +1423 -0
  109. package/dist/cjs/svelte/index.js.map +1 -0
  110. package/dist/cjs/svelte/platform/browser/ScrollObserver.d.ts +25 -0
  111. package/dist/cjs/svelte/platform/browser/ScrollObserver.d.ts.map +1 -0
  112. package/dist/cjs/svelte/utils/debounce.d.ts +5 -0
  113. package/dist/cjs/svelte/utils/debounce.d.ts.map +1 -0
  114. package/dist/cjs/svelte/utils/throttle.d.ts +5 -0
  115. package/dist/cjs/svelte/utils/throttle.d.ts.map +1 -0
  116. package/dist/cjs/vanilla/adapters/angular/lazy-scroll.component.d.ts +28 -0
  117. package/dist/cjs/vanilla/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  118. package/dist/cjs/vanilla/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  119. package/dist/cjs/vanilla/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  120. package/dist/cjs/vanilla/adapters/index.d.ts +7 -0
  121. package/dist/cjs/vanilla/adapters/index.d.ts.map +1 -0
  122. package/dist/cjs/vanilla/adapters/react/LazyList.d.ts +12 -0
  123. package/dist/cjs/vanilla/adapters/react/LazyList.d.ts.map +1 -0
  124. package/dist/cjs/vanilla/adapters/react/useLazyList.d.ts +22 -0
  125. package/dist/cjs/vanilla/adapters/react/useLazyList.d.ts.map +1 -0
  126. package/dist/cjs/vanilla/adapters/svelte/lazyScrollAction.d.ts +13 -0
  127. package/dist/cjs/vanilla/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  128. package/dist/cjs/vanilla/adapters/vue/useLazyScroll.d.ts +13 -0
  129. package/dist/cjs/vanilla/adapters/vue/useLazyScroll.d.ts.map +1 -0
  130. package/dist/cjs/vanilla/core/AdaptiveBufferCalculator.d.ts +46 -0
  131. package/dist/cjs/vanilla/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  132. package/dist/cjs/vanilla/core/ContentComplexityAnalyzer.d.ts +13 -0
  133. package/dist/cjs/vanilla/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  134. package/dist/cjs/vanilla/core/DevicePerformanceMonitor.d.ts +22 -0
  135. package/dist/cjs/vanilla/core/DevicePerformanceMonitor.d.ts.map +1 -0
  136. package/dist/cjs/vanilla/core/Engine.d.ts +56 -0
  137. package/dist/cjs/vanilla/core/Engine.d.ts.map +1 -0
  138. package/dist/cjs/vanilla/core/GPUAccelerator.d.ts +23 -0
  139. package/dist/cjs/vanilla/core/GPUAccelerator.d.ts.map +1 -0
  140. package/dist/cjs/vanilla/core/IntelligentScrollDetector.d.ts +19 -0
  141. package/dist/cjs/vanilla/core/IntelligentScrollDetector.d.ts.map +1 -0
  142. package/dist/cjs/vanilla/core/MemoryManager.d.ts +33 -0
  143. package/dist/cjs/vanilla/core/MemoryManager.d.ts.map +1 -0
  144. package/dist/cjs/vanilla/core/NetworkAwarePrefetchManager.d.ts +10 -0
  145. package/dist/cjs/vanilla/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  146. package/dist/cjs/vanilla/core/NetworkAwareRequestQueue.d.ts +20 -0
  147. package/dist/cjs/vanilla/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  148. package/dist/cjs/vanilla/core/NetworkSpeedDetector.d.ts +16 -0
  149. package/dist/cjs/vanilla/core/NetworkSpeedDetector.d.ts.map +1 -0
  150. package/dist/cjs/vanilla/core/PerformanceOptimizer.d.ts +39 -0
  151. package/dist/cjs/vanilla/core/PerformanceOptimizer.d.ts.map +1 -0
  152. package/dist/cjs/vanilla/core/PrefetchManager.d.ts +16 -0
  153. package/dist/cjs/vanilla/core/PrefetchManager.d.ts.map +1 -0
  154. package/dist/cjs/vanilla/core/RequestQueue.d.ts +23 -0
  155. package/dist/cjs/vanilla/core/RequestQueue.d.ts.map +1 -0
  156. package/dist/cjs/vanilla/core/WindowManager.d.ts +24 -0
  157. package/dist/cjs/vanilla/core/WindowManager.d.ts.map +1 -0
  158. package/dist/cjs/vanilla/core/types.d.ts +28 -0
  159. package/dist/cjs/vanilla/core/types.d.ts.map +1 -0
  160. package/dist/cjs/vanilla/index.d.ts +23 -0
  161. package/dist/cjs/vanilla/index.d.ts.map +1 -0
  162. package/dist/cjs/vanilla/index.js +1670 -0
  163. package/dist/cjs/vanilla/index.js.map +1 -0
  164. package/dist/cjs/vanilla/platform/browser/ScrollObserver.d.ts +25 -0
  165. package/dist/cjs/vanilla/platform/browser/ScrollObserver.d.ts.map +1 -0
  166. package/dist/cjs/vanilla/utils/debounce.d.ts +5 -0
  167. package/dist/cjs/vanilla/utils/debounce.d.ts.map +1 -0
  168. package/dist/cjs/vanilla/utils/throttle.d.ts +5 -0
  169. package/dist/cjs/vanilla/utils/throttle.d.ts.map +1 -0
  170. package/dist/cjs/vue/adapters/angular/lazy-scroll.component.d.ts +28 -0
  171. package/dist/cjs/vue/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  172. package/dist/cjs/vue/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  173. package/dist/cjs/vue/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  174. package/dist/cjs/vue/adapters/index.d.ts +7 -0
  175. package/dist/cjs/vue/adapters/index.d.ts.map +1 -0
  176. package/dist/cjs/vue/adapters/react/LazyList.d.ts +12 -0
  177. package/dist/cjs/vue/adapters/react/LazyList.d.ts.map +1 -0
  178. package/dist/cjs/vue/adapters/react/useLazyList.d.ts +22 -0
  179. package/dist/cjs/vue/adapters/react/useLazyList.d.ts.map +1 -0
  180. package/dist/cjs/vue/adapters/svelte/lazyScrollAction.d.ts +13 -0
  181. package/dist/cjs/vue/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  182. package/dist/cjs/vue/adapters/vue/useLazyScroll.d.ts +13 -0
  183. package/dist/cjs/vue/adapters/vue/useLazyScroll.d.ts.map +1 -0
  184. package/dist/cjs/vue/core/AdaptiveBufferCalculator.d.ts +46 -0
  185. package/dist/cjs/vue/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  186. package/dist/cjs/vue/core/ContentComplexityAnalyzer.d.ts +13 -0
  187. package/dist/cjs/vue/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  188. package/dist/cjs/vue/core/DevicePerformanceMonitor.d.ts +22 -0
  189. package/dist/cjs/vue/core/DevicePerformanceMonitor.d.ts.map +1 -0
  190. package/dist/cjs/vue/core/Engine.d.ts +56 -0
  191. package/dist/cjs/vue/core/Engine.d.ts.map +1 -0
  192. package/dist/cjs/vue/core/GPUAccelerator.d.ts +23 -0
  193. package/dist/cjs/vue/core/GPUAccelerator.d.ts.map +1 -0
  194. package/dist/cjs/vue/core/IntelligentScrollDetector.d.ts +19 -0
  195. package/dist/cjs/vue/core/IntelligentScrollDetector.d.ts.map +1 -0
  196. package/dist/cjs/vue/core/MemoryManager.d.ts +33 -0
  197. package/dist/cjs/vue/core/MemoryManager.d.ts.map +1 -0
  198. package/dist/cjs/vue/core/NetworkAwarePrefetchManager.d.ts +10 -0
  199. package/dist/cjs/vue/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  200. package/dist/cjs/vue/core/NetworkAwareRequestQueue.d.ts +20 -0
  201. package/dist/cjs/vue/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  202. package/dist/cjs/vue/core/NetworkSpeedDetector.d.ts +16 -0
  203. package/dist/cjs/vue/core/NetworkSpeedDetector.d.ts.map +1 -0
  204. package/dist/cjs/vue/core/PerformanceOptimizer.d.ts +39 -0
  205. package/dist/cjs/vue/core/PerformanceOptimizer.d.ts.map +1 -0
  206. package/dist/cjs/vue/core/PrefetchManager.d.ts +16 -0
  207. package/dist/cjs/vue/core/PrefetchManager.d.ts.map +1 -0
  208. package/dist/cjs/vue/core/RequestQueue.d.ts +23 -0
  209. package/dist/cjs/vue/core/RequestQueue.d.ts.map +1 -0
  210. package/dist/cjs/vue/core/WindowManager.d.ts +24 -0
  211. package/dist/cjs/vue/core/WindowManager.d.ts.map +1 -0
  212. package/dist/cjs/vue/core/types.d.ts +28 -0
  213. package/dist/cjs/vue/core/types.d.ts.map +1 -0
  214. package/dist/cjs/vue/index.d.ts +23 -0
  215. package/dist/cjs/vue/index.d.ts.map +1 -0
  216. package/dist/cjs/vue/index.js +1443 -0
  217. package/dist/cjs/vue/index.js.map +1 -0
  218. package/dist/cjs/vue/platform/browser/ScrollObserver.d.ts +25 -0
  219. package/dist/cjs/vue/platform/browser/ScrollObserver.d.ts.map +1 -0
  220. package/dist/cjs/vue/utils/debounce.d.ts +5 -0
  221. package/dist/cjs/vue/utils/debounce.d.ts.map +1 -0
  222. package/dist/cjs/vue/utils/throttle.d.ts +5 -0
  223. package/dist/cjs/vue/utils/throttle.d.ts.map +1 -0
  224. package/dist/esm/angular/adapters/angular/lazy-scroll.component.d.ts +28 -0
  225. package/dist/esm/angular/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  226. package/dist/esm/angular/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  227. package/dist/esm/angular/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  228. package/dist/esm/angular/adapters/index.d.ts +7 -0
  229. package/dist/esm/angular/adapters/index.d.ts.map +1 -0
  230. package/dist/esm/angular/adapters/react/LazyList.d.ts +12 -0
  231. package/dist/esm/angular/adapters/react/LazyList.d.ts.map +1 -0
  232. package/dist/esm/angular/adapters/react/useLazyList.d.ts +22 -0
  233. package/dist/esm/angular/adapters/react/useLazyList.d.ts.map +1 -0
  234. package/dist/esm/angular/adapters/svelte/lazyScrollAction.d.ts +13 -0
  235. package/dist/esm/angular/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  236. package/dist/esm/angular/adapters/vue/useLazyScroll.d.ts +13 -0
  237. package/dist/esm/angular/adapters/vue/useLazyScroll.d.ts.map +1 -0
  238. package/dist/esm/angular/core/AdaptiveBufferCalculator.d.ts +46 -0
  239. package/dist/esm/angular/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  240. package/dist/esm/angular/core/ContentComplexityAnalyzer.d.ts +13 -0
  241. package/dist/esm/angular/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  242. package/dist/esm/angular/core/DevicePerformanceMonitor.d.ts +22 -0
  243. package/dist/esm/angular/core/DevicePerformanceMonitor.d.ts.map +1 -0
  244. package/dist/esm/angular/core/Engine.d.ts +56 -0
  245. package/dist/esm/angular/core/Engine.d.ts.map +1 -0
  246. package/dist/esm/angular/core/GPUAccelerator.d.ts +23 -0
  247. package/dist/esm/angular/core/GPUAccelerator.d.ts.map +1 -0
  248. package/dist/esm/angular/core/IntelligentScrollDetector.d.ts +19 -0
  249. package/dist/esm/angular/core/IntelligentScrollDetector.d.ts.map +1 -0
  250. package/dist/esm/angular/core/MemoryManager.d.ts +33 -0
  251. package/dist/esm/angular/core/MemoryManager.d.ts.map +1 -0
  252. package/dist/esm/angular/core/NetworkAwarePrefetchManager.d.ts +10 -0
  253. package/dist/esm/angular/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  254. package/dist/esm/angular/core/NetworkAwareRequestQueue.d.ts +20 -0
  255. package/dist/esm/angular/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  256. package/dist/esm/angular/core/NetworkSpeedDetector.d.ts +16 -0
  257. package/dist/esm/angular/core/NetworkSpeedDetector.d.ts.map +1 -0
  258. package/dist/esm/angular/core/PerformanceOptimizer.d.ts +39 -0
  259. package/dist/esm/angular/core/PerformanceOptimizer.d.ts.map +1 -0
  260. package/dist/esm/angular/core/PrefetchManager.d.ts +16 -0
  261. package/dist/esm/angular/core/PrefetchManager.d.ts.map +1 -0
  262. package/dist/esm/angular/core/RequestQueue.d.ts +23 -0
  263. package/dist/esm/angular/core/RequestQueue.d.ts.map +1 -0
  264. package/dist/esm/angular/core/WindowManager.d.ts +24 -0
  265. package/dist/esm/angular/core/WindowManager.d.ts.map +1 -0
  266. package/dist/esm/angular/core/types.d.ts +28 -0
  267. package/dist/esm/angular/core/types.d.ts.map +1 -0
  268. package/dist/esm/angular/index.d.ts +23 -0
  269. package/dist/esm/angular/index.d.ts.map +1 -0
  270. package/dist/esm/angular/index.js +1714 -0
  271. package/dist/esm/angular/index.js.map +1 -0
  272. package/dist/esm/angular/platform/browser/ScrollObserver.d.ts +25 -0
  273. package/dist/esm/angular/platform/browser/ScrollObserver.d.ts.map +1 -0
  274. package/dist/esm/angular/utils/debounce.d.ts +5 -0
  275. package/dist/esm/angular/utils/debounce.d.ts.map +1 -0
  276. package/dist/esm/angular/utils/throttle.d.ts +5 -0
  277. package/dist/esm/angular/utils/throttle.d.ts.map +1 -0
  278. package/dist/esm/core/GPUAccelerator.d.ts.map +1 -1
  279. package/dist/esm/core/PerformanceOptimizer.d.ts.map +1 -1
  280. package/dist/esm/index.d.ts +2 -6
  281. package/dist/esm/index.d.ts.map +1 -1
  282. package/dist/esm/index.js +194 -600
  283. package/dist/esm/index.js.map +1 -1
  284. package/dist/esm/svelte/adapters/angular/lazy-scroll.component.d.ts +28 -0
  285. package/dist/esm/svelte/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  286. package/dist/esm/svelte/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  287. package/dist/esm/svelte/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  288. package/dist/esm/svelte/adapters/index.d.ts +7 -0
  289. package/dist/esm/svelte/adapters/index.d.ts.map +1 -0
  290. package/dist/esm/svelte/adapters/react/LazyList.d.ts +12 -0
  291. package/dist/esm/svelte/adapters/react/LazyList.d.ts.map +1 -0
  292. package/dist/esm/svelte/adapters/react/useLazyList.d.ts +22 -0
  293. package/dist/esm/svelte/adapters/react/useLazyList.d.ts.map +1 -0
  294. package/dist/esm/svelte/adapters/svelte/lazyScrollAction.d.ts +13 -0
  295. package/dist/esm/svelte/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  296. package/dist/esm/svelte/adapters/vue/useLazyScroll.d.ts +13 -0
  297. package/dist/esm/svelte/adapters/vue/useLazyScroll.d.ts.map +1 -0
  298. package/dist/esm/svelte/core/AdaptiveBufferCalculator.d.ts +46 -0
  299. package/dist/esm/svelte/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  300. package/dist/esm/svelte/core/ContentComplexityAnalyzer.d.ts +13 -0
  301. package/dist/esm/svelte/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  302. package/dist/esm/svelte/core/DevicePerformanceMonitor.d.ts +22 -0
  303. package/dist/esm/svelte/core/DevicePerformanceMonitor.d.ts.map +1 -0
  304. package/dist/esm/svelte/core/Engine.d.ts +56 -0
  305. package/dist/esm/svelte/core/Engine.d.ts.map +1 -0
  306. package/dist/esm/svelte/core/GPUAccelerator.d.ts +23 -0
  307. package/dist/esm/svelte/core/GPUAccelerator.d.ts.map +1 -0
  308. package/dist/esm/svelte/core/IntelligentScrollDetector.d.ts +19 -0
  309. package/dist/esm/svelte/core/IntelligentScrollDetector.d.ts.map +1 -0
  310. package/dist/esm/svelte/core/MemoryManager.d.ts +33 -0
  311. package/dist/esm/svelte/core/MemoryManager.d.ts.map +1 -0
  312. package/dist/esm/svelte/core/NetworkAwarePrefetchManager.d.ts +10 -0
  313. package/dist/esm/svelte/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  314. package/dist/esm/svelte/core/NetworkAwareRequestQueue.d.ts +20 -0
  315. package/dist/esm/svelte/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  316. package/dist/esm/svelte/core/NetworkSpeedDetector.d.ts +16 -0
  317. package/dist/esm/svelte/core/NetworkSpeedDetector.d.ts.map +1 -0
  318. package/dist/esm/svelte/core/PerformanceOptimizer.d.ts +39 -0
  319. package/dist/esm/svelte/core/PerformanceOptimizer.d.ts.map +1 -0
  320. package/dist/esm/svelte/core/PrefetchManager.d.ts +16 -0
  321. package/dist/esm/svelte/core/PrefetchManager.d.ts.map +1 -0
  322. package/dist/esm/svelte/core/RequestQueue.d.ts +23 -0
  323. package/dist/esm/svelte/core/RequestQueue.d.ts.map +1 -0
  324. package/dist/esm/svelte/core/WindowManager.d.ts +24 -0
  325. package/dist/esm/svelte/core/WindowManager.d.ts.map +1 -0
  326. package/dist/esm/svelte/core/types.d.ts +28 -0
  327. package/dist/esm/svelte/core/types.d.ts.map +1 -0
  328. package/dist/esm/svelte/index.d.ts +23 -0
  329. package/dist/esm/svelte/index.d.ts.map +1 -0
  330. package/dist/esm/svelte/index.js +1421 -0
  331. package/dist/esm/svelte/index.js.map +1 -0
  332. package/dist/esm/svelte/platform/browser/ScrollObserver.d.ts +25 -0
  333. package/dist/esm/svelte/platform/browser/ScrollObserver.d.ts.map +1 -0
  334. package/dist/esm/svelte/utils/debounce.d.ts +5 -0
  335. package/dist/esm/svelte/utils/debounce.d.ts.map +1 -0
  336. package/dist/esm/svelte/utils/throttle.d.ts +5 -0
  337. package/dist/esm/svelte/utils/throttle.d.ts.map +1 -0
  338. package/dist/esm/vanilla/adapters/angular/lazy-scroll.component.d.ts +28 -0
  339. package/dist/esm/vanilla/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  340. package/dist/esm/vanilla/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  341. package/dist/esm/vanilla/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  342. package/dist/esm/vanilla/adapters/index.d.ts +7 -0
  343. package/dist/esm/vanilla/adapters/index.d.ts.map +1 -0
  344. package/dist/esm/vanilla/adapters/react/LazyList.d.ts +12 -0
  345. package/dist/esm/vanilla/adapters/react/LazyList.d.ts.map +1 -0
  346. package/dist/esm/vanilla/adapters/react/useLazyList.d.ts +22 -0
  347. package/dist/esm/vanilla/adapters/react/useLazyList.d.ts.map +1 -0
  348. package/dist/esm/vanilla/adapters/svelte/lazyScrollAction.d.ts +13 -0
  349. package/dist/esm/vanilla/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  350. package/dist/esm/vanilla/adapters/vue/useLazyScroll.d.ts +13 -0
  351. package/dist/esm/vanilla/adapters/vue/useLazyScroll.d.ts.map +1 -0
  352. package/dist/esm/vanilla/core/AdaptiveBufferCalculator.d.ts +46 -0
  353. package/dist/esm/vanilla/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  354. package/dist/esm/vanilla/core/ContentComplexityAnalyzer.d.ts +13 -0
  355. package/dist/esm/vanilla/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  356. package/dist/esm/vanilla/core/DevicePerformanceMonitor.d.ts +22 -0
  357. package/dist/esm/vanilla/core/DevicePerformanceMonitor.d.ts.map +1 -0
  358. package/dist/esm/vanilla/core/Engine.d.ts +56 -0
  359. package/dist/esm/vanilla/core/Engine.d.ts.map +1 -0
  360. package/dist/esm/vanilla/core/GPUAccelerator.d.ts +23 -0
  361. package/dist/esm/vanilla/core/GPUAccelerator.d.ts.map +1 -0
  362. package/dist/esm/vanilla/core/IntelligentScrollDetector.d.ts +19 -0
  363. package/dist/esm/vanilla/core/IntelligentScrollDetector.d.ts.map +1 -0
  364. package/dist/esm/vanilla/core/MemoryManager.d.ts +33 -0
  365. package/dist/esm/vanilla/core/MemoryManager.d.ts.map +1 -0
  366. package/dist/esm/vanilla/core/NetworkAwarePrefetchManager.d.ts +10 -0
  367. package/dist/esm/vanilla/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  368. package/dist/esm/vanilla/core/NetworkAwareRequestQueue.d.ts +20 -0
  369. package/dist/esm/vanilla/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  370. package/dist/esm/vanilla/core/NetworkSpeedDetector.d.ts +16 -0
  371. package/dist/esm/vanilla/core/NetworkSpeedDetector.d.ts.map +1 -0
  372. package/dist/esm/vanilla/core/PerformanceOptimizer.d.ts +39 -0
  373. package/dist/esm/vanilla/core/PerformanceOptimizer.d.ts.map +1 -0
  374. package/dist/esm/vanilla/core/PrefetchManager.d.ts +16 -0
  375. package/dist/esm/vanilla/core/PrefetchManager.d.ts.map +1 -0
  376. package/dist/esm/vanilla/core/RequestQueue.d.ts +23 -0
  377. package/dist/esm/vanilla/core/RequestQueue.d.ts.map +1 -0
  378. package/dist/esm/vanilla/core/WindowManager.d.ts +24 -0
  379. package/dist/esm/vanilla/core/WindowManager.d.ts.map +1 -0
  380. package/dist/esm/vanilla/core/types.d.ts +28 -0
  381. package/dist/esm/vanilla/core/types.d.ts.map +1 -0
  382. package/dist/esm/vanilla/index.d.ts +23 -0
  383. package/dist/esm/vanilla/index.d.ts.map +1 -0
  384. package/dist/esm/vanilla/index.js +1666 -0
  385. package/dist/esm/vanilla/index.js.map +1 -0
  386. package/dist/esm/vanilla/platform/browser/ScrollObserver.d.ts +25 -0
  387. package/dist/esm/vanilla/platform/browser/ScrollObserver.d.ts.map +1 -0
  388. package/dist/esm/vanilla/utils/debounce.d.ts +5 -0
  389. package/dist/esm/vanilla/utils/debounce.d.ts.map +1 -0
  390. package/dist/esm/vanilla/utils/throttle.d.ts +5 -0
  391. package/dist/esm/vanilla/utils/throttle.d.ts.map +1 -0
  392. package/dist/esm/vue/adapters/angular/lazy-scroll.component.d.ts +28 -0
  393. package/dist/esm/vue/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  394. package/dist/esm/vue/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  395. package/dist/esm/vue/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  396. package/dist/esm/vue/adapters/index.d.ts +7 -0
  397. package/dist/esm/vue/adapters/index.d.ts.map +1 -0
  398. package/dist/esm/vue/adapters/react/LazyList.d.ts +12 -0
  399. package/dist/esm/vue/adapters/react/LazyList.d.ts.map +1 -0
  400. package/dist/esm/vue/adapters/react/useLazyList.d.ts +22 -0
  401. package/dist/esm/vue/adapters/react/useLazyList.d.ts.map +1 -0
  402. package/dist/esm/vue/adapters/svelte/lazyScrollAction.d.ts +13 -0
  403. package/dist/esm/vue/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  404. package/dist/esm/vue/adapters/vue/useLazyScroll.d.ts +13 -0
  405. package/dist/esm/vue/adapters/vue/useLazyScroll.d.ts.map +1 -0
  406. package/dist/esm/vue/core/AdaptiveBufferCalculator.d.ts +46 -0
  407. package/dist/esm/vue/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  408. package/dist/esm/vue/core/ContentComplexityAnalyzer.d.ts +13 -0
  409. package/dist/esm/vue/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  410. package/dist/esm/vue/core/DevicePerformanceMonitor.d.ts +22 -0
  411. package/dist/esm/vue/core/DevicePerformanceMonitor.d.ts.map +1 -0
  412. package/dist/esm/vue/core/Engine.d.ts +56 -0
  413. package/dist/esm/vue/core/Engine.d.ts.map +1 -0
  414. package/dist/esm/vue/core/GPUAccelerator.d.ts +23 -0
  415. package/dist/esm/vue/core/GPUAccelerator.d.ts.map +1 -0
  416. package/dist/esm/vue/core/IntelligentScrollDetector.d.ts +19 -0
  417. package/dist/esm/vue/core/IntelligentScrollDetector.d.ts.map +1 -0
  418. package/dist/esm/vue/core/MemoryManager.d.ts +33 -0
  419. package/dist/esm/vue/core/MemoryManager.d.ts.map +1 -0
  420. package/dist/esm/vue/core/NetworkAwarePrefetchManager.d.ts +10 -0
  421. package/dist/esm/vue/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  422. package/dist/esm/vue/core/NetworkAwareRequestQueue.d.ts +20 -0
  423. package/dist/esm/vue/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  424. package/dist/esm/vue/core/NetworkSpeedDetector.d.ts +16 -0
  425. package/dist/esm/vue/core/NetworkSpeedDetector.d.ts.map +1 -0
  426. package/dist/esm/vue/core/PerformanceOptimizer.d.ts +39 -0
  427. package/dist/esm/vue/core/PerformanceOptimizer.d.ts.map +1 -0
  428. package/dist/esm/vue/core/PrefetchManager.d.ts +16 -0
  429. package/dist/esm/vue/core/PrefetchManager.d.ts.map +1 -0
  430. package/dist/esm/vue/core/RequestQueue.d.ts +23 -0
  431. package/dist/esm/vue/core/RequestQueue.d.ts.map +1 -0
  432. package/dist/esm/vue/core/WindowManager.d.ts +24 -0
  433. package/dist/esm/vue/core/WindowManager.d.ts.map +1 -0
  434. package/dist/esm/vue/core/types.d.ts +28 -0
  435. package/dist/esm/vue/core/types.d.ts.map +1 -0
  436. package/dist/esm/vue/index.d.ts +23 -0
  437. package/dist/esm/vue/index.d.ts.map +1 -0
  438. package/dist/esm/vue/index.js +1441 -0
  439. package/dist/esm/vue/index.js.map +1 -0
  440. package/dist/esm/vue/platform/browser/ScrollObserver.d.ts +25 -0
  441. package/dist/esm/vue/platform/browser/ScrollObserver.d.ts.map +1 -0
  442. package/dist/esm/vue/utils/debounce.d.ts +5 -0
  443. package/dist/esm/vue/utils/debounce.d.ts.map +1 -0
  444. package/dist/esm/vue/utils/throttle.d.ts +5 -0
  445. package/dist/esm/vue/utils/throttle.d.ts.map +1 -0
  446. package/dist/index.d.ts +46 -115
  447. package/dist/svelte/index.d.ts +16 -0
  448. package/dist/vanilla/index.d.ts +356 -0
  449. package/dist/vue/index.d.ts +22 -0
  450. package/package.json +28 -1
package/dist/esm/index.js CHANGED
@@ -1,5 +1,3 @@
1
- import { ref, onMounted, onUnmounted, watch, computed } from 'vue';
2
- import { Directive, Input, Output, EventEmitter, Component, ContentChild, TemplateRef } from '@angular/core';
3
1
  import React, { useRef, useState, useEffect, useCallback, forwardRef } from 'react';
4
2
 
5
3
  class WindowManager {
@@ -804,8 +802,14 @@ class PerformanceOptimizer {
804
802
  }
805
803
  this.lastUpdate = currentTime;
806
804
  if (this.updateQueue.length > 0) {
807
- // Schedule remaining updates for next frame
808
- requestAnimationFrame(() => this.processUpdateQueue());
805
+ // Schedule remaining updates for next frame (only in browser environment)
806
+ if (typeof requestAnimationFrame !== 'undefined') {
807
+ requestAnimationFrame(() => this.processUpdateQueue());
808
+ }
809
+ else {
810
+ // In Node.js environment, use setTimeout as fallback
811
+ setTimeout(() => this.processUpdateQueue(), 0);
812
+ }
809
813
  }
810
814
  else {
811
815
  this.isProcessingQueue = false;
@@ -1110,6 +1114,10 @@ class GPUAccelerator {
1110
1114
  }
1111
1115
  // Check if GPU acceleration is supported
1112
1116
  isGPUSupported() {
1117
+ // Check if we're in a browser environment
1118
+ if (typeof document === 'undefined') {
1119
+ return false; // Not supported in Node.js environment
1120
+ }
1113
1121
  // Check for 3D transform support
1114
1122
  const testEl = document.createElement('div');
1115
1123
  return testEl.style.webkitTransform !== undefined ||
@@ -1376,419 +1384,203 @@ class Engine {
1376
1384
  }
1377
1385
  }
1378
1386
 
1379
- const useLazyScroll = (config) => {
1380
- const { fetchMore, ...engineConfig } = config;
1381
- const engine = new Engine(engineConfig);
1382
- engine.setFetchMoreCallback(fetchMore);
1383
- const visibleRange = ref({ start: 0, end: 0 });
1384
- const loadedItems = ref([]);
1385
- const isLoading = ref(false);
1386
- const containerRef = ref(null);
1387
- const scrollTop = ref(0);
1388
- // Initialize scroll listener
1389
- let scrollHandler = null;
1390
- onMounted(() => {
1391
- if (containerRef.value) {
1392
- scrollHandler = () => {
1393
- if (containerRef.value) {
1394
- scrollTop.value = containerRef.value.scrollTop;
1395
- updateScrollPosition(scrollTop.value);
1387
+ class ScrollObserver {
1388
+ constructor(container, callback, options) {
1389
+ this.observer = null;
1390
+ this.sentinelElement = null;
1391
+ /**
1392
+ * Handle scroll events
1393
+ */
1394
+ this.onScroll = () => {
1395
+ // Debounced scroll handler to prevent too frequent updates
1396
+ this.debounce(() => {
1397
+ this.callback(this.container.scrollTop);
1398
+ }, 16); // ~60fps
1399
+ };
1400
+ this.container = container;
1401
+ this.callback = callback;
1402
+ this.options = {
1403
+ root: container,
1404
+ threshold: [0, 1],
1405
+ ...options
1406
+ };
1407
+ }
1408
+ /**
1409
+ * Start observing scroll events
1410
+ */
1411
+ observe() {
1412
+ // Create a sentinel element at the bottom to detect when user scrolls near the end
1413
+ this.sentinelElement = document.createElement('div');
1414
+ this.sentinelElement.style.height = '1px'; // Very small element
1415
+ this.sentinelElement.setAttribute('data-lazy-sentinel', '');
1416
+ // Add sentinel to the container
1417
+ this.container.appendChild(this.sentinelElement);
1418
+ // Create intersection observer to detect when sentinel comes into view
1419
+ this.observer = new IntersectionObserver((entries) => {
1420
+ entries.forEach(entry => {
1421
+ if (entry.isIntersecting) {
1422
+ // Trigger callback with current scroll position
1423
+ this.callback(this.container.scrollTop);
1396
1424
  }
1397
- };
1398
- containerRef.value.addEventListener('scroll', scrollHandler, { passive: true });
1399
- }
1400
- });
1401
- onUnmounted(() => {
1402
- if (containerRef.value && scrollHandler) {
1403
- containerRef.value.removeEventListener('scroll', scrollHandler);
1425
+ });
1426
+ }, this.options);
1427
+ this.observer.observe(this.sentinelElement);
1428
+ // Also listen to scroll events for continuous updates
1429
+ this.container.addEventListener('scroll', this.onScroll, { passive: true });
1430
+ }
1431
+ /**
1432
+ * Debounce function for scroll events
1433
+ */
1434
+ debounce(func, wait) {
1435
+ let timeout;
1436
+ clearTimeout(timeout);
1437
+ timeout = setTimeout(func, wait);
1438
+ }
1439
+ /**
1440
+ * Disconnect observer and clean up
1441
+ */
1442
+ disconnect() {
1443
+ if (this.observer) {
1444
+ this.observer.disconnect();
1445
+ this.observer = null;
1404
1446
  }
1405
- engine.cleanup();
1406
- });
1407
- // Watch for scroll position changes
1408
- watch(scrollTop, (newScrollTop) => {
1409
- updateScrollPosition(newScrollTop);
1410
- });
1411
- const updateScrollPosition = async (position) => {
1412
- await engine.updateScrollPosition(position);
1413
- const state = engine.getState();
1414
- visibleRange.value = state.visibleRange;
1415
- isLoading.value = state.isLoading;
1416
- };
1417
- // Refresh function
1418
- const refresh = () => {
1419
- if (containerRef.value) {
1420
- updateScrollPosition(containerRef.value.scrollTop);
1447
+ if (this.sentinelElement) {
1448
+ this.sentinelElement.remove();
1449
+ this.sentinelElement = null;
1421
1450
  }
1422
- };
1423
- return {
1424
- visibleRange: computed(() => visibleRange.value),
1425
- loadedItems: computed(() => loadedItems.value),
1426
- isLoading: computed(() => isLoading.value),
1427
- containerRef,
1428
- refresh
1429
- };
1430
- };
1431
-
1432
- /******************************************************************************
1433
- Copyright (c) Microsoft Corporation.
1434
-
1435
- Permission to use, copy, modify, and/or distribute this software for any
1436
- purpose with or without fee is hereby granted.
1437
-
1438
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
1439
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1440
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
1441
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
1442
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
1443
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1444
- PERFORMANCE OF THIS SOFTWARE.
1445
- ***************************************************************************** */
1446
- /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
1447
-
1448
-
1449
- function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
1450
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
1451
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
1452
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
1453
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
1454
- var _, done = false;
1455
- for (var i = decorators.length - 1; i >= 0; i--) {
1456
- var context = {};
1457
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
1458
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
1459
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
1460
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
1461
- if (kind === "accessor") {
1462
- if (result === void 0) continue;
1463
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
1464
- if (_ = accept(result.get)) descriptor.get = _;
1465
- if (_ = accept(result.set)) descriptor.set = _;
1466
- if (_ = accept(result.init)) initializers.unshift(_);
1467
- }
1468
- else if (_ = accept(result)) {
1469
- if (kind === "field") initializers.unshift(_);
1470
- else descriptor[key] = _;
1471
- }
1472
- }
1473
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
1474
- done = true;
1475
- }
1476
- function __runInitializers(thisArg, initializers, value) {
1477
- var useValue = arguments.length > 2;
1478
- for (var i = 0; i < initializers.length; i++) {
1479
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
1480
- }
1481
- return useValue ? value : void 0;
1482
- }
1483
- function __setFunctionName(f, name, prefix) {
1484
- if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
1485
- return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
1486
- }
1487
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
1488
- var e = new Error(message);
1489
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
1490
- };
1451
+ this.container.removeEventListener('scroll', this.onScroll);
1452
+ }
1453
+ }
1491
1454
 
1492
- let LazyScrollDirective = (() => {
1493
- let _classDecorators = [Directive({
1494
- selector: '[lazyScroll]'
1495
- })];
1496
- let _classDescriptor;
1497
- let _classExtraInitializers = [];
1498
- let _classThis;
1499
- let _items_decorators;
1500
- let _items_initializers = [];
1501
- let _items_extraInitializers = [];
1502
- let _itemHeight_decorators;
1503
- let _itemHeight_initializers = [];
1504
- let _itemHeight_extraInitializers = [];
1505
- let _viewportHeight_decorators;
1506
- let _viewportHeight_initializers = [];
1507
- let _viewportHeight_extraInitializers = [];
1508
- let _bufferSize_decorators;
1509
- let _bufferSize_initializers = [];
1510
- let _bufferSize_extraInitializers = [];
1511
- let _fetchMore_decorators;
1512
- let _fetchMore_initializers = [];
1513
- let _fetchMore_extraInitializers = [];
1514
- let _visibleRangeChange_decorators;
1515
- let _visibleRangeChange_initializers = [];
1516
- let _visibleRangeChange_extraInitializers = [];
1517
- let _loadingChange_decorators;
1518
- let _loadingChange_initializers = [];
1519
- let _loadingChange_extraInitializers = [];
1520
- _classThis = class {
1521
- constructor(el) {
1522
- this.el = el;
1523
- this.items = __runInitializers(this, _items_initializers, []);
1524
- this.itemHeight = (__runInitializers(this, _items_extraInitializers), __runInitializers(this, _itemHeight_initializers, 50));
1525
- this.viewportHeight = (__runInitializers(this, _itemHeight_extraInitializers), __runInitializers(this, _viewportHeight_initializers, 400));
1526
- this.bufferSize = (__runInitializers(this, _viewportHeight_extraInitializers), __runInitializers(this, _bufferSize_initializers, 5));
1527
- this.fetchMore = (__runInitializers(this, _bufferSize_extraInitializers), __runInitializers(this, _fetchMore_initializers, void 0));
1528
- this.visibleRangeChange = (__runInitializers(this, _fetchMore_extraInitializers), __runInitializers(this, _visibleRangeChange_initializers, new EventEmitter()));
1529
- this.loadingChange = (__runInitializers(this, _visibleRangeChange_extraInitializers), __runInitializers(this, _loadingChange_initializers, new EventEmitter()));
1530
- this.engine = (__runInitializers(this, _loadingChange_extraInitializers), null);
1531
- this.scrollListener = null;
1532
- }
1533
- ngOnInit() {
1534
- const config = {
1535
- itemHeight: this.itemHeight,
1536
- viewportHeight: this.viewportHeight,
1537
- bufferSize: this.bufferSize
1538
- };
1539
- this.engine = new Engine(config);
1540
- if (this.fetchMore) {
1541
- this.engine.setFetchMoreCallback(this.fetchMore);
1542
- }
1543
- // Add scroll listener
1544
- this.scrollListener = () => {
1545
- this.onScroll();
1546
- };
1547
- this.el.nativeElement.addEventListener('scroll', this.scrollListener, { passive: true });
1548
- }
1549
- ngOnDestroy() {
1550
- if (this.scrollListener) {
1551
- this.el.nativeElement.removeEventListener('scroll', this.scrollListener);
1552
- }
1553
- if (this.engine) {
1554
- this.engine.cleanup();
1555
- this.engine = null;
1556
- }
1557
- }
1558
- onScroll() {
1559
- if (this.engine) {
1560
- const scrollTop = this.el.nativeElement.scrollTop;
1561
- this.engine.updateScrollPosition(scrollTop);
1562
- const state = this.engine.getState();
1563
- this.visibleRangeChange.emit(state.visibleRange);
1564
- this.loadingChange.emit(state.isLoading);
1455
+ const useLazyList = (config) => {
1456
+ const { fetchMore, ...engineConfig } = config;
1457
+ const engineRef = useRef(null);
1458
+ const containerRef = useRef(null);
1459
+ const [visibleRange, setVisibleRange] = useState({ start: 0, end: 0 });
1460
+ const [loadedItems, setLoadedItems] = useState([]);
1461
+ const [isLoading, setIsLoading] = useState(false);
1462
+ const [scrollAnalysis, setScrollAnalysis] = useState({
1463
+ velocity: 0,
1464
+ direction: 'stationary',
1465
+ buffer: 5,
1466
+ prefetchDistance: 400,
1467
+ predictedPosition: 0,
1468
+ isIdle: true
1469
+ });
1470
+ // Initialize engine
1471
+ useEffect(() => {
1472
+ engineRef.current = new Engine(engineConfig);
1473
+ engineRef.current.setFetchMoreCallback(fetchMore);
1474
+ return () => {
1475
+ if (engineRef.current) {
1476
+ engineRef.current.cleanup();
1565
1477
  }
1478
+ };
1479
+ }, []);
1480
+ // Update engine when config changes
1481
+ useEffect(() => {
1482
+ if (engineRef.current) {
1483
+ engineRef.current.updateDimensions(engineConfig.viewportHeight, engineConfig.itemHeight);
1566
1484
  }
1567
- // Method to refresh the scroll position
1568
- refresh() {
1569
- if (this.engine) {
1570
- const scrollTop = this.el.nativeElement.scrollTop;
1571
- this.engine.updateScrollPosition(scrollTop);
1572
- }
1485
+ }, [engineConfig.viewportHeight, engineConfig.itemHeight]);
1486
+ // Handle scroll events
1487
+ const handleScroll = useCallback((scrollTop) => {
1488
+ if (engineRef.current) {
1489
+ engineRef.current.updateScrollPosition(scrollTop);
1490
+ // Update state based on engine
1491
+ const state = engineRef.current.getState();
1492
+ setVisibleRange(state.visibleRange);
1493
+ setIsLoading(state.isLoading);
1573
1494
  }
1574
- // Method to get current visible range
1575
- getVisibleRange() {
1576
- if (this.engine) {
1577
- return this.engine.getState().visibleRange;
1495
+ }, []);
1496
+ // Set container reference
1497
+ const setContainerRef = (element) => {
1498
+ if (element) {
1499
+ containerRef.current = element;
1500
+ // Initialize scroll observer when container is available
1501
+ if (typeof window !== 'undefined' && element) {
1502
+ // In a real implementation, we would use ScrollObserver here
1503
+ // For now, we'll just attach a basic scroll listener
1504
+ const handleScrollEvent = () => {
1505
+ handleScroll(element.scrollTop);
1506
+ };
1507
+ element.addEventListener('scroll', handleScrollEvent, { passive: true });
1508
+ // Cleanup
1509
+ return () => {
1510
+ element.removeEventListener('scroll', handleScrollEvent);
1511
+ };
1578
1512
  }
1579
- return { start: 0, end: 0 };
1580
- }
1581
- };
1582
- __setFunctionName(_classThis, "LazyScrollDirective");
1583
- (() => {
1584
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
1585
- _items_decorators = [Input()];
1586
- _itemHeight_decorators = [Input()];
1587
- _viewportHeight_decorators = [Input()];
1588
- _bufferSize_decorators = [Input()];
1589
- _fetchMore_decorators = [Input()];
1590
- _visibleRangeChange_decorators = [Output()];
1591
- _loadingChange_decorators = [Output()];
1592
- __esDecorate(null, null, _items_decorators, { kind: "field", name: "items", static: false, private: false, access: { has: obj => "items" in obj, get: obj => obj.items, set: (obj, value) => { obj.items = value; } }, metadata: _metadata }, _items_initializers, _items_extraInitializers);
1593
- __esDecorate(null, null, _itemHeight_decorators, { kind: "field", name: "itemHeight", static: false, private: false, access: { has: obj => "itemHeight" in obj, get: obj => obj.itemHeight, set: (obj, value) => { obj.itemHeight = value; } }, metadata: _metadata }, _itemHeight_initializers, _itemHeight_extraInitializers);
1594
- __esDecorate(null, null, _viewportHeight_decorators, { kind: "field", name: "viewportHeight", static: false, private: false, access: { has: obj => "viewportHeight" in obj, get: obj => obj.viewportHeight, set: (obj, value) => { obj.viewportHeight = value; } }, metadata: _metadata }, _viewportHeight_initializers, _viewportHeight_extraInitializers);
1595
- __esDecorate(null, null, _bufferSize_decorators, { kind: "field", name: "bufferSize", static: false, private: false, access: { has: obj => "bufferSize" in obj, get: obj => obj.bufferSize, set: (obj, value) => { obj.bufferSize = value; } }, metadata: _metadata }, _bufferSize_initializers, _bufferSize_extraInitializers);
1596
- __esDecorate(null, null, _fetchMore_decorators, { kind: "field", name: "fetchMore", static: false, private: false, access: { has: obj => "fetchMore" in obj, get: obj => obj.fetchMore, set: (obj, value) => { obj.fetchMore = value; } }, metadata: _metadata }, _fetchMore_initializers, _fetchMore_extraInitializers);
1597
- __esDecorate(null, null, _visibleRangeChange_decorators, { kind: "field", name: "visibleRangeChange", static: false, private: false, access: { has: obj => "visibleRangeChange" in obj, get: obj => obj.visibleRangeChange, set: (obj, value) => { obj.visibleRangeChange = value; } }, metadata: _metadata }, _visibleRangeChange_initializers, _visibleRangeChange_extraInitializers);
1598
- __esDecorate(null, null, _loadingChange_decorators, { kind: "field", name: "loadingChange", static: false, private: false, access: { has: obj => "loadingChange" in obj, get: obj => obj.loadingChange, set: (obj, value) => { obj.loadingChange = value; } }, metadata: _metadata }, _loadingChange_initializers, _loadingChange_extraInitializers);
1599
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
1600
- _classThis = _classDescriptor.value;
1601
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
1602
- __runInitializers(_classThis, _classExtraInitializers);
1603
- })();
1604
- return _classThis;
1605
- })();
1606
-
1607
- let LazyScrollComponent = (() => {
1608
- let _classDecorators = [Component({
1609
- selector: 'lazy-scroll',
1610
- template: `
1611
- <div
1612
- class="lazy-scroll-container"
1613
- [style.height.px]="viewportHeight"
1614
- [style.overflow-y]="'auto'"
1615
- [lazyScroll]="true"
1616
- [items]="items"
1617
- [itemHeight]="itemHeight"
1618
- [viewportHeight]="viewportHeight"
1619
- [bufferSize]="bufferSize"
1620
- [fetchMore]="fetchMore"
1621
- (visibleRangeChange)="onVisibleRangeChange($event)"
1622
- (loadingChange)="onLoadingChange($event)"
1623
- #scrollContainer
1624
- >
1625
- <!-- Top padding -->
1626
- <div [style.height.px]="topPadding"></div>
1627
-
1628
- <!-- Visible items -->
1629
- <div
1630
- *ngFor="let item of visibleItems; let i = index; trackBy: trackByFn"
1631
- [style.height.px]="itemHeight"
1632
- class="lazy-item"
1633
- >
1634
- <ng-container
1635
- *ngTemplateOutlet="itemTemplate; context: { $implicit: item, index: visibleRange.start + i }">
1636
- </ng-container>
1637
- </div>
1638
-
1639
- <!-- Bottom padding -->
1640
- <div [style.height.px]="bottomPadding"></div>
1641
-
1642
- <!-- Loading indicator -->
1643
- <div *ngIf="isLoading" class="lazy-loading">
1644
- Loading more items...
1645
- </div>
1646
- </div>
1647
- `,
1648
- styles: [`
1649
- .lazy-scroll-container {
1650
- position: relative;
1651
- }
1652
-
1653
- .lazy-item {
1654
- width: 100%;
1655
- }
1656
-
1657
- .lazy-loading {
1658
- text-align: center;
1659
- padding: 20px;
1660
- color: #666;
1661
- }
1662
- `]
1663
- })];
1664
- let _classDescriptor;
1665
- let _classExtraInitializers = [];
1666
- let _classThis;
1667
- let _items_decorators;
1668
- let _items_initializers = [];
1669
- let _items_extraInitializers = [];
1670
- let _itemHeight_decorators;
1671
- let _itemHeight_initializers = [];
1672
- let _itemHeight_extraInitializers = [];
1673
- let _viewportHeight_decorators;
1674
- let _viewportHeight_initializers = [];
1675
- let _viewportHeight_extraInitializers = [];
1676
- let _bufferSize_decorators;
1677
- let _bufferSize_initializers = [];
1678
- let _bufferSize_extraInitializers = [];
1679
- let _fetchMore_decorators;
1680
- let _fetchMore_initializers = [];
1681
- let _fetchMore_extraInitializers = [];
1682
- let _visibleRangeChange_decorators;
1683
- let _visibleRangeChange_initializers = [];
1684
- let _visibleRangeChange_extraInitializers = [];
1685
- let _loadingChange_decorators;
1686
- let _loadingChange_initializers = [];
1687
- let _loadingChange_extraInitializers = [];
1688
- let _itemTemplate_decorators;
1689
- let _itemTemplate_initializers = [];
1690
- let _itemTemplate_extraInitializers = [];
1691
- _classThis = class {
1692
- constructor() {
1693
- this.items = __runInitializers(this, _items_initializers, []);
1694
- this.itemHeight = (__runInitializers(this, _items_extraInitializers), __runInitializers(this, _itemHeight_initializers, 50));
1695
- this.viewportHeight = (__runInitializers(this, _itemHeight_extraInitializers), __runInitializers(this, _viewportHeight_initializers, 400));
1696
- this.bufferSize = (__runInitializers(this, _viewportHeight_extraInitializers), __runInitializers(this, _bufferSize_initializers, 5));
1697
- this.fetchMore = (__runInitializers(this, _bufferSize_extraInitializers), __runInitializers(this, _fetchMore_initializers, void 0));
1698
- this.visibleRangeChange = (__runInitializers(this, _fetchMore_extraInitializers), __runInitializers(this, _visibleRangeChange_initializers, new EventEmitter()));
1699
- this.loadingChange = (__runInitializers(this, _visibleRangeChange_extraInitializers), __runInitializers(this, _loadingChange_initializers, new EventEmitter()));
1700
- this.itemTemplate = (__runInitializers(this, _loadingChange_extraInitializers), __runInitializers(this, _itemTemplate_initializers, void 0));
1701
- this.visibleRange = (__runInitializers(this, _itemTemplate_extraInitializers), { start: 0, end: 0 });
1702
- this.isLoading = false;
1703
- }
1704
- get topPadding() {
1705
- return this.visibleRange.start * this.itemHeight;
1706
- }
1707
- get bottomPadding() {
1708
- return Math.max(0, (this.items.length - this.visibleRange.end) * this.itemHeight);
1709
- }
1710
- get visibleItems() {
1711
- return this.items.slice(this.visibleRange.start, this.visibleRange.end);
1712
- }
1713
- ngAfterViewInit() {
1714
- // Component initialized
1715
- }
1716
- ngOnDestroy() {
1717
- // Cleanup if needed
1718
- }
1719
- onVisibleRangeChange(range) {
1720
- this.visibleRange = range;
1721
- this.visibleRangeChange.emit(range);
1722
- }
1723
- onLoadingChange(loading) {
1724
- this.isLoading = loading;
1725
- this.loadingChange.emit(loading);
1726
- }
1727
- trackByFn(index, item) {
1728
- return item.id || index;
1729
1513
  }
1730
1514
  };
1731
- __setFunctionName(_classThis, "LazyScrollComponent");
1732
- (() => {
1733
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
1734
- _items_decorators = [Input()];
1735
- _itemHeight_decorators = [Input()];
1736
- _viewportHeight_decorators = [Input()];
1737
- _bufferSize_decorators = [Input()];
1738
- _fetchMore_decorators = [Input()];
1739
- _visibleRangeChange_decorators = [Output()];
1740
- _loadingChange_decorators = [Output()];
1741
- _itemTemplate_decorators = [ContentChild('itemTemplate', { read: TemplateRef })];
1742
- __esDecorate(null, null, _items_decorators, { kind: "field", name: "items", static: false, private: false, access: { has: obj => "items" in obj, get: obj => obj.items, set: (obj, value) => { obj.items = value; } }, metadata: _metadata }, _items_initializers, _items_extraInitializers);
1743
- __esDecorate(null, null, _itemHeight_decorators, { kind: "field", name: "itemHeight", static: false, private: false, access: { has: obj => "itemHeight" in obj, get: obj => obj.itemHeight, set: (obj, value) => { obj.itemHeight = value; } }, metadata: _metadata }, _itemHeight_initializers, _itemHeight_extraInitializers);
1744
- __esDecorate(null, null, _viewportHeight_decorators, { kind: "field", name: "viewportHeight", static: false, private: false, access: { has: obj => "viewportHeight" in obj, get: obj => obj.viewportHeight, set: (obj, value) => { obj.viewportHeight = value; } }, metadata: _metadata }, _viewportHeight_initializers, _viewportHeight_extraInitializers);
1745
- __esDecorate(null, null, _bufferSize_decorators, { kind: "field", name: "bufferSize", static: false, private: false, access: { has: obj => "bufferSize" in obj, get: obj => obj.bufferSize, set: (obj, value) => { obj.bufferSize = value; } }, metadata: _metadata }, _bufferSize_initializers, _bufferSize_extraInitializers);
1746
- __esDecorate(null, null, _fetchMore_decorators, { kind: "field", name: "fetchMore", static: false, private: false, access: { has: obj => "fetchMore" in obj, get: obj => obj.fetchMore, set: (obj, value) => { obj.fetchMore = value; } }, metadata: _metadata }, _fetchMore_initializers, _fetchMore_extraInitializers);
1747
- __esDecorate(null, null, _visibleRangeChange_decorators, { kind: "field", name: "visibleRangeChange", static: false, private: false, access: { has: obj => "visibleRangeChange" in obj, get: obj => obj.visibleRangeChange, set: (obj, value) => { obj.visibleRangeChange = value; } }, metadata: _metadata }, _visibleRangeChange_initializers, _visibleRangeChange_extraInitializers);
1748
- __esDecorate(null, null, _loadingChange_decorators, { kind: "field", name: "loadingChange", static: false, private: false, access: { has: obj => "loadingChange" in obj, get: obj => obj.loadingChange, set: (obj, value) => { obj.loadingChange = value; } }, metadata: _metadata }, _loadingChange_initializers, _loadingChange_extraInitializers);
1749
- __esDecorate(null, null, _itemTemplate_decorators, { kind: "field", name: "itemTemplate", static: false, private: false, access: { has: obj => "itemTemplate" in obj, get: obj => obj.itemTemplate, set: (obj, value) => { obj.itemTemplate = value; } }, metadata: _metadata }, _itemTemplate_initializers, _itemTemplate_extraInitializers);
1750
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
1751
- _classThis = _classDescriptor.value;
1752
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
1753
- __runInitializers(_classThis, _classExtraInitializers);
1754
- })();
1755
- return _classThis;
1756
- })();
1757
-
1758
- function lazyScroll(node, config) {
1759
- const engine = new Engine({
1760
- itemHeight: config.itemHeight,
1761
- viewportHeight: config.viewportHeight,
1762
- bufferSize: config.bufferSize || 5
1763
- });
1764
- engine.setFetchMoreCallback(config.fetchMore);
1765
- let scrollHandler = null;
1766
- // Initialize scroll handler
1767
- scrollHandler = () => {
1768
- const scrollTop = node.scrollTop;
1769
- engine.updateScrollPosition(scrollTop);
1770
- };
1771
- // Add scroll listener
1772
- node.addEventListener('scroll', scrollHandler, { passive: true });
1773
- // Return destroy function
1774
1515
  return {
1775
- update(newConfig) {
1776
- // Update configuration if needed
1777
- if (newConfig.fetchMore !== config.fetchMore) {
1778
- engine.setFetchMoreCallback(newConfig.fetchMore);
1516
+ visibleRange,
1517
+ loadedItems,
1518
+ isLoading,
1519
+ scrollAnalysis,
1520
+ setContainerRef,
1521
+ // Helper function to trigger manual refresh
1522
+ refresh: () => {
1523
+ var _a;
1524
+ if (engineRef.current) {
1525
+ engineRef.current.updateScrollPosition(((_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.scrollTop) || 0);
1779
1526
  }
1780
- config = newConfig;
1781
1527
  },
1782
- destroy() {
1783
- // Remove scroll listener
1784
- if (scrollHandler) {
1785
- node.removeEventListener('scroll', scrollHandler);
1528
+ // Function to get current scroll analysis
1529
+ getScrollAnalysis: () => {
1530
+ if (engineRef.current) {
1531
+ // In a real implementation, we would get the analysis from the engine
1532
+ // For now, we'll return the current state
1533
+ return scrollAnalysis;
1786
1534
  }
1787
- // Cleanup engine
1788
- engine.cleanup();
1535
+ return {
1536
+ velocity: 0,
1537
+ direction: 'stationary',
1538
+ buffer: 5,
1539
+ prefetchDistance: 400,
1540
+ predictedPosition: 0,
1541
+ isIdle: true
1542
+ };
1789
1543
  }
1790
1544
  };
1791
- }
1545
+ };
1546
+
1547
+ const LazyList = forwardRef((props, ref) => {
1548
+ const { fetchMore, renderItem, items, itemHeight, viewportHeight, bufferSize, className = '', style = {}, ...rest } = props;
1549
+ const { visibleRange, setContainerRef, isLoading } = useLazyList({
1550
+ fetchMore,
1551
+ itemHeight,
1552
+ viewportHeight,
1553
+ bufferSize,
1554
+ ...rest
1555
+ });
1556
+ // Calculate container height to simulate infinite scroll
1557
+ const containerHeight = items.length * itemHeight;
1558
+ const visibleItems = items.slice(visibleRange.start, visibleRange.end);
1559
+ // Calculate top padding to maintain scroll position
1560
+ const paddingTop = visibleRange.start * itemHeight;
1561
+ return (React.createElement("div", { ref: (el) => {
1562
+ setContainerRef(el);
1563
+ if (ref) {
1564
+ if (typeof ref === 'function') {
1565
+ ref(el);
1566
+ }
1567
+ else {
1568
+ ref.current = el;
1569
+ }
1570
+ }
1571
+ }, className: `lazy-list ${className}`, style: {
1572
+ height: `${viewportHeight}px`,
1573
+ overflowY: 'auto',
1574
+ ...style
1575
+ }, ...rest },
1576
+ React.createElement("div", { style: { height: `${paddingTop}px` } }),
1577
+ visibleItems.map((item, index) => (React.createElement("div", { key: visibleRange.start + index, style: { height: `${itemHeight}px` }, className: "lazy-item" }, renderItem(item, visibleRange.start + index)))),
1578
+ React.createElement("div", { style: {
1579
+ height: `${Math.max(0, containerHeight - (visibleRange.end * itemHeight))}px`
1580
+ } }),
1581
+ isLoading && (React.createElement("div", { className: "lazy-loading" }, "Loading more items..."))));
1582
+ });
1583
+ LazyList.displayName = 'LazyList';
1792
1584
 
1793
1585
  class LazyScroll {
1794
1586
  constructor(container, config) {
@@ -2070,204 +1862,6 @@ class LazyScrollElement extends HTMLElement {
2070
1862
  // Register the custom element
2071
1863
  customElements.define('lazy-scroll-element', LazyScrollElement);
2072
1864
 
2073
- class ScrollObserver {
2074
- constructor(container, callback, options) {
2075
- this.observer = null;
2076
- this.sentinelElement = null;
2077
- /**
2078
- * Handle scroll events
2079
- */
2080
- this.onScroll = () => {
2081
- // Debounced scroll handler to prevent too frequent updates
2082
- this.debounce(() => {
2083
- this.callback(this.container.scrollTop);
2084
- }, 16); // ~60fps
2085
- };
2086
- this.container = container;
2087
- this.callback = callback;
2088
- this.options = {
2089
- root: container,
2090
- threshold: [0, 1],
2091
- ...options
2092
- };
2093
- }
2094
- /**
2095
- * Start observing scroll events
2096
- */
2097
- observe() {
2098
- // Create a sentinel element at the bottom to detect when user scrolls near the end
2099
- this.sentinelElement = document.createElement('div');
2100
- this.sentinelElement.style.height = '1px'; // Very small element
2101
- this.sentinelElement.setAttribute('data-lazy-sentinel', '');
2102
- // Add sentinel to the container
2103
- this.container.appendChild(this.sentinelElement);
2104
- // Create intersection observer to detect when sentinel comes into view
2105
- this.observer = new IntersectionObserver((entries) => {
2106
- entries.forEach(entry => {
2107
- if (entry.isIntersecting) {
2108
- // Trigger callback with current scroll position
2109
- this.callback(this.container.scrollTop);
2110
- }
2111
- });
2112
- }, this.options);
2113
- this.observer.observe(this.sentinelElement);
2114
- // Also listen to scroll events for continuous updates
2115
- this.container.addEventListener('scroll', this.onScroll, { passive: true });
2116
- }
2117
- /**
2118
- * Debounce function for scroll events
2119
- */
2120
- debounce(func, wait) {
2121
- let timeout;
2122
- clearTimeout(timeout);
2123
- timeout = setTimeout(func, wait);
2124
- }
2125
- /**
2126
- * Disconnect observer and clean up
2127
- */
2128
- disconnect() {
2129
- if (this.observer) {
2130
- this.observer.disconnect();
2131
- this.observer = null;
2132
- }
2133
- if (this.sentinelElement) {
2134
- this.sentinelElement.remove();
2135
- this.sentinelElement = null;
2136
- }
2137
- this.container.removeEventListener('scroll', this.onScroll);
2138
- }
2139
- }
2140
-
2141
- const useLazyList = (config) => {
2142
- const { fetchMore, ...engineConfig } = config;
2143
- const engineRef = useRef(null);
2144
- const containerRef = useRef(null);
2145
- const [visibleRange, setVisibleRange] = useState({ start: 0, end: 0 });
2146
- const [loadedItems, setLoadedItems] = useState([]);
2147
- const [isLoading, setIsLoading] = useState(false);
2148
- const [scrollAnalysis, setScrollAnalysis] = useState({
2149
- velocity: 0,
2150
- direction: 'stationary',
2151
- buffer: 5,
2152
- prefetchDistance: 400,
2153
- predictedPosition: 0,
2154
- isIdle: true
2155
- });
2156
- // Initialize engine
2157
- useEffect(() => {
2158
- engineRef.current = new Engine(engineConfig);
2159
- engineRef.current.setFetchMoreCallback(fetchMore);
2160
- return () => {
2161
- if (engineRef.current) {
2162
- engineRef.current.cleanup();
2163
- }
2164
- };
2165
- }, []);
2166
- // Update engine when config changes
2167
- useEffect(() => {
2168
- if (engineRef.current) {
2169
- engineRef.current.updateDimensions(engineConfig.viewportHeight, engineConfig.itemHeight);
2170
- }
2171
- }, [engineConfig.viewportHeight, engineConfig.itemHeight]);
2172
- // Handle scroll events
2173
- const handleScroll = useCallback((scrollTop) => {
2174
- if (engineRef.current) {
2175
- engineRef.current.updateScrollPosition(scrollTop);
2176
- // Update state based on engine
2177
- const state = engineRef.current.getState();
2178
- setVisibleRange(state.visibleRange);
2179
- setIsLoading(state.isLoading);
2180
- }
2181
- }, []);
2182
- // Set container reference
2183
- const setContainerRef = (element) => {
2184
- if (element) {
2185
- containerRef.current = element;
2186
- // Initialize scroll observer when container is available
2187
- if (typeof window !== 'undefined' && element) {
2188
- // In a real implementation, we would use ScrollObserver here
2189
- // For now, we'll just attach a basic scroll listener
2190
- const handleScrollEvent = () => {
2191
- handleScroll(element.scrollTop);
2192
- };
2193
- element.addEventListener('scroll', handleScrollEvent, { passive: true });
2194
- // Cleanup
2195
- return () => {
2196
- element.removeEventListener('scroll', handleScrollEvent);
2197
- };
2198
- }
2199
- }
2200
- };
2201
- return {
2202
- visibleRange,
2203
- loadedItems,
2204
- isLoading,
2205
- scrollAnalysis,
2206
- setContainerRef,
2207
- // Helper function to trigger manual refresh
2208
- refresh: () => {
2209
- var _a;
2210
- if (engineRef.current) {
2211
- engineRef.current.updateScrollPosition(((_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.scrollTop) || 0);
2212
- }
2213
- },
2214
- // Function to get current scroll analysis
2215
- getScrollAnalysis: () => {
2216
- if (engineRef.current) {
2217
- // In a real implementation, we would get the analysis from the engine
2218
- // For now, we'll return the current state
2219
- return scrollAnalysis;
2220
- }
2221
- return {
2222
- velocity: 0,
2223
- direction: 'stationary',
2224
- buffer: 5,
2225
- prefetchDistance: 400,
2226
- predictedPosition: 0,
2227
- isIdle: true
2228
- };
2229
- }
2230
- };
2231
- };
2232
-
2233
- const LazyList = forwardRef((props, ref) => {
2234
- const { fetchMore, renderItem, items, itemHeight, viewportHeight, bufferSize, className = '', style = {}, ...rest } = props;
2235
- const { visibleRange, setContainerRef, isLoading } = useLazyList({
2236
- fetchMore,
2237
- itemHeight,
2238
- viewportHeight,
2239
- bufferSize,
2240
- ...rest
2241
- });
2242
- // Calculate container height to simulate infinite scroll
2243
- const containerHeight = items.length * itemHeight;
2244
- const visibleItems = items.slice(visibleRange.start, visibleRange.end);
2245
- // Calculate top padding to maintain scroll position
2246
- const paddingTop = visibleRange.start * itemHeight;
2247
- return (React.createElement("div", { ref: (el) => {
2248
- setContainerRef(el);
2249
- if (ref) {
2250
- if (typeof ref === 'function') {
2251
- ref(el);
2252
- }
2253
- else {
2254
- ref.current = el;
2255
- }
2256
- }
2257
- }, className: `lazy-list ${className}`, style: {
2258
- height: `${viewportHeight}px`,
2259
- overflowY: 'auto',
2260
- ...style
2261
- }, ...rest },
2262
- React.createElement("div", { style: { height: `${paddingTop}px` } }),
2263
- visibleItems.map((item, index) => (React.createElement("div", { key: visibleRange.start + index, style: { height: `${itemHeight}px` }, className: "lazy-item" }, renderItem(item, visibleRange.start + index)))),
2264
- React.createElement("div", { style: {
2265
- height: `${Math.max(0, containerHeight - (visibleRange.end * itemHeight))}px`
2266
- } }),
2267
- isLoading && (React.createElement("div", { className: "lazy-loading" }, "Loading more items..."))));
2268
- });
2269
- LazyList.displayName = 'LazyList';
2270
-
2271
1865
  /**
2272
1866
  * Debounce function to limit the rate at which a function is called
2273
1867
  */
@@ -2299,5 +1893,5 @@ function throttle(func, limit) {
2299
1893
  };
2300
1894
  }
2301
1895
 
2302
- export { AdaptiveBufferCalculator, ContentComplexityAnalyzer, DevicePerformanceMonitor, Engine, GPUAccelerator, IntelligentScrollDetector, LazyList, LazyScroll, LazyScrollComponent, LazyScrollDirective, LazyScrollElement, MemoryManager, NetworkAwarePrefetchManager, NetworkAwareRequestQueue, NetworkSpeedDetector, PerformanceOptimizer, PrefetchManager, RequestQueue, ScrollObserver, WindowManager, createLazyScroll, debounce, lazyScroll, throttle, useLazyList, useLazyScroll };
1896
+ export { AdaptiveBufferCalculator, ContentComplexityAnalyzer, DevicePerformanceMonitor, Engine, GPUAccelerator, IntelligentScrollDetector, LazyList, LazyScroll, LazyScrollElement, MemoryManager, NetworkAwarePrefetchManager, NetworkAwareRequestQueue, NetworkSpeedDetector, PerformanceOptimizer, PrefetchManager, RequestQueue, ScrollObserver, WindowManager, createLazyScroll, debounce, throttle, useLazyList };
2303
1897
  //# sourceMappingURL=index.js.map