@react-native-ohos/flash-list 1.8.3-rc.5 → 2.1.1-rc.1

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 (495) hide show
  1. package/LICENSE +1 -1
  2. package/README.OpenSource +1 -1
  3. package/dist/AnimatedFlashList.d.ts +4 -28
  4. package/dist/AnimatedFlashList.d.ts.map +1 -1
  5. package/dist/AnimatedFlashList.js +5 -30
  6. package/dist/AnimatedFlashList.js.map +1 -1
  7. package/dist/FlashList.d.ts +1 -179
  8. package/dist/FlashList.d.ts.map +1 -1
  9. package/dist/FlashList.js +1 -599
  10. package/dist/FlashList.js.map +1 -1
  11. package/dist/FlashListProps.d.ts +285 -278
  12. package/dist/FlashListProps.d.ts.map +1 -1
  13. package/dist/FlashListProps.js +5 -31
  14. package/dist/FlashListProps.js.map +1 -1
  15. package/dist/FlashListRef.d.ts +305 -0
  16. package/dist/FlashListRef.d.ts.map +1 -0
  17. package/dist/FlashListRef.js +2 -0
  18. package/dist/FlashListRef.js.map +1 -0
  19. package/dist/benchmark/AutoScrollHelper.d.ts +17 -40
  20. package/dist/benchmark/AutoScrollHelper.d.ts.map +1 -1
  21. package/dist/benchmark/AutoScrollHelper.js +59 -90
  22. package/dist/benchmark/AutoScrollHelper.js.map +1 -1
  23. package/dist/benchmark/JSFPSMonitor.d.ts +22 -45
  24. package/dist/benchmark/JSFPSMonitor.d.ts.map +1 -1
  25. package/dist/benchmark/JSFPSMonitor.js +59 -87
  26. package/dist/benchmark/JSFPSMonitor.js.map +1 -1
  27. package/dist/benchmark/roundToDecimalPlaces.d.ts +1 -24
  28. package/dist/benchmark/roundToDecimalPlaces.d.ts.map +1 -1
  29. package/dist/benchmark/roundToDecimalPlaces.js +4 -31
  30. package/dist/benchmark/roundToDecimalPlaces.js.map +1 -1
  31. package/dist/benchmark/useBenchmark.d.ts +40 -57
  32. package/dist/benchmark/useBenchmark.d.ts.map +1 -1
  33. package/dist/benchmark/useBenchmark.js +119 -189
  34. package/dist/benchmark/useBenchmark.js.map +1 -1
  35. package/dist/benchmark/useDataMultiplier.d.ts +8 -31
  36. package/dist/benchmark/useDataMultiplier.d.ts.map +1 -1
  37. package/dist/benchmark/useDataMultiplier.js +19 -47
  38. package/dist/benchmark/useDataMultiplier.js.map +1 -1
  39. package/dist/benchmark/useFlatListBenchmark.d.ts +14 -35
  40. package/dist/benchmark/useFlatListBenchmark.d.ts.map +1 -1
  41. package/dist/benchmark/useFlatListBenchmark.js +92 -122
  42. package/dist/benchmark/useFlatListBenchmark.js.map +1 -1
  43. package/dist/errors/ErrorMessages.d.ts +16 -0
  44. package/dist/errors/ErrorMessages.d.ts.map +1 -0
  45. package/dist/errors/ErrorMessages.js +16 -0
  46. package/dist/errors/ErrorMessages.js.map +1 -0
  47. package/dist/errors/WarningMessages.d.ts +6 -0
  48. package/dist/errors/WarningMessages.d.ts.map +1 -0
  49. package/dist/errors/WarningMessages.js +7 -0
  50. package/dist/errors/WarningMessages.js.map +1 -0
  51. package/dist/index.d.ts +15 -36
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +19 -54
  54. package/dist/index.js.map +1 -1
  55. package/dist/isNewArch.d.ts +2 -0
  56. package/dist/isNewArch.d.ts.map +1 -0
  57. package/dist/isNewArch.js +22 -0
  58. package/dist/isNewArch.js.map +1 -0
  59. package/dist/native/config/PlatformHelper.android.d.ts +6 -48
  60. package/dist/native/config/PlatformHelper.android.d.ts.map +1 -1
  61. package/dist/native/config/PlatformHelper.android.js +6 -45
  62. package/dist/native/config/PlatformHelper.android.js.map +1 -1
  63. package/dist/native/config/PlatformHelper.d.ts +6 -48
  64. package/dist/native/config/PlatformHelper.d.ts.map +1 -1
  65. package/dist/native/config/PlatformHelper.harmony.d.ts +29 -48
  66. package/dist/native/config/PlatformHelper.harmony.d.ts.map +1 -1
  67. package/dist/native/config/PlatformHelper.harmony.js +29 -44
  68. package/dist/native/config/PlatformHelper.harmony.js.map +1 -1
  69. package/dist/native/config/PlatformHelper.ios.d.ts +6 -48
  70. package/dist/native/config/PlatformHelper.ios.d.ts.map +1 -1
  71. package/dist/native/config/PlatformHelper.ios.js +6 -44
  72. package/dist/native/config/PlatformHelper.ios.js.map +1 -1
  73. package/dist/native/config/PlatformHelper.js +6 -45
  74. package/dist/native/config/PlatformHelper.js.map +1 -1
  75. package/dist/native/config/PlatformHelper.web.d.ts +6 -49
  76. package/dist/native/config/PlatformHelper.web.d.ts.map +1 -1
  77. package/dist/native/config/PlatformHelper.web.js +6 -47
  78. package/dist/native/config/PlatformHelper.web.js.map +1 -1
  79. package/dist/recyclerview/LayoutCommitObserver.d.ts +12 -0
  80. package/dist/recyclerview/LayoutCommitObserver.d.ts.map +1 -0
  81. package/dist/recyclerview/LayoutCommitObserver.js +58 -0
  82. package/dist/recyclerview/LayoutCommitObserver.js.map +1 -0
  83. package/dist/recyclerview/RecyclerView.d.ts +13 -0
  84. package/dist/recyclerview/RecyclerView.d.ts.map +1 -0
  85. package/dist/recyclerview/RecyclerView.js +368 -0
  86. package/dist/recyclerview/RecyclerView.js.map +1 -0
  87. package/dist/recyclerview/RecyclerViewContextProvider.d.ts +46 -0
  88. package/dist/recyclerview/RecyclerViewContextProvider.d.ts.map +1 -0
  89. package/dist/recyclerview/RecyclerViewContextProvider.js +10 -0
  90. package/dist/recyclerview/RecyclerViewContextProvider.js.map +1 -0
  91. package/dist/recyclerview/RecyclerViewManager.d.ts +78 -0
  92. package/dist/recyclerview/RecyclerViewManager.d.ts.map +1 -0
  93. package/dist/recyclerview/RecyclerViewManager.js +343 -0
  94. package/dist/recyclerview/RecyclerViewManager.js.map +1 -0
  95. package/dist/recyclerview/RecyclerViewProps.d.ts +2 -0
  96. package/dist/recyclerview/RecyclerViewProps.d.ts.map +1 -0
  97. package/dist/recyclerview/RecyclerViewProps.js +2 -0
  98. package/dist/recyclerview/RecyclerViewProps.js.map +1 -0
  99. package/dist/recyclerview/RenderStackManager.d.ts +86 -0
  100. package/dist/recyclerview/RenderStackManager.d.ts.map +1 -0
  101. package/dist/recyclerview/RenderStackManager.js +252 -0
  102. package/dist/recyclerview/RenderStackManager.js.map +1 -0
  103. package/dist/recyclerview/ViewHolder.d.ts +45 -0
  104. package/dist/recyclerview/ViewHolder.d.ts.map +1 -0
  105. package/dist/recyclerview/ViewHolder.js +94 -0
  106. package/dist/recyclerview/ViewHolder.js.map +1 -0
  107. package/dist/recyclerview/ViewHolderCollection.d.ts +63 -0
  108. package/dist/recyclerview/ViewHolderCollection.d.ts.map +1 -0
  109. package/dist/recyclerview/ViewHolderCollection.js +87 -0
  110. package/dist/recyclerview/ViewHolderCollection.js.map +1 -0
  111. package/dist/recyclerview/components/CompatScroller.d.ts +7 -0
  112. package/dist/recyclerview/components/CompatScroller.d.ts.map +1 -0
  113. package/dist/recyclerview/components/CompatScroller.js +7 -0
  114. package/dist/recyclerview/components/CompatScroller.js.map +1 -0
  115. package/dist/recyclerview/components/CompatView.d.ts +7 -0
  116. package/dist/recyclerview/components/CompatView.d.ts.map +1 -0
  117. package/dist/recyclerview/components/CompatView.js +7 -0
  118. package/dist/recyclerview/components/CompatView.js.map +1 -0
  119. package/dist/recyclerview/components/ScrollAnchor.d.ts +29 -0
  120. package/dist/recyclerview/components/ScrollAnchor.d.ts.map +1 -0
  121. package/dist/recyclerview/components/ScrollAnchor.js +33 -0
  122. package/dist/recyclerview/components/ScrollAnchor.js.map +1 -0
  123. package/dist/recyclerview/components/StickyHeaders.d.ts +38 -0
  124. package/dist/recyclerview/components/StickyHeaders.d.ts.map +1 -0
  125. package/dist/recyclerview/components/StickyHeaders.js +112 -0
  126. package/dist/recyclerview/components/StickyHeaders.js.map +1 -0
  127. package/dist/recyclerview/helpers/ConsecutiveNumbers.d.ts +51 -0
  128. package/dist/recyclerview/helpers/ConsecutiveNumbers.d.ts.map +1 -0
  129. package/dist/recyclerview/helpers/ConsecutiveNumbers.js +95 -0
  130. package/dist/recyclerview/helpers/ConsecutiveNumbers.js.map +1 -0
  131. package/dist/recyclerview/helpers/EngagedIndicesTracker.d.ts +105 -0
  132. package/dist/recyclerview/helpers/EngagedIndicesTracker.d.ts.map +1 -0
  133. package/dist/recyclerview/helpers/EngagedIndicesTracker.js +202 -0
  134. package/dist/recyclerview/helpers/EngagedIndicesTracker.js.map +1 -0
  135. package/dist/recyclerview/helpers/RenderTimeTracker.d.ts +14 -0
  136. package/dist/recyclerview/helpers/RenderTimeTracker.d.ts.map +1 -0
  137. package/dist/recyclerview/helpers/RenderTimeTracker.js +44 -0
  138. package/dist/recyclerview/helpers/RenderTimeTracker.js.map +1 -0
  139. package/dist/recyclerview/helpers/VelocityTracker.d.ts +29 -0
  140. package/dist/recyclerview/helpers/VelocityTracker.d.ts.map +1 -0
  141. package/dist/recyclerview/helpers/VelocityTracker.js +64 -0
  142. package/dist/recyclerview/helpers/VelocityTracker.js.map +1 -0
  143. package/dist/recyclerview/hooks/useBoundDetection.d.ts +17 -0
  144. package/dist/recyclerview/hooks/useBoundDetection.d.ts.map +1 -0
  145. package/dist/recyclerview/hooks/useBoundDetection.js +132 -0
  146. package/dist/recyclerview/hooks/useBoundDetection.js.map +1 -0
  147. package/dist/recyclerview/hooks/useLayoutState.d.ts +14 -0
  148. package/dist/recyclerview/hooks/useLayoutState.d.ts.map +1 -0
  149. package/dist/recyclerview/hooks/useLayoutState.js +38 -0
  150. package/dist/recyclerview/hooks/useLayoutState.js.map +1 -0
  151. package/dist/recyclerview/hooks/useMappingHelper.d.ts +9 -0
  152. package/dist/recyclerview/hooks/useMappingHelper.d.ts.map +1 -0
  153. package/dist/recyclerview/hooks/useMappingHelper.js +15 -0
  154. package/dist/recyclerview/hooks/useMappingHelper.js.map +1 -0
  155. package/dist/recyclerview/hooks/useOnLoad.d.ts +25 -0
  156. package/dist/recyclerview/hooks/useOnLoad.d.ts.map +1 -0
  157. package/dist/recyclerview/hooks/useOnLoad.js +67 -0
  158. package/dist/recyclerview/hooks/useOnLoad.js.map +1 -0
  159. package/dist/recyclerview/hooks/useRecyclerViewController.d.ts +28 -0
  160. package/dist/recyclerview/hooks/useRecyclerViewController.d.ts.map +1 -0
  161. package/dist/recyclerview/hooks/useRecyclerViewController.js +507 -0
  162. package/dist/recyclerview/hooks/useRecyclerViewController.js.map +1 -0
  163. package/dist/recyclerview/hooks/useRecyclerViewManager.d.ts +8 -0
  164. package/dist/recyclerview/hooks/useRecyclerViewManager.d.ts.map +1 -0
  165. package/dist/recyclerview/hooks/useRecyclerViewManager.js +32 -0
  166. package/dist/recyclerview/hooks/useRecyclerViewManager.js.map +1 -0
  167. package/dist/recyclerview/hooks/useRecyclingState.d.ts +18 -0
  168. package/dist/recyclerview/hooks/useRecyclingState.d.ts.map +1 -0
  169. package/dist/recyclerview/hooks/useRecyclingState.js +49 -0
  170. package/dist/recyclerview/hooks/useRecyclingState.js.map +1 -0
  171. package/dist/recyclerview/hooks/useSecondaryProps.d.ts +27 -0
  172. package/dist/recyclerview/hooks/useSecondaryProps.d.ts.map +1 -0
  173. package/dist/recyclerview/hooks/useSecondaryProps.js +90 -0
  174. package/dist/recyclerview/hooks/useSecondaryProps.js.map +1 -0
  175. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.d.ts +15 -0
  176. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.d.ts.map +1 -0
  177. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js +58 -0
  178. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js.map +1 -0
  179. package/dist/recyclerview/hooks/useUnmountFlag.d.ts +10 -0
  180. package/dist/recyclerview/hooks/useUnmountFlag.d.ts.map +1 -0
  181. package/dist/recyclerview/hooks/useUnmountFlag.js +25 -0
  182. package/dist/recyclerview/hooks/useUnmountFlag.js.map +1 -0
  183. package/dist/recyclerview/layout-managers/GridLayoutManager.d.ts +79 -0
  184. package/dist/recyclerview/layout-managers/GridLayoutManager.d.ts.map +1 -0
  185. package/dist/recyclerview/layout-managers/GridLayoutManager.js +221 -0
  186. package/dist/recyclerview/layout-managers/GridLayoutManager.js.map +1 -0
  187. package/dist/recyclerview/layout-managers/LayoutManager.d.ts +296 -0
  188. package/dist/recyclerview/layout-managers/LayoutManager.d.ts.map +1 -0
  189. package/dist/recyclerview/layout-managers/LayoutManager.js +279 -0
  190. package/dist/recyclerview/layout-managers/LayoutManager.js.map +1 -0
  191. package/dist/recyclerview/layout-managers/LinearLayoutManager.d.ts +51 -0
  192. package/dist/recyclerview/layout-managers/LinearLayoutManager.d.ts.map +1 -0
  193. package/dist/recyclerview/layout-managers/LinearLayoutManager.js +151 -0
  194. package/dist/recyclerview/layout-managers/LinearLayoutManager.js.map +1 -0
  195. package/dist/recyclerview/layout-managers/MasonryLayoutManager.d.ts +81 -0
  196. package/dist/recyclerview/layout-managers/MasonryLayoutManager.d.ts.map +1 -0
  197. package/dist/recyclerview/layout-managers/MasonryLayoutManager.js +269 -0
  198. package/dist/recyclerview/layout-managers/MasonryLayoutManager.js.map +1 -0
  199. package/dist/recyclerview/utils/adjustOffsetForRTL.d.ts +12 -0
  200. package/dist/recyclerview/utils/adjustOffsetForRTL.d.ts.map +1 -0
  201. package/dist/recyclerview/utils/adjustOffsetForRTL.js +14 -0
  202. package/dist/recyclerview/utils/adjustOffsetForRTL.js.map +1 -0
  203. package/dist/recyclerview/utils/componentUtils.d.ts +19 -0
  204. package/dist/recyclerview/utils/componentUtils.d.ts.map +1 -0
  205. package/dist/recyclerview/utils/componentUtils.js +27 -0
  206. package/dist/recyclerview/utils/componentUtils.js.map +1 -0
  207. package/dist/recyclerview/utils/findVisibleIndex.d.ts +24 -0
  208. package/dist/recyclerview/utils/findVisibleIndex.d.ts.map +1 -0
  209. package/dist/recyclerview/utils/findVisibleIndex.js +76 -0
  210. package/dist/recyclerview/utils/findVisibleIndex.js.map +1 -0
  211. package/dist/recyclerview/utils/measureLayout.d.ts +52 -0
  212. package/dist/recyclerview/utils/measureLayout.d.ts.map +1 -0
  213. package/dist/recyclerview/utils/measureLayout.js +99 -0
  214. package/dist/recyclerview/utils/measureLayout.js.map +1 -0
  215. package/dist/recyclerview/utils/measureLayout.web.d.ts +29 -0
  216. package/dist/recyclerview/utils/measureLayout.web.d.ts.map +1 -0
  217. package/dist/recyclerview/utils/measureLayout.web.js +79 -0
  218. package/dist/recyclerview/utils/measureLayout.web.js.map +1 -0
  219. package/dist/recyclerview/viewability/ViewToken.d.ts +8 -0
  220. package/dist/recyclerview/viewability/ViewToken.d.ts.map +1 -0
  221. package/dist/recyclerview/viewability/ViewToken.js +2 -0
  222. package/dist/recyclerview/viewability/ViewToken.js.map +1 -0
  223. package/dist/recyclerview/viewability/ViewabilityHelper.d.ts +26 -0
  224. package/dist/recyclerview/viewability/ViewabilityHelper.d.ts.map +1 -0
  225. package/dist/recyclerview/viewability/ViewabilityHelper.js +98 -0
  226. package/dist/recyclerview/viewability/ViewabilityHelper.js.map +1 -0
  227. package/dist/recyclerview/viewability/ViewabilityManager.d.ts +25 -0
  228. package/dist/recyclerview/viewability/ViewabilityManager.d.ts.map +1 -0
  229. package/dist/recyclerview/viewability/ViewabilityManager.js +94 -0
  230. package/dist/recyclerview/viewability/ViewabilityManager.js.map +1 -0
  231. package/dist/tsconfig.tsbuildinfo +1 -1
  232. package/dist/utils/AverageWindow.d.ts +33 -43
  233. package/dist/utils/AverageWindow.d.ts.map +1 -1
  234. package/dist/utils/AverageWindow.js +66 -71
  235. package/dist/utils/AverageWindow.js.map +1 -1
  236. package/jestSetup.js +23 -37
  237. package/package.json +15 -24
  238. package/src/AnimatedFlashList.ts +2 -25
  239. package/src/FlashList.ts +1 -0
  240. package/src/FlashListProps.ts +109 -100
  241. package/src/FlashListRef.ts +320 -0
  242. package/src/benchmark/AutoScrollHelper.ts +0 -24
  243. package/src/benchmark/JSFPSMonitor.ts +2 -26
  244. package/src/benchmark/roundToDecimalPlaces.ts +0 -24
  245. package/src/benchmark/useBenchmark.ts +59 -105
  246. package/src/benchmark/useDataMultiplier.ts +0 -24
  247. package/src/benchmark/useFlatListBenchmark.ts +43 -32
  248. package/src/errors/ErrorMessages.ts +26 -0
  249. package/src/errors/WarningMessages.ts +9 -0
  250. package/src/index.ts +18 -46
  251. package/src/isNewArch.ts +25 -0
  252. package/src/native/config/PlatformHelper.android.ts +3 -49
  253. package/src/native/config/PlatformHelper.harmony.ts +3 -24
  254. package/src/native/config/PlatformHelper.ios.ts +3 -48
  255. package/src/native/config/PlatformHelper.ts +3 -49
  256. package/src/native/config/PlatformHelper.web.ts +4 -55
  257. package/src/recyclerview/LayoutCommitObserver.tsx +74 -0
  258. package/src/recyclerview/RecyclerView.tsx +616 -0
  259. package/src/recyclerview/RecyclerViewContextProvider.ts +65 -0
  260. package/src/recyclerview/RecyclerViewManager.ts +461 -0
  261. package/src/recyclerview/RecyclerViewProps.ts +1 -0
  262. package/src/recyclerview/RenderStackManager.ts +317 -0
  263. package/src/recyclerview/ViewHolder.tsx +180 -0
  264. package/src/recyclerview/ViewHolderCollection.tsx +193 -0
  265. package/src/recyclerview/components/CompatScroller.ts +9 -0
  266. package/src/recyclerview/components/CompatView.ts +9 -0
  267. package/src/recyclerview/components/ScrollAnchor.tsx +66 -0
  268. package/src/recyclerview/components/StickyHeaders.tsx +222 -0
  269. package/src/recyclerview/helpers/ConsecutiveNumbers.ts +120 -0
  270. package/src/recyclerview/helpers/EngagedIndicesTracker.ts +301 -0
  271. package/src/recyclerview/helpers/RenderTimeTracker.ts +50 -0
  272. package/src/recyclerview/helpers/VelocityTracker.ts +77 -0
  273. package/src/recyclerview/hooks/useBoundDetection.ts +176 -0
  274. package/src/recyclerview/hooks/useLayoutState.ts +55 -0
  275. package/src/recyclerview/hooks/useMappingHelper.ts +20 -0
  276. package/src/recyclerview/hooks/useOnLoad.ts +80 -0
  277. package/src/recyclerview/hooks/useRecyclerViewController.tsx +633 -0
  278. package/src/recyclerview/hooks/useRecyclerViewManager.ts +42 -0
  279. package/src/recyclerview/hooks/useRecyclingState.ts +67 -0
  280. package/src/recyclerview/hooks/useSecondaryProps.tsx +124 -0
  281. package/src/recyclerview/hooks/useUnmountAwareCallbacks.ts +73 -0
  282. package/src/recyclerview/hooks/useUnmountFlag.ts +27 -0
  283. package/src/recyclerview/layout-managers/GridLayoutManager.ts +256 -0
  284. package/src/recyclerview/layout-managers/LayoutManager.ts +568 -0
  285. package/src/recyclerview/layout-managers/LinearLayoutManager.ts +171 -0
  286. package/src/recyclerview/layout-managers/MasonryLayoutManager.ts +323 -0
  287. package/src/recyclerview/utils/adjustOffsetForRTL.ts +17 -0
  288. package/src/recyclerview/utils/componentUtils.ts +28 -0
  289. package/src/recyclerview/utils/findVisibleIndex.ts +93 -0
  290. package/src/recyclerview/utils/measureLayout.ts +128 -0
  291. package/src/recyclerview/utils/measureLayout.web.ts +102 -0
  292. package/src/recyclerview/viewability/ViewToken.ts +7 -0
  293. package/src/{viewability → recyclerview/viewability}/ViewabilityHelper.ts +8 -33
  294. package/src/{viewability → recyclerview/viewability}/ViewabilityManager.ts +23 -46
  295. package/src/utils/AverageWindow.ts +33 -24
  296. package/dist/GridLayoutProviderWithProps.d.ts +0 -65
  297. package/dist/GridLayoutProviderWithProps.d.ts.map +0 -1
  298. package/dist/GridLayoutProviderWithProps.js +0 -138
  299. package/dist/GridLayoutProviderWithProps.js.map +0 -1
  300. package/dist/MasonryFlashList.d.ts +0 -74
  301. package/dist/MasonryFlashList.d.ts.map +0 -1
  302. package/dist/MasonryFlashList.js +0 -275
  303. package/dist/MasonryFlashList.js.map +0 -1
  304. package/dist/PureComponentWrapper.d.ts +0 -45
  305. package/dist/PureComponentWrapper.d.ts.map +0 -1
  306. package/dist/PureComponentWrapper.js +0 -60
  307. package/dist/PureComponentWrapper.js.map +0 -1
  308. package/dist/__tests__/AverageWindow.test.d.ts +0 -2
  309. package/dist/__tests__/AverageWindow.test.d.ts.map +0 -1
  310. package/dist/__tests__/AverageWindow.test.js +0 -69
  311. package/dist/__tests__/AverageWindow.test.js.map +0 -1
  312. package/dist/__tests__/ContentContainerUtils.test.d.ts +0 -2
  313. package/dist/__tests__/ContentContainerUtils.test.d.ts.map +0 -1
  314. package/dist/__tests__/ContentContainerUtils.test.js +0 -85
  315. package/dist/__tests__/ContentContainerUtils.test.js.map +0 -1
  316. package/dist/__tests__/FlashList.test.d.ts +0 -2
  317. package/dist/__tests__/FlashList.test.d.ts.map +0 -1
  318. package/dist/__tests__/FlashList.test.js +0 -792
  319. package/dist/__tests__/FlashList.test.js.map +0 -1
  320. package/dist/__tests__/GridLayoutProviderWithProps.test.d.ts +0 -2
  321. package/dist/__tests__/GridLayoutProviderWithProps.test.d.ts.map +0 -1
  322. package/dist/__tests__/GridLayoutProviderWithProps.test.js +0 -143
  323. package/dist/__tests__/GridLayoutProviderWithProps.test.js.map +0 -1
  324. package/dist/__tests__/MasonryFlashList.test.d.ts +0 -2
  325. package/dist/__tests__/MasonryFlashList.test.d.ts.map +0 -1
  326. package/dist/__tests__/MasonryFlashList.test.js +0 -254
  327. package/dist/__tests__/MasonryFlashList.test.js.map +0 -1
  328. package/dist/__tests__/PlatformHelper.web.test.d.ts +0 -2
  329. package/dist/__tests__/PlatformHelper.web.test.d.ts.map +0 -1
  330. package/dist/__tests__/PlatformHelper.web.test.js +0 -33
  331. package/dist/__tests__/PlatformHelper.web.test.js.map +0 -1
  332. package/dist/__tests__/ViewabilityHelper.test.d.ts +0 -2
  333. package/dist/__tests__/ViewabilityHelper.test.d.ts.map +0 -1
  334. package/dist/__tests__/ViewabilityHelper.test.js +0 -187
  335. package/dist/__tests__/ViewabilityHelper.test.js.map +0 -1
  336. package/dist/__tests__/helpers/mountFlashList.d.ts +0 -19
  337. package/dist/__tests__/helpers/mountFlashList.d.ts.map +0 -1
  338. package/dist/__tests__/helpers/mountFlashList.js +0 -44
  339. package/dist/__tests__/helpers/mountFlashList.js.map +0 -1
  340. package/dist/__tests__/helpers/mountMasonryFlashList.d.ts +0 -18
  341. package/dist/__tests__/helpers/mountMasonryFlashList.d.ts.map +0 -1
  342. package/dist/__tests__/helpers/mountMasonryFlashList.js +0 -49
  343. package/dist/__tests__/helpers/mountMasonryFlashList.js.map +0 -1
  344. package/dist/__tests__/useBlankAreaTracker.test.d.ts +0 -2
  345. package/dist/__tests__/useBlankAreaTracker.test.d.ts.map +0 -1
  346. package/dist/__tests__/useBlankAreaTracker.test.js +0 -177
  347. package/dist/__tests__/useBlankAreaTracker.test.js.map +0 -1
  348. package/dist/benchmark/useBlankAreaTracker.d.ts +0 -57
  349. package/dist/benchmark/useBlankAreaTracker.d.ts.map +0 -1
  350. package/dist/benchmark/useBlankAreaTracker.js +0 -90
  351. package/dist/benchmark/useBlankAreaTracker.js.map +0 -1
  352. package/dist/errors/CustomError.d.ts +0 -31
  353. package/dist/errors/CustomError.d.ts.map +0 -1
  354. package/dist/errors/CustomError.js +0 -37
  355. package/dist/errors/CustomError.js.map +0 -1
  356. package/dist/errors/ExceptionList.d.ts +0 -47
  357. package/dist/errors/ExceptionList.d.ts.map +0 -1
  358. package/dist/errors/ExceptionList.js +0 -49
  359. package/dist/errors/ExceptionList.js.map +0 -1
  360. package/dist/errors/Warnings.d.ts +0 -32
  361. package/dist/errors/Warnings.d.ts.map +0 -1
  362. package/dist/errors/Warnings.js +0 -36
  363. package/dist/errors/Warnings.js.map +0 -1
  364. package/dist/fabric/AutoLayoutNativeComponent.d.ts +0 -42
  365. package/dist/fabric/AutoLayoutNativeComponent.d.ts.map +0 -1
  366. package/dist/fabric/AutoLayoutNativeComponent.js +0 -29
  367. package/dist/fabric/AutoLayoutNativeComponent.js.map +0 -1
  368. package/dist/fabric/CellContainerNativeComponent.d.ts +0 -31
  369. package/dist/fabric/CellContainerNativeComponent.d.ts.map +0 -1
  370. package/dist/fabric/CellContainerNativeComponent.js +0 -29
  371. package/dist/fabric/CellContainerNativeComponent.js.map +0 -1
  372. package/dist/native/auto-layout/AutoLayoutView.d.ts +0 -45
  373. package/dist/native/auto-layout/AutoLayoutView.d.ts.map +0 -1
  374. package/dist/native/auto-layout/AutoLayoutView.js +0 -71
  375. package/dist/native/auto-layout/AutoLayoutView.js.map +0 -1
  376. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.android.d.ts +0 -27
  377. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.android.d.ts.map +0 -1
  378. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.android.js +0 -29
  379. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.android.js.map +0 -1
  380. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.d.ts +0 -28
  381. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.d.ts.map +0 -1
  382. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.harmony.d.ts +0 -27
  383. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.harmony.d.ts.map +0 -1
  384. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.harmony.js +0 -29
  385. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.harmony.js.map +0 -1
  386. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.ios.d.ts +0 -27
  387. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.ios.d.ts.map +0 -1
  388. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.ios.js +0 -29
  389. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.ios.js.map +0 -1
  390. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.js +0 -29
  391. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.js.map +0 -1
  392. package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.d.ts +0 -39
  393. package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.d.ts.map +0 -1
  394. package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.js +0 -26
  395. package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.js.map +0 -1
  396. package/dist/native/cell-container/CellContainer.android.d.ts +0 -29
  397. package/dist/native/cell-container/CellContainer.android.d.ts.map +0 -1
  398. package/dist/native/cell-container/CellContainer.android.js +0 -32
  399. package/dist/native/cell-container/CellContainer.android.js.map +0 -1
  400. package/dist/native/cell-container/CellContainer.d.ts +0 -31
  401. package/dist/native/cell-container/CellContainer.d.ts.map +0 -1
  402. package/dist/native/cell-container/CellContainer.harmony.d.ts +0 -29
  403. package/dist/native/cell-container/CellContainer.harmony.d.ts.map +0 -1
  404. package/dist/native/cell-container/CellContainer.harmony.js +0 -32
  405. package/dist/native/cell-container/CellContainer.harmony.js.map +0 -1
  406. package/dist/native/cell-container/CellContainer.ios.d.ts +0 -29
  407. package/dist/native/cell-container/CellContainer.ios.d.ts.map +0 -1
  408. package/dist/native/cell-container/CellContainer.ios.js +0 -32
  409. package/dist/native/cell-container/CellContainer.ios.js.map +0 -1
  410. package/dist/native/cell-container/CellContainer.js +0 -34
  411. package/dist/native/cell-container/CellContainer.js.map +0 -1
  412. package/dist/native/cell-container/CellContainer.web.d.ts +0 -30
  413. package/dist/native/cell-container/CellContainer.web.d.ts.map +0 -1
  414. package/dist/native/cell-container/CellContainer.web.js +0 -36
  415. package/dist/native/cell-container/CellContainer.web.js.map +0 -1
  416. package/dist/utils/ContentContainerUtils.d.ts +0 -50
  417. package/dist/utils/ContentContainerUtils.d.ts.map +0 -1
  418. package/dist/utils/ContentContainerUtils.js +0 -71
  419. package/dist/utils/ContentContainerUtils.js.map +0 -1
  420. package/dist/viewability/ViewToken.d.ts +0 -31
  421. package/dist/viewability/ViewToken.d.ts.map +0 -1
  422. package/dist/viewability/ViewToken.js +0 -26
  423. package/dist/viewability/ViewToken.js.map +0 -1
  424. package/dist/viewability/ViewabilityHelper.d.ts +0 -49
  425. package/dist/viewability/ViewabilityHelper.d.ts.map +0 -1
  426. package/dist/viewability/ViewabilityHelper.js +0 -130
  427. package/dist/viewability/ViewabilityHelper.js.map +0 -1
  428. package/dist/viewability/ViewabilityManager.d.ts +0 -48
  429. package/dist/viewability/ViewabilityManager.d.ts.map +0 -1
  430. package/dist/viewability/ViewabilityManager.js +0 -131
  431. package/dist/viewability/ViewabilityManager.js.map +0 -1
  432. package/harmony/flash_list/BuildProfile.ets +0 -17
  433. package/harmony/flash_list/LICENSE +0 -7
  434. package/harmony/flash_list/build-profile.json5 +0 -8
  435. package/harmony/flash_list/hvigorfile.ts +0 -1
  436. package/harmony/flash_list/index.ets +0 -27
  437. package/harmony/flash_list/obfuscation-rules.txt +0 -18
  438. package/harmony/flash_list/oh-package.json5 +0 -24
  439. package/harmony/flash_list/src/main/cpp/AutoLayoutNode.cpp +0 -63
  440. package/harmony/flash_list/src/main/cpp/AutoLayoutNode.h +0 -54
  441. package/harmony/flash_list/src/main/cpp/AutoLayoutShadow.cpp +0 -140
  442. package/harmony/flash_list/src/main/cpp/AutoLayoutShadow.h +0 -66
  443. package/harmony/flash_list/src/main/cpp/AutoLayoutViewComponentInstance.cpp +0 -208
  444. package/harmony/flash_list/src/main/cpp/AutoLayoutViewComponentInstance.h +0 -78
  445. package/harmony/flash_list/src/main/cpp/AutoLayoutViewEventEmitRequestHandler.h +0 -53
  446. package/harmony/flash_list/src/main/cpp/AutoLayoutViewJSIBinder.h +0 -50
  447. package/harmony/flash_list/src/main/cpp/CMakeLists.txt +0 -12
  448. package/harmony/flash_list/src/main/cpp/CellContainerComponentInstance.cpp +0 -80
  449. package/harmony/flash_list/src/main/cpp/CellContainerComponentInstance.h +0 -64
  450. package/harmony/flash_list/src/main/cpp/CellContainerJSIBinder.h +0 -39
  451. package/harmony/flash_list/src/main/cpp/ComponentDescriptors.h +0 -40
  452. package/harmony/flash_list/src/main/cpp/EventEmitters.cpp +0 -40
  453. package/harmony/flash_list/src/main/cpp/EventEmitters.h +0 -48
  454. package/harmony/flash_list/src/main/cpp/FlashListPackage.h +0 -85
  455. package/harmony/flash_list/src/main/cpp/FlashListStackNode.cpp +0 -87
  456. package/harmony/flash_list/src/main/cpp/FlashListStackNode.h +0 -57
  457. package/harmony/flash_list/src/main/cpp/Props.cpp +0 -52
  458. package/harmony/flash_list/src/main/cpp/Props.h +0 -64
  459. package/harmony/flash_list/src/main/cpp/ShadowNodes.cpp +0 -34
  460. package/harmony/flash_list/src/main/cpp/ShadowNodes.h +0 -48
  461. package/harmony/flash_list/src/main/ets/Logger.ets +0 -64
  462. package/harmony/flash_list/src/main/ets/RNAutoLayoutShadow.ets +0 -154
  463. package/harmony/flash_list/src/main/ets/RNAutoLayoutView.ets +0 -277
  464. package/harmony/flash_list/src/main/ets/RNCellContainer.ets +0 -113
  465. package/harmony/flash_list/src/main/module.json5 +0 -9
  466. package/harmony/flash_list/src/main/resources/base/element/color.json +0 -8
  467. package/harmony/flash_list/src/main/resources/base/element/string.json +0 -16
  468. package/harmony/flash_list/src/main/resources/base/media/icon.png +0 -0
  469. package/harmony/flash_list/src/main/resources/base/profile/main_pages.json +0 -5
  470. package/harmony/flash_list/src/main/resources/en_US/element/string.json +0 -16
  471. package/harmony/flash_list/src/main/resources/zh_CN/element/string.json +0 -16
  472. package/harmony/flash_list.har +0 -0
  473. package/src/FlashList.tsx +0 -949
  474. package/src/GridLayoutProviderWithProps.ts +0 -204
  475. package/src/MasonryFlashList.tsx +0 -499
  476. package/src/PureComponentWrapper.tsx +0 -65
  477. package/src/benchmark/useBlankAreaTracker.ts +0 -141
  478. package/src/errors/CustomError.ts +0 -34
  479. package/src/errors/ExceptionList.ts +0 -52
  480. package/src/errors/Warnings.ts +0 -39
  481. package/src/fabric/AutoLayoutNativeComponent.ts +0 -52
  482. package/src/fabric/CellContainerNativeComponent.ts +0 -35
  483. package/src/native/auto-layout/AutoLayoutView.tsx +0 -97
  484. package/src/native/auto-layout/AutoLayoutViewNativeComponent.android.ts +0 -31
  485. package/src/native/auto-layout/AutoLayoutViewNativeComponent.harmony.ts +0 -31
  486. package/src/native/auto-layout/AutoLayoutViewNativeComponent.ios.ts +0 -31
  487. package/src/native/auto-layout/AutoLayoutViewNativeComponent.ts +0 -31
  488. package/src/native/auto-layout/AutoLayoutViewNativeComponentProps.ts +0 -41
  489. package/src/native/cell-container/CellContainer.android.ts +0 -31
  490. package/src/native/cell-container/CellContainer.harmony.ts +0 -31
  491. package/src/native/cell-container/CellContainer.ios.ts +0 -31
  492. package/src/native/cell-container/CellContainer.tsx +0 -38
  493. package/src/native/cell-container/CellContainer.web.tsx +0 -33
  494. package/src/utils/ContentContainerUtils.ts +0 -116
  495. package/src/viewability/ViewToken.ts +0 -31
@@ -0,0 +1,202 @@
1
+ import { PlatformConfig } from "../../native/config/PlatformHelper";
2
+ import { ConsecutiveNumbers } from "./ConsecutiveNumbers";
3
+ export class RVEngagedIndicesTrackerImpl {
4
+ constructor() {
5
+ // Current scroll position of the list
6
+ this.scrollOffset = 0;
7
+ // Distance to pre-render items before and after the visible viewport (in pixels)
8
+ this.drawDistance = PlatformConfig.defaultDrawDistance;
9
+ // Whether to use offset projection to predict the next scroll offset
10
+ this.enableOffsetProjection = true;
11
+ // Average render time of the list
12
+ this.averageRenderTime = 16;
13
+ // Internal override to disable offset projection
14
+ this.forceDisableOffsetProjection = false;
15
+ // Currently rendered item indices (including buffer items)
16
+ this.engagedIndices = ConsecutiveNumbers.EMPTY;
17
+ // Buffer distribution multipliers for scroll direction optimization
18
+ this.smallMultiplier = 0.3; // Used for buffer in the opposite direction of scroll
19
+ this.largeMultiplier = 0.7; // Used for buffer in the direction of scroll
20
+ // Circular buffer to track recent scroll velocities for direction detection
21
+ this.velocityHistory = [0, 0, 0, -0.1, -0.1];
22
+ this.velocityIndex = 0;
23
+ }
24
+ /**
25
+ * Updates scroll position and determines which items should be rendered.
26
+ * Implements a smart buffer system that:
27
+ * 1. Calculates the visible viewport
28
+ * 2. Determines optimal buffer distribution based on scroll direction
29
+ * 3. Adjusts buffer sizes at list boundaries
30
+ * 4. Returns new indices that need to be rendered
31
+ */
32
+ updateScrollOffset(offset, velocity, layoutManager) {
33
+ // Update current scroll position
34
+ this.scrollOffset = offset;
35
+ // STEP 1: Determine the currently visible viewport
36
+ const windowSize = layoutManager.getWindowsSize();
37
+ const isHorizontal = layoutManager.isHorizontal();
38
+ // Update velocity history
39
+ if (velocity) {
40
+ this.updateVelocityHistory(isHorizontal ? velocity.x : velocity.y);
41
+ }
42
+ // Determine scroll direction to optimize buffer distribution
43
+ const isScrollingBackward = this.isScrollingBackward();
44
+ const viewportStart = this.enableOffsetProjection && !this.forceDisableOffsetProjection
45
+ ? this.getProjectedScrollOffset(offset, this.averageRenderTime)
46
+ : offset;
47
+ // console.log("timeMs", this.averageRenderTime, offset, viewportStart);
48
+ const viewportSize = isHorizontal ? windowSize.width : windowSize.height;
49
+ const viewportEnd = viewportStart + viewportSize;
50
+ // STEP 2: Determine buffer size and distribution
51
+ // The total extra space where items will be pre-rendered
52
+ const totalBuffer = this.drawDistance * 2;
53
+ // Distribute more buffer in the direction of scrolling
54
+ // When scrolling forward: more buffer after viewport
55
+ // When scrolling backward: more buffer before viewport
56
+ const beforeRatio = isScrollingBackward
57
+ ? this.largeMultiplier
58
+ : this.smallMultiplier;
59
+ const afterRatio = isScrollingBackward
60
+ ? this.smallMultiplier
61
+ : this.largeMultiplier;
62
+ const bufferBefore = Math.ceil(totalBuffer * beforeRatio);
63
+ const bufferAfter = Math.ceil(totalBuffer * afterRatio);
64
+ // STEP 3: Calculate the extended viewport (visible area + buffers)
65
+ // The start position with buffer (never less than 0)
66
+ let extendedStart = Math.max(0, viewportStart - bufferBefore);
67
+ // If we couldn't apply full buffer at start, calculate how much was unused
68
+ const unusedStartBuffer = Math.max(0, bufferBefore - viewportStart);
69
+ // Add any unused start buffer to the end buffer
70
+ let extendedEnd = viewportEnd + bufferAfter + unusedStartBuffer;
71
+ // STEP 4: Handle end boundary adjustments
72
+ // Get the total content size to check for end boundary
73
+ const layoutSize = layoutManager.getLayoutSize();
74
+ const maxPosition = isHorizontal ? layoutSize.width : layoutSize.height;
75
+ // If we hit the end boundary, redistribute unused buffer to the start
76
+ if (extendedEnd > maxPosition) {
77
+ // Calculate unused end buffer and apply it to the start if possible
78
+ const unusedEndBuffer = extendedEnd - maxPosition;
79
+ extendedEnd = maxPosition;
80
+ // Try to extend start position further with the unused end buffer
81
+ extendedStart = Math.max(0, extendedStart - unusedEndBuffer);
82
+ }
83
+ // STEP 5: Get and return the new engaged indices
84
+ const newEngagedIndices = layoutManager.getVisibleLayouts(extendedStart, extendedEnd);
85
+ // console.log(
86
+ // "newEngagedIndices",
87
+ // newEngagedIndices,
88
+ // this.scrollOffset,
89
+ // viewportStart
90
+ // );
91
+ // Only return new indices if they've changed
92
+ const oldEngagedIndices = this.engagedIndices;
93
+ this.engagedIndices = newEngagedIndices;
94
+ return newEngagedIndices.equals(oldEngagedIndices)
95
+ ? undefined
96
+ : newEngagedIndices;
97
+ }
98
+ /**
99
+ * Updates the velocity history with a new velocity value.
100
+ * @param velocity - Current scroll velocity component (x or y)
101
+ */
102
+ updateVelocityHistory(velocity) {
103
+ this.velocityHistory[this.velocityIndex] = velocity;
104
+ this.velocityIndex = (this.velocityIndex + 1) % this.velocityHistory.length;
105
+ }
106
+ /**
107
+ * Determines scroll direction by analyzing recent velocity history.
108
+ * Uses a majority voting system on the last 5 velocity values.
109
+ * @returns true if scrolling backward (negative direction), false otherwise
110
+ */
111
+ isScrollingBackward() {
112
+ // should decide based on whether we have more positive or negative values, use for loop
113
+ let positiveCount = 0;
114
+ let negativeCount = 0;
115
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
116
+ for (let i = 0; i < this.velocityHistory.length; i++) {
117
+ if (this.velocityHistory[i] > 0) {
118
+ positiveCount++;
119
+ }
120
+ else if (this.velocityHistory[i] < 0) {
121
+ negativeCount++;
122
+ }
123
+ }
124
+ return positiveCount < negativeCount;
125
+ }
126
+ /**
127
+ * Calculates the median velocity based on velocity history
128
+ * Medina works better agains outliers
129
+ * @returns Median velocity over the recent history
130
+ */
131
+ getMedianVelocity() {
132
+ // Make a copy of velocity history and sort it
133
+ const sortedVelocities = [...this.velocityHistory].sort((valueA, valueB) => valueA - valueB);
134
+ const length = sortedVelocities.length;
135
+ // If length is odd, return the middle element
136
+ if (length % 2 === 1) {
137
+ return sortedVelocities[Math.floor(length / 2)];
138
+ }
139
+ // If length is even, return the average of the two middle elements
140
+ const midIndex = length / 2;
141
+ return (sortedVelocities[midIndex - 1] + sortedVelocities[midIndex]) / 2;
142
+ }
143
+ /**
144
+ * Projects the next scroll offset based on median velocity
145
+ * @param timeMs Time in milliseconds to predict ahead
146
+ * @returns Projected scroll offset
147
+ */
148
+ getProjectedScrollOffset(offset, timeMs) {
149
+ const medianVelocity = this.getMedianVelocity();
150
+ // Convert time from ms to seconds for velocity calculation
151
+ // Predict next position: current position + (velocity * time)
152
+ return offset + medianVelocity * timeMs;
153
+ }
154
+ /**
155
+ * Calculates which items are currently visible in the viewport.
156
+ * Unlike getEngagedIndices, this doesn't include buffer items.
157
+ * @param layoutManager - Layout manager to fetch item positions
158
+ * @returns Indices of items currently visible in the viewport
159
+ */
160
+ computeVisibleIndices(layoutManager) {
161
+ const windowSize = layoutManager.getWindowsSize();
162
+ const isHorizontal = layoutManager.isHorizontal();
163
+ // Calculate viewport boundaries
164
+ const viewportStart = this.scrollOffset;
165
+ const viewportSize = isHorizontal ? windowSize.width : windowSize.height;
166
+ const viewportEnd = viewportStart + viewportSize;
167
+ // Get indices of items currently visible in the viewport
168
+ const newVisibleIndices = layoutManager.getVisibleLayouts(viewportStart, viewportEnd);
169
+ return newVisibleIndices;
170
+ }
171
+ /**
172
+ * Returns the currently engaged (rendered) indices.
173
+ * This includes both visible items and buffer items.
174
+ * @returns The last computed set of engaged indices
175
+ */
176
+ getEngagedIndices() {
177
+ return this.engagedIndices;
178
+ }
179
+ setScrollDirection(scrollDirection) {
180
+ if (scrollDirection === "forward") {
181
+ this.velocityHistory = [0, 0, 0, 0.1, 0.1];
182
+ this.velocityIndex = 0;
183
+ }
184
+ else {
185
+ this.velocityHistory = [0, 0, 0, -0.1, -0.1];
186
+ this.velocityIndex = 0;
187
+ }
188
+ }
189
+ /**
190
+ * Resets the velocity history based on the current scroll direction.
191
+ * This ensures that the velocity history is always in sync with the current scroll direction.
192
+ */
193
+ resetVelocityHistory() {
194
+ if (this.isScrollingBackward()) {
195
+ this.setScrollDirection("backward");
196
+ }
197
+ else {
198
+ this.setScrollDirection("forward");
199
+ }
200
+ }
201
+ }
202
+ //# sourceMappingURL=EngagedIndicesTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EngagedIndicesTracker.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/EngagedIndicesTracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare class RenderTimeTracker {
2
+ private renderTimeAvgWindow;
3
+ private lastTimerStartedAt;
4
+ private maxRenderTime;
5
+ private defaultRenderTime;
6
+ private rendersWithoutCommit;
7
+ private maxRendersWithoutCommit;
8
+ startTracking(): void;
9
+ markRenderComplete(): void;
10
+ hasExceededMaxRendersWithoutCommit(): boolean;
11
+ getRawValue(): number;
12
+ getAverageRenderTime(): number;
13
+ }
14
+ //# sourceMappingURL=RenderTimeTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderTimeTracker.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/helpers/RenderTimeTracker.ts"],"names":[],"mappings":"AAGA,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,mBAAmB,CAAwB;IACnD,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,iBAAiB,CAAM;IAC/B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,uBAAuB,CAAM;IAErC,aAAa;IAUb,kBAAkB;IAWlB,kCAAkC;IAIlC,WAAW;IAIX,oBAAoB;CASrB"}
@@ -0,0 +1,44 @@
1
+ import { PlatformConfig } from "../../native/config/PlatformHelper";
2
+ import { AverageWindow } from "../../utils/AverageWindow";
3
+ export class RenderTimeTracker {
4
+ constructor() {
5
+ this.renderTimeAvgWindow = new AverageWindow(5);
6
+ this.lastTimerStartedAt = -1;
7
+ this.maxRenderTime = 32; // TODO: Improve this even more
8
+ this.defaultRenderTime = 16;
9
+ this.rendersWithoutCommit = 0;
10
+ this.maxRendersWithoutCommit = 40;
11
+ }
12
+ startTracking() {
13
+ this.rendersWithoutCommit++;
14
+ if (!PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
15
+ return;
16
+ }
17
+ if (this.lastTimerStartedAt === -1) {
18
+ this.lastTimerStartedAt = Date.now();
19
+ }
20
+ }
21
+ markRenderComplete() {
22
+ this.rendersWithoutCommit = 0;
23
+ if (!PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
24
+ return;
25
+ }
26
+ if (this.lastTimerStartedAt !== -1) {
27
+ this.renderTimeAvgWindow.addValue(Date.now() - this.lastTimerStartedAt);
28
+ this.lastTimerStartedAt = -1;
29
+ }
30
+ }
31
+ hasExceededMaxRendersWithoutCommit() {
32
+ return this.rendersWithoutCommit >= this.maxRendersWithoutCommit;
33
+ }
34
+ getRawValue() {
35
+ return this.renderTimeAvgWindow.currentValue;
36
+ }
37
+ getAverageRenderTime() {
38
+ if (!PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
39
+ return this.defaultRenderTime;
40
+ }
41
+ return Math.min(this.maxRenderTime, Math.max(Math.round(this.renderTimeAvgWindow.currentValue), 16));
42
+ }
43
+ }
44
+ //# sourceMappingURL=RenderTimeTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderTimeTracker.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/RenderTimeTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,OAAO,iBAAiB;IAA9B;QACU,wBAAmB,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3C,uBAAkB,GAAG,CAAC,CAAC,CAAC;QACxB,kBAAa,GAAG,EAAE,CAAC,CAAC,+BAA+B;QACnD,sBAAiB,GAAG,EAAE,CAAC;QACvB,yBAAoB,GAAG,CAAC,CAAC;QACzB,4BAAuB,GAAG,EAAE,CAAC;IAwCvC,CAAC;IAtCC,aAAa;QACX,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,yCAAyC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,yCAAyC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACxE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,kCAAkC;QAChC,OAAO,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,uBAAuB,CAAC;IACnE,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;IAC/C,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,cAAc,CAAC,yCAAyC,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAChE,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Tracks and calculates velocity for scroll/drag movements
3
+ * Used to determine momentum scrolling behavior
4
+ */
5
+ export declare class VelocityTracker<T> {
6
+ /** Timestamp of the last velocity update */
7
+ private lastUpdateTime;
8
+ /** Current velocity vector with x and y components */
9
+ private velocity;
10
+ /** Reference to the momentum end timeout */
11
+ private timeoutId;
12
+ /**
13
+ * Calculates velocity based on position change over time
14
+ * @param newOffset Current position value
15
+ * @param oldOffset Previous position value
16
+ * @param isHorizontal Whether movement is horizontal (true) or vertical (false)
17
+ * @param isRTL Whether layout direction is right-to-left
18
+ * @param callback Function to call with velocity updates and momentum end signal
19
+ */
20
+ computeVelocity(newOffset: number, oldOffset: number, isHorizontal: boolean, callback: (velocity: {
21
+ x: number;
22
+ y: number;
23
+ }, isMomentumEnd: boolean) => void): void;
24
+ /**
25
+ * Cleans up resources by clearing any pending timeout
26
+ */
27
+ cleanUp(): void;
28
+ }
29
+ //# sourceMappingURL=VelocityTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VelocityTracker.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/helpers/VelocityTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,eAAe,CAAC,CAAC;IAC5B,4CAA4C;IAC5C,OAAO,CAAC,cAAc,CAAc;IACpC,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAkB;IAElC,4CAA4C;IAC5C,OAAO,CAAC,SAAS,CAA+B;IAEhD;;;;;;;OAOG;IACH,eAAe,CACb,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,CACR,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAClC,aAAa,EAAE,OAAO,KACnB,IAAI;IAuCX;;OAEG;IACH,OAAO;CAMR"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Tracks and calculates velocity for scroll/drag movements
3
+ * Used to determine momentum scrolling behavior
4
+ */
5
+ export class VelocityTracker {
6
+ constructor() {
7
+ /** Timestamp of the last velocity update */
8
+ this.lastUpdateTime = Date.now();
9
+ /** Current velocity vector with x and y components */
10
+ this.velocity = { x: 0, y: 0 };
11
+ /** Reference to the momentum end timeout */
12
+ this.timeoutId = null;
13
+ }
14
+ /**
15
+ * Calculates velocity based on position change over time
16
+ * @param newOffset Current position value
17
+ * @param oldOffset Previous position value
18
+ * @param isHorizontal Whether movement is horizontal (true) or vertical (false)
19
+ * @param isRTL Whether layout direction is right-to-left
20
+ * @param callback Function to call with velocity updates and momentum end signal
21
+ */
22
+ computeVelocity(newOffset, oldOffset, isHorizontal, callback) {
23
+ // Clear any pending momentum end timeout
24
+ this.cleanUp();
25
+ // Calculate time since last update
26
+ const currentTime = Date.now();
27
+ const timeSinceLastUpdate = Math.max(1, currentTime - this.lastUpdateTime);
28
+ // Calculate velocity as distance/time
29
+ const newVelocity = (newOffset - oldOffset) / timeSinceLastUpdate;
30
+ // console.log(
31
+ // "newVelocity",
32
+ // newOffset,
33
+ // oldOffset,
34
+ // currentTime,
35
+ // this.lastUpdateTime,
36
+ // timeSinceLastUpdate,
37
+ // newVelocity
38
+ // );
39
+ this.lastUpdateTime = currentTime;
40
+ // Apply velocity to the correct axis
41
+ this.velocity.x = isHorizontal ? newVelocity : 0;
42
+ this.velocity.y = isHorizontal ? 0 : newVelocity;
43
+ // Trigger callback with current velocity
44
+ callback(this.velocity, false);
45
+ // Set timeout to signal momentum end after 100ms of no updates
46
+ this.timeoutId = setTimeout(() => {
47
+ this.cleanUp();
48
+ this.lastUpdateTime = Date.now();
49
+ this.velocity.x = 0;
50
+ this.velocity.y = 0;
51
+ callback(this.velocity, true);
52
+ }, 100);
53
+ }
54
+ /**
55
+ * Cleans up resources by clearing any pending timeout
56
+ */
57
+ cleanUp() {
58
+ if (this.timeoutId !== null) {
59
+ clearTimeout(this.timeoutId);
60
+ this.timeoutId = null;
61
+ }
62
+ }
63
+ }
64
+ //# sourceMappingURL=VelocityTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VelocityTracker.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/VelocityTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,eAAe;IAA5B;QACE,4CAA4C;QACpC,mBAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,sDAAsD;QAC9C,aAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAElC,4CAA4C;QACpC,cAAS,GAA0B,IAAI,CAAC;IAiElD,CAAC;IA/DC;;;;;;;OAOG;IACH,eAAe,CACb,SAAiB,EACjB,SAAiB,EACjB,YAAqB,EACrB,QAGS;QAET,yCAAyC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,mCAAmC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QAE3E,sCAAsC;QACtC,MAAM,WAAW,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,mBAAmB,CAAC;QAElE,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,eAAe;QACf,iBAAiB;QACjB,yBAAyB;QACzB,yBAAyB;QACzB,gBAAgB;QAChB,KAAK;QACL,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;QAElC,qCAAqC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAEjD,yCAAyC;QACzC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE/B,+DAA+D;QAC/D,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import { RecyclerViewManager } from "../RecyclerViewManager";
2
+ import { CompatScroller } from "../components/CompatScroller";
3
+ /**
4
+ * Hook to detect when the scroll position reaches near the start or end of the list
5
+ * and trigger the appropriate callbacks. This hook is responsible for:
6
+ * 1. Detecting when the user scrolls near the end of the list (onEndReached)
7
+ * 2. Detecting when the user scrolls near the start of the list (onStartReached)
8
+ * 3. Managing auto-scrolling to bottom when new content is added
9
+ *
10
+ * @param recyclerViewManager - The RecyclerViewManager instance that handles the list's core functionality
11
+ * @param props - The RecyclerViewProps containing configuration and callbacks
12
+ * @param scrollViewRef - Reference to the scrollable container component
13
+ */
14
+ export declare function useBoundDetection<T>(recyclerViewManager: RecyclerViewManager<T>, scrollViewRef: React.RefObject<CompatScroller>): {
15
+ checkBounds: () => void;
16
+ };
17
+ //# sourceMappingURL=useBoundDetection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBoundDetection.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/hooks/useBoundDetection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAI9D;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC3C,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC;;EA2J/C"}
@@ -0,0 +1,132 @@
1
+ import { useCallback, useEffect, useMemo, useRef } from "react";
2
+ import { useUnmountAwareAnimationFrame } from "./useUnmountAwareCallbacks";
3
+ /**
4
+ * Hook to detect when the scroll position reaches near the start or end of the list
5
+ * and trigger the appropriate callbacks. This hook is responsible for:
6
+ * 1. Detecting when the user scrolls near the end of the list (onEndReached)
7
+ * 2. Detecting when the user scrolls near the start of the list (onStartReached)
8
+ * 3. Managing auto-scrolling to bottom when new content is added
9
+ *
10
+ * @param recyclerViewManager - The RecyclerViewManager instance that handles the list's core functionality
11
+ * @param props - The RecyclerViewProps containing configuration and callbacks
12
+ * @param scrollViewRef - Reference to the scrollable container component
13
+ */
14
+ export function useBoundDetection(recyclerViewManager, scrollViewRef) {
15
+ // Track whether we've already triggered the end reached callback to prevent duplicate calls
16
+ const pendingEndReached = useRef(false);
17
+ // Track whether we've already triggered the start reached callback to prevent duplicate calls
18
+ const pendingStartReached = useRef(false);
19
+ // Track whether we should auto-scroll to bottom when new content is added
20
+ const pendingAutoscrollToBottom = useRef(false);
21
+ const lastCheckBoundsTime = useRef(Date.now());
22
+ const { data } = recyclerViewManager.props;
23
+ const { requestAnimationFrame } = useUnmountAwareAnimationFrame();
24
+ const windowHeight = recyclerViewManager.hasLayout()
25
+ ? recyclerViewManager.getWindowSize().height
26
+ : 0;
27
+ const contentHeight = recyclerViewManager.hasLayout()
28
+ ? recyclerViewManager.getChildContainerDimensions().height
29
+ : 0;
30
+ const windowWidth = recyclerViewManager.hasLayout()
31
+ ? recyclerViewManager.getWindowSize().width
32
+ : 0;
33
+ const contentWidth = recyclerViewManager.hasLayout()
34
+ ? recyclerViewManager.getChildContainerDimensions().width
35
+ : 0;
36
+ /**
37
+ * Checks if the scroll position is near the start or end of the list
38
+ * and triggers appropriate callbacks if configured.
39
+ */
40
+ const checkBounds = useCallback(() => {
41
+ var _a;
42
+ lastCheckBoundsTime.current = Date.now();
43
+ const { onEndReached, onStartReached, maintainVisibleContentPosition, horizontal, onEndReachedThreshold: onEndReachedThresholdProp, onStartReachedThreshold: onStartReachedThresholdProp, } = recyclerViewManager.props;
44
+ // Skip all calculations if neither callback is provided and autoscroll is disabled
45
+ const autoscrollToBottomThreshold = (_a = maintainVisibleContentPosition === null || maintainVisibleContentPosition === void 0 ? void 0 : maintainVisibleContentPosition.autoscrollToBottomThreshold) !== null && _a !== void 0 ? _a : -1;
46
+ if (!onEndReached && !onStartReached && autoscrollToBottomThreshold < 0) {
47
+ return;
48
+ }
49
+ if (recyclerViewManager.getIsFirstLayoutComplete()) {
50
+ const lastScrollOffset = recyclerViewManager.getAbsoluteLastScrollOffset();
51
+ const contentSize = recyclerViewManager.getChildContainerDimensions();
52
+ const windowSize = recyclerViewManager.getWindowSize();
53
+ const isHorizontal = horizontal === true;
54
+ // Calculate dimensions based on scroll direction
55
+ const visibleLength = isHorizontal ? windowSize.width : windowSize.height;
56
+ const contentLength = (isHorizontal ? contentSize.width : contentSize.height) +
57
+ recyclerViewManager.firstItemOffset;
58
+ // Check if we're near the end of the list
59
+ if (onEndReached) {
60
+ const onEndReachedThreshold = onEndReachedThresholdProp !== null && onEndReachedThresholdProp !== void 0 ? onEndReachedThresholdProp : 0.5;
61
+ const endThresholdDistance = onEndReachedThreshold * visibleLength;
62
+ const isNearEnd = Math.ceil(lastScrollOffset + visibleLength) >=
63
+ contentLength - endThresholdDistance;
64
+ if (isNearEnd && !pendingEndReached.current) {
65
+ pendingEndReached.current = true;
66
+ onEndReached();
67
+ }
68
+ pendingEndReached.current = isNearEnd;
69
+ }
70
+ // Check if we're near the start of the list
71
+ if (onStartReached) {
72
+ const onStartReachedThreshold = onStartReachedThresholdProp !== null && onStartReachedThresholdProp !== void 0 ? onStartReachedThresholdProp : 0.2;
73
+ const startThresholdDistance = onStartReachedThreshold * visibleLength;
74
+ const isNearStart = lastScrollOffset <= startThresholdDistance;
75
+ if (isNearStart && !pendingStartReached.current) {
76
+ pendingStartReached.current = true;
77
+ onStartReached();
78
+ }
79
+ pendingStartReached.current = isNearStart;
80
+ }
81
+ // Handle auto-scrolling to bottom for vertical lists
82
+ if (!isHorizontal && autoscrollToBottomThreshold >= 0) {
83
+ const autoscrollToBottomThresholdDistance = autoscrollToBottomThreshold * visibleLength;
84
+ const isNearBottom = Math.ceil(lastScrollOffset + visibleLength) >=
85
+ contentLength - autoscrollToBottomThresholdDistance;
86
+ if (isNearBottom) {
87
+ pendingAutoscrollToBottom.current = true;
88
+ }
89
+ else {
90
+ pendingAutoscrollToBottom.current = false;
91
+ }
92
+ }
93
+ }
94
+ }, [recyclerViewManager]);
95
+ const runAutoScrollToBottomCheck = useCallback(() => {
96
+ if (pendingAutoscrollToBottom.current) {
97
+ pendingAutoscrollToBottom.current = false;
98
+ requestAnimationFrame(() => {
99
+ var _a, _b, _c;
100
+ const shouldAnimate = (_b = (_a = recyclerViewManager.props.maintainVisibleContentPosition) === null || _a === void 0 ? void 0 : _a.animateAutoScrollToBottom) !== null && _b !== void 0 ? _b : true;
101
+ (_c = scrollViewRef.current) === null || _c === void 0 ? void 0 : _c.scrollToEnd({
102
+ animated: shouldAnimate,
103
+ });
104
+ });
105
+ }
106
+ }, [requestAnimationFrame, scrollViewRef, recyclerViewManager]);
107
+ // Reset end reached state when data changes
108
+ useMemo(() => {
109
+ pendingEndReached.current = false;
110
+ // needs to run only when data changes
111
+ // eslint-disable-next-line react-hooks/exhaustive-deps
112
+ }, [data]);
113
+ // Auto-scroll to bottom when new content is added and we're near the bottom
114
+ useEffect(() => {
115
+ runAutoScrollToBottomCheck();
116
+ }, [data, runAutoScrollToBottomCheck, windowHeight, windowWidth]);
117
+ // Since content changes frequently, we try and avoid doing the auto scroll during active scrolls
118
+ useEffect(() => {
119
+ if (Date.now() - lastCheckBoundsTime.current >= 100) {
120
+ runAutoScrollToBottomCheck();
121
+ }
122
+ }, [
123
+ contentHeight,
124
+ contentWidth,
125
+ recyclerViewManager.firstItemOffset,
126
+ runAutoScrollToBottomCheck,
127
+ ]);
128
+ return {
129
+ checkBounds,
130
+ };
131
+ }
132
+ //# sourceMappingURL=useBoundDetection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBoundDetection.js","sourceRoot":"","sources":["../../../src/recyclerview/hooks/useBoundDetection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export type LayoutStateSetter<T> = (newValue: T | ((prevValue: T) => T), skipParentLayout?: boolean) => void;
2
+ export type LayoutStateInitialValue<T> = T | (() => T);
3
+ /**
4
+ * Custom hook that combines state management with RecyclerView layout updates.
5
+ * This hook provides a way to manage state that affects the layout of the RecyclerView,
6
+ * ensuring that any state changes trigger a layout recalculation.
7
+ *
8
+ * @param initialState - The initial state value or a function that returns the initial state
9
+ * @returns A tuple containing:
10
+ * - The current state value
11
+ * - A setter function that updates the state and triggers a layout recalculation
12
+ */
13
+ export declare function useLayoutState<T>(initialState: LayoutStateInitialValue<T>): [T, LayoutStateSetter<T>];
14
+ //# sourceMappingURL=useLayoutState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLayoutState.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/hooks/useLayoutState.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CACjC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,EACnC,gBAAgB,CAAC,EAAE,OAAO,KACvB,IAAI,CAAC;AAEV,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAEvD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,YAAY,EAAE,uBAAuB,CAAC,CAAC,CAAC,GACvC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CA+B3B"}
@@ -0,0 +1,38 @@
1
+ import { useState, useCallback } from "react";
2
+ import { useRecyclerViewContext } from "../RecyclerViewContextProvider";
3
+ /**
4
+ * Custom hook that combines state management with RecyclerView layout updates.
5
+ * This hook provides a way to manage state that affects the layout of the RecyclerView,
6
+ * ensuring that any state changes trigger a layout recalculation.
7
+ *
8
+ * @param initialState - The initial state value or a function that returns the initial state
9
+ * @returns A tuple containing:
10
+ * - The current state value
11
+ * - A setter function that updates the state and triggers a layout recalculation
12
+ */
13
+ export function useLayoutState(initialState) {
14
+ // Initialize state with the provided initial value
15
+ const [state, setState] = useState(initialState);
16
+ // Get the RecyclerView context for layout management
17
+ const recyclerViewContext = useRecyclerViewContext();
18
+ /**
19
+ * Setter function that updates the state and triggers a layout recalculation.
20
+ * This ensures that any state changes that affect the layout are properly reflected
21
+ * in the RecyclerView's visual representation.
22
+ *
23
+ * @param newValue - Either a new state value or a function that receives the previous state
24
+ * and returns the new state
25
+ */
26
+ const setLayoutState = useCallback((newValue, skipParentLayout) => {
27
+ // Update the state using either the new value or the result of the updater function
28
+ setState((prevValue) => typeof newValue === "function"
29
+ ? newValue(prevValue)
30
+ : newValue);
31
+ if (!skipParentLayout) {
32
+ // Trigger a layout recalculation in the RecyclerView
33
+ recyclerViewContext === null || recyclerViewContext === void 0 ? void 0 : recyclerViewContext.layout();
34
+ }
35
+ }, [recyclerViewContext]);
36
+ return [state, setLayoutState];
37
+ }
38
+ //# sourceMappingURL=useLayoutState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLayoutState.js","sourceRoot":"","sources":["../../../src/recyclerview/hooks/useLayoutState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AASxE;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,YAAwC;IAExC,mDAAmD;IACnD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAI,YAAY,CAAC,CAAC;IACpD,qDAAqD;IACrD,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAC;IAErD;;;;;;;OAOG;IACH,MAAM,cAAc,GAAyB,WAAW,CACtD,CAAC,QAAQ,EAAE,gBAAgB,EAAE,EAAE;QAC7B,oFAAoF;QACpF,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE,CACrB,OAAO,QAAQ,KAAK,UAAU;YAC5B,CAAC,CAAE,QAAgC,CAAC,SAAS,CAAC;YAC9C,CAAC,CAAC,QAAQ,CACb,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,qDAAqD;YACrD,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,MAAM,EAAE,CAAC;QAChC,CAAC;IACH,CAAC,EACD,CAAC,mBAAmB,CAAC,CACtB,CAAC;IAEF,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Returns a function that can help create a mapping key for the items.
3
+ * Useful when doing .map on items to create a list of components.
4
+ * Using this ensures that performance is optimal for FlashList
5
+ */
6
+ export declare const useMappingHelper: () => {
7
+ getMappingKey: (itemKey: string | number | bigint, index: number) => string | number | bigint;
8
+ };
9
+ //# sourceMappingURL=useMappingHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMappingHelper.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/hooks/useMappingHelper.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;6BAGf,MAAM,GAAG,MAAM,GAAG,MAAM,SAAS,MAAM;CAOpD,CAAC"}