lazy-render-virtual-scroll 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/README.md +10 -0
  2. package/dist/angular/index.d.ts +57 -0
  3. package/dist/cjs/adapters/angular/lazy-scroll.component.d.ts +28 -0
  4. package/dist/cjs/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  5. package/dist/cjs/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  6. package/dist/cjs/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  7. package/dist/cjs/adapters/index.d.ts +7 -0
  8. package/dist/cjs/adapters/index.d.ts.map +1 -0
  9. package/dist/cjs/adapters/svelte/lazyScrollAction.d.ts +13 -0
  10. package/dist/cjs/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  11. package/dist/cjs/adapters/vue/useLazyScroll.d.ts +13 -0
  12. package/dist/cjs/adapters/vue/useLazyScroll.d.ts.map +1 -0
  13. package/dist/cjs/angular/adapters/angular/lazy-scroll.component.d.ts +28 -0
  14. package/dist/cjs/angular/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  15. package/dist/cjs/angular/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  16. package/dist/cjs/angular/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  17. package/dist/cjs/angular/adapters/index.d.ts +7 -0
  18. package/dist/cjs/angular/adapters/index.d.ts.map +1 -0
  19. package/dist/cjs/angular/adapters/react/LazyList.d.ts +12 -0
  20. package/dist/cjs/angular/adapters/react/LazyList.d.ts.map +1 -0
  21. package/dist/cjs/angular/adapters/react/useLazyList.d.ts +22 -0
  22. package/dist/cjs/angular/adapters/react/useLazyList.d.ts.map +1 -0
  23. package/dist/cjs/angular/adapters/svelte/lazyScrollAction.d.ts +13 -0
  24. package/dist/cjs/angular/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  25. package/dist/cjs/angular/adapters/vue/useLazyScroll.d.ts +13 -0
  26. package/dist/cjs/angular/adapters/vue/useLazyScroll.d.ts.map +1 -0
  27. package/dist/cjs/angular/core/AdaptiveBufferCalculator.d.ts +46 -0
  28. package/dist/cjs/angular/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  29. package/dist/cjs/angular/core/ContentComplexityAnalyzer.d.ts +13 -0
  30. package/dist/cjs/angular/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  31. package/dist/cjs/angular/core/DevicePerformanceMonitor.d.ts +22 -0
  32. package/dist/cjs/angular/core/DevicePerformanceMonitor.d.ts.map +1 -0
  33. package/dist/cjs/angular/core/Engine.d.ts +56 -0
  34. package/dist/cjs/angular/core/Engine.d.ts.map +1 -0
  35. package/dist/cjs/angular/core/GPUAccelerator.d.ts +23 -0
  36. package/dist/cjs/angular/core/GPUAccelerator.d.ts.map +1 -0
  37. package/dist/cjs/angular/core/IntelligentScrollDetector.d.ts +19 -0
  38. package/dist/cjs/angular/core/IntelligentScrollDetector.d.ts.map +1 -0
  39. package/dist/cjs/angular/core/MemoryManager.d.ts +33 -0
  40. package/dist/cjs/angular/core/MemoryManager.d.ts.map +1 -0
  41. package/dist/cjs/angular/core/NetworkAwarePrefetchManager.d.ts +10 -0
  42. package/dist/cjs/angular/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  43. package/dist/cjs/angular/core/NetworkAwareRequestQueue.d.ts +20 -0
  44. package/dist/cjs/angular/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  45. package/dist/cjs/angular/core/NetworkSpeedDetector.d.ts +16 -0
  46. package/dist/cjs/angular/core/NetworkSpeedDetector.d.ts.map +1 -0
  47. package/dist/cjs/angular/core/PerformanceOptimizer.d.ts +39 -0
  48. package/dist/cjs/angular/core/PerformanceOptimizer.d.ts.map +1 -0
  49. package/dist/cjs/angular/core/PrefetchManager.d.ts +16 -0
  50. package/dist/cjs/angular/core/PrefetchManager.d.ts.map +1 -0
  51. package/dist/cjs/angular/core/RequestQueue.d.ts +23 -0
  52. package/dist/cjs/angular/core/RequestQueue.d.ts.map +1 -0
  53. package/dist/cjs/angular/core/WindowManager.d.ts +24 -0
  54. package/dist/cjs/angular/core/WindowManager.d.ts.map +1 -0
  55. package/dist/cjs/angular/core/types.d.ts +28 -0
  56. package/dist/cjs/angular/core/types.d.ts.map +1 -0
  57. package/dist/cjs/angular/index.d.ts +23 -0
  58. package/dist/cjs/angular/index.d.ts.map +1 -0
  59. package/dist/cjs/angular/index.js +1717 -0
  60. package/dist/cjs/angular/index.js.map +1 -0
  61. package/dist/cjs/angular/platform/browser/ScrollObserver.d.ts +25 -0
  62. package/dist/cjs/angular/platform/browser/ScrollObserver.d.ts.map +1 -0
  63. package/dist/cjs/angular/utils/debounce.d.ts +5 -0
  64. package/dist/cjs/angular/utils/debounce.d.ts.map +1 -0
  65. package/dist/cjs/angular/utils/throttle.d.ts +5 -0
  66. package/dist/cjs/angular/utils/throttle.d.ts.map +1 -0
  67. package/dist/cjs/core/Engine.d.ts +3 -0
  68. package/dist/cjs/core/Engine.d.ts.map +1 -1
  69. package/dist/cjs/core/GPUAccelerator.d.ts +23 -0
  70. package/dist/cjs/core/GPUAccelerator.d.ts.map +1 -0
  71. package/dist/cjs/core/MemoryManager.d.ts +33 -0
  72. package/dist/cjs/core/MemoryManager.d.ts.map +1 -0
  73. package/dist/cjs/core/PerformanceOptimizer.d.ts +39 -0
  74. package/dist/cjs/core/PerformanceOptimizer.d.ts.map +1 -0
  75. package/dist/cjs/index.d.ts +5 -0
  76. package/dist/cjs/index.d.ts.map +1 -1
  77. package/dist/cjs/index.js +811 -19
  78. package/dist/cjs/index.js.map +1 -1
  79. package/dist/cjs/svelte/adapters/angular/lazy-scroll.component.d.ts +28 -0
  80. package/dist/cjs/svelte/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  81. package/dist/cjs/svelte/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  82. package/dist/cjs/svelte/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  83. package/dist/cjs/svelte/adapters/index.d.ts +7 -0
  84. package/dist/cjs/svelte/adapters/index.d.ts.map +1 -0
  85. package/dist/cjs/svelte/adapters/react/LazyList.d.ts +12 -0
  86. package/dist/cjs/svelte/adapters/react/LazyList.d.ts.map +1 -0
  87. package/dist/cjs/svelte/adapters/react/useLazyList.d.ts +22 -0
  88. package/dist/cjs/svelte/adapters/react/useLazyList.d.ts.map +1 -0
  89. package/dist/cjs/svelte/adapters/svelte/lazyScrollAction.d.ts +13 -0
  90. package/dist/cjs/svelte/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  91. package/dist/cjs/svelte/adapters/vue/useLazyScroll.d.ts +13 -0
  92. package/dist/cjs/svelte/adapters/vue/useLazyScroll.d.ts.map +1 -0
  93. package/dist/cjs/svelte/core/AdaptiveBufferCalculator.d.ts +46 -0
  94. package/dist/cjs/svelte/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  95. package/dist/cjs/svelte/core/ContentComplexityAnalyzer.d.ts +13 -0
  96. package/dist/cjs/svelte/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  97. package/dist/cjs/svelte/core/DevicePerformanceMonitor.d.ts +22 -0
  98. package/dist/cjs/svelte/core/DevicePerformanceMonitor.d.ts.map +1 -0
  99. package/dist/cjs/svelte/core/Engine.d.ts +56 -0
  100. package/dist/cjs/svelte/core/Engine.d.ts.map +1 -0
  101. package/dist/cjs/svelte/core/GPUAccelerator.d.ts +23 -0
  102. package/dist/cjs/svelte/core/GPUAccelerator.d.ts.map +1 -0
  103. package/dist/cjs/svelte/core/IntelligentScrollDetector.d.ts +19 -0
  104. package/dist/cjs/svelte/core/IntelligentScrollDetector.d.ts.map +1 -0
  105. package/dist/cjs/svelte/core/MemoryManager.d.ts +33 -0
  106. package/dist/cjs/svelte/core/MemoryManager.d.ts.map +1 -0
  107. package/dist/cjs/svelte/core/NetworkAwarePrefetchManager.d.ts +10 -0
  108. package/dist/cjs/svelte/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  109. package/dist/cjs/svelte/core/NetworkAwareRequestQueue.d.ts +20 -0
  110. package/dist/cjs/svelte/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  111. package/dist/cjs/svelte/core/NetworkSpeedDetector.d.ts +16 -0
  112. package/dist/cjs/svelte/core/NetworkSpeedDetector.d.ts.map +1 -0
  113. package/dist/cjs/svelte/core/PerformanceOptimizer.d.ts +39 -0
  114. package/dist/cjs/svelte/core/PerformanceOptimizer.d.ts.map +1 -0
  115. package/dist/cjs/svelte/core/PrefetchManager.d.ts +16 -0
  116. package/dist/cjs/svelte/core/PrefetchManager.d.ts.map +1 -0
  117. package/dist/cjs/svelte/core/RequestQueue.d.ts +23 -0
  118. package/dist/cjs/svelte/core/RequestQueue.d.ts.map +1 -0
  119. package/dist/cjs/svelte/core/WindowManager.d.ts +24 -0
  120. package/dist/cjs/svelte/core/WindowManager.d.ts.map +1 -0
  121. package/dist/cjs/svelte/core/types.d.ts +28 -0
  122. package/dist/cjs/svelte/core/types.d.ts.map +1 -0
  123. package/dist/cjs/svelte/index.d.ts +23 -0
  124. package/dist/cjs/svelte/index.d.ts.map +1 -0
  125. package/dist/cjs/svelte/index.js +1423 -0
  126. package/dist/cjs/svelte/index.js.map +1 -0
  127. package/dist/cjs/svelte/platform/browser/ScrollObserver.d.ts +25 -0
  128. package/dist/cjs/svelte/platform/browser/ScrollObserver.d.ts.map +1 -0
  129. package/dist/cjs/svelte/utils/debounce.d.ts +5 -0
  130. package/dist/cjs/svelte/utils/debounce.d.ts.map +1 -0
  131. package/dist/cjs/svelte/utils/throttle.d.ts +5 -0
  132. package/dist/cjs/svelte/utils/throttle.d.ts.map +1 -0
  133. package/dist/cjs/vanilla/adapters/angular/lazy-scroll.component.d.ts +28 -0
  134. package/dist/cjs/vanilla/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  135. package/dist/cjs/vanilla/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  136. package/dist/cjs/vanilla/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  137. package/dist/cjs/vanilla/adapters/index.d.ts +7 -0
  138. package/dist/cjs/vanilla/adapters/index.d.ts.map +1 -0
  139. package/dist/cjs/vanilla/adapters/react/LazyList.d.ts +12 -0
  140. package/dist/cjs/vanilla/adapters/react/LazyList.d.ts.map +1 -0
  141. package/dist/cjs/vanilla/adapters/react/useLazyList.d.ts +22 -0
  142. package/dist/cjs/vanilla/adapters/react/useLazyList.d.ts.map +1 -0
  143. package/dist/cjs/vanilla/adapters/svelte/lazyScrollAction.d.ts +13 -0
  144. package/dist/cjs/vanilla/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  145. package/dist/cjs/vanilla/adapters/vue/useLazyScroll.d.ts +13 -0
  146. package/dist/cjs/vanilla/adapters/vue/useLazyScroll.d.ts.map +1 -0
  147. package/dist/cjs/vanilla/core/AdaptiveBufferCalculator.d.ts +46 -0
  148. package/dist/cjs/vanilla/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  149. package/dist/cjs/vanilla/core/ContentComplexityAnalyzer.d.ts +13 -0
  150. package/dist/cjs/vanilla/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  151. package/dist/cjs/vanilla/core/DevicePerformanceMonitor.d.ts +22 -0
  152. package/dist/cjs/vanilla/core/DevicePerformanceMonitor.d.ts.map +1 -0
  153. package/dist/cjs/vanilla/core/Engine.d.ts +56 -0
  154. package/dist/cjs/vanilla/core/Engine.d.ts.map +1 -0
  155. package/dist/cjs/vanilla/core/GPUAccelerator.d.ts +23 -0
  156. package/dist/cjs/vanilla/core/GPUAccelerator.d.ts.map +1 -0
  157. package/dist/cjs/vanilla/core/IntelligentScrollDetector.d.ts +19 -0
  158. package/dist/cjs/vanilla/core/IntelligentScrollDetector.d.ts.map +1 -0
  159. package/dist/cjs/vanilla/core/MemoryManager.d.ts +33 -0
  160. package/dist/cjs/vanilla/core/MemoryManager.d.ts.map +1 -0
  161. package/dist/cjs/vanilla/core/NetworkAwarePrefetchManager.d.ts +10 -0
  162. package/dist/cjs/vanilla/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  163. package/dist/cjs/vanilla/core/NetworkAwareRequestQueue.d.ts +20 -0
  164. package/dist/cjs/vanilla/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  165. package/dist/cjs/vanilla/core/NetworkSpeedDetector.d.ts +16 -0
  166. package/dist/cjs/vanilla/core/NetworkSpeedDetector.d.ts.map +1 -0
  167. package/dist/cjs/vanilla/core/PerformanceOptimizer.d.ts +39 -0
  168. package/dist/cjs/vanilla/core/PerformanceOptimizer.d.ts.map +1 -0
  169. package/dist/cjs/vanilla/core/PrefetchManager.d.ts +16 -0
  170. package/dist/cjs/vanilla/core/PrefetchManager.d.ts.map +1 -0
  171. package/dist/cjs/vanilla/core/RequestQueue.d.ts +23 -0
  172. package/dist/cjs/vanilla/core/RequestQueue.d.ts.map +1 -0
  173. package/dist/cjs/vanilla/core/WindowManager.d.ts +24 -0
  174. package/dist/cjs/vanilla/core/WindowManager.d.ts.map +1 -0
  175. package/dist/cjs/vanilla/core/types.d.ts +28 -0
  176. package/dist/cjs/vanilla/core/types.d.ts.map +1 -0
  177. package/dist/cjs/vanilla/index.d.ts +23 -0
  178. package/dist/cjs/vanilla/index.d.ts.map +1 -0
  179. package/dist/cjs/vanilla/index.js +1670 -0
  180. package/dist/cjs/vanilla/index.js.map +1 -0
  181. package/dist/cjs/vanilla/platform/browser/ScrollObserver.d.ts +25 -0
  182. package/dist/cjs/vanilla/platform/browser/ScrollObserver.d.ts.map +1 -0
  183. package/dist/cjs/vanilla/utils/debounce.d.ts +5 -0
  184. package/dist/cjs/vanilla/utils/debounce.d.ts.map +1 -0
  185. package/dist/cjs/vanilla/utils/throttle.d.ts +5 -0
  186. package/dist/cjs/vanilla/utils/throttle.d.ts.map +1 -0
  187. package/dist/cjs/vue/adapters/angular/lazy-scroll.component.d.ts +28 -0
  188. package/dist/cjs/vue/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  189. package/dist/cjs/vue/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  190. package/dist/cjs/vue/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  191. package/dist/cjs/vue/adapters/index.d.ts +7 -0
  192. package/dist/cjs/vue/adapters/index.d.ts.map +1 -0
  193. package/dist/cjs/vue/adapters/react/LazyList.d.ts +12 -0
  194. package/dist/cjs/vue/adapters/react/LazyList.d.ts.map +1 -0
  195. package/dist/cjs/vue/adapters/react/useLazyList.d.ts +22 -0
  196. package/dist/cjs/vue/adapters/react/useLazyList.d.ts.map +1 -0
  197. package/dist/cjs/vue/adapters/svelte/lazyScrollAction.d.ts +13 -0
  198. package/dist/cjs/vue/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  199. package/dist/cjs/vue/adapters/vue/useLazyScroll.d.ts +13 -0
  200. package/dist/cjs/vue/adapters/vue/useLazyScroll.d.ts.map +1 -0
  201. package/dist/cjs/vue/core/AdaptiveBufferCalculator.d.ts +46 -0
  202. package/dist/cjs/vue/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  203. package/dist/cjs/vue/core/ContentComplexityAnalyzer.d.ts +13 -0
  204. package/dist/cjs/vue/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  205. package/dist/cjs/vue/core/DevicePerformanceMonitor.d.ts +22 -0
  206. package/dist/cjs/vue/core/DevicePerformanceMonitor.d.ts.map +1 -0
  207. package/dist/cjs/vue/core/Engine.d.ts +56 -0
  208. package/dist/cjs/vue/core/Engine.d.ts.map +1 -0
  209. package/dist/cjs/vue/core/GPUAccelerator.d.ts +23 -0
  210. package/dist/cjs/vue/core/GPUAccelerator.d.ts.map +1 -0
  211. package/dist/cjs/vue/core/IntelligentScrollDetector.d.ts +19 -0
  212. package/dist/cjs/vue/core/IntelligentScrollDetector.d.ts.map +1 -0
  213. package/dist/cjs/vue/core/MemoryManager.d.ts +33 -0
  214. package/dist/cjs/vue/core/MemoryManager.d.ts.map +1 -0
  215. package/dist/cjs/vue/core/NetworkAwarePrefetchManager.d.ts +10 -0
  216. package/dist/cjs/vue/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  217. package/dist/cjs/vue/core/NetworkAwareRequestQueue.d.ts +20 -0
  218. package/dist/cjs/vue/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  219. package/dist/cjs/vue/core/NetworkSpeedDetector.d.ts +16 -0
  220. package/dist/cjs/vue/core/NetworkSpeedDetector.d.ts.map +1 -0
  221. package/dist/cjs/vue/core/PerformanceOptimizer.d.ts +39 -0
  222. package/dist/cjs/vue/core/PerformanceOptimizer.d.ts.map +1 -0
  223. package/dist/cjs/vue/core/PrefetchManager.d.ts +16 -0
  224. package/dist/cjs/vue/core/PrefetchManager.d.ts.map +1 -0
  225. package/dist/cjs/vue/core/RequestQueue.d.ts +23 -0
  226. package/dist/cjs/vue/core/RequestQueue.d.ts.map +1 -0
  227. package/dist/cjs/vue/core/WindowManager.d.ts +24 -0
  228. package/dist/cjs/vue/core/WindowManager.d.ts.map +1 -0
  229. package/dist/cjs/vue/core/types.d.ts +28 -0
  230. package/dist/cjs/vue/core/types.d.ts.map +1 -0
  231. package/dist/cjs/vue/index.d.ts +23 -0
  232. package/dist/cjs/vue/index.d.ts.map +1 -0
  233. package/dist/cjs/vue/index.js +1443 -0
  234. package/dist/cjs/vue/index.js.map +1 -0
  235. package/dist/cjs/vue/platform/browser/ScrollObserver.d.ts +25 -0
  236. package/dist/cjs/vue/platform/browser/ScrollObserver.d.ts.map +1 -0
  237. package/dist/cjs/vue/utils/debounce.d.ts +5 -0
  238. package/dist/cjs/vue/utils/debounce.d.ts.map +1 -0
  239. package/dist/cjs/vue/utils/throttle.d.ts +5 -0
  240. package/dist/cjs/vue/utils/throttle.d.ts.map +1 -0
  241. package/dist/esm/adapters/angular/lazy-scroll.component.d.ts +28 -0
  242. package/dist/esm/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  243. package/dist/esm/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  244. package/dist/esm/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  245. package/dist/esm/adapters/index.d.ts +7 -0
  246. package/dist/esm/adapters/index.d.ts.map +1 -0
  247. package/dist/esm/adapters/svelte/lazyScrollAction.d.ts +13 -0
  248. package/dist/esm/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  249. package/dist/esm/adapters/vue/useLazyScroll.d.ts +13 -0
  250. package/dist/esm/adapters/vue/useLazyScroll.d.ts.map +1 -0
  251. package/dist/esm/angular/adapters/angular/lazy-scroll.component.d.ts +28 -0
  252. package/dist/esm/angular/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  253. package/dist/esm/angular/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  254. package/dist/esm/angular/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  255. package/dist/esm/angular/adapters/index.d.ts +7 -0
  256. package/dist/esm/angular/adapters/index.d.ts.map +1 -0
  257. package/dist/esm/angular/adapters/react/LazyList.d.ts +12 -0
  258. package/dist/esm/angular/adapters/react/LazyList.d.ts.map +1 -0
  259. package/dist/esm/angular/adapters/react/useLazyList.d.ts +22 -0
  260. package/dist/esm/angular/adapters/react/useLazyList.d.ts.map +1 -0
  261. package/dist/esm/angular/adapters/svelte/lazyScrollAction.d.ts +13 -0
  262. package/dist/esm/angular/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  263. package/dist/esm/angular/adapters/vue/useLazyScroll.d.ts +13 -0
  264. package/dist/esm/angular/adapters/vue/useLazyScroll.d.ts.map +1 -0
  265. package/dist/esm/angular/core/AdaptiveBufferCalculator.d.ts +46 -0
  266. package/dist/esm/angular/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  267. package/dist/esm/angular/core/ContentComplexityAnalyzer.d.ts +13 -0
  268. package/dist/esm/angular/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  269. package/dist/esm/angular/core/DevicePerformanceMonitor.d.ts +22 -0
  270. package/dist/esm/angular/core/DevicePerformanceMonitor.d.ts.map +1 -0
  271. package/dist/esm/angular/core/Engine.d.ts +56 -0
  272. package/dist/esm/angular/core/Engine.d.ts.map +1 -0
  273. package/dist/esm/angular/core/GPUAccelerator.d.ts +23 -0
  274. package/dist/esm/angular/core/GPUAccelerator.d.ts.map +1 -0
  275. package/dist/esm/angular/core/IntelligentScrollDetector.d.ts +19 -0
  276. package/dist/esm/angular/core/IntelligentScrollDetector.d.ts.map +1 -0
  277. package/dist/esm/angular/core/MemoryManager.d.ts +33 -0
  278. package/dist/esm/angular/core/MemoryManager.d.ts.map +1 -0
  279. package/dist/esm/angular/core/NetworkAwarePrefetchManager.d.ts +10 -0
  280. package/dist/esm/angular/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  281. package/dist/esm/angular/core/NetworkAwareRequestQueue.d.ts +20 -0
  282. package/dist/esm/angular/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  283. package/dist/esm/angular/core/NetworkSpeedDetector.d.ts +16 -0
  284. package/dist/esm/angular/core/NetworkSpeedDetector.d.ts.map +1 -0
  285. package/dist/esm/angular/core/PerformanceOptimizer.d.ts +39 -0
  286. package/dist/esm/angular/core/PerformanceOptimizer.d.ts.map +1 -0
  287. package/dist/esm/angular/core/PrefetchManager.d.ts +16 -0
  288. package/dist/esm/angular/core/PrefetchManager.d.ts.map +1 -0
  289. package/dist/esm/angular/core/RequestQueue.d.ts +23 -0
  290. package/dist/esm/angular/core/RequestQueue.d.ts.map +1 -0
  291. package/dist/esm/angular/core/WindowManager.d.ts +24 -0
  292. package/dist/esm/angular/core/WindowManager.d.ts.map +1 -0
  293. package/dist/esm/angular/core/types.d.ts +28 -0
  294. package/dist/esm/angular/core/types.d.ts.map +1 -0
  295. package/dist/esm/angular/index.d.ts +23 -0
  296. package/dist/esm/angular/index.d.ts.map +1 -0
  297. package/dist/esm/angular/index.js +1714 -0
  298. package/dist/esm/angular/index.js.map +1 -0
  299. package/dist/esm/angular/platform/browser/ScrollObserver.d.ts +25 -0
  300. package/dist/esm/angular/platform/browser/ScrollObserver.d.ts.map +1 -0
  301. package/dist/esm/angular/utils/debounce.d.ts +5 -0
  302. package/dist/esm/angular/utils/debounce.d.ts.map +1 -0
  303. package/dist/esm/angular/utils/throttle.d.ts +5 -0
  304. package/dist/esm/angular/utils/throttle.d.ts.map +1 -0
  305. package/dist/esm/core/Engine.d.ts +3 -0
  306. package/dist/esm/core/Engine.d.ts.map +1 -1
  307. package/dist/esm/core/GPUAccelerator.d.ts +23 -0
  308. package/dist/esm/core/GPUAccelerator.d.ts.map +1 -0
  309. package/dist/esm/core/MemoryManager.d.ts +33 -0
  310. package/dist/esm/core/MemoryManager.d.ts.map +1 -0
  311. package/dist/esm/core/PerformanceOptimizer.d.ts +39 -0
  312. package/dist/esm/core/PerformanceOptimizer.d.ts.map +1 -0
  313. package/dist/esm/index.d.ts +5 -0
  314. package/dist/esm/index.d.ts.map +1 -1
  315. package/dist/esm/index.js +806 -20
  316. package/dist/esm/index.js.map +1 -1
  317. package/dist/esm/svelte/adapters/angular/lazy-scroll.component.d.ts +28 -0
  318. package/dist/esm/svelte/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  319. package/dist/esm/svelte/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  320. package/dist/esm/svelte/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  321. package/dist/esm/svelte/adapters/index.d.ts +7 -0
  322. package/dist/esm/svelte/adapters/index.d.ts.map +1 -0
  323. package/dist/esm/svelte/adapters/react/LazyList.d.ts +12 -0
  324. package/dist/esm/svelte/adapters/react/LazyList.d.ts.map +1 -0
  325. package/dist/esm/svelte/adapters/react/useLazyList.d.ts +22 -0
  326. package/dist/esm/svelte/adapters/react/useLazyList.d.ts.map +1 -0
  327. package/dist/esm/svelte/adapters/svelte/lazyScrollAction.d.ts +13 -0
  328. package/dist/esm/svelte/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  329. package/dist/esm/svelte/adapters/vue/useLazyScroll.d.ts +13 -0
  330. package/dist/esm/svelte/adapters/vue/useLazyScroll.d.ts.map +1 -0
  331. package/dist/esm/svelte/core/AdaptiveBufferCalculator.d.ts +46 -0
  332. package/dist/esm/svelte/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  333. package/dist/esm/svelte/core/ContentComplexityAnalyzer.d.ts +13 -0
  334. package/dist/esm/svelte/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  335. package/dist/esm/svelte/core/DevicePerformanceMonitor.d.ts +22 -0
  336. package/dist/esm/svelte/core/DevicePerformanceMonitor.d.ts.map +1 -0
  337. package/dist/esm/svelte/core/Engine.d.ts +56 -0
  338. package/dist/esm/svelte/core/Engine.d.ts.map +1 -0
  339. package/dist/esm/svelte/core/GPUAccelerator.d.ts +23 -0
  340. package/dist/esm/svelte/core/GPUAccelerator.d.ts.map +1 -0
  341. package/dist/esm/svelte/core/IntelligentScrollDetector.d.ts +19 -0
  342. package/dist/esm/svelte/core/IntelligentScrollDetector.d.ts.map +1 -0
  343. package/dist/esm/svelte/core/MemoryManager.d.ts +33 -0
  344. package/dist/esm/svelte/core/MemoryManager.d.ts.map +1 -0
  345. package/dist/esm/svelte/core/NetworkAwarePrefetchManager.d.ts +10 -0
  346. package/dist/esm/svelte/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  347. package/dist/esm/svelte/core/NetworkAwareRequestQueue.d.ts +20 -0
  348. package/dist/esm/svelte/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  349. package/dist/esm/svelte/core/NetworkSpeedDetector.d.ts +16 -0
  350. package/dist/esm/svelte/core/NetworkSpeedDetector.d.ts.map +1 -0
  351. package/dist/esm/svelte/core/PerformanceOptimizer.d.ts +39 -0
  352. package/dist/esm/svelte/core/PerformanceOptimizer.d.ts.map +1 -0
  353. package/dist/esm/svelte/core/PrefetchManager.d.ts +16 -0
  354. package/dist/esm/svelte/core/PrefetchManager.d.ts.map +1 -0
  355. package/dist/esm/svelte/core/RequestQueue.d.ts +23 -0
  356. package/dist/esm/svelte/core/RequestQueue.d.ts.map +1 -0
  357. package/dist/esm/svelte/core/WindowManager.d.ts +24 -0
  358. package/dist/esm/svelte/core/WindowManager.d.ts.map +1 -0
  359. package/dist/esm/svelte/core/types.d.ts +28 -0
  360. package/dist/esm/svelte/core/types.d.ts.map +1 -0
  361. package/dist/esm/svelte/index.d.ts +23 -0
  362. package/dist/esm/svelte/index.d.ts.map +1 -0
  363. package/dist/esm/svelte/index.js +1421 -0
  364. package/dist/esm/svelte/index.js.map +1 -0
  365. package/dist/esm/svelte/platform/browser/ScrollObserver.d.ts +25 -0
  366. package/dist/esm/svelte/platform/browser/ScrollObserver.d.ts.map +1 -0
  367. package/dist/esm/svelte/utils/debounce.d.ts +5 -0
  368. package/dist/esm/svelte/utils/debounce.d.ts.map +1 -0
  369. package/dist/esm/svelte/utils/throttle.d.ts +5 -0
  370. package/dist/esm/svelte/utils/throttle.d.ts.map +1 -0
  371. package/dist/esm/vanilla/adapters/angular/lazy-scroll.component.d.ts +28 -0
  372. package/dist/esm/vanilla/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  373. package/dist/esm/vanilla/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  374. package/dist/esm/vanilla/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  375. package/dist/esm/vanilla/adapters/index.d.ts +7 -0
  376. package/dist/esm/vanilla/adapters/index.d.ts.map +1 -0
  377. package/dist/esm/vanilla/adapters/react/LazyList.d.ts +12 -0
  378. package/dist/esm/vanilla/adapters/react/LazyList.d.ts.map +1 -0
  379. package/dist/esm/vanilla/adapters/react/useLazyList.d.ts +22 -0
  380. package/dist/esm/vanilla/adapters/react/useLazyList.d.ts.map +1 -0
  381. package/dist/esm/vanilla/adapters/svelte/lazyScrollAction.d.ts +13 -0
  382. package/dist/esm/vanilla/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  383. package/dist/esm/vanilla/adapters/vue/useLazyScroll.d.ts +13 -0
  384. package/dist/esm/vanilla/adapters/vue/useLazyScroll.d.ts.map +1 -0
  385. package/dist/esm/vanilla/core/AdaptiveBufferCalculator.d.ts +46 -0
  386. package/dist/esm/vanilla/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  387. package/dist/esm/vanilla/core/ContentComplexityAnalyzer.d.ts +13 -0
  388. package/dist/esm/vanilla/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  389. package/dist/esm/vanilla/core/DevicePerformanceMonitor.d.ts +22 -0
  390. package/dist/esm/vanilla/core/DevicePerformanceMonitor.d.ts.map +1 -0
  391. package/dist/esm/vanilla/core/Engine.d.ts +56 -0
  392. package/dist/esm/vanilla/core/Engine.d.ts.map +1 -0
  393. package/dist/esm/vanilla/core/GPUAccelerator.d.ts +23 -0
  394. package/dist/esm/vanilla/core/GPUAccelerator.d.ts.map +1 -0
  395. package/dist/esm/vanilla/core/IntelligentScrollDetector.d.ts +19 -0
  396. package/dist/esm/vanilla/core/IntelligentScrollDetector.d.ts.map +1 -0
  397. package/dist/esm/vanilla/core/MemoryManager.d.ts +33 -0
  398. package/dist/esm/vanilla/core/MemoryManager.d.ts.map +1 -0
  399. package/dist/esm/vanilla/core/NetworkAwarePrefetchManager.d.ts +10 -0
  400. package/dist/esm/vanilla/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  401. package/dist/esm/vanilla/core/NetworkAwareRequestQueue.d.ts +20 -0
  402. package/dist/esm/vanilla/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  403. package/dist/esm/vanilla/core/NetworkSpeedDetector.d.ts +16 -0
  404. package/dist/esm/vanilla/core/NetworkSpeedDetector.d.ts.map +1 -0
  405. package/dist/esm/vanilla/core/PerformanceOptimizer.d.ts +39 -0
  406. package/dist/esm/vanilla/core/PerformanceOptimizer.d.ts.map +1 -0
  407. package/dist/esm/vanilla/core/PrefetchManager.d.ts +16 -0
  408. package/dist/esm/vanilla/core/PrefetchManager.d.ts.map +1 -0
  409. package/dist/esm/vanilla/core/RequestQueue.d.ts +23 -0
  410. package/dist/esm/vanilla/core/RequestQueue.d.ts.map +1 -0
  411. package/dist/esm/vanilla/core/WindowManager.d.ts +24 -0
  412. package/dist/esm/vanilla/core/WindowManager.d.ts.map +1 -0
  413. package/dist/esm/vanilla/core/types.d.ts +28 -0
  414. package/dist/esm/vanilla/core/types.d.ts.map +1 -0
  415. package/dist/esm/vanilla/index.d.ts +23 -0
  416. package/dist/esm/vanilla/index.d.ts.map +1 -0
  417. package/dist/esm/vanilla/index.js +1666 -0
  418. package/dist/esm/vanilla/index.js.map +1 -0
  419. package/dist/esm/vanilla/platform/browser/ScrollObserver.d.ts +25 -0
  420. package/dist/esm/vanilla/platform/browser/ScrollObserver.d.ts.map +1 -0
  421. package/dist/esm/vanilla/utils/debounce.d.ts +5 -0
  422. package/dist/esm/vanilla/utils/debounce.d.ts.map +1 -0
  423. package/dist/esm/vanilla/utils/throttle.d.ts +5 -0
  424. package/dist/esm/vanilla/utils/throttle.d.ts.map +1 -0
  425. package/dist/esm/vue/adapters/angular/lazy-scroll.component.d.ts +28 -0
  426. package/dist/esm/vue/adapters/angular/lazy-scroll.component.d.ts.map +1 -0
  427. package/dist/esm/vue/adapters/angular/lazy-scroll.directive.d.ts +21 -0
  428. package/dist/esm/vue/adapters/angular/lazy-scroll.directive.d.ts.map +1 -0
  429. package/dist/esm/vue/adapters/index.d.ts +7 -0
  430. package/dist/esm/vue/adapters/index.d.ts.map +1 -0
  431. package/dist/esm/vue/adapters/react/LazyList.d.ts +12 -0
  432. package/dist/esm/vue/adapters/react/LazyList.d.ts.map +1 -0
  433. package/dist/esm/vue/adapters/react/useLazyList.d.ts +22 -0
  434. package/dist/esm/vue/adapters/react/useLazyList.d.ts.map +1 -0
  435. package/dist/esm/vue/adapters/svelte/lazyScrollAction.d.ts +13 -0
  436. package/dist/esm/vue/adapters/svelte/lazyScrollAction.d.ts.map +1 -0
  437. package/dist/esm/vue/adapters/vue/useLazyScroll.d.ts +13 -0
  438. package/dist/esm/vue/adapters/vue/useLazyScroll.d.ts.map +1 -0
  439. package/dist/esm/vue/core/AdaptiveBufferCalculator.d.ts +46 -0
  440. package/dist/esm/vue/core/AdaptiveBufferCalculator.d.ts.map +1 -0
  441. package/dist/esm/vue/core/ContentComplexityAnalyzer.d.ts +13 -0
  442. package/dist/esm/vue/core/ContentComplexityAnalyzer.d.ts.map +1 -0
  443. package/dist/esm/vue/core/DevicePerformanceMonitor.d.ts +22 -0
  444. package/dist/esm/vue/core/DevicePerformanceMonitor.d.ts.map +1 -0
  445. package/dist/esm/vue/core/Engine.d.ts +56 -0
  446. package/dist/esm/vue/core/Engine.d.ts.map +1 -0
  447. package/dist/esm/vue/core/GPUAccelerator.d.ts +23 -0
  448. package/dist/esm/vue/core/GPUAccelerator.d.ts.map +1 -0
  449. package/dist/esm/vue/core/IntelligentScrollDetector.d.ts +19 -0
  450. package/dist/esm/vue/core/IntelligentScrollDetector.d.ts.map +1 -0
  451. package/dist/esm/vue/core/MemoryManager.d.ts +33 -0
  452. package/dist/esm/vue/core/MemoryManager.d.ts.map +1 -0
  453. package/dist/esm/vue/core/NetworkAwarePrefetchManager.d.ts +10 -0
  454. package/dist/esm/vue/core/NetworkAwarePrefetchManager.d.ts.map +1 -0
  455. package/dist/esm/vue/core/NetworkAwareRequestQueue.d.ts +20 -0
  456. package/dist/esm/vue/core/NetworkAwareRequestQueue.d.ts.map +1 -0
  457. package/dist/esm/vue/core/NetworkSpeedDetector.d.ts +16 -0
  458. package/dist/esm/vue/core/NetworkSpeedDetector.d.ts.map +1 -0
  459. package/dist/esm/vue/core/PerformanceOptimizer.d.ts +39 -0
  460. package/dist/esm/vue/core/PerformanceOptimizer.d.ts.map +1 -0
  461. package/dist/esm/vue/core/PrefetchManager.d.ts +16 -0
  462. package/dist/esm/vue/core/PrefetchManager.d.ts.map +1 -0
  463. package/dist/esm/vue/core/RequestQueue.d.ts +23 -0
  464. package/dist/esm/vue/core/RequestQueue.d.ts.map +1 -0
  465. package/dist/esm/vue/core/WindowManager.d.ts +24 -0
  466. package/dist/esm/vue/core/WindowManager.d.ts.map +1 -0
  467. package/dist/esm/vue/core/types.d.ts +28 -0
  468. package/dist/esm/vue/core/types.d.ts.map +1 -0
  469. package/dist/esm/vue/index.d.ts +23 -0
  470. package/dist/esm/vue/index.d.ts.map +1 -0
  471. package/dist/esm/vue/index.js +1441 -0
  472. package/dist/esm/vue/index.js.map +1 -0
  473. package/dist/esm/vue/platform/browser/ScrollObserver.d.ts +25 -0
  474. package/dist/esm/vue/platform/browser/ScrollObserver.d.ts.map +1 -0
  475. package/dist/esm/vue/utils/debounce.d.ts +5 -0
  476. package/dist/esm/vue/utils/debounce.d.ts.map +1 -0
  477. package/dist/esm/vue/utils/throttle.d.ts +5 -0
  478. package/dist/esm/vue/utils/throttle.d.ts.map +1 -0
  479. package/dist/index.d.ts +379 -1
  480. package/dist/svelte/index.d.ts +16 -0
  481. package/dist/vanilla/index.d.ts +356 -0
  482. package/dist/vue/index.d.ts +22 -0
  483. package/package.json +28 -1
package/dist/esm/index.js CHANGED
@@ -743,6 +743,499 @@ class AdaptiveBufferCalculator {
743
743
  }
744
744
  }
745
745
 
746
+ class PerformanceOptimizer {
747
+ constructor() {
748
+ this.frameBudget = 16; // Target for 60fps (16.67ms per frame)
749
+ this.lastFrameTime = 0;
750
+ this.animationFrameId = null;
751
+ this.isOptimizing = false;
752
+ // Frame rate limiter to prevent excessive updates
753
+ this.lastUpdate = 0;
754
+ this.minUpdateInterval = 16; // Minimum 16ms between updates (60fps)
755
+ // Batch updates to reduce DOM manipulations
756
+ this.updateQueue = [];
757
+ this.isProcessingQueue = false;
758
+ // Memory optimization
759
+ this.cleanupThreshold = 1000; // Clean up items beyond this threshold
760
+ this.gcInterval = null;
761
+ this.setupPerformanceMonitoring();
762
+ }
763
+ // Optimize rendering by limiting updates to frame budget
764
+ scheduleOptimizedUpdate(updateFn) {
765
+ const now = performance.now();
766
+ // Throttle updates based on frame rate
767
+ if (now - this.lastUpdate < this.minUpdateInterval) {
768
+ // Queue the update for later
769
+ this.updateQueue.push(updateFn);
770
+ if (!this.isProcessingQueue) {
771
+ this.processUpdateQueue();
772
+ }
773
+ return;
774
+ }
775
+ // Check if we have enough time in the current frame
776
+ if (this.getTimeRemaining() > 4) { // Leave 4ms buffer
777
+ updateFn();
778
+ this.lastUpdate = now;
779
+ }
780
+ else {
781
+ // Schedule for next frame
782
+ this.updateQueue.push(updateFn);
783
+ if (!this.isProcessingQueue) {
784
+ this.processUpdateQueue();
785
+ }
786
+ }
787
+ }
788
+ // Process queued updates efficiently
789
+ async processUpdateQueue() {
790
+ if (this.updateQueue.length === 0) {
791
+ this.isProcessingQueue = false;
792
+ return;
793
+ }
794
+ this.isProcessingQueue = true;
795
+ const currentTime = performance.now();
796
+ // Process as many updates as possible within frame budget
797
+ while (this.updateQueue.length > 0 && this.getTimeRemaining() > 2) {
798
+ const updateFn = this.updateQueue.shift();
799
+ if (updateFn) {
800
+ updateFn();
801
+ }
802
+ }
803
+ this.lastUpdate = currentTime;
804
+ if (this.updateQueue.length > 0) {
805
+ // Schedule remaining updates for next frame (only in browser environment)
806
+ if (typeof requestAnimationFrame !== 'undefined') {
807
+ requestAnimationFrame(() => this.processUpdateQueue());
808
+ }
809
+ else {
810
+ // In Node.js environment, use setTimeout as fallback
811
+ setTimeout(() => this.processUpdateQueue(), 0);
812
+ }
813
+ }
814
+ else {
815
+ this.isProcessingQueue = false;
816
+ }
817
+ }
818
+ // Get remaining time in current frame
819
+ getTimeRemaining() {
820
+ if (typeof performance === 'undefined' || !performance.now) {
821
+ return 16; // Fallback to 60fps
822
+ }
823
+ const currentTime = performance.now();
824
+ // Typically browsers target 10ms remaining time for smoothness
825
+ return Math.max(0, this.frameBudget - (currentTime - this.lastFrameTime));
826
+ }
827
+ // Memory optimization: cleanup off-screen items
828
+ optimizeMemory(cleanupFn, visibleRange) {
829
+ // Determine cleanup range (items far from visible range)
830
+ const cleanupStart = Math.max(0, visibleRange.end + this.cleanupThreshold);
831
+ const cleanupEnd = Math.max(0, visibleRange.start - this.cleanupThreshold);
832
+ if (cleanupStart > visibleRange.end) {
833
+ cleanupFn(visibleRange.end, cleanupStart);
834
+ }
835
+ if (cleanupEnd < visibleRange.start) {
836
+ cleanupFn(cleanupEnd, visibleRange.start);
837
+ }
838
+ }
839
+ // Enable GPU acceleration for smoother scrolling
840
+ enableGPUCssAcceleration(element) {
841
+ // Force hardware acceleration
842
+ element.style.willChange = 'transform';
843
+ element.style.transform = 'translateZ(0)';
844
+ element.style.backfaceVisibility = 'hidden';
845
+ }
846
+ // Disable GPU acceleration when not needed
847
+ disableGPUCssAcceleration(element) {
848
+ element.style.willChange = 'auto';
849
+ element.style.transform = '';
850
+ element.style.backfaceVisibility = '';
851
+ }
852
+ // Optimize for different device capabilities
853
+ getOptimizationProfile() {
854
+ // Simple profile detection based on common device characteristics
855
+ const userAgent = navigator.userAgent || navigator.vendor || window.opera;
856
+ // Detect low-end devices
857
+ if (this.isLowEndDevice(userAgent)) {
858
+ return {
859
+ frameRate: 30, // Lower target for low-end devices
860
+ batchSize: 5, // Smaller batches
861
+ bufferMultiplier: 0.5, // Smaller buffer
862
+ updateInterval: 32 // 30fps interval
863
+ };
864
+ }
865
+ // Default profile for capable devices
866
+ return {
867
+ frameRate: 60,
868
+ batchSize: 10,
869
+ bufferMultiplier: 1.0,
870
+ updateInterval: 16 // 60fps interval
871
+ };
872
+ }
873
+ isLowEndDevice(userAgent) {
874
+ // Simple heuristic for low-end devices
875
+ const lowEndPatterns = [
876
+ /Android.*Mobile/,
877
+ /iPhone.*OS [0-9]+_[0-9]+/,
878
+ /Opera Mini/,
879
+ /IEMobile/
880
+ ];
881
+ return lowEndPatterns.some(pattern => pattern.test(userAgent));
882
+ }
883
+ // Setup performance monitoring
884
+ setupPerformanceMonitoring() {
885
+ // Check if we're in a browser environment
886
+ if (typeof window === 'undefined' || typeof requestAnimationFrame === 'undefined') {
887
+ // In Node.js environment, skip browser-specific monitoring
888
+ return;
889
+ }
890
+ // Monitor frame rate
891
+ let frameCount = 0;
892
+ let lastTime = performance.now();
893
+ const monitorFrameRate = () => {
894
+ frameCount++;
895
+ const currentTime = performance.now();
896
+ if (currentTime - lastTime >= 1000) { // Every second
897
+ const fps = frameCount;
898
+ frameCount = 0;
899
+ lastTime = currentTime;
900
+ // Adjust optimization based on actual FPS
901
+ if (fps < 30) {
902
+ this.frameBudget = 32; // Target 30fps
903
+ }
904
+ else if (fps < 50) {
905
+ this.frameBudget = 20; // Target 50fps
906
+ }
907
+ else {
908
+ this.frameBudget = 16; // Target 60fps
909
+ }
910
+ }
911
+ this.animationFrameId = requestAnimationFrame(monitorFrameRate);
912
+ };
913
+ this.animationFrameId = requestAnimationFrame(monitorFrameRate);
914
+ // Setup garbage collection monitoring
915
+ this.gcInterval = window.setInterval(() => {
916
+ if ('gc' in window) {
917
+ // @ts-ignore - gc is non-standard
918
+ window.gc();
919
+ }
920
+ }, 30000); // GC every 30 seconds
921
+ }
922
+ // Get performance insights
923
+ getPerformanceInsights() {
924
+ return {
925
+ frameRate: 60, // Would be calculated from monitoring
926
+ memoryUsage: this.getMemoryUsage(),
927
+ updateFrequency: 1000 / this.minUpdateInterval,
928
+ optimizationActive: this.isOptimizing
929
+ };
930
+ }
931
+ getMemoryUsage() {
932
+ var _a;
933
+ if ('memory' in performance) {
934
+ // @ts-ignore - memory property is non-standard
935
+ return ((_a = performance.memory) === null || _a === void 0 ? void 0 : _a.usedJSHeapSize) || null;
936
+ }
937
+ return null;
938
+ }
939
+ // Cleanup resources
940
+ cleanup() {
941
+ if (this.animationFrameId && typeof cancelAnimationFrame !== 'undefined') {
942
+ cancelAnimationFrame(this.animationFrameId);
943
+ }
944
+ if (this.gcInterval && typeof clearInterval !== 'undefined') {
945
+ clearInterval(this.gcInterval);
946
+ }
947
+ this.updateQueue = [];
948
+ this.isProcessingQueue = false;
949
+ }
950
+ }
951
+
952
+ class MemoryManager {
953
+ constructor(maxCacheSize = 1000) {
954
+ this.itemCache = new Map();
955
+ this.maxCacheSize = 1000; // Maximum items to keep in cache
956
+ this.cleanupThreshold = 500; // Start cleanup when cache exceeds this
957
+ this.visibleRange = { start: 0, end: 0 };
958
+ this.totalItems = 0;
959
+ this.maxCacheSize = maxCacheSize;
960
+ }
961
+ // Set visible range to optimize cache
962
+ setVisibleRange(range) {
963
+ this.visibleRange = range;
964
+ }
965
+ // Set total number of items
966
+ setTotalItems(total) {
967
+ this.totalItems = total;
968
+ }
969
+ // Get item from cache
970
+ get(key) {
971
+ return this.itemCache.get(key) || null;
972
+ }
973
+ // Set item in cache
974
+ set(key, value) {
975
+ this.itemCache.set(key, value);
976
+ // Clean up if cache is too large
977
+ if (this.itemCache.size > this.maxCacheSize) {
978
+ this.cleanupCache();
979
+ }
980
+ }
981
+ // Check if item exists in cache
982
+ has(key) {
983
+ return this.itemCache.has(key);
984
+ }
985
+ // Remove item from cache
986
+ delete(key) {
987
+ return this.itemCache.delete(key);
988
+ }
989
+ // Clear entire cache
990
+ clear() {
991
+ this.itemCache.clear();
992
+ }
993
+ // Clean up cache based on visibility and distance from visible range
994
+ cleanupCache() {
995
+ if (this.itemCache.size <= this.cleanupThreshold) {
996
+ return; // No need to clean up
997
+ }
998
+ const itemsToRemove = [];
999
+ // Find items that are far from visible range
1000
+ for (const [key] of this.itemCache.entries()) {
1001
+ const distanceFromVisible = this.getDistanceFromVisible(key);
1002
+ // Remove items that are far from visible range
1003
+ if (distanceFromVisible > 100) { // Arbitrary threshold
1004
+ itemsToRemove.push(key);
1005
+ }
1006
+ }
1007
+ // If we still have too many items, remove oldest accessed items
1008
+ if (this.itemCache.size - itemsToRemove.length > this.cleanupThreshold) {
1009
+ const sortedKeys = Array.from(this.itemCache.keys())
1010
+ .sort((a, b) => a - b); // Sort by key (assuming they're indexes)
1011
+ // Remove items that are furthest from visible range
1012
+ for (const key of sortedKeys) {
1013
+ if (this.itemCache.size <= this.cleanupThreshold)
1014
+ break;
1015
+ const distance = this.getDistanceFromVisible(key);
1016
+ if (distance > 50) { // Remove items beyond 50 units from visible
1017
+ itemsToRemove.push(key);
1018
+ }
1019
+ }
1020
+ }
1021
+ // Actually remove items
1022
+ for (const key of itemsToRemove) {
1023
+ this.itemCache.delete(key);
1024
+ }
1025
+ }
1026
+ // Calculate distance from visible range
1027
+ getDistanceFromVisible(index) {
1028
+ if (index >= this.visibleRange.start && index <= this.visibleRange.end) {
1029
+ return 0; // Inside visible range
1030
+ }
1031
+ if (index < this.visibleRange.start) {
1032
+ return this.visibleRange.start - index;
1033
+ }
1034
+ return index - this.visibleRange.end;
1035
+ }
1036
+ // Get cache statistics
1037
+ getStats() {
1038
+ const visibleItems = Array.from(this.itemCache.keys())
1039
+ .filter(key => key >= this.visibleRange.start && key <= this.visibleRange.end)
1040
+ .length;
1041
+ const offScreenItems = this.itemCache.size - visibleItems;
1042
+ // Rough estimate of memory usage (in bytes)
1043
+ let memoryEstimate = 0;
1044
+ for (const [_, value] of this.itemCache.entries()) {
1045
+ memoryEstimate += this.estimateObjectSize(value);
1046
+ }
1047
+ return {
1048
+ size: this.itemCache.size,
1049
+ maxCacheSize: this.maxCacheSize,
1050
+ visibleItems,
1051
+ offScreenItems,
1052
+ memoryEstimate
1053
+ };
1054
+ }
1055
+ // Estimate object size in bytes
1056
+ estimateObjectSize(obj) {
1057
+ if (obj === null || obj === undefined)
1058
+ return 0;
1059
+ if (typeof obj === 'string')
1060
+ return obj.length * 2; // UTF-16 chars
1061
+ if (typeof obj === 'number')
1062
+ return 8; // 8 bytes for number
1063
+ if (typeof obj === 'boolean')
1064
+ return 4; // 4 bytes for boolean
1065
+ if (typeof obj === 'object') {
1066
+ let size = 0;
1067
+ for (const key in obj) {
1068
+ if (obj.hasOwnProperty(key)) {
1069
+ size += key.length * 2; // Key size
1070
+ size += this.estimateObjectSize(obj[key]); // Value size
1071
+ }
1072
+ }
1073
+ return size;
1074
+ }
1075
+ return 0; // Other types
1076
+ }
1077
+ // Prune cache to only keep essential items
1078
+ pruneEssential() {
1079
+ const essentialItems = [];
1080
+ // Keep items in visible range and nearby
1081
+ for (const [key, value] of this.itemCache.entries()) {
1082
+ if (this.isEssential(key)) {
1083
+ essentialItems.push([key, value]);
1084
+ }
1085
+ }
1086
+ // Clear cache and repopulate with essential items
1087
+ this.itemCache.clear();
1088
+ for (const [key, value] of essentialItems) {
1089
+ this.itemCache.set(key, value);
1090
+ }
1091
+ }
1092
+ // Check if item is essential (within buffer zone)
1093
+ isEssential(index) {
1094
+ const bufferZone = 20; // Keep items within 20 positions of visible range
1095
+ return index >= (this.visibleRange.start - bufferZone) &&
1096
+ index <= (this.visibleRange.end + bufferZone);
1097
+ }
1098
+ // Get cache size
1099
+ getSize() {
1100
+ return this.itemCache.size;
1101
+ }
1102
+ // Get cache keys
1103
+ getKeys() {
1104
+ return Array.from(this.itemCache.keys());
1105
+ }
1106
+ }
1107
+
1108
+ class GPUAccelerator {
1109
+ constructor() {
1110
+ this.gpuAccelerationEnabled = false;
1111
+ this.gpuElements = new WeakSet();
1112
+ this.animationFrameId = null;
1113
+ this.gpuAccelerationEnabled = this.isGPUSupported();
1114
+ }
1115
+ // Check if GPU acceleration is supported
1116
+ isGPUSupported() {
1117
+ // Check if we're in a browser environment
1118
+ if (typeof document === 'undefined') {
1119
+ return false; // Not supported in Node.js environment
1120
+ }
1121
+ // Check for 3D transform support
1122
+ const testEl = document.createElement('div');
1123
+ return testEl.style.webkitTransform !== undefined ||
1124
+ testEl.style.transform !== undefined;
1125
+ }
1126
+ // Enable GPU acceleration for an element
1127
+ enableForElement(element) {
1128
+ if (!this.gpuAccelerationEnabled)
1129
+ return;
1130
+ // Apply GPU-accelerated styles
1131
+ element.style.willChange = 'transform';
1132
+ element.style.transform = 'translateZ(0)';
1133
+ element.style.backfaceVisibility = 'hidden';
1134
+ element.style.perspective = '1000px';
1135
+ // Add to tracked elements
1136
+ this.gpuElements.add(element);
1137
+ }
1138
+ // Disable GPU acceleration for an element
1139
+ disableForElement(element) {
1140
+ if (!this.gpuAccelerationEnabled)
1141
+ return;
1142
+ // Remove GPU-accelerated styles
1143
+ element.style.willChange = 'auto';
1144
+ element.style.transform = '';
1145
+ element.style.backfaceVisibility = '';
1146
+ element.style.perspective = '';
1147
+ // Remove from tracked elements
1148
+ this.gpuElements.delete(element);
1149
+ }
1150
+ // Apply GPU acceleration to a list of elements
1151
+ enableForElements(elements) {
1152
+ elements.forEach(el => this.enableForElement(el));
1153
+ }
1154
+ // Batch update GPU acceleration
1155
+ batchUpdate(elements, enable) {
1156
+ if (!this.gpuAccelerationEnabled)
1157
+ return;
1158
+ if (enable) {
1159
+ this.enableForElements(elements);
1160
+ }
1161
+ else {
1162
+ elements.forEach(el => this.disableForElement(el));
1163
+ }
1164
+ }
1165
+ // Optimize scrolling container for GPU acceleration
1166
+ optimizeScrollContainer(container) {
1167
+ if (!this.gpuAccelerationEnabled)
1168
+ return;
1169
+ // Apply optimizations to container
1170
+ container.style.transform = 'translateZ(0)';
1171
+ container.style.willChange = 'scroll-position';
1172
+ container.style.webkitOverflowScrolling = 'touch'; // For iOS
1173
+ }
1174
+ // Optimize individual items for GPU acceleration
1175
+ optimizeItem(item) {
1176
+ if (!this.gpuAccelerationEnabled)
1177
+ return;
1178
+ // Apply lightweight GPU acceleration
1179
+ item.style.transform = 'translateZ(0)';
1180
+ item.style.willChange = 'transform';
1181
+ }
1182
+ // Get GPU acceleration status
1183
+ getStatus() {
1184
+ // Since WeakSet doesn't have a size property, we can't count directly
1185
+ // This is a limitation of WeakSet
1186
+ return {
1187
+ enabled: this.gpuAccelerationEnabled,
1188
+ supported: this.isGPUSupported(),
1189
+ elementCount: 0 // Placeholder - would need different tracking method
1190
+ };
1191
+ }
1192
+ // Optimize for different scenarios
1193
+ optimizeForScenario(scenario) {
1194
+ if (!this.gpuAccelerationEnabled)
1195
+ return;
1196
+ switch (scenario) {
1197
+ case 'scrolling':
1198
+ // Optimize for smooth scrolling
1199
+ document.body.style.willChange = 'transform';
1200
+ break;
1201
+ case 'animation':
1202
+ // Optimize for animations
1203
+ document.body.style.transform = 'translateZ(0)';
1204
+ break;
1205
+ case 'static':
1206
+ // Remove optimizations when not needed
1207
+ document.body.style.willChange = 'auto';
1208
+ document.body.style.transform = '';
1209
+ break;
1210
+ }
1211
+ }
1212
+ // Cleanup GPU acceleration resources
1213
+ cleanup() {
1214
+ if (this.animationFrameId) {
1215
+ cancelAnimationFrame(this.animationFrameId);
1216
+ }
1217
+ // Reset any applied styles (would need to track them)
1218
+ this.gpuElements = new WeakSet();
1219
+ }
1220
+ // Check if element has GPU acceleration enabled
1221
+ isAccelerated(element) {
1222
+ return this.gpuElements.has(element);
1223
+ }
1224
+ // Get optimization recommendations
1225
+ getRecommendations() {
1226
+ const recommendations = [];
1227
+ if (!this.gpuAccelerationEnabled) {
1228
+ recommendations.push('GPU acceleration not supported on this device');
1229
+ }
1230
+ else {
1231
+ recommendations.push('GPU acceleration enabled for smooth performance');
1232
+ recommendations.push('Using hardware-accelerated compositing');
1233
+ recommendations.push('Optimized for 60fps rendering');
1234
+ }
1235
+ return recommendations;
1236
+ }
1237
+ }
1238
+
746
1239
  class Engine {
747
1240
  constructor(config) {
748
1241
  this.fetchMoreCallback = null;
@@ -758,6 +1251,9 @@ class Engine {
758
1251
  this.networkAwarePrefetchManager = new NetworkAwarePrefetchManager(this.networkDetector);
759
1252
  this.networkAwareRequestQueue = new NetworkAwareRequestQueue(this.networkDetector);
760
1253
  this.adaptiveBufferCalculator = new AdaptiveBufferCalculator();
1254
+ this.performanceOptimizer = new PerformanceOptimizer();
1255
+ this.memoryManager = new MemoryManager(1000); // Cache up to 1000 items
1256
+ this.gpuAccelerator = new GPUAccelerator();
761
1257
  this.totalItems = this.config.totalItems || Number.MAX_SAFE_INTEGER;
762
1258
  this.state = {
763
1259
  scrollTop: 0,
@@ -770,26 +1266,34 @@ class Engine {
770
1266
  * Update scroll position and recalculate visible range with intelligent detection
771
1267
  */
772
1268
  async updateScrollPosition(scrollTop) {
773
- // Calculate velocity and other intelligent metrics
774
- const velocity = this.intelligentScrollDetector.calculateVelocity(scrollTop);
775
- this.intelligentScrollDetector.getDirection(velocity);
776
- // Get network quality for adaptive buffering
777
- const networkQuality = await this.networkDetector.assessConnectionQuality();
778
- // Calculate adaptive buffer considering all factors
779
- const adaptiveBuffer = await this.adaptiveBufferCalculator.calculateOptimalBuffer({
780
- scrollVelocity: velocity,
781
- networkQuality,
782
- baseBuffer: this.intelligentScrollDetector.calculateBuffer(velocity),
783
- visibleItems: [] // In a real implementation, this would be the actual visible items
1269
+ // Use performance optimizer to schedule updates efficiently
1270
+ this.performanceOptimizer.scheduleOptimizedUpdate(async () => {
1271
+ // Calculate velocity and other intelligent metrics
1272
+ const velocity = this.intelligentScrollDetector.calculateVelocity(scrollTop);
1273
+ this.intelligentScrollDetector.getDirection(velocity);
1274
+ // Get network quality for adaptive buffering
1275
+ const networkQuality = await this.networkDetector.assessConnectionQuality();
1276
+ // Calculate adaptive buffer considering all factors
1277
+ const adaptiveBuffer = await this.adaptiveBufferCalculator.calculateOptimalBuffer({
1278
+ scrollVelocity: velocity,
1279
+ networkQuality,
1280
+ baseBuffer: this.intelligentScrollDetector.calculateBuffer(velocity),
1281
+ visibleItems: [] // In a real implementation, this would be the actual visible items
1282
+ });
1283
+ // Update window manager with adaptive buffer
1284
+ this.windowManager.updateBufferSize(adaptiveBuffer);
1285
+ // Update memory manager with visible range
1286
+ this.memoryManager.setVisibleRange({
1287
+ start: Math.max(0, this.state.visibleRange.start - adaptiveBuffer),
1288
+ end: this.state.visibleRange.end + adaptiveBuffer
1289
+ });
1290
+ this.state.scrollTop = scrollTop;
1291
+ this.state.visibleRange = this.windowManager.calculateVisibleRange(scrollTop);
1292
+ // Check if we need to fetch more items
1293
+ if (await this.shouldFetchMore()) {
1294
+ await this.fetchMore();
1295
+ }
784
1296
  });
785
- // Update window manager with adaptive buffer
786
- this.windowManager.updateBufferSize(adaptiveBuffer);
787
- this.state.scrollTop = scrollTop;
788
- this.state.visibleRange = this.windowManager.calculateVisibleRange(scrollTop);
789
- // Check if we need to fetch more items
790
- if (await this.shouldFetchMore()) {
791
- await this.fetchMore();
792
- }
793
1297
  }
794
1298
  /**
795
1299
  * Get the current visible range
@@ -875,6 +1379,8 @@ class Engine {
875
1379
  this.networkAwareRequestQueue.clear();
876
1380
  this.fetchMoreCallback = null;
877
1381
  this.intelligentScrollDetector.cleanup();
1382
+ this.performanceOptimizer.cleanup();
1383
+ this.memoryManager.clear();
878
1384
  }
879
1385
  }
880
1386
 
@@ -1076,6 +1582,286 @@ const LazyList = forwardRef((props, ref) => {
1076
1582
  });
1077
1583
  LazyList.displayName = 'LazyList';
1078
1584
 
1585
+ class LazyScroll {
1586
+ constructor(container, config) {
1587
+ this.container = container;
1588
+ this.config = {
1589
+ itemHeight: config.itemHeight || 50,
1590
+ viewportHeight: config.viewportHeight || 400,
1591
+ bufferSize: config.bufferSize || 5,
1592
+ fetchMore: config.fetchMore || (() => Promise.resolve([]))
1593
+ };
1594
+
1595
+ this.engine = new Engine(this.config);
1596
+ this.engine.setFetchMoreCallback(this.config.fetchMore);
1597
+
1598
+ this.visibleRange = { start: 0, end: 0 };
1599
+ this.isLoading = false;
1600
+ this.items = [];
1601
+ this.visibleItems = [];
1602
+
1603
+ this.scrollHandler = this.onScroll.bind(this);
1604
+ this.container.addEventListener('scroll', this.scrollHandler, { passive: true });
1605
+ }
1606
+
1607
+ onScroll() {
1608
+ const scrollTop = this.container.scrollTop;
1609
+ this.engine.updateScrollPosition(scrollTop);
1610
+
1611
+ const state = this.engine.getState();
1612
+ this.visibleRange = state.visibleRange;
1613
+ this.isLoading = state.isLoading;
1614
+
1615
+ this.render();
1616
+ }
1617
+
1618
+ setItems(items) {
1619
+ this.items = items;
1620
+ this.render();
1621
+ }
1622
+
1623
+ render() {
1624
+ // Calculate paddings
1625
+ const topPadding = this.visibleRange.start * this.config.itemHeight;
1626
+ const bottomPadding = Math.max(0, (this.items.length - this.visibleRange.end) * this.config.itemHeight);
1627
+
1628
+ // Get visible items
1629
+ this.visibleItems = this.items.slice(this.visibleRange.start, this.visibleRange.end);
1630
+
1631
+ // Clear container except for paddings and content
1632
+ const existingContent = this.container.querySelector('.lazy-scroll-content');
1633
+ if (existingContent) {
1634
+ existingContent.remove();
1635
+ }
1636
+
1637
+ // Create content wrapper
1638
+ const contentWrapper = document.createElement('div');
1639
+ contentWrapper.className = 'lazy-scroll-content';
1640
+
1641
+ // Add top padding
1642
+ const topPaddingDiv = document.createElement('div');
1643
+ topPaddingDiv.style.height = `${topPadding}px`;
1644
+ contentWrapper.appendChild(topPaddingDiv);
1645
+
1646
+ // Add visible items
1647
+ this.visibleItems.forEach((item, index) => {
1648
+ const itemElement = this.createItemElement(item, this.visibleRange.start + index);
1649
+ contentWrapper.appendChild(itemElement);
1650
+ });
1651
+
1652
+ // Add bottom padding
1653
+ const bottomPaddingDiv = document.createElement('div');
1654
+ bottomPaddingDiv.style.height = `${bottomPadding}px`;
1655
+ contentWrapper.appendChild(bottomPaddingDiv);
1656
+
1657
+ // Add loading indicator if needed
1658
+ if (this.isLoading) {
1659
+ const loadingElement = document.createElement('div');
1660
+ loadingElement.className = 'lazy-loading';
1661
+ loadingElement.textContent = 'Loading more items...';
1662
+ contentWrapper.appendChild(loadingElement);
1663
+ }
1664
+
1665
+ this.container.appendChild(contentWrapper);
1666
+ }
1667
+
1668
+ createItemElement(item, index) {
1669
+ const itemElement = document.createElement('div');
1670
+ itemElement.style.height = `${this.config.itemHeight}px`;
1671
+ itemElement.className = 'lazy-item';
1672
+
1673
+ // Default content - can be customized
1674
+ itemElement.textContent = `Item ${index}: ${item.text || item.id || 'Content'}`;
1675
+
1676
+ return itemElement;
1677
+ }
1678
+
1679
+ updateConfig(newConfig) {
1680
+ if (newConfig.itemHeight !== undefined) this.config.itemHeight = newConfig.itemHeight;
1681
+ if (newConfig.viewportHeight !== undefined) this.config.viewportHeight = newConfig.viewportHeight;
1682
+ if (newConfig.bufferSize !== undefined) this.config.bufferSize = newConfig.bufferSize;
1683
+ if (newConfig.fetchMore !== undefined) {
1684
+ this.config.fetchMore = newConfig.fetchMore;
1685
+ this.engine.setFetchMoreCallback(newConfig.fetchMore);
1686
+ }
1687
+
1688
+ // Re-render with new config
1689
+ this.render();
1690
+ }
1691
+
1692
+ destroy() {
1693
+ this.container.removeEventListener('scroll', this.scrollHandler);
1694
+ this.engine.cleanup();
1695
+ }
1696
+
1697
+ // Public methods
1698
+ getVisibleRange() {
1699
+ return { ...this.visibleRange };
1700
+ }
1701
+
1702
+ refresh() {
1703
+ this.onScroll();
1704
+ }
1705
+ }
1706
+
1707
+ // Factory function for easier usage
1708
+ function createLazyScroll(container, config) {
1709
+ return new LazyScroll(container, config);
1710
+ }
1711
+
1712
+ class LazyScrollElement extends HTMLElement {
1713
+ constructor() {
1714
+ super();
1715
+ this.shadow = this.attachShadow({ mode: 'open' });
1716
+
1717
+ // Default values
1718
+ this.itemHeight = 50;
1719
+ this.viewportHeight = 400;
1720
+ this.bufferSize = 5;
1721
+ this.items = [];
1722
+
1723
+ // Styles
1724
+ const style = document.createElement('style');
1725
+ style.textContent = `
1726
+ :host {
1727
+ display: block;
1728
+ }
1729
+
1730
+ .lazy-scroll-container {
1731
+ position: relative;
1732
+ overflow-y: auto;
1733
+ }
1734
+
1735
+ .lazy-item {
1736
+ width: 100%;
1737
+ }
1738
+
1739
+ .lazy-loading {
1740
+ text-align: center;
1741
+ padding: 20px;
1742
+ color: #666;
1743
+ }
1744
+ `;
1745
+
1746
+ this.shadow.appendChild(style);
1747
+ }
1748
+
1749
+ static get observedAttributes() {
1750
+ return ['item-height', 'viewport-height', 'buffer-size'];
1751
+ }
1752
+
1753
+ attributeChangedCallback(name, oldValue, newValue) {
1754
+ switch (name) {
1755
+ case 'item-height':
1756
+ this.itemHeight = parseInt(newValue) || 50;
1757
+ break;
1758
+ case 'viewport-height':
1759
+ this.viewportHeight = parseInt(newValue) || 400;
1760
+ break;
1761
+ case 'buffer-size':
1762
+ this.bufferSize = parseInt(newValue) || 5;
1763
+ break;
1764
+ }
1765
+
1766
+ if (this.lazyScrollInstance) {
1767
+ this.lazyScrollInstance.updateConfig({
1768
+ itemHeight: this.itemHeight,
1769
+ viewportHeight: this.viewportHeight,
1770
+ bufferSize: this.bufferSize
1771
+ });
1772
+ }
1773
+ }
1774
+
1775
+ connectedCallback() {
1776
+ // Create container
1777
+ this.container = document.createElement('div');
1778
+ this.container.className = 'lazy-scroll-container';
1779
+ this.container.style.height = `${this.viewportHeight}px`;
1780
+ this.container.style.overflowY = 'auto';
1781
+
1782
+ this.shadow.appendChild(this.container);
1783
+
1784
+ // Get fetchMore function from attribute or slot
1785
+ const fetchMoreAttr = this.getAttribute('fetch-more');
1786
+ let fetchMoreFn = () => Promise.resolve([]);
1787
+
1788
+ if (fetchMoreAttr) {
1789
+ try {
1790
+ // If fetchMore is a function name in global scope
1791
+ fetchMoreFn = window[fetchMoreAttr] || (() => Promise.resolve([]));
1792
+ } catch (e) {
1793
+ console.warn('Could not find fetchMore function:', fetchMoreAttr);
1794
+ }
1795
+ }
1796
+
1797
+ // Initialize lazy scroll
1798
+ this.lazyScrollInstance = createLazyScroll(this.container, {
1799
+ itemHeight: this.itemHeight,
1800
+ viewportHeight: this.viewportHeight,
1801
+ bufferSize: this.bufferSize,
1802
+ fetchMore: fetchMoreFn
1803
+ });
1804
+
1805
+ // Handle items from light DOM
1806
+ this.updateItemsFromSlot();
1807
+
1808
+ // Observe child changes
1809
+ this.mutationObserver = new MutationObserver(() => {
1810
+ this.updateItemsFromSlot();
1811
+ });
1812
+
1813
+ this.mutationObserver.observe(this, { childList: true, subtree: true });
1814
+ }
1815
+
1816
+ disconnectedCallback() {
1817
+ if (this.lazyScrollInstance) {
1818
+ this.lazyScrollInstance.destroy();
1819
+ }
1820
+
1821
+ if (this.mutationObserver) {
1822
+ this.mutationObserver.disconnect();
1823
+ }
1824
+ }
1825
+
1826
+ updateItemsFromSlot() {
1827
+ // Get items from light DOM or data attribute
1828
+ const itemsData = this.getAttribute('items');
1829
+ if (itemsData) {
1830
+ try {
1831
+ const items = JSON.parse(itemsData);
1832
+ if (this.lazyScrollInstance) {
1833
+ this.lazyScrollInstance.setItems(items);
1834
+ }
1835
+ } catch (e) {
1836
+ console.warn('Could not parse items data:', itemsData);
1837
+ }
1838
+ }
1839
+ }
1840
+
1841
+ // Public methods
1842
+ setItems(items) {
1843
+ if (this.lazyScrollInstance) {
1844
+ this.lazyScrollInstance.setItems(items);
1845
+ }
1846
+ }
1847
+
1848
+ refresh() {
1849
+ if (this.lazyScrollInstance) {
1850
+ this.lazyScrollInstance.refresh();
1851
+ }
1852
+ }
1853
+
1854
+ getVisibleRange() {
1855
+ if (this.lazyScrollInstance) {
1856
+ return this.lazyScrollInstance.getVisibleRange();
1857
+ }
1858
+ return { start: 0, end: 0 };
1859
+ }
1860
+ }
1861
+
1862
+ // Register the custom element
1863
+ customElements.define('lazy-scroll-element', LazyScrollElement);
1864
+
1079
1865
  /**
1080
1866
  * Debounce function to limit the rate at which a function is called
1081
1867
  */
@@ -1107,5 +1893,5 @@ function throttle(func, limit) {
1107
1893
  };
1108
1894
  }
1109
1895
 
1110
- export { AdaptiveBufferCalculator, ContentComplexityAnalyzer, DevicePerformanceMonitor, Engine, IntelligentScrollDetector, LazyList, NetworkAwarePrefetchManager, NetworkAwareRequestQueue, NetworkSpeedDetector, PrefetchManager, RequestQueue, ScrollObserver, WindowManager, debounce, throttle, useLazyList };
1896
+ export { AdaptiveBufferCalculator, ContentComplexityAnalyzer, DevicePerformanceMonitor, Engine, GPUAccelerator, IntelligentScrollDetector, LazyList, LazyScroll, LazyScrollElement, MemoryManager, NetworkAwarePrefetchManager, NetworkAwareRequestQueue, NetworkSpeedDetector, PerformanceOptimizer, PrefetchManager, RequestQueue, ScrollObserver, WindowManager, createLazyScroll, debounce, throttle, useLazyList };
1111
1897
  //# sourceMappingURL=index.js.map