lazy-render-virtual-scroll 1.0.8 → 1.1.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.
Files changed (564) hide show
  1. package/dist/adapters/react/LazyList.d.ts +22 -0
  2. package/dist/adapters/react/useLazyList.d.ts +43 -0
  3. package/dist/angular/index.d.ts +57 -0
  4. package/dist/cjs/adapters/react/LazyList.js +1520 -0
  5. package/dist/cjs/adapters/react/LazyList.js.map +1 -0
  6. package/dist/cjs/adapters/react/adapters/angular/lazy-scroll.component.d.ts +28 -0
  7. package/dist/cjs/adapters/react/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  8. package/dist/cjs/adapters/react/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  9. package/dist/cjs/adapters/react/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  10. package/dist/cjs/adapters/react/adapters/index.d.ts +7 -0
  11. package/dist/cjs/adapters/react/adapters/index.d.ts.map +1 -0
  12. package/dist/cjs/adapters/react/adapters/react/LazyList.d.ts +12 -0
  13. package/dist/cjs/adapters/react/adapters/react/LazyList.d.ts.map +1 -0
  14. package/dist/cjs/adapters/react/adapters/react/useLazyList.d.ts +22 -0
  15. package/dist/cjs/adapters/react/adapters/react/useLazyList.d.ts.map +1 -0
  16. package/dist/cjs/adapters/react/adapters/svelte/lazyScrollAction.d.ts +13 -0
  17. package/dist/cjs/adapters/react/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  18. package/dist/cjs/adapters/react/adapters/vue/useLazyScroll.d.ts +13 -0
  19. package/dist/cjs/adapters/react/adapters/vue/useLazyScroll.d.ts.map +1 -0
  20. package/dist/cjs/adapters/react/core/AdaptiveBufferCalculator.d.ts +46 -0
  21. package/dist/cjs/adapters/react/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  22. package/dist/cjs/adapters/react/core/ContentComplexityAnalyzer.d.ts +13 -0
  23. package/dist/cjs/adapters/react/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  24. package/dist/cjs/adapters/react/core/DevicePerformanceMonitor.d.ts +22 -0
  25. package/dist/cjs/adapters/react/core/DevicePerformanceMonitor.d.ts.map +1 -0
  26. package/dist/cjs/adapters/react/core/Engine.d.ts +56 -0
  27. package/dist/cjs/adapters/react/core/Engine.d.ts.map +1 -0
  28. package/dist/cjs/adapters/react/core/GPUAccelerator.d.ts +23 -0
  29. package/dist/cjs/adapters/react/core/GPUAccelerator.d.ts.map +1 -0
  30. package/dist/cjs/adapters/react/core/IntelligentScrollDetector.d.ts +19 -0
  31. package/dist/cjs/adapters/react/core/IntelligentScrollDetector.d.ts.map +1 -0
  32. package/dist/cjs/adapters/react/core/MemoryManager.d.ts +33 -0
  33. package/dist/cjs/adapters/react/core/MemoryManager.d.ts.map +1 -0
  34. package/dist/cjs/adapters/react/core/NetworkAwarePrefetchManager.d.ts +10 -0
  35. package/dist/cjs/adapters/react/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  36. package/dist/cjs/adapters/react/core/NetworkAwareRequestQueue.d.ts +20 -0
  37. package/dist/cjs/adapters/react/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  38. package/dist/cjs/adapters/react/core/NetworkSpeedDetector.d.ts +16 -0
  39. package/dist/cjs/adapters/react/core/NetworkSpeedDetector.d.ts.map +1 -0
  40. package/dist/cjs/adapters/react/core/PerformanceOptimizer.d.ts +39 -0
  41. package/dist/cjs/adapters/react/core/PerformanceOptimizer.d.ts.map +1 -0
  42. package/dist/cjs/adapters/react/core/PrefetchManager.d.ts +16 -0
  43. package/dist/cjs/adapters/react/core/PrefetchManager.d.ts.map +1 -0
  44. package/dist/cjs/adapters/react/core/RequestQueue.d.ts +23 -0
  45. package/dist/cjs/adapters/react/core/RequestQueue.d.ts.map +1 -0
  46. package/dist/cjs/adapters/react/core/WindowManager.d.ts +24 -0
  47. package/dist/cjs/adapters/react/core/WindowManager.d.ts.map +1 -0
  48. package/dist/cjs/adapters/react/core/types.d.ts +28 -0
  49. package/dist/cjs/adapters/react/core/types.d.ts.map +1 -0
  50. package/dist/cjs/adapters/react/index.d.ts +23 -0
  51. package/dist/cjs/adapters/react/index.d.ts.map +1 -0
  52. package/dist/cjs/adapters/react/platform/browser/ScrollObserver.d.ts +25 -0
  53. package/dist/cjs/adapters/react/platform/browser/ScrollObserver.d.ts.map +1 -0
  54. package/dist/cjs/adapters/react/useLazyList.js +1482 -0
  55. package/dist/cjs/adapters/react/useLazyList.js.map +1 -0
  56. package/dist/cjs/adapters/react/utils/debounce.d.ts +5 -0
  57. package/dist/cjs/adapters/react/utils/debounce.d.ts.map +1 -0
  58. package/dist/cjs/adapters/react/utils/throttle.d.ts +5 -0
  59. package/dist/cjs/adapters/react/utils/throttle.d.ts.map +1 -0
  60. package/dist/cjs/angular/adapters/angular/lazy-scroll.component.d.ts +28 -0
  61. package/dist/cjs/angular/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  62. package/dist/cjs/angular/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  63. package/dist/cjs/angular/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  64. package/dist/cjs/angular/adapters/index.d.ts +7 -0
  65. package/dist/cjs/angular/adapters/index.d.ts.map +1 -0
  66. package/dist/cjs/angular/adapters/react/LazyList.d.ts +12 -0
  67. package/dist/cjs/angular/adapters/react/LazyList.d.ts.map +1 -0
  68. package/dist/cjs/angular/adapters/react/useLazyList.d.ts +22 -0
  69. package/dist/cjs/angular/adapters/react/useLazyList.d.ts.map +1 -0
  70. package/dist/cjs/angular/adapters/svelte/lazyScrollAction.d.ts +13 -0
  71. package/dist/cjs/angular/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  72. package/dist/cjs/angular/adapters/vue/useLazyScroll.d.ts +13 -0
  73. package/dist/cjs/angular/adapters/vue/useLazyScroll.d.ts.map +1 -0
  74. package/dist/cjs/angular/core/AdaptiveBufferCalculator.d.ts +46 -0
  75. package/dist/cjs/angular/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  76. package/dist/cjs/angular/core/ContentComplexityAnalyzer.d.ts +13 -0
  77. package/dist/cjs/angular/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  78. package/dist/cjs/angular/core/DevicePerformanceMonitor.d.ts +22 -0
  79. package/dist/cjs/angular/core/DevicePerformanceMonitor.d.ts.map +1 -0
  80. package/dist/cjs/angular/core/Engine.d.ts +56 -0
  81. package/dist/cjs/angular/core/Engine.d.ts.map +1 -0
  82. package/dist/cjs/angular/core/GPUAccelerator.d.ts +23 -0
  83. package/dist/cjs/angular/core/GPUAccelerator.d.ts.map +1 -0
  84. package/dist/cjs/angular/core/IntelligentScrollDetector.d.ts +19 -0
  85. package/dist/cjs/angular/core/IntelligentScrollDetector.d.ts.map +1 -0
  86. package/dist/cjs/angular/core/MemoryManager.d.ts +33 -0
  87. package/dist/cjs/angular/core/MemoryManager.d.ts.map +1 -0
  88. package/dist/cjs/angular/core/NetworkAwarePrefetchManager.d.ts +10 -0
  89. package/dist/cjs/angular/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  90. package/dist/cjs/angular/core/NetworkAwareRequestQueue.d.ts +20 -0
  91. package/dist/cjs/angular/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  92. package/dist/cjs/angular/core/NetworkSpeedDetector.d.ts +16 -0
  93. package/dist/cjs/angular/core/NetworkSpeedDetector.d.ts.map +1 -0
  94. package/dist/cjs/angular/core/PerformanceOptimizer.d.ts +39 -0
  95. package/dist/cjs/angular/core/PerformanceOptimizer.d.ts.map +1 -0
  96. package/dist/cjs/angular/core/PrefetchManager.d.ts +16 -0
  97. package/dist/cjs/angular/core/PrefetchManager.d.ts.map +1 -0
  98. package/dist/cjs/angular/core/RequestQueue.d.ts +23 -0
  99. package/dist/cjs/angular/core/RequestQueue.d.ts.map +1 -0
  100. package/dist/cjs/angular/core/WindowManager.d.ts +24 -0
  101. package/dist/cjs/angular/core/WindowManager.d.ts.map +1 -0
  102. package/dist/cjs/angular/core/types.d.ts +28 -0
  103. package/dist/cjs/angular/core/types.d.ts.map +1 -0
  104. package/dist/cjs/angular/index.d.ts +23 -0
  105. package/dist/cjs/angular/index.d.ts.map +1 -0
  106. package/dist/cjs/angular/index.js +1717 -0
  107. package/dist/cjs/angular/index.js.map +1 -0
  108. package/dist/cjs/angular/platform/browser/ScrollObserver.d.ts +25 -0
  109. package/dist/cjs/angular/platform/browser/ScrollObserver.d.ts.map +1 -0
  110. package/dist/cjs/angular/utils/debounce.d.ts +5 -0
  111. package/dist/cjs/angular/utils/debounce.d.ts.map +1 -0
  112. package/dist/cjs/angular/utils/throttle.d.ts +5 -0
  113. package/dist/cjs/angular/utils/throttle.d.ts.map +1 -0
  114. package/dist/cjs/core/GPUAccelerator.d.ts.map +1 -1
  115. package/dist/cjs/core/PerformanceOptimizer.d.ts.map +1 -1
  116. package/dist/cjs/index.d.ts +2 -6
  117. package/dist/cjs/index.d.ts.map +1 -1
  118. package/dist/cjs/index.js +193 -603
  119. package/dist/cjs/index.js.map +1 -1
  120. package/dist/cjs/svelte/adapters/angular/lazy-scroll.component.d.ts +28 -0
  121. package/dist/cjs/svelte/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  122. package/dist/cjs/svelte/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  123. package/dist/cjs/svelte/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  124. package/dist/cjs/svelte/adapters/index.d.ts +7 -0
  125. package/dist/cjs/svelte/adapters/index.d.ts.map +1 -0
  126. package/dist/cjs/svelte/adapters/react/LazyList.d.ts +12 -0
  127. package/dist/cjs/svelte/adapters/react/LazyList.d.ts.map +1 -0
  128. package/dist/cjs/svelte/adapters/react/useLazyList.d.ts +22 -0
  129. package/dist/cjs/svelte/adapters/react/useLazyList.d.ts.map +1 -0
  130. package/dist/cjs/svelte/adapters/svelte/lazyScrollAction.d.ts +13 -0
  131. package/dist/cjs/svelte/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  132. package/dist/cjs/svelte/adapters/vue/useLazyScroll.d.ts +13 -0
  133. package/dist/cjs/svelte/adapters/vue/useLazyScroll.d.ts.map +1 -0
  134. package/dist/cjs/svelte/core/AdaptiveBufferCalculator.d.ts +46 -0
  135. package/dist/cjs/svelte/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  136. package/dist/cjs/svelte/core/ContentComplexityAnalyzer.d.ts +13 -0
  137. package/dist/cjs/svelte/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  138. package/dist/cjs/svelte/core/DevicePerformanceMonitor.d.ts +22 -0
  139. package/dist/cjs/svelte/core/DevicePerformanceMonitor.d.ts.map +1 -0
  140. package/dist/cjs/svelte/core/Engine.d.ts +56 -0
  141. package/dist/cjs/svelte/core/Engine.d.ts.map +1 -0
  142. package/dist/cjs/svelte/core/GPUAccelerator.d.ts +23 -0
  143. package/dist/cjs/svelte/core/GPUAccelerator.d.ts.map +1 -0
  144. package/dist/cjs/svelte/core/IntelligentScrollDetector.d.ts +19 -0
  145. package/dist/cjs/svelte/core/IntelligentScrollDetector.d.ts.map +1 -0
  146. package/dist/cjs/svelte/core/MemoryManager.d.ts +33 -0
  147. package/dist/cjs/svelte/core/MemoryManager.d.ts.map +1 -0
  148. package/dist/cjs/svelte/core/NetworkAwarePrefetchManager.d.ts +10 -0
  149. package/dist/cjs/svelte/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  150. package/dist/cjs/svelte/core/NetworkAwareRequestQueue.d.ts +20 -0
  151. package/dist/cjs/svelte/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  152. package/dist/cjs/svelte/core/NetworkSpeedDetector.d.ts +16 -0
  153. package/dist/cjs/svelte/core/NetworkSpeedDetector.d.ts.map +1 -0
  154. package/dist/cjs/svelte/core/PerformanceOptimizer.d.ts +39 -0
  155. package/dist/cjs/svelte/core/PerformanceOptimizer.d.ts.map +1 -0
  156. package/dist/cjs/svelte/core/PrefetchManager.d.ts +16 -0
  157. package/dist/cjs/svelte/core/PrefetchManager.d.ts.map +1 -0
  158. package/dist/cjs/svelte/core/RequestQueue.d.ts +23 -0
  159. package/dist/cjs/svelte/core/RequestQueue.d.ts.map +1 -0
  160. package/dist/cjs/svelte/core/WindowManager.d.ts +24 -0
  161. package/dist/cjs/svelte/core/WindowManager.d.ts.map +1 -0
  162. package/dist/cjs/svelte/core/types.d.ts +28 -0
  163. package/dist/cjs/svelte/core/types.d.ts.map +1 -0
  164. package/dist/cjs/svelte/index.d.ts +23 -0
  165. package/dist/cjs/svelte/index.d.ts.map +1 -0
  166. package/dist/cjs/svelte/index.js +1423 -0
  167. package/dist/cjs/svelte/index.js.map +1 -0
  168. package/dist/cjs/svelte/platform/browser/ScrollObserver.d.ts +25 -0
  169. package/dist/cjs/svelte/platform/browser/ScrollObserver.d.ts.map +1 -0
  170. package/dist/cjs/svelte/utils/debounce.d.ts +5 -0
  171. package/dist/cjs/svelte/utils/debounce.d.ts.map +1 -0
  172. package/dist/cjs/svelte/utils/throttle.d.ts +5 -0
  173. package/dist/cjs/svelte/utils/throttle.d.ts.map +1 -0
  174. package/dist/cjs/vanilla/adapters/angular/lazy-scroll.component.d.ts +28 -0
  175. package/dist/cjs/vanilla/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  176. package/dist/cjs/vanilla/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  177. package/dist/cjs/vanilla/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  178. package/dist/cjs/vanilla/adapters/index.d.ts +7 -0
  179. package/dist/cjs/vanilla/adapters/index.d.ts.map +1 -0
  180. package/dist/cjs/vanilla/adapters/react/LazyList.d.ts +12 -0
  181. package/dist/cjs/vanilla/adapters/react/LazyList.d.ts.map +1 -0
  182. package/dist/cjs/vanilla/adapters/react/useLazyList.d.ts +22 -0
  183. package/dist/cjs/vanilla/adapters/react/useLazyList.d.ts.map +1 -0
  184. package/dist/cjs/vanilla/adapters/svelte/lazyScrollAction.d.ts +13 -0
  185. package/dist/cjs/vanilla/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  186. package/dist/cjs/vanilla/adapters/vue/useLazyScroll.d.ts +13 -0
  187. package/dist/cjs/vanilla/adapters/vue/useLazyScroll.d.ts.map +1 -0
  188. package/dist/cjs/vanilla/core/AdaptiveBufferCalculator.d.ts +46 -0
  189. package/dist/cjs/vanilla/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  190. package/dist/cjs/vanilla/core/ContentComplexityAnalyzer.d.ts +13 -0
  191. package/dist/cjs/vanilla/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  192. package/dist/cjs/vanilla/core/DevicePerformanceMonitor.d.ts +22 -0
  193. package/dist/cjs/vanilla/core/DevicePerformanceMonitor.d.ts.map +1 -0
  194. package/dist/cjs/vanilla/core/Engine.d.ts +56 -0
  195. package/dist/cjs/vanilla/core/Engine.d.ts.map +1 -0
  196. package/dist/cjs/vanilla/core/GPUAccelerator.d.ts +23 -0
  197. package/dist/cjs/vanilla/core/GPUAccelerator.d.ts.map +1 -0
  198. package/dist/cjs/vanilla/core/IntelligentScrollDetector.d.ts +19 -0
  199. package/dist/cjs/vanilla/core/IntelligentScrollDetector.d.ts.map +1 -0
  200. package/dist/cjs/vanilla/core/MemoryManager.d.ts +33 -0
  201. package/dist/cjs/vanilla/core/MemoryManager.d.ts.map +1 -0
  202. package/dist/cjs/vanilla/core/NetworkAwarePrefetchManager.d.ts +10 -0
  203. package/dist/cjs/vanilla/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  204. package/dist/cjs/vanilla/core/NetworkAwareRequestQueue.d.ts +20 -0
  205. package/dist/cjs/vanilla/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  206. package/dist/cjs/vanilla/core/NetworkSpeedDetector.d.ts +16 -0
  207. package/dist/cjs/vanilla/core/NetworkSpeedDetector.d.ts.map +1 -0
  208. package/dist/cjs/vanilla/core/PerformanceOptimizer.d.ts +39 -0
  209. package/dist/cjs/vanilla/core/PerformanceOptimizer.d.ts.map +1 -0
  210. package/dist/cjs/vanilla/core/PrefetchManager.d.ts +16 -0
  211. package/dist/cjs/vanilla/core/PrefetchManager.d.ts.map +1 -0
  212. package/dist/cjs/vanilla/core/RequestQueue.d.ts +23 -0
  213. package/dist/cjs/vanilla/core/RequestQueue.d.ts.map +1 -0
  214. package/dist/cjs/vanilla/core/WindowManager.d.ts +24 -0
  215. package/dist/cjs/vanilla/core/WindowManager.d.ts.map +1 -0
  216. package/dist/cjs/vanilla/core/types.d.ts +28 -0
  217. package/dist/cjs/vanilla/core/types.d.ts.map +1 -0
  218. package/dist/cjs/vanilla/index.d.ts +23 -0
  219. package/dist/cjs/vanilla/index.d.ts.map +1 -0
  220. package/dist/cjs/vanilla/index.js +1670 -0
  221. package/dist/cjs/vanilla/index.js.map +1 -0
  222. package/dist/cjs/vanilla/platform/browser/ScrollObserver.d.ts +25 -0
  223. package/dist/cjs/vanilla/platform/browser/ScrollObserver.d.ts.map +1 -0
  224. package/dist/cjs/vanilla/utils/debounce.d.ts +5 -0
  225. package/dist/cjs/vanilla/utils/debounce.d.ts.map +1 -0
  226. package/dist/cjs/vanilla/utils/throttle.d.ts +5 -0
  227. package/dist/cjs/vanilla/utils/throttle.d.ts.map +1 -0
  228. package/dist/cjs/vue/adapters/angular/lazy-scroll.component.d.ts +28 -0
  229. package/dist/cjs/vue/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  230. package/dist/cjs/vue/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  231. package/dist/cjs/vue/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  232. package/dist/cjs/vue/adapters/index.d.ts +7 -0
  233. package/dist/cjs/vue/adapters/index.d.ts.map +1 -0
  234. package/dist/cjs/vue/adapters/react/LazyList.d.ts +12 -0
  235. package/dist/cjs/vue/adapters/react/LazyList.d.ts.map +1 -0
  236. package/dist/cjs/vue/adapters/react/useLazyList.d.ts +22 -0
  237. package/dist/cjs/vue/adapters/react/useLazyList.d.ts.map +1 -0
  238. package/dist/cjs/vue/adapters/svelte/lazyScrollAction.d.ts +13 -0
  239. package/dist/cjs/vue/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  240. package/dist/cjs/vue/adapters/vue/useLazyScroll.d.ts +13 -0
  241. package/dist/cjs/vue/adapters/vue/useLazyScroll.d.ts.map +1 -0
  242. package/dist/cjs/vue/core/AdaptiveBufferCalculator.d.ts +46 -0
  243. package/dist/cjs/vue/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  244. package/dist/cjs/vue/core/ContentComplexityAnalyzer.d.ts +13 -0
  245. package/dist/cjs/vue/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  246. package/dist/cjs/vue/core/DevicePerformanceMonitor.d.ts +22 -0
  247. package/dist/cjs/vue/core/DevicePerformanceMonitor.d.ts.map +1 -0
  248. package/dist/cjs/vue/core/Engine.d.ts +56 -0
  249. package/dist/cjs/vue/core/Engine.d.ts.map +1 -0
  250. package/dist/cjs/vue/core/GPUAccelerator.d.ts +23 -0
  251. package/dist/cjs/vue/core/GPUAccelerator.d.ts.map +1 -0
  252. package/dist/cjs/vue/core/IntelligentScrollDetector.d.ts +19 -0
  253. package/dist/cjs/vue/core/IntelligentScrollDetector.d.ts.map +1 -0
  254. package/dist/cjs/vue/core/MemoryManager.d.ts +33 -0
  255. package/dist/cjs/vue/core/MemoryManager.d.ts.map +1 -0
  256. package/dist/cjs/vue/core/NetworkAwarePrefetchManager.d.ts +10 -0
  257. package/dist/cjs/vue/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  258. package/dist/cjs/vue/core/NetworkAwareRequestQueue.d.ts +20 -0
  259. package/dist/cjs/vue/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  260. package/dist/cjs/vue/core/NetworkSpeedDetector.d.ts +16 -0
  261. package/dist/cjs/vue/core/NetworkSpeedDetector.d.ts.map +1 -0
  262. package/dist/cjs/vue/core/PerformanceOptimizer.d.ts +39 -0
  263. package/dist/cjs/vue/core/PerformanceOptimizer.d.ts.map +1 -0
  264. package/dist/cjs/vue/core/PrefetchManager.d.ts +16 -0
  265. package/dist/cjs/vue/core/PrefetchManager.d.ts.map +1 -0
  266. package/dist/cjs/vue/core/RequestQueue.d.ts +23 -0
  267. package/dist/cjs/vue/core/RequestQueue.d.ts.map +1 -0
  268. package/dist/cjs/vue/core/WindowManager.d.ts +24 -0
  269. package/dist/cjs/vue/core/WindowManager.d.ts.map +1 -0
  270. package/dist/cjs/vue/core/types.d.ts +28 -0
  271. package/dist/cjs/vue/core/types.d.ts.map +1 -0
  272. package/dist/cjs/vue/index.d.ts +23 -0
  273. package/dist/cjs/vue/index.d.ts.map +1 -0
  274. package/dist/cjs/vue/index.js +1443 -0
  275. package/dist/cjs/vue/index.js.map +1 -0
  276. package/dist/cjs/vue/platform/browser/ScrollObserver.d.ts +25 -0
  277. package/dist/cjs/vue/platform/browser/ScrollObserver.d.ts.map +1 -0
  278. package/dist/cjs/vue/utils/debounce.d.ts +5 -0
  279. package/dist/cjs/vue/utils/debounce.d.ts.map +1 -0
  280. package/dist/cjs/vue/utils/throttle.d.ts +5 -0
  281. package/dist/cjs/vue/utils/throttle.d.ts.map +1 -0
  282. package/dist/esm/adapters/react/LazyList.js +1518 -0
  283. package/dist/esm/adapters/react/LazyList.js.map +1 -0
  284. package/dist/esm/adapters/react/adapters/angular/lazy-scroll.component.d.ts +28 -0
  285. package/dist/esm/adapters/react/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  286. package/dist/esm/adapters/react/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  287. package/dist/esm/adapters/react/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  288. package/dist/esm/adapters/react/adapters/index.d.ts +7 -0
  289. package/dist/esm/adapters/react/adapters/index.d.ts.map +1 -0
  290. package/dist/esm/adapters/react/adapters/react/LazyList.d.ts +12 -0
  291. package/dist/esm/adapters/react/adapters/react/LazyList.d.ts.map +1 -0
  292. package/dist/esm/adapters/react/adapters/react/useLazyList.d.ts +22 -0
  293. package/dist/esm/adapters/react/adapters/react/useLazyList.d.ts.map +1 -0
  294. package/dist/esm/adapters/react/adapters/svelte/lazyScrollAction.d.ts +13 -0
  295. package/dist/esm/adapters/react/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  296. package/dist/esm/adapters/react/adapters/vue/useLazyScroll.d.ts +13 -0
  297. package/dist/esm/adapters/react/adapters/vue/useLazyScroll.d.ts.map +1 -0
  298. package/dist/esm/adapters/react/core/AdaptiveBufferCalculator.d.ts +46 -0
  299. package/dist/esm/adapters/react/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  300. package/dist/esm/adapters/react/core/ContentComplexityAnalyzer.d.ts +13 -0
  301. package/dist/esm/adapters/react/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  302. package/dist/esm/adapters/react/core/DevicePerformanceMonitor.d.ts +22 -0
  303. package/dist/esm/adapters/react/core/DevicePerformanceMonitor.d.ts.map +1 -0
  304. package/dist/esm/adapters/react/core/Engine.d.ts +56 -0
  305. package/dist/esm/adapters/react/core/Engine.d.ts.map +1 -0
  306. package/dist/esm/adapters/react/core/GPUAccelerator.d.ts +23 -0
  307. package/dist/esm/adapters/react/core/GPUAccelerator.d.ts.map +1 -0
  308. package/dist/esm/adapters/react/core/IntelligentScrollDetector.d.ts +19 -0
  309. package/dist/esm/adapters/react/core/IntelligentScrollDetector.d.ts.map +1 -0
  310. package/dist/esm/adapters/react/core/MemoryManager.d.ts +33 -0
  311. package/dist/esm/adapters/react/core/MemoryManager.d.ts.map +1 -0
  312. package/dist/esm/adapters/react/core/NetworkAwarePrefetchManager.d.ts +10 -0
  313. package/dist/esm/adapters/react/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  314. package/dist/esm/adapters/react/core/NetworkAwareRequestQueue.d.ts +20 -0
  315. package/dist/esm/adapters/react/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  316. package/dist/esm/adapters/react/core/NetworkSpeedDetector.d.ts +16 -0
  317. package/dist/esm/adapters/react/core/NetworkSpeedDetector.d.ts.map +1 -0
  318. package/dist/esm/adapters/react/core/PerformanceOptimizer.d.ts +39 -0
  319. package/dist/esm/adapters/react/core/PerformanceOptimizer.d.ts.map +1 -0
  320. package/dist/esm/adapters/react/core/PrefetchManager.d.ts +16 -0
  321. package/dist/esm/adapters/react/core/PrefetchManager.d.ts.map +1 -0
  322. package/dist/esm/adapters/react/core/RequestQueue.d.ts +23 -0
  323. package/dist/esm/adapters/react/core/RequestQueue.d.ts.map +1 -0
  324. package/dist/esm/adapters/react/core/WindowManager.d.ts +24 -0
  325. package/dist/esm/adapters/react/core/WindowManager.d.ts.map +1 -0
  326. package/dist/esm/adapters/react/core/types.d.ts +28 -0
  327. package/dist/esm/adapters/react/core/types.d.ts.map +1 -0
  328. package/dist/esm/adapters/react/index.d.ts +23 -0
  329. package/dist/esm/adapters/react/index.d.ts.map +1 -0
  330. package/dist/esm/adapters/react/platform/browser/ScrollObserver.d.ts +25 -0
  331. package/dist/esm/adapters/react/platform/browser/ScrollObserver.d.ts.map +1 -0
  332. package/dist/esm/adapters/react/useLazyList.js +1480 -0
  333. package/dist/esm/adapters/react/useLazyList.js.map +1 -0
  334. package/dist/esm/adapters/react/utils/debounce.d.ts +5 -0
  335. package/dist/esm/adapters/react/utils/debounce.d.ts.map +1 -0
  336. package/dist/esm/adapters/react/utils/throttle.d.ts +5 -0
  337. package/dist/esm/adapters/react/utils/throttle.d.ts.map +1 -0
  338. package/dist/esm/angular/adapters/angular/lazy-scroll.component.d.ts +28 -0
  339. package/dist/esm/angular/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  340. package/dist/esm/angular/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  341. package/dist/esm/angular/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  342. package/dist/esm/angular/adapters/index.d.ts +7 -0
  343. package/dist/esm/angular/adapters/index.d.ts.map +1 -0
  344. package/dist/esm/angular/adapters/react/LazyList.d.ts +12 -0
  345. package/dist/esm/angular/adapters/react/LazyList.d.ts.map +1 -0
  346. package/dist/esm/angular/adapters/react/useLazyList.d.ts +22 -0
  347. package/dist/esm/angular/adapters/react/useLazyList.d.ts.map +1 -0
  348. package/dist/esm/angular/adapters/svelte/lazyScrollAction.d.ts +13 -0
  349. package/dist/esm/angular/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  350. package/dist/esm/angular/adapters/vue/useLazyScroll.d.ts +13 -0
  351. package/dist/esm/angular/adapters/vue/useLazyScroll.d.ts.map +1 -0
  352. package/dist/esm/angular/core/AdaptiveBufferCalculator.d.ts +46 -0
  353. package/dist/esm/angular/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  354. package/dist/esm/angular/core/ContentComplexityAnalyzer.d.ts +13 -0
  355. package/dist/esm/angular/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  356. package/dist/esm/angular/core/DevicePerformanceMonitor.d.ts +22 -0
  357. package/dist/esm/angular/core/DevicePerformanceMonitor.d.ts.map +1 -0
  358. package/dist/esm/angular/core/Engine.d.ts +56 -0
  359. package/dist/esm/angular/core/Engine.d.ts.map +1 -0
  360. package/dist/esm/angular/core/GPUAccelerator.d.ts +23 -0
  361. package/dist/esm/angular/core/GPUAccelerator.d.ts.map +1 -0
  362. package/dist/esm/angular/core/IntelligentScrollDetector.d.ts +19 -0
  363. package/dist/esm/angular/core/IntelligentScrollDetector.d.ts.map +1 -0
  364. package/dist/esm/angular/core/MemoryManager.d.ts +33 -0
  365. package/dist/esm/angular/core/MemoryManager.d.ts.map +1 -0
  366. package/dist/esm/angular/core/NetworkAwarePrefetchManager.d.ts +10 -0
  367. package/dist/esm/angular/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  368. package/dist/esm/angular/core/NetworkAwareRequestQueue.d.ts +20 -0
  369. package/dist/esm/angular/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  370. package/dist/esm/angular/core/NetworkSpeedDetector.d.ts +16 -0
  371. package/dist/esm/angular/core/NetworkSpeedDetector.d.ts.map +1 -0
  372. package/dist/esm/angular/core/PerformanceOptimizer.d.ts +39 -0
  373. package/dist/esm/angular/core/PerformanceOptimizer.d.ts.map +1 -0
  374. package/dist/esm/angular/core/PrefetchManager.d.ts +16 -0
  375. package/dist/esm/angular/core/PrefetchManager.d.ts.map +1 -0
  376. package/dist/esm/angular/core/RequestQueue.d.ts +23 -0
  377. package/dist/esm/angular/core/RequestQueue.d.ts.map +1 -0
  378. package/dist/esm/angular/core/WindowManager.d.ts +24 -0
  379. package/dist/esm/angular/core/WindowManager.d.ts.map +1 -0
  380. package/dist/esm/angular/core/types.d.ts +28 -0
  381. package/dist/esm/angular/core/types.d.ts.map +1 -0
  382. package/dist/esm/angular/index.d.ts +23 -0
  383. package/dist/esm/angular/index.d.ts.map +1 -0
  384. package/dist/esm/angular/index.js +1714 -0
  385. package/dist/esm/angular/index.js.map +1 -0
  386. package/dist/esm/angular/platform/browser/ScrollObserver.d.ts +25 -0
  387. package/dist/esm/angular/platform/browser/ScrollObserver.d.ts.map +1 -0
  388. package/dist/esm/angular/utils/debounce.d.ts +5 -0
  389. package/dist/esm/angular/utils/debounce.d.ts.map +1 -0
  390. package/dist/esm/angular/utils/throttle.d.ts +5 -0
  391. package/dist/esm/angular/utils/throttle.d.ts.map +1 -0
  392. package/dist/esm/core/GPUAccelerator.d.ts.map +1 -1
  393. package/dist/esm/core/PerformanceOptimizer.d.ts.map +1 -1
  394. package/dist/esm/index.d.ts +2 -6
  395. package/dist/esm/index.d.ts.map +1 -1
  396. package/dist/esm/index.js +194 -600
  397. package/dist/esm/index.js.map +1 -1
  398. package/dist/esm/svelte/adapters/angular/lazy-scroll.component.d.ts +28 -0
  399. package/dist/esm/svelte/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  400. package/dist/esm/svelte/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  401. package/dist/esm/svelte/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  402. package/dist/esm/svelte/adapters/index.d.ts +7 -0
  403. package/dist/esm/svelte/adapters/index.d.ts.map +1 -0
  404. package/dist/esm/svelte/adapters/react/LazyList.d.ts +12 -0
  405. package/dist/esm/svelte/adapters/react/LazyList.d.ts.map +1 -0
  406. package/dist/esm/svelte/adapters/react/useLazyList.d.ts +22 -0
  407. package/dist/esm/svelte/adapters/react/useLazyList.d.ts.map +1 -0
  408. package/dist/esm/svelte/adapters/svelte/lazyScrollAction.d.ts +13 -0
  409. package/dist/esm/svelte/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  410. package/dist/esm/svelte/adapters/vue/useLazyScroll.d.ts +13 -0
  411. package/dist/esm/svelte/adapters/vue/useLazyScroll.d.ts.map +1 -0
  412. package/dist/esm/svelte/core/AdaptiveBufferCalculator.d.ts +46 -0
  413. package/dist/esm/svelte/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  414. package/dist/esm/svelte/core/ContentComplexityAnalyzer.d.ts +13 -0
  415. package/dist/esm/svelte/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  416. package/dist/esm/svelte/core/DevicePerformanceMonitor.d.ts +22 -0
  417. package/dist/esm/svelte/core/DevicePerformanceMonitor.d.ts.map +1 -0
  418. package/dist/esm/svelte/core/Engine.d.ts +56 -0
  419. package/dist/esm/svelte/core/Engine.d.ts.map +1 -0
  420. package/dist/esm/svelte/core/GPUAccelerator.d.ts +23 -0
  421. package/dist/esm/svelte/core/GPUAccelerator.d.ts.map +1 -0
  422. package/dist/esm/svelte/core/IntelligentScrollDetector.d.ts +19 -0
  423. package/dist/esm/svelte/core/IntelligentScrollDetector.d.ts.map +1 -0
  424. package/dist/esm/svelte/core/MemoryManager.d.ts +33 -0
  425. package/dist/esm/svelte/core/MemoryManager.d.ts.map +1 -0
  426. package/dist/esm/svelte/core/NetworkAwarePrefetchManager.d.ts +10 -0
  427. package/dist/esm/svelte/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  428. package/dist/esm/svelte/core/NetworkAwareRequestQueue.d.ts +20 -0
  429. package/dist/esm/svelte/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  430. package/dist/esm/svelte/core/NetworkSpeedDetector.d.ts +16 -0
  431. package/dist/esm/svelte/core/NetworkSpeedDetector.d.ts.map +1 -0
  432. package/dist/esm/svelte/core/PerformanceOptimizer.d.ts +39 -0
  433. package/dist/esm/svelte/core/PerformanceOptimizer.d.ts.map +1 -0
  434. package/dist/esm/svelte/core/PrefetchManager.d.ts +16 -0
  435. package/dist/esm/svelte/core/PrefetchManager.d.ts.map +1 -0
  436. package/dist/esm/svelte/core/RequestQueue.d.ts +23 -0
  437. package/dist/esm/svelte/core/RequestQueue.d.ts.map +1 -0
  438. package/dist/esm/svelte/core/WindowManager.d.ts +24 -0
  439. package/dist/esm/svelte/core/WindowManager.d.ts.map +1 -0
  440. package/dist/esm/svelte/core/types.d.ts +28 -0
  441. package/dist/esm/svelte/core/types.d.ts.map +1 -0
  442. package/dist/esm/svelte/index.d.ts +23 -0
  443. package/dist/esm/svelte/index.d.ts.map +1 -0
  444. package/dist/esm/svelte/index.js +1421 -0
  445. package/dist/esm/svelte/index.js.map +1 -0
  446. package/dist/esm/svelte/platform/browser/ScrollObserver.d.ts +25 -0
  447. package/dist/esm/svelte/platform/browser/ScrollObserver.d.ts.map +1 -0
  448. package/dist/esm/svelte/utils/debounce.d.ts +5 -0
  449. package/dist/esm/svelte/utils/debounce.d.ts.map +1 -0
  450. package/dist/esm/svelte/utils/throttle.d.ts +5 -0
  451. package/dist/esm/svelte/utils/throttle.d.ts.map +1 -0
  452. package/dist/esm/vanilla/adapters/angular/lazy-scroll.component.d.ts +28 -0
  453. package/dist/esm/vanilla/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  454. package/dist/esm/vanilla/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  455. package/dist/esm/vanilla/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  456. package/dist/esm/vanilla/adapters/index.d.ts +7 -0
  457. package/dist/esm/vanilla/adapters/index.d.ts.map +1 -0
  458. package/dist/esm/vanilla/adapters/react/LazyList.d.ts +12 -0
  459. package/dist/esm/vanilla/adapters/react/LazyList.d.ts.map +1 -0
  460. package/dist/esm/vanilla/adapters/react/useLazyList.d.ts +22 -0
  461. package/dist/esm/vanilla/adapters/react/useLazyList.d.ts.map +1 -0
  462. package/dist/esm/vanilla/adapters/svelte/lazyScrollAction.d.ts +13 -0
  463. package/dist/esm/vanilla/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  464. package/dist/esm/vanilla/adapters/vue/useLazyScroll.d.ts +13 -0
  465. package/dist/esm/vanilla/adapters/vue/useLazyScroll.d.ts.map +1 -0
  466. package/dist/esm/vanilla/core/AdaptiveBufferCalculator.d.ts +46 -0
  467. package/dist/esm/vanilla/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  468. package/dist/esm/vanilla/core/ContentComplexityAnalyzer.d.ts +13 -0
  469. package/dist/esm/vanilla/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  470. package/dist/esm/vanilla/core/DevicePerformanceMonitor.d.ts +22 -0
  471. package/dist/esm/vanilla/core/DevicePerformanceMonitor.d.ts.map +1 -0
  472. package/dist/esm/vanilla/core/Engine.d.ts +56 -0
  473. package/dist/esm/vanilla/core/Engine.d.ts.map +1 -0
  474. package/dist/esm/vanilla/core/GPUAccelerator.d.ts +23 -0
  475. package/dist/esm/vanilla/core/GPUAccelerator.d.ts.map +1 -0
  476. package/dist/esm/vanilla/core/IntelligentScrollDetector.d.ts +19 -0
  477. package/dist/esm/vanilla/core/IntelligentScrollDetector.d.ts.map +1 -0
  478. package/dist/esm/vanilla/core/MemoryManager.d.ts +33 -0
  479. package/dist/esm/vanilla/core/MemoryManager.d.ts.map +1 -0
  480. package/dist/esm/vanilla/core/NetworkAwarePrefetchManager.d.ts +10 -0
  481. package/dist/esm/vanilla/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  482. package/dist/esm/vanilla/core/NetworkAwareRequestQueue.d.ts +20 -0
  483. package/dist/esm/vanilla/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  484. package/dist/esm/vanilla/core/NetworkSpeedDetector.d.ts +16 -0
  485. package/dist/esm/vanilla/core/NetworkSpeedDetector.d.ts.map +1 -0
  486. package/dist/esm/vanilla/core/PerformanceOptimizer.d.ts +39 -0
  487. package/dist/esm/vanilla/core/PerformanceOptimizer.d.ts.map +1 -0
  488. package/dist/esm/vanilla/core/PrefetchManager.d.ts +16 -0
  489. package/dist/esm/vanilla/core/PrefetchManager.d.ts.map +1 -0
  490. package/dist/esm/vanilla/core/RequestQueue.d.ts +23 -0
  491. package/dist/esm/vanilla/core/RequestQueue.d.ts.map +1 -0
  492. package/dist/esm/vanilla/core/WindowManager.d.ts +24 -0
  493. package/dist/esm/vanilla/core/WindowManager.d.ts.map +1 -0
  494. package/dist/esm/vanilla/core/types.d.ts +28 -0
  495. package/dist/esm/vanilla/core/types.d.ts.map +1 -0
  496. package/dist/esm/vanilla/index.d.ts +23 -0
  497. package/dist/esm/vanilla/index.d.ts.map +1 -0
  498. package/dist/esm/vanilla/index.js +1666 -0
  499. package/dist/esm/vanilla/index.js.map +1 -0
  500. package/dist/esm/vanilla/platform/browser/ScrollObserver.d.ts +25 -0
  501. package/dist/esm/vanilla/platform/browser/ScrollObserver.d.ts.map +1 -0
  502. package/dist/esm/vanilla/utils/debounce.d.ts +5 -0
  503. package/dist/esm/vanilla/utils/debounce.d.ts.map +1 -0
  504. package/dist/esm/vanilla/utils/throttle.d.ts +5 -0
  505. package/dist/esm/vanilla/utils/throttle.d.ts.map +1 -0
  506. package/dist/esm/vue/adapters/angular/lazy-scroll.component.d.ts +28 -0
  507. package/dist/esm/vue/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  508. package/dist/esm/vue/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  509. package/dist/esm/vue/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  510. package/dist/esm/vue/adapters/index.d.ts +7 -0
  511. package/dist/esm/vue/adapters/index.d.ts.map +1 -0
  512. package/dist/esm/vue/adapters/react/LazyList.d.ts +12 -0
  513. package/dist/esm/vue/adapters/react/LazyList.d.ts.map +1 -0
  514. package/dist/esm/vue/adapters/react/useLazyList.d.ts +22 -0
  515. package/dist/esm/vue/adapters/react/useLazyList.d.ts.map +1 -0
  516. package/dist/esm/vue/adapters/svelte/lazyScrollAction.d.ts +13 -0
  517. package/dist/esm/vue/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  518. package/dist/esm/vue/adapters/vue/useLazyScroll.d.ts +13 -0
  519. package/dist/esm/vue/adapters/vue/useLazyScroll.d.ts.map +1 -0
  520. package/dist/esm/vue/core/AdaptiveBufferCalculator.d.ts +46 -0
  521. package/dist/esm/vue/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  522. package/dist/esm/vue/core/ContentComplexityAnalyzer.d.ts +13 -0
  523. package/dist/esm/vue/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  524. package/dist/esm/vue/core/DevicePerformanceMonitor.d.ts +22 -0
  525. package/dist/esm/vue/core/DevicePerformanceMonitor.d.ts.map +1 -0
  526. package/dist/esm/vue/core/Engine.d.ts +56 -0
  527. package/dist/esm/vue/core/Engine.d.ts.map +1 -0
  528. package/dist/esm/vue/core/GPUAccelerator.d.ts +23 -0
  529. package/dist/esm/vue/core/GPUAccelerator.d.ts.map +1 -0
  530. package/dist/esm/vue/core/IntelligentScrollDetector.d.ts +19 -0
  531. package/dist/esm/vue/core/IntelligentScrollDetector.d.ts.map +1 -0
  532. package/dist/esm/vue/core/MemoryManager.d.ts +33 -0
  533. package/dist/esm/vue/core/MemoryManager.d.ts.map +1 -0
  534. package/dist/esm/vue/core/NetworkAwarePrefetchManager.d.ts +10 -0
  535. package/dist/esm/vue/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  536. package/dist/esm/vue/core/NetworkAwareRequestQueue.d.ts +20 -0
  537. package/dist/esm/vue/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  538. package/dist/esm/vue/core/NetworkSpeedDetector.d.ts +16 -0
  539. package/dist/esm/vue/core/NetworkSpeedDetector.d.ts.map +1 -0
  540. package/dist/esm/vue/core/PerformanceOptimizer.d.ts +39 -0
  541. package/dist/esm/vue/core/PerformanceOptimizer.d.ts.map +1 -0
  542. package/dist/esm/vue/core/PrefetchManager.d.ts +16 -0
  543. package/dist/esm/vue/core/PrefetchManager.d.ts.map +1 -0
  544. package/dist/esm/vue/core/RequestQueue.d.ts +23 -0
  545. package/dist/esm/vue/core/RequestQueue.d.ts.map +1 -0
  546. package/dist/esm/vue/core/WindowManager.d.ts +24 -0
  547. package/dist/esm/vue/core/WindowManager.d.ts.map +1 -0
  548. package/dist/esm/vue/core/types.d.ts +28 -0
  549. package/dist/esm/vue/core/types.d.ts.map +1 -0
  550. package/dist/esm/vue/index.d.ts +23 -0
  551. package/dist/esm/vue/index.d.ts.map +1 -0
  552. package/dist/esm/vue/index.js +1441 -0
  553. package/dist/esm/vue/index.js.map +1 -0
  554. package/dist/esm/vue/platform/browser/ScrollObserver.d.ts +25 -0
  555. package/dist/esm/vue/platform/browser/ScrollObserver.d.ts.map +1 -0
  556. package/dist/esm/vue/utils/debounce.d.ts +5 -0
  557. package/dist/esm/vue/utils/debounce.d.ts.map +1 -0
  558. package/dist/esm/vue/utils/throttle.d.ts +5 -0
  559. package/dist/esm/vue/utils/throttle.d.ts.map +1 -0
  560. package/dist/index.d.ts +46 -115
  561. package/dist/svelte/index.d.ts +16 -0
  562. package/dist/vanilla/index.d.ts +356 -0
  563. package/dist/vue/index.d.ts +22 -0
  564. package/package.json +28 -1
@@ -0,0 +1,1717 @@
1
+ 'use strict';
2
+
3
+ var core = require('@angular/core');
4
+
5
+ /******************************************************************************
6
+ Copyright (c) Microsoft Corporation.
7
+
8
+ Permission to use, copy, modify, and/or distribute this software for any
9
+ purpose with or without fee is hereby granted.
10
+
11
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
+ PERFORMANCE OF THIS SOFTWARE.
18
+ ***************************************************************************** */
19
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
20
+
21
+
22
+ function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
23
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
24
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
25
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
26
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
27
+ var _, done = false;
28
+ for (var i = decorators.length - 1; i >= 0; i--) {
29
+ var context = {};
30
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
31
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
32
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
33
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
34
+ if (kind === "accessor") {
35
+ if (result === void 0) continue;
36
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
37
+ if (_ = accept(result.get)) descriptor.get = _;
38
+ if (_ = accept(result.set)) descriptor.set = _;
39
+ if (_ = accept(result.init)) initializers.unshift(_);
40
+ }
41
+ else if (_ = accept(result)) {
42
+ if (kind === "field") initializers.unshift(_);
43
+ else descriptor[key] = _;
44
+ }
45
+ }
46
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
47
+ done = true;
48
+ }
49
+ function __runInitializers(thisArg, initializers, value) {
50
+ var useValue = arguments.length > 2;
51
+ for (var i = 0; i < initializers.length; i++) {
52
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
53
+ }
54
+ return useValue ? value : void 0;
55
+ }
56
+ function __setFunctionName(f, name, prefix) {
57
+ if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
58
+ return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
59
+ }
60
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
61
+ var e = new Error(message);
62
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
63
+ };
64
+
65
+ class WindowManager {
66
+ constructor(itemHeight, viewportHeight, bufferSize = 5) {
67
+ this.itemHeight = itemHeight;
68
+ this.viewportHeight = viewportHeight;
69
+ this.bufferSize = bufferSize;
70
+ }
71
+ /**
72
+ * Calculate the visible range based on scroll position
73
+ */
74
+ calculateVisibleRange(scrollTop) {
75
+ // Calculate how many items fit in the viewport
76
+ const itemsPerViewport = Math.ceil(this.viewportHeight / this.itemHeight);
77
+ // Calculate the starting index based on scroll position
78
+ const startIndex = Math.floor(scrollTop / this.itemHeight);
79
+ // Calculate the ending index with buffer
80
+ const endIndex = Math.min(startIndex + itemsPerViewport + this.bufferSize, Number.MAX_SAFE_INTEGER // Will be limited by total items later
81
+ );
82
+ return {
83
+ start: Math.max(0, startIndex - this.bufferSize),
84
+ end: endIndex
85
+ };
86
+ }
87
+ /**
88
+ * Update viewport height if it changes
89
+ */
90
+ updateViewportHeight(height) {
91
+ this.viewportHeight = height;
92
+ }
93
+ /**
94
+ * Update item height if it changes
95
+ */
96
+ updateItemHeight(height) {
97
+ this.itemHeight = height;
98
+ }
99
+ /**
100
+ * Update buffer size if it changes
101
+ */
102
+ updateBufferSize(size) {
103
+ this.bufferSize = size;
104
+ }
105
+ }
106
+
107
+ class PrefetchManager {
108
+ /**
109
+ * This class is kept for backward compatibility
110
+ * Intelligent prefetching is now handled in the Engine class
111
+ */
112
+ constructor() { }
113
+ /**
114
+ * Legacy method - not used in intelligent mode
115
+ */
116
+ shouldPrefetch(visibleEnd, totalLoaded) {
117
+ // Simple rule: if visible end is approaching the loaded boundary, fetch more
118
+ return visibleEnd >= totalLoaded - 5; // Default buffer
119
+ }
120
+ /**
121
+ * Update buffer size if it changes (for backward compatibility)
122
+ */
123
+ updateBufferSize(size) {
124
+ // This method exists for backward compatibility
125
+ // Intelligent prefetching is now handled in the Engine class
126
+ }
127
+ }
128
+
129
+ class RequestQueue {
130
+ constructor(maxConcurrent = 1) {
131
+ this.queue = [];
132
+ this.processing = false;
133
+ this.maxConcurrent = maxConcurrent;
134
+ }
135
+ /**
136
+ * Add a request to the queue
137
+ */
138
+ add(requestFn) {
139
+ return new Promise((resolve, reject) => {
140
+ this.queue.push(() => requestFn().then(resolve).catch(reject));
141
+ // Start processing if not already processing
142
+ if (!this.processing) {
143
+ this.processQueue();
144
+ }
145
+ });
146
+ }
147
+ /**
148
+ * Process the queue
149
+ */
150
+ async processQueue() {
151
+ if (this.queue.length === 0) {
152
+ this.processing = false;
153
+ return;
154
+ }
155
+ this.processing = true;
156
+ // Process up to maxConcurrent requests
157
+ const concurrentRequests = [];
158
+ const count = Math.min(this.maxConcurrent, this.queue.length);
159
+ for (let i = 0; i < count; i++) {
160
+ const requestFn = this.queue.shift();
161
+ if (requestFn) {
162
+ concurrentRequests.push(requestFn());
163
+ }
164
+ }
165
+ try {
166
+ await Promise.all(concurrentRequests);
167
+ }
168
+ catch (error) {
169
+ console.error('Request queue error:', error);
170
+ }
171
+ // Process remaining items
172
+ await this.processQueue();
173
+ }
174
+ /**
175
+ * Clear the queue
176
+ */
177
+ clear() {
178
+ this.queue = [];
179
+ }
180
+ /**
181
+ * Get the current queue length
182
+ */
183
+ getLength() {
184
+ return this.queue.length;
185
+ }
186
+ }
187
+
188
+ class IntelligentScrollDetector {
189
+ constructor() {
190
+ this.lastScrollTop = 0;
191
+ this.lastTime = 0;
192
+ this.velocityHistory = [];
193
+ this.HISTORY_SIZE = 5;
194
+ this.scrollTimeout = null;
195
+ this.isIdle = true;
196
+ this.lastTime = performance.now();
197
+ }
198
+ // Calculate velocity from scroll event
199
+ calculateVelocity(scrollTop) {
200
+ const now = performance.now();
201
+ const deltaY = scrollTop - this.lastScrollTop;
202
+ const deltaTime = now - this.lastTime;
203
+ // Calculate velocity (pixels per millisecond)
204
+ const velocity = deltaTime > 0 ? deltaY / deltaTime : 0;
205
+ // Store in history for smoothing
206
+ this.velocityHistory.push(velocity);
207
+ if (this.velocityHistory.length > this.HISTORY_SIZE) {
208
+ this.velocityHistory.shift();
209
+ }
210
+ // Update for next calculation
211
+ this.lastScrollTop = scrollTop;
212
+ this.lastTime = now;
213
+ // Update idle state
214
+ this.isIdle = false;
215
+ this.resetIdleTimer();
216
+ // Return smoothed velocity (average of recent values)
217
+ return this.getAverageVelocity();
218
+ }
219
+ // Get smoothed velocity from history
220
+ getAverageVelocity() {
221
+ if (this.velocityHistory.length === 0)
222
+ return 0;
223
+ const sum = this.velocityHistory.reduce((acc, vel) => acc + vel, 0);
224
+ return sum / this.velocityHistory.length;
225
+ }
226
+ // Determine scroll direction from velocity
227
+ getDirection(velocity) {
228
+ if (Math.abs(velocity) < 0.1)
229
+ return 'stationary';
230
+ return velocity > 0 ? 'down' : 'up';
231
+ }
232
+ // Calculate buffer size based on scroll velocity
233
+ calculateBuffer(velocity) {
234
+ const absVelocity = Math.abs(velocity);
235
+ if (absVelocity > 1.5) {
236
+ return 20; // Large buffer for fast scrolling
237
+ }
238
+ else if (absVelocity > 1.0) {
239
+ return 10; // Medium buffer
240
+ }
241
+ else if (absVelocity > 0.3) {
242
+ return 7; // Small buffer for medium scrolling
243
+ }
244
+ else {
245
+ return 5; // Minimal buffer when nearly stationary
246
+ }
247
+ }
248
+ // Calculate prefetch distance based on velocity
249
+ calculatePrefetchDistance(velocity) {
250
+ const absVelocity = Math.abs(velocity);
251
+ if (absVelocity > 2.0)
252
+ return 1200; // Far ahead for fast scrolling
253
+ if (absVelocity > 1.0)
254
+ return 800; // Medium distance
255
+ if (absVelocity > 0.3)
256
+ return 400; // Close distance for slow scroll
257
+ return 200; // Minimal prefetch when nearly stationary
258
+ }
259
+ // Predict where user will be in X milliseconds
260
+ predictPosition(currentPosition, velocity, msAhead = 500) {
261
+ return currentPosition + (velocity * msAhead);
262
+ }
263
+ // Check if user is currently idle
264
+ getIsIdle() {
265
+ return this.isIdle;
266
+ }
267
+ // Reset idle timer
268
+ resetIdleTimer() {
269
+ if (this.scrollTimeout) {
270
+ clearTimeout(this.scrollTimeout);
271
+ }
272
+ this.scrollTimeout = window.setTimeout(() => {
273
+ this.isIdle = true;
274
+ }, 150); // 150ms after last scroll = idle
275
+ }
276
+ // Clean up resources
277
+ cleanup() {
278
+ if (this.scrollTimeout) {
279
+ clearTimeout(this.scrollTimeout);
280
+ }
281
+ }
282
+ }
283
+
284
+ class NetworkSpeedDetector {
285
+ constructor() {
286
+ this.bandwidthHistory = [];
287
+ this.latencyHistory = [];
288
+ this.HISTORY_SIZE = 5;
289
+ }
290
+ // Estimate available bandwidth
291
+ async estimateBandwidth() {
292
+ const startTime = performance.now();
293
+ const testData = new Array(10000).fill('test_data').join('');
294
+ try {
295
+ // Send test request to measure bandwidth
296
+ const response = await fetch('/api/network-test', {
297
+ method: 'POST',
298
+ body: testData
299
+ });
300
+ const endTime = performance.now();
301
+ const duration = (endTime - startTime) / 1000; // seconds
302
+ const dataSize = testData.length; // bytes
303
+ const bandwidth = dataSize / duration; // bytes per second
304
+ this.bandwidthHistory.push(bandwidth);
305
+ if (this.bandwidthHistory.length > this.HISTORY_SIZE) {
306
+ this.bandwidthHistory.shift();
307
+ }
308
+ return this.getAverageBandwidth();
309
+ }
310
+ catch (error) {
311
+ // If network test fails, return a conservative estimate
312
+ return 100000; // 100 KB/s as fallback
313
+ }
314
+ }
315
+ // Measure network latency
316
+ async measureLatency() {
317
+ try {
318
+ const startTime = performance.now();
319
+ await fetch('/api/ping');
320
+ const endTime = performance.now();
321
+ const latency = endTime - startTime;
322
+ this.latencyHistory.push(latency);
323
+ if (this.latencyHistory.length > this.HISTORY_SIZE) {
324
+ this.latencyHistory.shift();
325
+ }
326
+ return this.getAverageLatency();
327
+ }
328
+ catch (error) {
329
+ // If ping fails, return a high latency as fallback
330
+ return 1000; // 1 second as fallback
331
+ }
332
+ }
333
+ // Assess overall connection quality
334
+ async assessConnectionQuality() {
335
+ try {
336
+ const [bandwidth, latency] = await Promise.all([
337
+ this.estimateBandwidth(),
338
+ this.measureLatency()
339
+ ]);
340
+ if (latency > 1000)
341
+ return 'poor'; // High latency
342
+ if (bandwidth < 100000)
343
+ return 'poor'; // Low bandwidth (< 100 KB/s)
344
+ if (latency > 500 || bandwidth < 500000)
345
+ return 'good'; // Moderate
346
+ return 'excellent'; // Fast and responsive
347
+ }
348
+ catch (_a) {
349
+ return 'offline';
350
+ }
351
+ }
352
+ getAverageBandwidth() {
353
+ if (this.bandwidthHistory.length === 0)
354
+ return 0;
355
+ const sum = this.bandwidthHistory.reduce((a, b) => a + b, 0);
356
+ return sum / this.bandwidthHistory.length;
357
+ }
358
+ getAverageLatency() {
359
+ if (this.latencyHistory.length === 0)
360
+ return 0;
361
+ const sum = this.latencyHistory.reduce((a, b) => a + b, 0);
362
+ return sum / this.latencyHistory.length;
363
+ }
364
+ // Get current network statistics
365
+ getNetworkStats() {
366
+ return {
367
+ bandwidth: this.getAverageBandwidth(),
368
+ latency: this.getAverageLatency(),
369
+ history: [...this.bandwidthHistory]
370
+ };
371
+ }
372
+ }
373
+
374
+ class NetworkAwarePrefetchManager {
375
+ constructor(networkDetector) {
376
+ this.basePrefetchDistance = 400; // Base prefetch distance in pixels
377
+ this.networkDetector = networkDetector;
378
+ }
379
+ // Calculate prefetch distance based on network conditions
380
+ async calculateNetworkAdjustedPrefetch(velocity) {
381
+ const connectionQuality = await this.networkDetector.assessConnectionQuality();
382
+ // Base prefetch distance from scroll velocity
383
+ let baseDistance = this.basePrefetchDistance;
384
+ if (Math.abs(velocity) > 2.0)
385
+ baseDistance = 1200;
386
+ else if (Math.abs(velocity) > 1.0)
387
+ baseDistance = 800;
388
+ else if (Math.abs(velocity) > 0.3)
389
+ baseDistance = 400;
390
+ else
391
+ baseDistance = 200;
392
+ // Adjust based on network quality
393
+ switch (connectionQuality) {
394
+ case 'excellent':
395
+ return Math.round(baseDistance * 1.5); // Extra prefetch on fast networks
396
+ case 'good':
397
+ return Math.round(baseDistance * 1.2); // Slightly more prefetch
398
+ case 'poor':
399
+ return Math.round(baseDistance * 0.7); // Less prefetch on slow networks
400
+ case 'offline':
401
+ return Math.round(baseDistance * 0.3); // Minimal prefetch when offline
402
+ default:
403
+ return baseDistance;
404
+ }
405
+ }
406
+ // Calculate batch size based on network conditions
407
+ async calculateNetworkAdjustedBatchSize(velocity) {
408
+ const connectionQuality = await this.networkDetector.assessConnectionQuality();
409
+ // Base batch size from scroll velocity
410
+ let baseBatchSize = 10; // Default batch size
411
+ if (Math.abs(velocity) > 2.0)
412
+ baseBatchSize = 20; // Fast scroll needs more
413
+ else if (Math.abs(velocity) > 1.0)
414
+ baseBatchSize = 15;
415
+ else if (Math.abs(velocity) > 0.3)
416
+ baseBatchSize = 10;
417
+ else
418
+ baseBatchSize = 5; // Slow scroll needs less
419
+ // Adjust based on network quality
420
+ switch (connectionQuality) {
421
+ case 'excellent':
422
+ return Math.min(baseBatchSize * 2, 50); // Large batches on fast networks
423
+ case 'good':
424
+ return Math.min(baseBatchSize * 1.5, 30); // Medium batches
425
+ case 'poor':
426
+ return Math.max(Math.round(baseBatchSize * 0.5), 5); // Small batches on slow networks
427
+ case 'offline':
428
+ return Math.max(Math.round(baseBatchSize * 0.3), 3); // Minimal batches when offline
429
+ default:
430
+ return baseBatchSize;
431
+ }
432
+ }
433
+ // Determine if prefetch should be delayed based on network conditions
434
+ async shouldDelayPrefetch() {
435
+ const connectionQuality = await this.networkDetector.assessConnectionQuality();
436
+ return connectionQuality === 'poor';
437
+ }
438
+ }
439
+
440
+ class NetworkAwareRequestQueue {
441
+ constructor(networkDetector) {
442
+ this.queue = [];
443
+ this.processing = false;
444
+ this.maxConcurrent = 1;
445
+ this.offlineQueue = [];
446
+ this.networkDetector = networkDetector;
447
+ }
448
+ // Add request with network-aware concurrency
449
+ async add(requestFn) {
450
+ // Adjust concurrency based on network conditions
451
+ const connectionQuality = await this.networkDetector.assessConnectionQuality();
452
+ switch (connectionQuality) {
453
+ case 'excellent':
454
+ this.maxConcurrent = 3; // Allow more concurrent requests
455
+ break;
456
+ case 'good':
457
+ this.maxConcurrent = 2; // Moderate concurrency
458
+ break;
459
+ case 'poor':
460
+ this.maxConcurrent = 1; // Sequential requests on slow networks
461
+ break;
462
+ case 'offline':
463
+ // Queue for later when online
464
+ return this.handleOfflineRequest(requestFn);
465
+ default:
466
+ this.maxConcurrent = 1;
467
+ }
468
+ return new Promise((resolve, reject) => {
469
+ this.queue.push(() => requestFn().then(resolve).catch(reject));
470
+ if (!this.processing) {
471
+ this.processQueue();
472
+ }
473
+ });
474
+ }
475
+ // Process queue with network-aware concurrency
476
+ async processQueue() {
477
+ if (this.queue.length === 0) {
478
+ this.processing = false;
479
+ return;
480
+ }
481
+ this.processing = true;
482
+ // Process up to maxConcurrent requests
483
+ const concurrentRequests = [];
484
+ const count = Math.min(this.maxConcurrent, this.queue.length);
485
+ for (let i = 0; i < count; i++) {
486
+ const requestFn = this.queue.shift();
487
+ if (requestFn) {
488
+ concurrentRequests.push(requestFn());
489
+ }
490
+ }
491
+ try {
492
+ await Promise.all(concurrentRequests);
493
+ }
494
+ catch (error) {
495
+ console.error('Network-aware request queue error:', error);
496
+ }
497
+ // Process remaining items
498
+ await this.processQueue();
499
+ }
500
+ // Handle requests when offline
501
+ async handleOfflineRequest(requestFn) {
502
+ // Store request for later execution
503
+ return new Promise((resolve, reject) => {
504
+ // Add to offline queue
505
+ this.offlineQueue.push(() => requestFn().then(resolve).catch(reject));
506
+ // Check for network restoration periodically
507
+ const checkOnline = () => {
508
+ if (navigator.onLine) {
509
+ // Process offline queue
510
+ this.processOfflineQueue();
511
+ resolve(null); // Resolve with null since we can't return the actual result
512
+ }
513
+ else {
514
+ setTimeout(checkOnline, 5000); // Check again in 5 seconds
515
+ }
516
+ };
517
+ checkOnline();
518
+ });
519
+ }
520
+ // Process offline queue when back online
521
+ async processOfflineQueue() {
522
+ const offlineRequests = [...this.offlineQueue];
523
+ this.offlineQueue = [];
524
+ for (const requestFn of offlineRequests) {
525
+ try {
526
+ await requestFn();
527
+ }
528
+ catch (error) {
529
+ console.error('Offline request failed:', error);
530
+ // Add back to offline queue for retry
531
+ this.offlineQueue.push(requestFn);
532
+ }
533
+ }
534
+ }
535
+ // Get current queue status
536
+ getQueueStatus() {
537
+ return {
538
+ pending: this.queue.length,
539
+ offline: this.offlineQueue.length,
540
+ maxConcurrent: this.maxConcurrent
541
+ };
542
+ }
543
+ // Clear all queues
544
+ clear() {
545
+ this.queue = [];
546
+ this.offlineQueue = [];
547
+ this.processing = false;
548
+ }
549
+ }
550
+
551
+ class DevicePerformanceMonitor {
552
+ constructor() {
553
+ this.frameRateHistory = [];
554
+ this.memoryUsageHistory = [];
555
+ this.gcMonitoring = false;
556
+ this.HISTORY_SIZE = 10;
557
+ this.setupPerformanceMonitoring();
558
+ }
559
+ // Monitor frame rate
560
+ async getFrameRate() {
561
+ return new Promise(resolve => {
562
+ const start = performance.now();
563
+ let frames = 0;
564
+ const measure = () => {
565
+ frames++;
566
+ if (frames >= 60) { // Measure over 60 frames
567
+ const elapsed = performance.now() - start;
568
+ const fps = Math.round((frames / elapsed) * 1000);
569
+ this.frameRateHistory.push(fps);
570
+ if (this.frameRateHistory.length > this.HISTORY_SIZE) {
571
+ this.frameRateHistory.shift();
572
+ }
573
+ resolve(fps);
574
+ }
575
+ else {
576
+ requestAnimationFrame(measure);
577
+ }
578
+ };
579
+ requestAnimationFrame(measure);
580
+ });
581
+ }
582
+ // Get average frame rate
583
+ getAverageFrameRate() {
584
+ if (this.frameRateHistory.length === 0)
585
+ return 60;
586
+ const sum = this.frameRateHistory.reduce((a, b) => a + b, 0);
587
+ return sum / this.frameRateHistory.length;
588
+ }
589
+ // Monitor memory usage (where available)
590
+ getMemoryInfo() {
591
+ if ('memory' in performance) {
592
+ // @ts-ignore - memory property is non-standard
593
+ const mem = performance.memory;
594
+ if (mem) {
595
+ return {
596
+ used: mem.usedJSHeapSize,
597
+ total: mem.jsHeapSizeLimit
598
+ };
599
+ }
600
+ }
601
+ return null;
602
+ }
603
+ // Assess overall device performance
604
+ async assessPerformance() {
605
+ const frameRate = await this.getFrameRate();
606
+ const memoryInfo = this.getMemoryInfo();
607
+ // Normalize frame rate (60fps = excellent, 30fps = poor)
608
+ const frameRateScore = Math.min(frameRate / 60, 1);
609
+ // If we have memory info, factor it in
610
+ if (memoryInfo) {
611
+ const memoryScore = 1 - (memoryInfo.used / memoryInfo.total);
612
+ return (frameRateScore * 0.7) + (memoryScore * 0.3);
613
+ }
614
+ return frameRateScore;
615
+ }
616
+ setupPerformanceMonitoring() {
617
+ // Set up performance monitoring intervals
618
+ setInterval(() => {
619
+ this.getFrameRate(); // Update frame rate history
620
+ }, 5000); // Every 5 seconds
621
+ }
622
+ // Get performance insights
623
+ getPerformanceInsights() {
624
+ const frameRate = this.getAverageFrameRate();
625
+ const memoryInfo = this.getMemoryInfo();
626
+ // Calculate performance score based on frame rate
627
+ const performanceScore = Math.min(frameRate / 60, 1);
628
+ return {
629
+ frameRate,
630
+ performanceScore,
631
+ memoryUsed: (memoryInfo === null || memoryInfo === void 0 ? void 0 : memoryInfo.used) || null,
632
+ memoryTotal: (memoryInfo === null || memoryInfo === void 0 ? void 0 : memoryInfo.total) || null
633
+ };
634
+ }
635
+ }
636
+
637
+ class ContentComplexityAnalyzer {
638
+ // Analyze content complexity based on various factors
639
+ analyzeContentComplexity(items) {
640
+ if (items.length === 0)
641
+ return 0.1; // Minimal complexity for empty
642
+ let totalComplexity = 0;
643
+ for (const item of items) {
644
+ // Analyze different aspects of complexity
645
+ const textComplexity = this.analyzeTextComplexity(item);
646
+ const mediaComplexity = this.analyzeMediaComplexity(item);
647
+ const componentComplexity = this.analyzeComponentComplexity(item);
648
+ totalComplexity += (textComplexity + mediaComplexity + componentComplexity) / 3;
649
+ }
650
+ // Return average complexity normalized to 0-1 scale
651
+ return Math.min(totalComplexity / items.length, 1);
652
+ }
653
+ analyzeTextComplexity(item) {
654
+ let complexity = 0;
655
+ // Length of text content
656
+ if (typeof item.text === 'string') {
657
+ complexity += Math.min(item.text.length / 1000, 0.5); // Max 0.5 for text
658
+ }
659
+ // Number of text elements
660
+ if (Array.isArray(item.textElements)) {
661
+ complexity += Math.min(item.textElements.length / 10, 0.3); // Max 0.3 for elements
662
+ }
663
+ // Formatting complexity
664
+ if (item.hasRichText)
665
+ complexity += 0.2;
666
+ return Math.min(complexity, 1);
667
+ }
668
+ analyzeMediaComplexity(item) {
669
+ let complexity = 0;
670
+ // Number of media elements
671
+ if (Array.isArray(item.media)) {
672
+ complexity += Math.min(item.media.length * 0.2, 0.5);
673
+ }
674
+ // Media types (images, videos are more complex than icons)
675
+ if (item.hasVideo)
676
+ complexity += 0.3;
677
+ if (item.hasImage)
678
+ complexity += 0.15;
679
+ if (item.hasSVG)
680
+ complexity += 0.1;
681
+ return Math.min(complexity, 1);
682
+ }
683
+ analyzeComponentComplexity(item) {
684
+ let complexity = 0;
685
+ // Number of nested components
686
+ if (typeof item.componentDepth === 'number') {
687
+ complexity += Math.min(item.componentDepth * 0.1, 0.4);
688
+ }
689
+ // Interactivity
690
+ if (item.interactive)
691
+ complexity += 0.2;
692
+ if (item.hasAnimations)
693
+ complexity += 0.2;
694
+ if (item.hasState)
695
+ complexity += 0.1;
696
+ return Math.min(complexity, 1);
697
+ }
698
+ // Get complexity insights
699
+ getComplexityInsights(items) {
700
+ if (items.length === 0) {
701
+ return {
702
+ averageComplexity: 0.1,
703
+ textComplexity: 0,
704
+ mediaComplexity: 0,
705
+ componentComplexity: 0
706
+ };
707
+ }
708
+ let totalText = 0, totalMedia = 0, totalComponent = 0;
709
+ for (const item of items) {
710
+ totalText += this.analyzeTextComplexity(item);
711
+ totalMedia += this.analyzeMediaComplexity(item);
712
+ totalComponent += this.analyzeComponentComplexity(item);
713
+ }
714
+ return {
715
+ averageComplexity: this.analyzeContentComplexity(items),
716
+ textComplexity: totalText / items.length,
717
+ mediaComplexity: totalMedia / items.length,
718
+ componentComplexity: totalComponent / items.length
719
+ };
720
+ }
721
+ }
722
+
723
+ class AdaptiveBufferCalculator {
724
+ constructor() {
725
+ this.scrollFactor = 0.3; // Weight for scroll velocity
726
+ this.networkFactor = 0.3; // Weight for network quality
727
+ this.performanceFactor = 0.2; // Weight for device performance
728
+ this.contentFactor = 0.2; // Weight for content complexity
729
+ this.performanceMonitor = new DevicePerformanceMonitor();
730
+ this.contentAnalyzer = new ContentComplexityAnalyzer();
731
+ }
732
+ // Calculate optimal buffer size based on multiple factors
733
+ async calculateOptimalBuffer(params) {
734
+ // Calculate scroll-based buffer
735
+ const scrollBuffer = this.calculateScrollBuffer(params.scrollVelocity, params.baseBuffer);
736
+ // Calculate network-based adjustment
737
+ const networkAdjustment = this.calculateNetworkAdjustment(params.networkQuality);
738
+ // Calculate performance-based adjustment
739
+ const performanceScore = await this.performanceMonitor.assessPerformance();
740
+ const performanceAdjustment = this.calculatePerformanceAdjustment(performanceScore);
741
+ // Calculate content-based adjustment
742
+ const contentComplexity = this.contentAnalyzer.analyzeContentComplexity(params.visibleItems);
743
+ const contentAdjustment = this.calculateContentAdjustment(contentComplexity);
744
+ // Combine all factors
745
+ const weightedBuffer = (scrollBuffer * this.scrollFactor +
746
+ (params.baseBuffer * networkAdjustment) * this.networkFactor +
747
+ (params.baseBuffer * performanceAdjustment) * this.performanceFactor +
748
+ (params.baseBuffer * contentAdjustment) * this.contentFactor);
749
+ // Apply reasonable bounds
750
+ return Math.max(3, Math.min(50, Math.round(weightedBuffer)));
751
+ }
752
+ calculateScrollBuffer(velocity, baseBuffer) {
753
+ const absVelocity = Math.abs(velocity);
754
+ if (absVelocity > 2.0)
755
+ return baseBuffer * 4; // Very fast scroll
756
+ if (absVelocity > 1.0)
757
+ return baseBuffer * 2.5; // Fast scroll
758
+ if (absVelocity > 0.3)
759
+ return baseBuffer * 1.5; // Medium scroll
760
+ return baseBuffer * 0.8; // Slow scroll
761
+ }
762
+ calculateNetworkAdjustment(quality) {
763
+ switch (quality) {
764
+ case 'excellent': return 1.5; // More buffer on fast networks
765
+ case 'good': return 1.2; // Slightly more
766
+ case 'poor': return 0.7; // Less buffer on slow networks
767
+ case 'offline': return 0.5; // Minimal buffer when offline
768
+ default: return 1.0;
769
+ }
770
+ }
771
+ calculatePerformanceAdjustment(performance) {
772
+ // performance is 0-1 scale (0 = poor, 1 = excellent)
773
+ return 0.5 + (performance * 0.8); // Range from 0.5 to 1.3
774
+ }
775
+ calculateContentAdjustment(complexity) {
776
+ // complexity is 0-1 scale (0 = simple, 1 = complex)
777
+ return 1.5 - (complexity * 0.8); // Range from 0.7 to 1.5
778
+ }
779
+ // Get adaptive insights
780
+ async getAdaptiveInsights(params) {
781
+ const buffer = await this.calculateOptimalBuffer(params);
782
+ const perfInsights = this.performanceMonitor.getPerformanceInsights();
783
+ const complexityInsights = this.contentAnalyzer.getComplexityInsights(params.visibleItems);
784
+ return {
785
+ currentBuffer: buffer,
786
+ performance: {
787
+ frameRate: perfInsights.frameRate,
788
+ score: perfInsights.performanceScore
789
+ },
790
+ network: {
791
+ quality: params.networkQuality,
792
+ adjustment: this.calculateNetworkAdjustment(params.networkQuality)
793
+ },
794
+ complexity: {
795
+ score: this.contentAnalyzer.analyzeContentComplexity(params.visibleItems),
796
+ breakdown: complexityInsights
797
+ },
798
+ factors: {
799
+ scroll: this.calculateScrollBuffer(params.scrollVelocity, params.baseBuffer),
800
+ network: this.calculateNetworkAdjustment(params.networkQuality),
801
+ performance: this.calculatePerformanceAdjustment(perfInsights.performanceScore),
802
+ content: this.calculateContentAdjustment(complexityInsights.averageComplexity)
803
+ }
804
+ };
805
+ }
806
+ }
807
+
808
+ class PerformanceOptimizer {
809
+ constructor() {
810
+ this.frameBudget = 16; // Target for 60fps (16.67ms per frame)
811
+ this.lastFrameTime = 0;
812
+ this.animationFrameId = null;
813
+ this.isOptimizing = false;
814
+ // Frame rate limiter to prevent excessive updates
815
+ this.lastUpdate = 0;
816
+ this.minUpdateInterval = 16; // Minimum 16ms between updates (60fps)
817
+ // Batch updates to reduce DOM manipulations
818
+ this.updateQueue = [];
819
+ this.isProcessingQueue = false;
820
+ // Memory optimization
821
+ this.cleanupThreshold = 1000; // Clean up items beyond this threshold
822
+ this.gcInterval = null;
823
+ this.setupPerformanceMonitoring();
824
+ }
825
+ // Optimize rendering by limiting updates to frame budget
826
+ scheduleOptimizedUpdate(updateFn) {
827
+ const now = performance.now();
828
+ // Throttle updates based on frame rate
829
+ if (now - this.lastUpdate < this.minUpdateInterval) {
830
+ // Queue the update for later
831
+ this.updateQueue.push(updateFn);
832
+ if (!this.isProcessingQueue) {
833
+ this.processUpdateQueue();
834
+ }
835
+ return;
836
+ }
837
+ // Check if we have enough time in the current frame
838
+ if (this.getTimeRemaining() > 4) { // Leave 4ms buffer
839
+ updateFn();
840
+ this.lastUpdate = now;
841
+ }
842
+ else {
843
+ // Schedule for next frame
844
+ this.updateQueue.push(updateFn);
845
+ if (!this.isProcessingQueue) {
846
+ this.processUpdateQueue();
847
+ }
848
+ }
849
+ }
850
+ // Process queued updates efficiently
851
+ async processUpdateQueue() {
852
+ if (this.updateQueue.length === 0) {
853
+ this.isProcessingQueue = false;
854
+ return;
855
+ }
856
+ this.isProcessingQueue = true;
857
+ const currentTime = performance.now();
858
+ // Process as many updates as possible within frame budget
859
+ while (this.updateQueue.length > 0 && this.getTimeRemaining() > 2) {
860
+ const updateFn = this.updateQueue.shift();
861
+ if (updateFn) {
862
+ updateFn();
863
+ }
864
+ }
865
+ this.lastUpdate = currentTime;
866
+ if (this.updateQueue.length > 0) {
867
+ // Schedule remaining updates for next frame (only in browser environment)
868
+ if (typeof requestAnimationFrame !== 'undefined') {
869
+ requestAnimationFrame(() => this.processUpdateQueue());
870
+ }
871
+ else {
872
+ // In Node.js environment, use setTimeout as fallback
873
+ setTimeout(() => this.processUpdateQueue(), 0);
874
+ }
875
+ }
876
+ else {
877
+ this.isProcessingQueue = false;
878
+ }
879
+ }
880
+ // Get remaining time in current frame
881
+ getTimeRemaining() {
882
+ if (typeof performance === 'undefined' || !performance.now) {
883
+ return 16; // Fallback to 60fps
884
+ }
885
+ const currentTime = performance.now();
886
+ // Typically browsers target 10ms remaining time for smoothness
887
+ return Math.max(0, this.frameBudget - (currentTime - this.lastFrameTime));
888
+ }
889
+ // Memory optimization: cleanup off-screen items
890
+ optimizeMemory(cleanupFn, visibleRange) {
891
+ // Determine cleanup range (items far from visible range)
892
+ const cleanupStart = Math.max(0, visibleRange.end + this.cleanupThreshold);
893
+ const cleanupEnd = Math.max(0, visibleRange.start - this.cleanupThreshold);
894
+ if (cleanupStart > visibleRange.end) {
895
+ cleanupFn(visibleRange.end, cleanupStart);
896
+ }
897
+ if (cleanupEnd < visibleRange.start) {
898
+ cleanupFn(cleanupEnd, visibleRange.start);
899
+ }
900
+ }
901
+ // Enable GPU acceleration for smoother scrolling
902
+ enableGPUCssAcceleration(element) {
903
+ // Force hardware acceleration
904
+ element.style.willChange = 'transform';
905
+ element.style.transform = 'translateZ(0)';
906
+ element.style.backfaceVisibility = 'hidden';
907
+ }
908
+ // Disable GPU acceleration when not needed
909
+ disableGPUCssAcceleration(element) {
910
+ element.style.willChange = 'auto';
911
+ element.style.transform = '';
912
+ element.style.backfaceVisibility = '';
913
+ }
914
+ // Optimize for different device capabilities
915
+ getOptimizationProfile() {
916
+ // Simple profile detection based on common device characteristics
917
+ const userAgent = navigator.userAgent || navigator.vendor || window.opera;
918
+ // Detect low-end devices
919
+ if (this.isLowEndDevice(userAgent)) {
920
+ return {
921
+ frameRate: 30, // Lower target for low-end devices
922
+ batchSize: 5, // Smaller batches
923
+ bufferMultiplier: 0.5, // Smaller buffer
924
+ updateInterval: 32 // 30fps interval
925
+ };
926
+ }
927
+ // Default profile for capable devices
928
+ return {
929
+ frameRate: 60,
930
+ batchSize: 10,
931
+ bufferMultiplier: 1.0,
932
+ updateInterval: 16 // 60fps interval
933
+ };
934
+ }
935
+ isLowEndDevice(userAgent) {
936
+ // Simple heuristic for low-end devices
937
+ const lowEndPatterns = [
938
+ /Android.*Mobile/,
939
+ /iPhone.*OS [0-9]+_[0-9]+/,
940
+ /Opera Mini/,
941
+ /IEMobile/
942
+ ];
943
+ return lowEndPatterns.some(pattern => pattern.test(userAgent));
944
+ }
945
+ // Setup performance monitoring
946
+ setupPerformanceMonitoring() {
947
+ // Check if we're in a browser environment
948
+ if (typeof window === 'undefined' || typeof requestAnimationFrame === 'undefined') {
949
+ // In Node.js environment, skip browser-specific monitoring
950
+ return;
951
+ }
952
+ // Monitor frame rate
953
+ let frameCount = 0;
954
+ let lastTime = performance.now();
955
+ const monitorFrameRate = () => {
956
+ frameCount++;
957
+ const currentTime = performance.now();
958
+ if (currentTime - lastTime >= 1000) { // Every second
959
+ const fps = frameCount;
960
+ frameCount = 0;
961
+ lastTime = currentTime;
962
+ // Adjust optimization based on actual FPS
963
+ if (fps < 30) {
964
+ this.frameBudget = 32; // Target 30fps
965
+ }
966
+ else if (fps < 50) {
967
+ this.frameBudget = 20; // Target 50fps
968
+ }
969
+ else {
970
+ this.frameBudget = 16; // Target 60fps
971
+ }
972
+ }
973
+ this.animationFrameId = requestAnimationFrame(monitorFrameRate);
974
+ };
975
+ this.animationFrameId = requestAnimationFrame(monitorFrameRate);
976
+ // Setup garbage collection monitoring
977
+ this.gcInterval = window.setInterval(() => {
978
+ if ('gc' in window) {
979
+ // @ts-ignore - gc is non-standard
980
+ window.gc();
981
+ }
982
+ }, 30000); // GC every 30 seconds
983
+ }
984
+ // Get performance insights
985
+ getPerformanceInsights() {
986
+ return {
987
+ frameRate: 60, // Would be calculated from monitoring
988
+ memoryUsage: this.getMemoryUsage(),
989
+ updateFrequency: 1000 / this.minUpdateInterval,
990
+ optimizationActive: this.isOptimizing
991
+ };
992
+ }
993
+ getMemoryUsage() {
994
+ var _a;
995
+ if ('memory' in performance) {
996
+ // @ts-ignore - memory property is non-standard
997
+ return ((_a = performance.memory) === null || _a === void 0 ? void 0 : _a.usedJSHeapSize) || null;
998
+ }
999
+ return null;
1000
+ }
1001
+ // Cleanup resources
1002
+ cleanup() {
1003
+ if (this.animationFrameId && typeof cancelAnimationFrame !== 'undefined') {
1004
+ cancelAnimationFrame(this.animationFrameId);
1005
+ }
1006
+ if (this.gcInterval && typeof clearInterval !== 'undefined') {
1007
+ clearInterval(this.gcInterval);
1008
+ }
1009
+ this.updateQueue = [];
1010
+ this.isProcessingQueue = false;
1011
+ }
1012
+ }
1013
+
1014
+ class MemoryManager {
1015
+ constructor(maxCacheSize = 1000) {
1016
+ this.itemCache = new Map();
1017
+ this.maxCacheSize = 1000; // Maximum items to keep in cache
1018
+ this.cleanupThreshold = 500; // Start cleanup when cache exceeds this
1019
+ this.visibleRange = { start: 0, end: 0 };
1020
+ this.totalItems = 0;
1021
+ this.maxCacheSize = maxCacheSize;
1022
+ }
1023
+ // Set visible range to optimize cache
1024
+ setVisibleRange(range) {
1025
+ this.visibleRange = range;
1026
+ }
1027
+ // Set total number of items
1028
+ setTotalItems(total) {
1029
+ this.totalItems = total;
1030
+ }
1031
+ // Get item from cache
1032
+ get(key) {
1033
+ return this.itemCache.get(key) || null;
1034
+ }
1035
+ // Set item in cache
1036
+ set(key, value) {
1037
+ this.itemCache.set(key, value);
1038
+ // Clean up if cache is too large
1039
+ if (this.itemCache.size > this.maxCacheSize) {
1040
+ this.cleanupCache();
1041
+ }
1042
+ }
1043
+ // Check if item exists in cache
1044
+ has(key) {
1045
+ return this.itemCache.has(key);
1046
+ }
1047
+ // Remove item from cache
1048
+ delete(key) {
1049
+ return this.itemCache.delete(key);
1050
+ }
1051
+ // Clear entire cache
1052
+ clear() {
1053
+ this.itemCache.clear();
1054
+ }
1055
+ // Clean up cache based on visibility and distance from visible range
1056
+ cleanupCache() {
1057
+ if (this.itemCache.size <= this.cleanupThreshold) {
1058
+ return; // No need to clean up
1059
+ }
1060
+ const itemsToRemove = [];
1061
+ // Find items that are far from visible range
1062
+ for (const [key] of this.itemCache.entries()) {
1063
+ const distanceFromVisible = this.getDistanceFromVisible(key);
1064
+ // Remove items that are far from visible range
1065
+ if (distanceFromVisible > 100) { // Arbitrary threshold
1066
+ itemsToRemove.push(key);
1067
+ }
1068
+ }
1069
+ // If we still have too many items, remove oldest accessed items
1070
+ if (this.itemCache.size - itemsToRemove.length > this.cleanupThreshold) {
1071
+ const sortedKeys = Array.from(this.itemCache.keys())
1072
+ .sort((a, b) => a - b); // Sort by key (assuming they're indexes)
1073
+ // Remove items that are furthest from visible range
1074
+ for (const key of sortedKeys) {
1075
+ if (this.itemCache.size <= this.cleanupThreshold)
1076
+ break;
1077
+ const distance = this.getDistanceFromVisible(key);
1078
+ if (distance > 50) { // Remove items beyond 50 units from visible
1079
+ itemsToRemove.push(key);
1080
+ }
1081
+ }
1082
+ }
1083
+ // Actually remove items
1084
+ for (const key of itemsToRemove) {
1085
+ this.itemCache.delete(key);
1086
+ }
1087
+ }
1088
+ // Calculate distance from visible range
1089
+ getDistanceFromVisible(index) {
1090
+ if (index >= this.visibleRange.start && index <= this.visibleRange.end) {
1091
+ return 0; // Inside visible range
1092
+ }
1093
+ if (index < this.visibleRange.start) {
1094
+ return this.visibleRange.start - index;
1095
+ }
1096
+ return index - this.visibleRange.end;
1097
+ }
1098
+ // Get cache statistics
1099
+ getStats() {
1100
+ const visibleItems = Array.from(this.itemCache.keys())
1101
+ .filter(key => key >= this.visibleRange.start && key <= this.visibleRange.end)
1102
+ .length;
1103
+ const offScreenItems = this.itemCache.size - visibleItems;
1104
+ // Rough estimate of memory usage (in bytes)
1105
+ let memoryEstimate = 0;
1106
+ for (const [_, value] of this.itemCache.entries()) {
1107
+ memoryEstimate += this.estimateObjectSize(value);
1108
+ }
1109
+ return {
1110
+ size: this.itemCache.size,
1111
+ maxCacheSize: this.maxCacheSize,
1112
+ visibleItems,
1113
+ offScreenItems,
1114
+ memoryEstimate
1115
+ };
1116
+ }
1117
+ // Estimate object size in bytes
1118
+ estimateObjectSize(obj) {
1119
+ if (obj === null || obj === undefined)
1120
+ return 0;
1121
+ if (typeof obj === 'string')
1122
+ return obj.length * 2; // UTF-16 chars
1123
+ if (typeof obj === 'number')
1124
+ return 8; // 8 bytes for number
1125
+ if (typeof obj === 'boolean')
1126
+ return 4; // 4 bytes for boolean
1127
+ if (typeof obj === 'object') {
1128
+ let size = 0;
1129
+ for (const key in obj) {
1130
+ if (obj.hasOwnProperty(key)) {
1131
+ size += key.length * 2; // Key size
1132
+ size += this.estimateObjectSize(obj[key]); // Value size
1133
+ }
1134
+ }
1135
+ return size;
1136
+ }
1137
+ return 0; // Other types
1138
+ }
1139
+ // Prune cache to only keep essential items
1140
+ pruneEssential() {
1141
+ const essentialItems = [];
1142
+ // Keep items in visible range and nearby
1143
+ for (const [key, value] of this.itemCache.entries()) {
1144
+ if (this.isEssential(key)) {
1145
+ essentialItems.push([key, value]);
1146
+ }
1147
+ }
1148
+ // Clear cache and repopulate with essential items
1149
+ this.itemCache.clear();
1150
+ for (const [key, value] of essentialItems) {
1151
+ this.itemCache.set(key, value);
1152
+ }
1153
+ }
1154
+ // Check if item is essential (within buffer zone)
1155
+ isEssential(index) {
1156
+ const bufferZone = 20; // Keep items within 20 positions of visible range
1157
+ return index >= (this.visibleRange.start - bufferZone) &&
1158
+ index <= (this.visibleRange.end + bufferZone);
1159
+ }
1160
+ // Get cache size
1161
+ getSize() {
1162
+ return this.itemCache.size;
1163
+ }
1164
+ // Get cache keys
1165
+ getKeys() {
1166
+ return Array.from(this.itemCache.keys());
1167
+ }
1168
+ }
1169
+
1170
+ class GPUAccelerator {
1171
+ constructor() {
1172
+ this.gpuAccelerationEnabled = false;
1173
+ this.gpuElements = new WeakSet();
1174
+ this.animationFrameId = null;
1175
+ this.gpuAccelerationEnabled = this.isGPUSupported();
1176
+ }
1177
+ // Check if GPU acceleration is supported
1178
+ isGPUSupported() {
1179
+ // Check if we're in a browser environment
1180
+ if (typeof document === 'undefined') {
1181
+ return false; // Not supported in Node.js environment
1182
+ }
1183
+ // Check for 3D transform support
1184
+ const testEl = document.createElement('div');
1185
+ return testEl.style.webkitTransform !== undefined ||
1186
+ testEl.style.transform !== undefined;
1187
+ }
1188
+ // Enable GPU acceleration for an element
1189
+ enableForElement(element) {
1190
+ if (!this.gpuAccelerationEnabled)
1191
+ return;
1192
+ // Apply GPU-accelerated styles
1193
+ element.style.willChange = 'transform';
1194
+ element.style.transform = 'translateZ(0)';
1195
+ element.style.backfaceVisibility = 'hidden';
1196
+ element.style.perspective = '1000px';
1197
+ // Add to tracked elements
1198
+ this.gpuElements.add(element);
1199
+ }
1200
+ // Disable GPU acceleration for an element
1201
+ disableForElement(element) {
1202
+ if (!this.gpuAccelerationEnabled)
1203
+ return;
1204
+ // Remove GPU-accelerated styles
1205
+ element.style.willChange = 'auto';
1206
+ element.style.transform = '';
1207
+ element.style.backfaceVisibility = '';
1208
+ element.style.perspective = '';
1209
+ // Remove from tracked elements
1210
+ this.gpuElements.delete(element);
1211
+ }
1212
+ // Apply GPU acceleration to a list of elements
1213
+ enableForElements(elements) {
1214
+ elements.forEach(el => this.enableForElement(el));
1215
+ }
1216
+ // Batch update GPU acceleration
1217
+ batchUpdate(elements, enable) {
1218
+ if (!this.gpuAccelerationEnabled)
1219
+ return;
1220
+ if (enable) {
1221
+ this.enableForElements(elements);
1222
+ }
1223
+ else {
1224
+ elements.forEach(el => this.disableForElement(el));
1225
+ }
1226
+ }
1227
+ // Optimize scrolling container for GPU acceleration
1228
+ optimizeScrollContainer(container) {
1229
+ if (!this.gpuAccelerationEnabled)
1230
+ return;
1231
+ // Apply optimizations to container
1232
+ container.style.transform = 'translateZ(0)';
1233
+ container.style.willChange = 'scroll-position';
1234
+ container.style.webkitOverflowScrolling = 'touch'; // For iOS
1235
+ }
1236
+ // Optimize individual items for GPU acceleration
1237
+ optimizeItem(item) {
1238
+ if (!this.gpuAccelerationEnabled)
1239
+ return;
1240
+ // Apply lightweight GPU acceleration
1241
+ item.style.transform = 'translateZ(0)';
1242
+ item.style.willChange = 'transform';
1243
+ }
1244
+ // Get GPU acceleration status
1245
+ getStatus() {
1246
+ // Since WeakSet doesn't have a size property, we can't count directly
1247
+ // This is a limitation of WeakSet
1248
+ return {
1249
+ enabled: this.gpuAccelerationEnabled,
1250
+ supported: this.isGPUSupported(),
1251
+ elementCount: 0 // Placeholder - would need different tracking method
1252
+ };
1253
+ }
1254
+ // Optimize for different scenarios
1255
+ optimizeForScenario(scenario) {
1256
+ if (!this.gpuAccelerationEnabled)
1257
+ return;
1258
+ switch (scenario) {
1259
+ case 'scrolling':
1260
+ // Optimize for smooth scrolling
1261
+ document.body.style.willChange = 'transform';
1262
+ break;
1263
+ case 'animation':
1264
+ // Optimize for animations
1265
+ document.body.style.transform = 'translateZ(0)';
1266
+ break;
1267
+ case 'static':
1268
+ // Remove optimizations when not needed
1269
+ document.body.style.willChange = 'auto';
1270
+ document.body.style.transform = '';
1271
+ break;
1272
+ }
1273
+ }
1274
+ // Cleanup GPU acceleration resources
1275
+ cleanup() {
1276
+ if (this.animationFrameId) {
1277
+ cancelAnimationFrame(this.animationFrameId);
1278
+ }
1279
+ // Reset any applied styles (would need to track them)
1280
+ this.gpuElements = new WeakSet();
1281
+ }
1282
+ // Check if element has GPU acceleration enabled
1283
+ isAccelerated(element) {
1284
+ return this.gpuElements.has(element);
1285
+ }
1286
+ // Get optimization recommendations
1287
+ getRecommendations() {
1288
+ const recommendations = [];
1289
+ if (!this.gpuAccelerationEnabled) {
1290
+ recommendations.push('GPU acceleration not supported on this device');
1291
+ }
1292
+ else {
1293
+ recommendations.push('GPU acceleration enabled for smooth performance');
1294
+ recommendations.push('Using hardware-accelerated compositing');
1295
+ recommendations.push('Optimized for 60fps rendering');
1296
+ }
1297
+ return recommendations;
1298
+ }
1299
+ }
1300
+
1301
+ class Engine {
1302
+ constructor(config) {
1303
+ this.fetchMoreCallback = null;
1304
+ this.config = {
1305
+ ...config,
1306
+ bufferSize: config.bufferSize || 5
1307
+ };
1308
+ this.windowManager = new WindowManager(this.config.itemHeight, this.config.viewportHeight, this.config.bufferSize);
1309
+ this.prefetchManager = new PrefetchManager(this.config.bufferSize);
1310
+ this.requestQueue = new RequestQueue(1); // Single request at a time
1311
+ this.intelligentScrollDetector = new IntelligentScrollDetector();
1312
+ this.networkDetector = new NetworkSpeedDetector();
1313
+ this.networkAwarePrefetchManager = new NetworkAwarePrefetchManager(this.networkDetector);
1314
+ this.networkAwareRequestQueue = new NetworkAwareRequestQueue(this.networkDetector);
1315
+ this.adaptiveBufferCalculator = new AdaptiveBufferCalculator();
1316
+ this.performanceOptimizer = new PerformanceOptimizer();
1317
+ this.memoryManager = new MemoryManager(1000); // Cache up to 1000 items
1318
+ this.gpuAccelerator = new GPUAccelerator();
1319
+ this.totalItems = this.config.totalItems || Number.MAX_SAFE_INTEGER;
1320
+ this.state = {
1321
+ scrollTop: 0,
1322
+ visibleRange: { start: 0, end: 0 },
1323
+ loadedItems: 0,
1324
+ isLoading: false
1325
+ };
1326
+ }
1327
+ /**
1328
+ * Update scroll position and recalculate visible range with intelligent detection
1329
+ */
1330
+ async updateScrollPosition(scrollTop) {
1331
+ // Use performance optimizer to schedule updates efficiently
1332
+ this.performanceOptimizer.scheduleOptimizedUpdate(async () => {
1333
+ // Calculate velocity and other intelligent metrics
1334
+ const velocity = this.intelligentScrollDetector.calculateVelocity(scrollTop);
1335
+ this.intelligentScrollDetector.getDirection(velocity);
1336
+ // Get network quality for adaptive buffering
1337
+ const networkQuality = await this.networkDetector.assessConnectionQuality();
1338
+ // Calculate adaptive buffer considering all factors
1339
+ const adaptiveBuffer = await this.adaptiveBufferCalculator.calculateOptimalBuffer({
1340
+ scrollVelocity: velocity,
1341
+ networkQuality,
1342
+ baseBuffer: this.intelligentScrollDetector.calculateBuffer(velocity),
1343
+ visibleItems: [] // In a real implementation, this would be the actual visible items
1344
+ });
1345
+ // Update window manager with adaptive buffer
1346
+ this.windowManager.updateBufferSize(adaptiveBuffer);
1347
+ // Update memory manager with visible range
1348
+ this.memoryManager.setVisibleRange({
1349
+ start: Math.max(0, this.state.visibleRange.start - adaptiveBuffer),
1350
+ end: this.state.visibleRange.end + adaptiveBuffer
1351
+ });
1352
+ this.state.scrollTop = scrollTop;
1353
+ this.state.visibleRange = this.windowManager.calculateVisibleRange(scrollTop);
1354
+ // Check if we need to fetch more items
1355
+ if (await this.shouldFetchMore()) {
1356
+ await this.fetchMore();
1357
+ }
1358
+ });
1359
+ }
1360
+ /**
1361
+ * Get the current visible range
1362
+ */
1363
+ getVisibleRange() {
1364
+ return this.state.visibleRange;
1365
+ }
1366
+ /**
1367
+ * Check if more items should be fetched with intelligent and network-aware detection
1368
+ */
1369
+ async shouldFetchMore() {
1370
+ if (!this.fetchMoreCallback)
1371
+ return false;
1372
+ if (this.state.isLoading)
1373
+ return false;
1374
+ if (this.state.loadedItems >= this.totalItems)
1375
+ return false;
1376
+ // Get current velocity for intelligent prefetching
1377
+ const velocity = this.intelligentScrollDetector.calculateVelocity(this.state.scrollTop);
1378
+ // Get network quality for adaptive prefetching
1379
+ await this.networkDetector.assessConnectionQuality();
1380
+ // Calculate network-adjusted prefetch distance
1381
+ const prefetchDistance = await this.networkAwarePrefetchManager.calculateNetworkAdjustedPrefetch(velocity);
1382
+ // Use intelligent prefetch logic
1383
+ const visibleEnd = this.state.visibleRange.end;
1384
+ const totalLoaded = this.state.loadedItems;
1385
+ // Intelligent prefetch: if visible end is approaching the loaded boundary
1386
+ return visibleEnd >= totalLoaded - prefetchDistance;
1387
+ }
1388
+ /**
1389
+ * Fetch more items with network awareness
1390
+ */
1391
+ async fetchMore() {
1392
+ if (!this.fetchMoreCallback || this.state.isLoading)
1393
+ return;
1394
+ this.state.isLoading = true;
1395
+ try {
1396
+ // Use network-aware request queue
1397
+ const result = await this.networkAwareRequestQueue.add(this.fetchMoreCallback);
1398
+ // Assuming the result contains new items
1399
+ // In a real implementation, this would update the loaded items count
1400
+ this.state.loadedItems += Array.isArray(result) ? result.length : 1;
1401
+ }
1402
+ catch (error) {
1403
+ console.error('Error fetching more items:', error);
1404
+ }
1405
+ finally {
1406
+ this.state.isLoading = false;
1407
+ }
1408
+ }
1409
+ /**
1410
+ * Set the fetchMore callback function
1411
+ */
1412
+ setFetchMoreCallback(callback) {
1413
+ this.fetchMoreCallback = callback;
1414
+ }
1415
+ /**
1416
+ * Update total items count
1417
+ */
1418
+ updateTotalItems(count) {
1419
+ this.totalItems = count;
1420
+ }
1421
+ /**
1422
+ * Get current engine state
1423
+ */
1424
+ getState() {
1425
+ return { ...this.state };
1426
+ }
1427
+ /**
1428
+ * Update viewport dimensions
1429
+ */
1430
+ updateDimensions(viewportHeight, itemHeight) {
1431
+ this.windowManager.updateViewportHeight(viewportHeight);
1432
+ this.windowManager.updateItemHeight(itemHeight);
1433
+ // Recalculate visible range with new dimensions
1434
+ this.state.visibleRange = this.windowManager.calculateVisibleRange(this.state.scrollTop);
1435
+ }
1436
+ /**
1437
+ * Cleanup resources
1438
+ */
1439
+ cleanup() {
1440
+ this.requestQueue.clear();
1441
+ this.networkAwareRequestQueue.clear();
1442
+ this.fetchMoreCallback = null;
1443
+ this.intelligentScrollDetector.cleanup();
1444
+ this.performanceOptimizer.cleanup();
1445
+ this.memoryManager.clear();
1446
+ }
1447
+ }
1448
+
1449
+ let LazyScrollDirective = (() => {
1450
+ let _classDecorators = [core.Directive({
1451
+ selector: '[lazyScroll]'
1452
+ })];
1453
+ let _classDescriptor;
1454
+ let _classExtraInitializers = [];
1455
+ let _classThis;
1456
+ let _items_decorators;
1457
+ let _items_initializers = [];
1458
+ let _items_extraInitializers = [];
1459
+ let _itemHeight_decorators;
1460
+ let _itemHeight_initializers = [];
1461
+ let _itemHeight_extraInitializers = [];
1462
+ let _viewportHeight_decorators;
1463
+ let _viewportHeight_initializers = [];
1464
+ let _viewportHeight_extraInitializers = [];
1465
+ let _bufferSize_decorators;
1466
+ let _bufferSize_initializers = [];
1467
+ let _bufferSize_extraInitializers = [];
1468
+ let _fetchMore_decorators;
1469
+ let _fetchMore_initializers = [];
1470
+ let _fetchMore_extraInitializers = [];
1471
+ let _visibleRangeChange_decorators;
1472
+ let _visibleRangeChange_initializers = [];
1473
+ let _visibleRangeChange_extraInitializers = [];
1474
+ let _loadingChange_decorators;
1475
+ let _loadingChange_initializers = [];
1476
+ let _loadingChange_extraInitializers = [];
1477
+ _classThis = class {
1478
+ constructor(el) {
1479
+ this.el = el;
1480
+ this.items = __runInitializers(this, _items_initializers, []);
1481
+ this.itemHeight = (__runInitializers(this, _items_extraInitializers), __runInitializers(this, _itemHeight_initializers, 50));
1482
+ this.viewportHeight = (__runInitializers(this, _itemHeight_extraInitializers), __runInitializers(this, _viewportHeight_initializers, 400));
1483
+ this.bufferSize = (__runInitializers(this, _viewportHeight_extraInitializers), __runInitializers(this, _bufferSize_initializers, 5));
1484
+ this.fetchMore = (__runInitializers(this, _bufferSize_extraInitializers), __runInitializers(this, _fetchMore_initializers, void 0));
1485
+ this.visibleRangeChange = (__runInitializers(this, _fetchMore_extraInitializers), __runInitializers(this, _visibleRangeChange_initializers, new core.EventEmitter()));
1486
+ this.loadingChange = (__runInitializers(this, _visibleRangeChange_extraInitializers), __runInitializers(this, _loadingChange_initializers, new core.EventEmitter()));
1487
+ this.engine = (__runInitializers(this, _loadingChange_extraInitializers), null);
1488
+ this.scrollListener = null;
1489
+ }
1490
+ ngOnInit() {
1491
+ const config = {
1492
+ itemHeight: this.itemHeight,
1493
+ viewportHeight: this.viewportHeight,
1494
+ bufferSize: this.bufferSize
1495
+ };
1496
+ this.engine = new Engine(config);
1497
+ if (this.fetchMore) {
1498
+ this.engine.setFetchMoreCallback(this.fetchMore);
1499
+ }
1500
+ // Add scroll listener
1501
+ this.scrollListener = () => {
1502
+ this.onScroll();
1503
+ };
1504
+ this.el.nativeElement.addEventListener('scroll', this.scrollListener, { passive: true });
1505
+ }
1506
+ ngOnDestroy() {
1507
+ if (this.scrollListener) {
1508
+ this.el.nativeElement.removeEventListener('scroll', this.scrollListener);
1509
+ }
1510
+ if (this.engine) {
1511
+ this.engine.cleanup();
1512
+ this.engine = null;
1513
+ }
1514
+ }
1515
+ onScroll() {
1516
+ if (this.engine) {
1517
+ const scrollTop = this.el.nativeElement.scrollTop;
1518
+ this.engine.updateScrollPosition(scrollTop);
1519
+ const state = this.engine.getState();
1520
+ this.visibleRangeChange.emit(state.visibleRange);
1521
+ this.loadingChange.emit(state.isLoading);
1522
+ }
1523
+ }
1524
+ // Method to refresh the scroll position
1525
+ refresh() {
1526
+ if (this.engine) {
1527
+ const scrollTop = this.el.nativeElement.scrollTop;
1528
+ this.engine.updateScrollPosition(scrollTop);
1529
+ }
1530
+ }
1531
+ // Method to get current visible range
1532
+ getVisibleRange() {
1533
+ if (this.engine) {
1534
+ return this.engine.getState().visibleRange;
1535
+ }
1536
+ return { start: 0, end: 0 };
1537
+ }
1538
+ };
1539
+ __setFunctionName(_classThis, "LazyScrollDirective");
1540
+ (() => {
1541
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
1542
+ _items_decorators = [core.Input()];
1543
+ _itemHeight_decorators = [core.Input()];
1544
+ _viewportHeight_decorators = [core.Input()];
1545
+ _bufferSize_decorators = [core.Input()];
1546
+ _fetchMore_decorators = [core.Input()];
1547
+ _visibleRangeChange_decorators = [core.Output()];
1548
+ _loadingChange_decorators = [core.Output()];
1549
+ __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);
1550
+ __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);
1551
+ __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);
1552
+ __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);
1553
+ __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);
1554
+ __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);
1555
+ __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);
1556
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
1557
+ _classThis = _classDescriptor.value;
1558
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
1559
+ __runInitializers(_classThis, _classExtraInitializers);
1560
+ })();
1561
+ return _classThis;
1562
+ })();
1563
+
1564
+ let LazyScrollComponent = (() => {
1565
+ let _classDecorators = [core.Component({
1566
+ selector: 'lazy-scroll',
1567
+ template: `
1568
+ <div
1569
+ class="lazy-scroll-container"
1570
+ [style.height.px]="viewportHeight"
1571
+ [style.overflow-y]="'auto'"
1572
+ [lazyScroll]="true"
1573
+ [items]="items"
1574
+ [itemHeight]="itemHeight"
1575
+ [viewportHeight]="viewportHeight"
1576
+ [bufferSize]="bufferSize"
1577
+ [fetchMore]="fetchMore"
1578
+ (visibleRangeChange)="onVisibleRangeChange($event)"
1579
+ (loadingChange)="onLoadingChange($event)"
1580
+ #scrollContainer
1581
+ >
1582
+ <!-- Top padding -->
1583
+ <div [style.height.px]="topPadding"></div>
1584
+
1585
+ <!-- Visible items -->
1586
+ <div
1587
+ *ngFor="let item of visibleItems; let i = index; trackBy: trackByFn"
1588
+ [style.height.px]="itemHeight"
1589
+ class="lazy-item"
1590
+ >
1591
+ <ng-container
1592
+ *ngTemplateOutlet="itemTemplate; context: { $implicit: item, index: visibleRange.start + i }">
1593
+ </ng-container>
1594
+ </div>
1595
+
1596
+ <!-- Bottom padding -->
1597
+ <div [style.height.px]="bottomPadding"></div>
1598
+
1599
+ <!-- Loading indicator -->
1600
+ <div *ngIf="isLoading" class="lazy-loading">
1601
+ Loading more items...
1602
+ </div>
1603
+ </div>
1604
+ `,
1605
+ styles: [`
1606
+ .lazy-scroll-container {
1607
+ position: relative;
1608
+ }
1609
+
1610
+ .lazy-item {
1611
+ width: 100%;
1612
+ }
1613
+
1614
+ .lazy-loading {
1615
+ text-align: center;
1616
+ padding: 20px;
1617
+ color: #666;
1618
+ }
1619
+ `]
1620
+ })];
1621
+ let _classDescriptor;
1622
+ let _classExtraInitializers = [];
1623
+ let _classThis;
1624
+ let _items_decorators;
1625
+ let _items_initializers = [];
1626
+ let _items_extraInitializers = [];
1627
+ let _itemHeight_decorators;
1628
+ let _itemHeight_initializers = [];
1629
+ let _itemHeight_extraInitializers = [];
1630
+ let _viewportHeight_decorators;
1631
+ let _viewportHeight_initializers = [];
1632
+ let _viewportHeight_extraInitializers = [];
1633
+ let _bufferSize_decorators;
1634
+ let _bufferSize_initializers = [];
1635
+ let _bufferSize_extraInitializers = [];
1636
+ let _fetchMore_decorators;
1637
+ let _fetchMore_initializers = [];
1638
+ let _fetchMore_extraInitializers = [];
1639
+ let _visibleRangeChange_decorators;
1640
+ let _visibleRangeChange_initializers = [];
1641
+ let _visibleRangeChange_extraInitializers = [];
1642
+ let _loadingChange_decorators;
1643
+ let _loadingChange_initializers = [];
1644
+ let _loadingChange_extraInitializers = [];
1645
+ let _itemTemplate_decorators;
1646
+ let _itemTemplate_initializers = [];
1647
+ let _itemTemplate_extraInitializers = [];
1648
+ _classThis = class {
1649
+ constructor() {
1650
+ this.items = __runInitializers(this, _items_initializers, []);
1651
+ this.itemHeight = (__runInitializers(this, _items_extraInitializers), __runInitializers(this, _itemHeight_initializers, 50));
1652
+ this.viewportHeight = (__runInitializers(this, _itemHeight_extraInitializers), __runInitializers(this, _viewportHeight_initializers, 400));
1653
+ this.bufferSize = (__runInitializers(this, _viewportHeight_extraInitializers), __runInitializers(this, _bufferSize_initializers, 5));
1654
+ this.fetchMore = (__runInitializers(this, _bufferSize_extraInitializers), __runInitializers(this, _fetchMore_initializers, void 0));
1655
+ this.visibleRangeChange = (__runInitializers(this, _fetchMore_extraInitializers), __runInitializers(this, _visibleRangeChange_initializers, new core.EventEmitter()));
1656
+ this.loadingChange = (__runInitializers(this, _visibleRangeChange_extraInitializers), __runInitializers(this, _loadingChange_initializers, new core.EventEmitter()));
1657
+ this.itemTemplate = (__runInitializers(this, _loadingChange_extraInitializers), __runInitializers(this, _itemTemplate_initializers, void 0));
1658
+ this.visibleRange = (__runInitializers(this, _itemTemplate_extraInitializers), { start: 0, end: 0 });
1659
+ this.isLoading = false;
1660
+ }
1661
+ get topPadding() {
1662
+ return this.visibleRange.start * this.itemHeight;
1663
+ }
1664
+ get bottomPadding() {
1665
+ return Math.max(0, (this.items.length - this.visibleRange.end) * this.itemHeight);
1666
+ }
1667
+ get visibleItems() {
1668
+ return this.items.slice(this.visibleRange.start, this.visibleRange.end);
1669
+ }
1670
+ ngAfterViewInit() {
1671
+ // Component initialized
1672
+ }
1673
+ ngOnDestroy() {
1674
+ // Cleanup if needed
1675
+ }
1676
+ onVisibleRangeChange(range) {
1677
+ this.visibleRange = range;
1678
+ this.visibleRangeChange.emit(range);
1679
+ }
1680
+ onLoadingChange(loading) {
1681
+ this.isLoading = loading;
1682
+ this.loadingChange.emit(loading);
1683
+ }
1684
+ trackByFn(index, item) {
1685
+ return item.id || index;
1686
+ }
1687
+ };
1688
+ __setFunctionName(_classThis, "LazyScrollComponent");
1689
+ (() => {
1690
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
1691
+ _items_decorators = [core.Input()];
1692
+ _itemHeight_decorators = [core.Input()];
1693
+ _viewportHeight_decorators = [core.Input()];
1694
+ _bufferSize_decorators = [core.Input()];
1695
+ _fetchMore_decorators = [core.Input()];
1696
+ _visibleRangeChange_decorators = [core.Output()];
1697
+ _loadingChange_decorators = [core.Output()];
1698
+ _itemTemplate_decorators = [core.ContentChild('itemTemplate', { read: core.TemplateRef })];
1699
+ __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);
1700
+ __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);
1701
+ __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);
1702
+ __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);
1703
+ __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);
1704
+ __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);
1705
+ __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);
1706
+ __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);
1707
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
1708
+ _classThis = _classDescriptor.value;
1709
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
1710
+ __runInitializers(_classThis, _classExtraInitializers);
1711
+ })();
1712
+ return _classThis;
1713
+ })();
1714
+
1715
+ exports.LazyScrollComponent = LazyScrollComponent;
1716
+ exports.LazyScrollDirective = LazyScrollDirective;
1717
+ //# sourceMappingURL=index.js.map