react-native-nitro-list 0.0.1 → 0.1.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 (336) hide show
  1. package/README.md +250 -16
  2. package/android/build.gradle +5 -4
  3. package/android/src/main/java/com/nitrolist/HybridNitroRecyclerView.kt +26 -0
  4. package/android/src/main/java/com/nitrolist/HybridNitroRecyclerViewManager.kt +29 -0
  5. package/android/src/main/java/com/nitrolist/NitroListPackage.kt +13 -24
  6. package/android/src/main/java/com/nitrolist/NitroRecyclerAdapter.kt +32 -0
  7. package/android/src/main/java/com/nitrolist/NitroRecyclerViewHolder.kt +8 -0
  8. package/ios/HybridNitroList.swift +32 -15
  9. package/lib/commonjs/NitroList.js +9 -0
  10. package/lib/commonjs/NitroList.js.map +1 -0
  11. package/lib/commonjs/RecyclerList.internal.js +25 -0
  12. package/lib/commonjs/RecyclerList.internal.js.map +1 -0
  13. package/lib/commonjs/RecyclerList.js +171 -0
  14. package/lib/commonjs/RecyclerList.js.map +1 -0
  15. package/lib/commonjs/RecyclerList.types.js +6 -0
  16. package/lib/commonjs/RecyclerList.types.js.map +1 -0
  17. package/lib/commonjs/ReusableView.js +2 -0
  18. package/lib/commonjs/ReusableView.js.map +1 -0
  19. package/lib/commonjs/cell/Cell.js +2 -0
  20. package/lib/{module/specs/nitro-list.nitro.js.map → commonjs/cell/Cell.js.map} +1 -1
  21. package/lib/commonjs/cell/CellRecycler.js +62 -0
  22. package/lib/commonjs/cell/CellRecycler.js.map +1 -0
  23. package/lib/commonjs/cell/StableKey.js +10 -0
  24. package/lib/commonjs/cell/StableKey.js.map +1 -0
  25. package/lib/commonjs/debug/useDebugOverlay.js +15 -0
  26. package/lib/commonjs/debug/useDebugOverlay.js.map +1 -0
  27. package/lib/commonjs/getVisibleIndices.js +38 -0
  28. package/lib/commonjs/getVisibleIndices.js.map +1 -0
  29. package/lib/commonjs/hooks/useCellRenderer.js +62 -0
  30. package/lib/commonjs/hooks/useCellRenderer.js.map +1 -0
  31. package/lib/commonjs/hooks/useStableCallback.js +13 -0
  32. package/lib/commonjs/hooks/useStableCallback.js.map +1 -0
  33. package/lib/commonjs/index.js +7 -5
  34. package/lib/commonjs/index.js.map +1 -1
  35. package/lib/commonjs/layout/EstimatedLayoutProvider.js +30 -0
  36. package/lib/commonjs/layout/EstimatedLayoutProvider.js.map +1 -0
  37. package/lib/commonjs/layout/LayoutEngine.js +21 -0
  38. package/lib/commonjs/layout/LayoutEngine.js.map +1 -0
  39. package/lib/commonjs/{specs/nitro-list.nitro.js → layout/LayoutProvider.js} +1 -1
  40. package/lib/commonjs/{specs/nitro-list.nitro.js.map → layout/LayoutProvider.js.map} +1 -1
  41. package/lib/commonjs/layout/LayoutRectangle.js +2 -0
  42. package/lib/commonjs/layout/LayoutRectangle.js.map +1 -0
  43. package/lib/commonjs/layout/MutableLinearLayout.js +65 -0
  44. package/lib/commonjs/layout/MutableLinearLayout.js.map +1 -0
  45. package/lib/commonjs/layout/index.js +20 -0
  46. package/lib/commonjs/layout/index.js.map +1 -0
  47. package/lib/commonjs/measurement/MeasureLayout.js +20 -0
  48. package/lib/commonjs/measurement/MeasureLayout.js.map +1 -0
  49. package/lib/commonjs/measurement/useItemMeasurement.js +28 -0
  50. package/lib/commonjs/measurement/useItemMeasurement.js.map +1 -0
  51. package/lib/commonjs/native/NitroLayoutEngine.js +9 -0
  52. package/lib/commonjs/native/NitroLayoutEngine.js.map +1 -0
  53. package/lib/commonjs/native/NitroList.types.js +6 -0
  54. package/lib/commonjs/native/NitroList.types.js.map +1 -0
  55. package/lib/commonjs/native/NitroRecyclerView.js +9 -0
  56. package/lib/commonjs/native/NitroRecyclerView.js.map +1 -0
  57. package/lib/commonjs/prefetch/PrefetchHelper.js +39 -0
  58. package/lib/commonjs/prefetch/PrefetchHelper.js.map +1 -0
  59. package/lib/commonjs/specs/nitro-layout-engine.nitro.js +6 -0
  60. package/lib/commonjs/specs/nitro-layout-engine.nitro.js.map +1 -0
  61. package/lib/commonjs/utils/arrayEqual.js +15 -0
  62. package/lib/commonjs/utils/arrayEqual.js.map +1 -0
  63. package/lib/commonjs/utils/assertNever.js +10 -0
  64. package/lib/commonjs/utils/assertNever.js.map +1 -0
  65. package/lib/commonjs/utils/clamp.js +10 -0
  66. package/lib/commonjs/utils/clamp.js.map +1 -0
  67. package/lib/commonjs/utils/devAssert.js +12 -0
  68. package/lib/commonjs/utils/devAssert.js.map +1 -0
  69. package/lib/commonjs/utils/invariant.js +12 -0
  70. package/lib/commonjs/utils/invariant.js.map +1 -0
  71. package/lib/commonjs/utils/isDefined.js +10 -0
  72. package/lib/commonjs/utils/isDefined.js.map +1 -0
  73. package/lib/commonjs/utils/isNumber.js +10 -0
  74. package/lib/commonjs/utils/isNumber.js.map +1 -0
  75. package/lib/commonjs/utils/noop.js +10 -0
  76. package/lib/commonjs/utils/noop.js.map +1 -0
  77. package/lib/commonjs/utils/shallowEqual.js +22 -0
  78. package/lib/commonjs/utils/shallowEqual.js.map +1 -0
  79. package/lib/commonjs/utils/throttle.js +17 -0
  80. package/lib/commonjs/utils/throttle.js.map +1 -0
  81. package/lib/commonjs/viewability/ViewabilityHelper.js +121 -0
  82. package/lib/commonjs/viewability/ViewabilityHelper.js.map +1 -0
  83. package/lib/commonjs/windowing/ScrollMetrics.js +2 -0
  84. package/lib/commonjs/windowing/ScrollMetrics.js.map +1 -0
  85. package/lib/commonjs/windowing/findVisibleIndexRange.js +48 -0
  86. package/lib/commonjs/windowing/findVisibleIndexRange.js.map +1 -0
  87. package/lib/commonjs/windowing/index.js +20 -0
  88. package/lib/commonjs/windowing/index.js.map +1 -0
  89. package/lib/commonjs/windowing/useScrollMetrics.js +39 -0
  90. package/lib/commonjs/windowing/useScrollMetrics.js.map +1 -0
  91. package/lib/module/NitroList.js +5 -0
  92. package/lib/module/NitroList.js.map +1 -0
  93. package/lib/module/RecyclerList.internal.js +22 -0
  94. package/lib/module/RecyclerList.internal.js.map +1 -0
  95. package/lib/module/RecyclerList.js +166 -0
  96. package/lib/module/RecyclerList.js.map +1 -0
  97. package/lib/module/RecyclerList.types.js +4 -0
  98. package/lib/module/RecyclerList.types.js.map +1 -0
  99. package/lib/module/ReusableView.js +2 -0
  100. package/lib/module/ReusableView.js.map +1 -0
  101. package/lib/module/cell/Cell.js +2 -0
  102. package/lib/module/cell/Cell.js.map +1 -0
  103. package/lib/module/cell/CellRecycler.js +57 -0
  104. package/lib/module/cell/CellRecycler.js.map +1 -0
  105. package/lib/module/cell/StableKey.js +6 -0
  106. package/lib/module/cell/StableKey.js.map +1 -0
  107. package/lib/module/debug/useDebugOverlay.js +11 -0
  108. package/lib/module/debug/useDebugOverlay.js.map +1 -0
  109. package/lib/module/getVisibleIndices.js +34 -0
  110. package/lib/module/getVisibleIndices.js.map +1 -0
  111. package/lib/module/hooks/useCellRenderer.js +58 -0
  112. package/lib/module/hooks/useCellRenderer.js.map +1 -0
  113. package/lib/module/hooks/useStableCallback.js +9 -0
  114. package/lib/module/hooks/useStableCallback.js.map +1 -0
  115. package/lib/module/index.js +1 -3
  116. package/lib/module/index.js.map +1 -1
  117. package/lib/module/layout/EstimatedLayoutProvider.js +25 -0
  118. package/lib/module/layout/EstimatedLayoutProvider.js.map +1 -0
  119. package/lib/module/layout/LayoutEngine.js +17 -0
  120. package/lib/module/layout/LayoutEngine.js.map +1 -0
  121. package/lib/module/layout/LayoutProvider.js +4 -0
  122. package/lib/module/layout/LayoutProvider.js.map +1 -0
  123. package/lib/module/layout/LayoutRectangle.js +2 -0
  124. package/lib/module/layout/LayoutRectangle.js.map +1 -0
  125. package/lib/module/layout/MutableLinearLayout.js +60 -0
  126. package/lib/module/layout/MutableLinearLayout.js.map +1 -0
  127. package/lib/module/layout/index.js +5 -0
  128. package/lib/module/layout/index.js.map +1 -0
  129. package/lib/module/measurement/MeasureLayout.js +16 -0
  130. package/lib/module/measurement/MeasureLayout.js.map +1 -0
  131. package/lib/module/measurement/useItemMeasurement.js +24 -0
  132. package/lib/module/measurement/useItemMeasurement.js.map +1 -0
  133. package/lib/module/native/NitroLayoutEngine.js +5 -0
  134. package/lib/module/native/NitroLayoutEngine.js.map +1 -0
  135. package/lib/module/native/NitroList.types.js +4 -0
  136. package/lib/module/native/NitroList.types.js.map +1 -0
  137. package/lib/module/native/NitroRecyclerView.js +5 -0
  138. package/lib/module/native/NitroRecyclerView.js.map +1 -0
  139. package/lib/module/prefetch/PrefetchHelper.js +34 -0
  140. package/lib/module/prefetch/PrefetchHelper.js.map +1 -0
  141. package/lib/module/specs/nitro-layout-engine.nitro.js +4 -0
  142. package/lib/module/specs/nitro-layout-engine.nitro.js.map +1 -0
  143. package/lib/module/utils/arrayEqual.js +11 -0
  144. package/lib/module/utils/arrayEqual.js.map +1 -0
  145. package/lib/module/utils/assertNever.js +6 -0
  146. package/lib/module/utils/assertNever.js.map +1 -0
  147. package/lib/module/utils/clamp.js +6 -0
  148. package/lib/module/utils/clamp.js.map +1 -0
  149. package/lib/module/utils/devAssert.js +8 -0
  150. package/lib/module/utils/devAssert.js.map +1 -0
  151. package/lib/module/utils/invariant.js +8 -0
  152. package/lib/module/utils/invariant.js.map +1 -0
  153. package/lib/module/utils/isDefined.js +6 -0
  154. package/lib/module/utils/isDefined.js.map +1 -0
  155. package/lib/module/utils/isNumber.js +6 -0
  156. package/lib/module/utils/isNumber.js.map +1 -0
  157. package/lib/module/utils/noop.js +6 -0
  158. package/lib/module/utils/noop.js.map +1 -0
  159. package/lib/module/utils/shallowEqual.js +18 -0
  160. package/lib/module/utils/shallowEqual.js.map +1 -0
  161. package/lib/module/utils/throttle.js +13 -0
  162. package/lib/module/utils/throttle.js.map +1 -0
  163. package/lib/module/viewability/ViewabilityHelper.js +116 -0
  164. package/lib/module/viewability/ViewabilityHelper.js.map +1 -0
  165. package/lib/module/windowing/ScrollMetrics.js +2 -0
  166. package/lib/module/windowing/ScrollMetrics.js.map +1 -0
  167. package/lib/module/windowing/findVisibleIndexRange.js +44 -0
  168. package/lib/module/windowing/findVisibleIndexRange.js.map +1 -0
  169. package/lib/module/windowing/index.js +5 -0
  170. package/lib/module/windowing/index.js.map +1 -0
  171. package/lib/module/windowing/useScrollMetrics.js +35 -0
  172. package/lib/module/windowing/useScrollMetrics.js.map +1 -0
  173. package/lib/typescript/src/NitroList.d.ts +5 -0
  174. package/lib/typescript/src/NitroList.d.ts.map +1 -0
  175. package/lib/typescript/src/RecyclerList.d.ts +26 -0
  176. package/lib/typescript/src/RecyclerList.d.ts.map +1 -0
  177. package/lib/typescript/src/RecyclerList.internal.d.ts +9 -0
  178. package/lib/typescript/src/RecyclerList.internal.d.ts.map +1 -0
  179. package/lib/typescript/src/RecyclerList.types.d.ts +18 -0
  180. package/lib/typescript/src/RecyclerList.types.d.ts.map +1 -0
  181. package/lib/typescript/src/ReusableView.d.ts +9 -0
  182. package/lib/typescript/src/ReusableView.d.ts.map +1 -0
  183. package/lib/typescript/src/__tests__/windowing/findVisibleIndexRange.test.d.ts +2 -0
  184. package/lib/typescript/src/__tests__/windowing/findVisibleIndexRange.test.d.ts.map +1 -0
  185. package/lib/typescript/src/cell/Cell.d.ts +13 -0
  186. package/lib/typescript/src/cell/Cell.d.ts.map +1 -0
  187. package/lib/typescript/src/cell/CellRecycler.d.ts +19 -0
  188. package/lib/typescript/src/cell/CellRecycler.d.ts.map +1 -0
  189. package/lib/typescript/src/cell/StableKey.d.ts +2 -0
  190. package/lib/typescript/src/cell/StableKey.d.ts.map +1 -0
  191. package/lib/typescript/src/debug/useDebugOverlay.d.ts +2 -0
  192. package/lib/typescript/src/debug/useDebugOverlay.d.ts.map +1 -0
  193. package/lib/typescript/src/getVisibleIndices.d.ts +8 -0
  194. package/lib/typescript/src/getVisibleIndices.d.ts.map +1 -0
  195. package/lib/typescript/src/hooks/useCellRenderer.d.ts +19 -0
  196. package/lib/typescript/src/hooks/useCellRenderer.d.ts.map +1 -0
  197. package/lib/typescript/src/hooks/useStableCallback.d.ts +2 -0
  198. package/lib/typescript/src/hooks/useStableCallback.d.ts.map +1 -0
  199. package/lib/typescript/src/index.d.ts +2 -4
  200. package/lib/typescript/src/index.d.ts.map +1 -1
  201. package/lib/typescript/src/layout/EstimatedLayoutProvider.d.ts +15 -0
  202. package/lib/typescript/src/layout/EstimatedLayoutProvider.d.ts.map +1 -0
  203. package/lib/typescript/src/layout/LayoutEngine.d.ts +10 -0
  204. package/lib/typescript/src/layout/LayoutEngine.d.ts.map +1 -0
  205. package/lib/typescript/src/layout/LayoutProvider.d.ts +16 -0
  206. package/lib/typescript/src/layout/LayoutProvider.d.ts.map +1 -0
  207. package/lib/typescript/src/layout/LayoutRectangle.d.ts +11 -0
  208. package/lib/typescript/src/layout/LayoutRectangle.d.ts.map +1 -0
  209. package/lib/typescript/src/layout/MutableLinearLayout.d.ts +22 -0
  210. package/lib/typescript/src/layout/MutableLinearLayout.d.ts.map +1 -0
  211. package/lib/typescript/src/layout/index.d.ts +5 -0
  212. package/lib/typescript/src/layout/index.d.ts.map +1 -0
  213. package/lib/typescript/src/measurement/MeasureLayout.d.ts +10 -0
  214. package/lib/typescript/src/measurement/MeasureLayout.d.ts.map +1 -0
  215. package/lib/typescript/src/measurement/useItemMeasurement.d.ts +11 -0
  216. package/lib/typescript/src/measurement/useItemMeasurement.d.ts.map +1 -0
  217. package/lib/typescript/src/native/NitroLayoutEngine.d.ts +3 -0
  218. package/lib/typescript/src/native/NitroLayoutEngine.d.ts.map +1 -0
  219. package/lib/typescript/src/native/NitroList.types.d.ts +9 -0
  220. package/lib/typescript/src/native/NitroList.types.d.ts.map +1 -0
  221. package/lib/typescript/src/native/NitroRecyclerView.d.ts +5 -0
  222. package/lib/typescript/src/native/NitroRecyclerView.d.ts.map +1 -0
  223. package/lib/typescript/src/prefetch/PrefetchHelper.d.ts +17 -0
  224. package/lib/typescript/src/prefetch/PrefetchHelper.d.ts.map +1 -0
  225. package/lib/typescript/src/specs/nitro-layout-engine.nitro.d.ts +14 -0
  226. package/lib/typescript/src/specs/nitro-layout-engine.nitro.d.ts.map +1 -0
  227. package/lib/typescript/src/utils/arrayEqual.d.ts +2 -0
  228. package/lib/typescript/src/utils/arrayEqual.d.ts.map +1 -0
  229. package/lib/typescript/src/utils/assertNever.d.ts +2 -0
  230. package/lib/typescript/src/utils/assertNever.d.ts.map +1 -0
  231. package/lib/typescript/src/utils/clamp.d.ts +2 -0
  232. package/lib/typescript/src/utils/clamp.d.ts.map +1 -0
  233. package/lib/typescript/src/utils/devAssert.d.ts +2 -0
  234. package/lib/typescript/src/utils/devAssert.d.ts.map +1 -0
  235. package/lib/typescript/src/utils/invariant.d.ts +2 -0
  236. package/lib/typescript/src/utils/invariant.d.ts.map +1 -0
  237. package/lib/typescript/src/utils/isDefined.d.ts +2 -0
  238. package/lib/typescript/src/utils/isDefined.d.ts.map +1 -0
  239. package/lib/typescript/src/utils/isNumber.d.ts +2 -0
  240. package/lib/typescript/src/utils/isNumber.d.ts.map +1 -0
  241. package/lib/typescript/src/utils/noop.d.ts +2 -0
  242. package/lib/typescript/src/utils/noop.d.ts.map +1 -0
  243. package/lib/typescript/src/utils/shallowEqual.d.ts +2 -0
  244. package/lib/typescript/src/utils/shallowEqual.d.ts.map +1 -0
  245. package/lib/typescript/src/utils/throttle.d.ts +2 -0
  246. package/lib/typescript/src/utils/throttle.d.ts.map +1 -0
  247. package/lib/typescript/src/viewability/ViewabilityHelper.d.ts +50 -0
  248. package/lib/typescript/src/viewability/ViewabilityHelper.d.ts.map +1 -0
  249. package/lib/typescript/src/windowing/ScrollMetrics.d.ts +11 -0
  250. package/lib/typescript/src/windowing/ScrollMetrics.d.ts.map +1 -0
  251. package/lib/typescript/src/windowing/findVisibleIndexRange.d.ts +11 -0
  252. package/lib/typescript/src/windowing/findVisibleIndexRange.d.ts.map +1 -0
  253. package/lib/typescript/src/windowing/index.d.ts +4 -0
  254. package/lib/typescript/src/windowing/index.d.ts.map +1 -0
  255. package/lib/typescript/src/windowing/useScrollMetrics.d.ts +14 -0
  256. package/lib/typescript/src/windowing/useScrollMetrics.d.ts.map +1 -0
  257. package/nitro.json +20 -13
  258. package/nitrogen/generated/android/NitroList+autolinking.cmake +2 -4
  259. package/nitrogen/generated/android/NitroListOnLoad.cpp +3 -13
  260. package/nitrogen/generated/android/c++/JHybridNitroLayoutEngineSpec.cpp +69 -0
  261. package/nitrogen/generated/android/c++/{JHybridNitroListSpec.hpp → JHybridNitroLayoutEngineSpec.hpp} +12 -13
  262. package/nitrogen/generated/android/c++/JLayoutRectangle.hpp +69 -0
  263. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolist/{HybridNitroListSpec.kt → HybridNitroLayoutEngineSpec.kt} +11 -13
  264. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolist/LayoutRectangle.kt +47 -0
  265. package/nitrogen/generated/ios/NitroList-Swift-Cxx-Bridge.cpp +9 -9
  266. package/nitrogen/generated/ios/NitroList-Swift-Cxx-Bridge.hpp +50 -13
  267. package/nitrogen/generated/ios/NitroList-Swift-Cxx-Umbrella.hpp +11 -5
  268. package/nitrogen/generated/ios/c++/{HybridNitroListSpecSwift.cpp → HybridNitroLayoutEngineSpecSwift.cpp} +2 -2
  269. package/nitrogen/generated/ios/c++/HybridNitroLayoutEngineSpecSwift.hpp +78 -0
  270. package/nitrogen/generated/ios/swift/HybridNitroLayoutEngineSpec.swift +56 -0
  271. package/nitrogen/generated/ios/swift/{HybridNitroListSpec_cxx.swift → HybridNitroLayoutEngineSpec_cxx.swift} +35 -38
  272. package/nitrogen/generated/ios/swift/LayoutRectangle.swift +45 -0
  273. package/nitrogen/generated/shared/c++/{HybridNitroListSpec.cpp → HybridNitroLayoutEngineSpec.cpp} +4 -5
  274. package/nitrogen/generated/shared/c++/{HybridNitroListSpec.hpp → HybridNitroLayoutEngineSpec.hpp} +15 -14
  275. package/nitrogen/generated/shared/c++/LayoutRectangle.hpp +95 -0
  276. package/package.json +12 -4
  277. package/src/NitroList.ts +8 -0
  278. package/src/RecyclerList.internal.ts +38 -0
  279. package/src/RecyclerList.tsx +252 -0
  280. package/src/RecyclerList.types.ts +24 -0
  281. package/src/ReusableView.ts +12 -0
  282. package/src/__tests__/windowing/findVisibleIndexRange.test.ts +55 -0
  283. package/src/cell/Cell.ts +14 -0
  284. package/src/cell/CellRecycler.ts +66 -0
  285. package/src/cell/StableKey.ts +6 -0
  286. package/src/debug/useDebugOverlay.ts +14 -0
  287. package/src/getVisibleIndices.ts +53 -0
  288. package/src/hooks/useCellRenderer.ts +86 -0
  289. package/src/hooks/useStableCallback.ts +13 -0
  290. package/src/index.ts +2 -14
  291. package/src/layout/EstimatedLayoutProvider.ts +35 -0
  292. package/src/layout/LayoutEngine.ts +21 -0
  293. package/src/layout/LayoutProvider.ts +17 -0
  294. package/src/layout/LayoutRectangle.ts +10 -0
  295. package/src/layout/MutableLinearLayout.ts +79 -0
  296. package/src/layout/index.ts +4 -0
  297. package/src/measurement/MeasureLayout.ts +20 -0
  298. package/src/measurement/useItemMeasurement.ts +32 -0
  299. package/src/native/NitroLayoutEngine.ts +7 -0
  300. package/src/native/NitroList.types.ts +12 -0
  301. package/src/native/NitroRecyclerView.ts +8 -0
  302. package/src/prefetch/PrefetchHelper.ts +47 -0
  303. package/src/specs/nitro-layout-engine.nitro.ts +17 -0
  304. package/src/utils/arrayEqual.ts +13 -0
  305. package/src/utils/assertNever.ts +3 -0
  306. package/src/utils/clamp.ts +7 -0
  307. package/src/utils/devAssert.ts +8 -0
  308. package/src/utils/invariant.ts +8 -0
  309. package/src/utils/isDefined.ts +5 -0
  310. package/src/utils/isNumber.ts +3 -0
  311. package/src/utils/noop.ts +3 -0
  312. package/src/utils/shallowEqual.ts +34 -0
  313. package/src/utils/throttle.ts +13 -0
  314. package/src/viewability/ViewabilityHelper.ts +130 -0
  315. package/src/windowing/ScrollMetrics.ts +11 -0
  316. package/src/windowing/findVisibleIndexRange.ts +60 -0
  317. package/src/windowing/index.ts +3 -0
  318. package/src/windowing/useScrollMetrics.ts +56 -0
  319. package/android/src/main/java/com/nitrolist/HybridNitroList.kt +0 -27
  320. package/lib/module/specs/nitro-list.nitro.js +0 -4
  321. package/lib/typescript/src/specs/nitro-list.nitro.d.ts +0 -11
  322. package/lib/typescript/src/specs/nitro-list.nitro.d.ts.map +0 -1
  323. package/nitrogen/generated/android/c++/JHybridNitroListSpec.cpp +0 -56
  324. package/nitrogen/generated/android/c++/views/JHybridNitroListStateUpdater.cpp +0 -56
  325. package/nitrogen/generated/android/c++/views/JHybridNitroListStateUpdater.hpp +0 -49
  326. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolist/views/HybridNitroListManager.kt +0 -50
  327. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrolist/views/HybridNitroListStateUpdater.kt +0 -23
  328. package/nitrogen/generated/ios/NitroListAutolinking.mm +0 -33
  329. package/nitrogen/generated/ios/NitroListAutolinking.swift +0 -25
  330. package/nitrogen/generated/ios/c++/HybridNitroListSpecSwift.hpp +0 -74
  331. package/nitrogen/generated/ios/c++/views/HybridNitroListComponent.mm +0 -96
  332. package/nitrogen/generated/ios/swift/HybridNitroListSpec.swift +0 -56
  333. package/nitrogen/generated/shared/c++/views/HybridNitroListComponent.cpp +0 -88
  334. package/nitrogen/generated/shared/c++/views/HybridNitroListComponent.hpp +0 -107
  335. package/nitrogen/generated/shared/json/NitroListConfig.json +0 -10
  336. package/src/specs/nitro-list.nitro.ts +0 -13
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.measureLayout = measureLayout;
7
+ /**
8
+ * Extracts stable layout measurements from RN onLayout event.
9
+ */
10
+ function measureLayout(event) {
11
+ const {
12
+ width,
13
+ height
14
+ } = event.nativeEvent.layout;
15
+ return {
16
+ width,
17
+ height
18
+ };
19
+ }
20
+ //# sourceMappingURL=MeasureLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["measureLayout","event","width","height","nativeEvent","layout"],"sourceRoot":"../../../src","sources":["measurement/MeasureLayout.ts"],"mappings":";;;;;;AAOA;AACA;AACA;AACO,SAASA,aAAaA,CAC3BC,KAAwB,EACR;EAChB,MAAM;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGF,KAAK,CAACG,WAAW,CAACC,MAAM;EAElD,OAAO;IACLH,KAAK;IACLC;EACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useItemMeasurement = useItemMeasurement;
7
+ var _react = require("react");
8
+ /**
9
+ * Hook to measure a rendered item safely.
10
+ *
11
+ * Guarantees:
12
+ * - No duplicate height reports
13
+ * - No render loops
14
+ * - Stable callback identity
15
+ */
16
+ function useItemMeasurement(index, onMeasured) {
17
+ const lastHeightRef = (0, _react.useRef)(null);
18
+ const onLayout = (0, _react.useCallback)(e => {
19
+ const height = e.nativeEvent.layout.height;
20
+
21
+ // Ignore identical measurements
22
+ if (lastHeightRef.current === height) return;
23
+ lastHeightRef.current = height;
24
+ onMeasured(index, height);
25
+ }, [index, onMeasured]);
26
+ return onLayout;
27
+ }
28
+ //# sourceMappingURL=useItemMeasurement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","useItemMeasurement","index","onMeasured","lastHeightRef","useRef","onLayout","useCallback","e","height","nativeEvent","layout","current"],"sourceRoot":"../../../src","sources":["measurement/useItemMeasurement.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAChCC,KAAa,EACbC,UAAmD,EACnD;EACA,MAAMC,aAAa,GAAG,IAAAC,aAAM,EAAgB,IAAI,CAAC;EAEjD,MAAMC,QAAQ,GAAG,IAAAC,kBAAW,EACzBC,CAAoB,IAAK;IACxB,MAAMC,MAAM,GAAGD,CAAC,CAACE,WAAW,CAACC,MAAM,CAACF,MAAM;;IAE1C;IACA,IAAIL,aAAa,CAACQ,OAAO,KAAKH,MAAM,EAAE;IAEtCL,aAAa,CAACQ,OAAO,GAAGH,MAAM;IAC9BN,UAAU,CAACD,KAAK,EAAEO,MAAM,CAAC;EAC3B,CAAC,EACD,CAACP,KAAK,EAAEC,UAAU,CACpB,CAAC;EAED,OAAOG,QAAQ;AACjB","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NitroLayoutEngine = void 0;
7
+ var _reactNativeNitroModules = require("react-native-nitro-modules");
8
+ const NitroLayoutEngine = exports.NitroLayoutEngine = _reactNativeNitroModules.NitroModules.createHybridObject('NitroLayoutEngine');
9
+ //# sourceMappingURL=NitroLayoutEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeNitroModules","require","NitroLayoutEngine","exports","NitroModules","createHybridObject"],"sourceRoot":"../../../src","sources":["native/NitroLayoutEngine.ts"],"mappings":";;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AAGO,MAAMC,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAC5BE,qCAAY,CAACC,kBAAkB,CAC7B,mBACF,CAAC","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=NitroList.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["native/NitroList.types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NitroRecyclerView = void 0;
7
+ var _reactNative = require("react-native");
8
+ const NitroRecyclerView = exports.NitroRecyclerView = (0, _reactNative.requireNativeComponent)('NitroRecyclerView');
9
+ //# sourceMappingURL=NitroRecyclerView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","NitroRecyclerView","exports","requireNativeComponent"],"sourceRoot":"../../../src","sources":["native/NitroRecyclerView.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAMO,MAAMC,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAC5B,IAAAE,mCAAsB,EAAyB,mBAAmB,CAAC","ignoreList":[]}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PrefetchHelper = void 0;
7
+ /**
8
+ * Callback invoked when new items should be prefetched.
9
+ */
10
+
11
+ /**
12
+ * PrefetchHelper
13
+ *
14
+ * Stateless with respect to layout.
15
+ * Only tracks what has already been prefetched to avoid duplication.
16
+ *
17
+ * Designed to be driven by *visible window*, not scroll events.
18
+ */
19
+ class PrefetchHelper {
20
+ lastPrefetched = new Set();
21
+ runPrefetch(visibleIndices, itemCount, aheadCount, onPrefetch) {
22
+ if (visibleIndices.length === 0) return;
23
+ const lastVisible = visibleIndices[visibleIndices.length - 1];
24
+ const start = lastVisible + 1;
25
+ const end = Math.min(itemCount - 1, start + aheadCount);
26
+ const toPrefetch = [];
27
+ for (let i = start; i <= end; i++) {
28
+ if (!this.lastPrefetched.has(i)) {
29
+ this.lastPrefetched.add(i);
30
+ toPrefetch.push(i);
31
+ }
32
+ }
33
+ if (toPrefetch.length > 0) {
34
+ onPrefetch(toPrefetch);
35
+ }
36
+ }
37
+ }
38
+ exports.PrefetchHelper = PrefetchHelper;
39
+ //# sourceMappingURL=PrefetchHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PrefetchHelper","lastPrefetched","Set","runPrefetch","visibleIndices","itemCount","aheadCount","onPrefetch","length","lastVisible","start","end","Math","min","toPrefetch","i","has","add","push","exports"],"sourceRoot":"../../../src","sources":["prefetch/PrefetchHelper.ts"],"mappings":";;;;;;AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,cAAc,CAAC;EAClBC,cAAc,GAAG,IAAIC,GAAG,CAAS,CAAC;EAE1CC,WAAWA,CACTC,cAAiC,EACjCC,SAAiB,EACjBC,UAAkB,EAClBC,UAA4B,EAC5B;IACA,IAAIH,cAAc,CAACI,MAAM,KAAK,CAAC,EAAE;IAEjC,MAAMC,WAAW,GACfL,cAAc,CAACA,cAAc,CAACI,MAAM,GAAG,CAAC,CAAE;IAE5C,MAAME,KAAK,GAAGD,WAAW,GAAG,CAAC;IAC7B,MAAME,GAAG,GAAGC,IAAI,CAACC,GAAG,CAClBR,SAAS,GAAG,CAAC,EACbK,KAAK,GAAGJ,UACV,CAAC;IAED,MAAMQ,UAAoB,GAAG,EAAE;IAE/B,KAAK,IAAIC,CAAC,GAAGL,KAAK,EAAEK,CAAC,IAAIJ,GAAG,EAAEI,CAAC,EAAE,EAAE;MACjC,IAAI,CAAC,IAAI,CAACd,cAAc,CAACe,GAAG,CAACD,CAAC,CAAC,EAAE;QAC/B,IAAI,CAACd,cAAc,CAACgB,GAAG,CAACF,CAAC,CAAC;QAC1BD,UAAU,CAACI,IAAI,CAACH,CAAC,CAAC;MACpB;IACF;IAEA,IAAID,UAAU,CAACN,MAAM,GAAG,CAAC,EAAE;MACzBD,UAAU,CAACO,UAAU,CAAC;IACxB;EACF;AACF;AAACK,OAAA,CAAAnB,cAAA,GAAAA,cAAA","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=nitro-layout-engine.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/nitro-layout-engine.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.arrayEqual = arrayEqual;
7
+ function arrayEqual(a, b) {
8
+ if (a === b) return true;
9
+ if (a.length !== b.length) return false;
10
+ for (let i = 0; i < a.length; i++) {
11
+ if (!Object.is(a[i], b[i])) return false;
12
+ }
13
+ return true;
14
+ }
15
+ //# sourceMappingURL=arrayEqual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["arrayEqual","a","b","length","i","Object","is"],"sourceRoot":"../../../src","sources":["utils/arrayEqual.ts"],"mappings":";;;;;;AAAO,SAASA,UAAUA,CACxBC,CAAe,EACfC,CAAe,EACN;EACT,IAAID,CAAC,KAAKC,CAAC,EAAE,OAAO,IAAI;EACxB,IAAID,CAAC,CAACE,MAAM,KAAKD,CAAC,CAACC,MAAM,EAAE,OAAO,KAAK;EAEvC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,CAAC,CAACE,MAAM,EAAEC,CAAC,EAAE,EAAE;IACjC,IAAI,CAACC,MAAM,CAACC,EAAE,CAACL,CAAC,CAACG,CAAC,CAAC,EAAEF,CAAC,CAACE,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;EAC1C;EAEA,OAAO,IAAI;AACb","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.assertNever = assertNever;
7
+ function assertNever(x) {
8
+ throw new Error(`Unexpected value: ${String(x)}`);
9
+ }
10
+ //# sourceMappingURL=assertNever.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["assertNever","x","Error","String"],"sourceRoot":"../../../src","sources":["utils/assertNever.ts"],"mappings":";;;;;;AAAO,SAASA,WAAWA,CAACC,CAAQ,EAAS;EAC3C,MAAM,IAAIC,KAAK,CAAC,qBAAqBC,MAAM,CAACF,CAAC,CAAC,EAAE,CAAC;AACnD","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.clamp = clamp;
7
+ function clamp(value, min, max) {
8
+ return Math.min(Math.max(value, min), max);
9
+ }
10
+ //# sourceMappingURL=clamp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["clamp","value","min","max","Math"],"sourceRoot":"../../../src","sources":["utils/clamp.ts"],"mappings":";;;;;;AAAO,SAASA,KAAKA,CACnBC,KAAa,EACbC,GAAW,EACXC,GAAW,EACH;EACR,OAAOC,IAAI,CAACF,GAAG,CAACE,IAAI,CAACD,GAAG,CAACF,KAAK,EAAEC,GAAG,CAAC,EAAEC,GAAG,CAAC;AAC5C","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.devAssert = devAssert;
7
+ function devAssert(condition, message) {
8
+ if (__DEV__ && !condition) {
9
+ throw new Error(`RecyclerList: ${message}`);
10
+ }
11
+ }
12
+ //# sourceMappingURL=devAssert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["devAssert","condition","message","__DEV__","Error"],"sourceRoot":"../../../src","sources":["utils/devAssert.ts"],"mappings":";;;;;;AAAO,SAASA,SAASA,CACvBC,SAAkB,EAClBC,OAAe,EACT;EACN,IAAIC,OAAO,IAAI,CAACF,SAAS,EAAE;IACzB,MAAM,IAAIG,KAAK,CAAC,iBAAiBF,OAAO,EAAE,CAAC;EAC7C;AACF","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.invariant = invariant;
7
+ function invariant(condition, message) {
8
+ if (!condition) {
9
+ throw new Error(`Invariant failed: ${message}`);
10
+ }
11
+ }
12
+ //# sourceMappingURL=invariant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["invariant","condition","message","Error"],"sourceRoot":"../../../src","sources":["utils/invariant.ts"],"mappings":";;;;;;AAAO,SAASA,SAASA,CACvBC,SAAkB,EAClBC,OAAe,EACI;EACnB,IAAI,CAACD,SAAS,EAAE;IACd,MAAM,IAAIE,KAAK,CAAC,qBAAqBD,OAAO,EAAE,CAAC;EACjD;AACF","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isDefined = isDefined;
7
+ function isDefined(value) {
8
+ return value !== undefined && value !== null;
9
+ }
10
+ //# sourceMappingURL=isDefined.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isDefined","value","undefined"],"sourceRoot":"../../../src","sources":["utils/isDefined.ts"],"mappings":";;;;;;AAAO,SAASA,SAASA,CACvBC,KAA2B,EACf;EACZ,OAAOA,KAAK,KAAKC,SAAS,IAAID,KAAK,KAAK,IAAI;AAC9C","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isNumber = isNumber;
7
+ function isNumber(value) {
8
+ return typeof value === 'number' && !Number.isNaN(value);
9
+ }
10
+ //# sourceMappingURL=isNumber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isNumber","value","Number","isNaN"],"sourceRoot":"../../../src","sources":["utils/isNumber.ts"],"mappings":";;;;;;AAAO,SAASA,QAAQA,CAACC,KAAc,EAAmB;EACxD,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAI,CAACC,MAAM,CAACC,KAAK,CAACF,KAAK,CAAC;AAC1D","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.noop = noop;
7
+ function noop() {
8
+ // intentionally empty
9
+ }
10
+ //# sourceMappingURL=noop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["noop"],"sourceRoot":"../../../src","sources":["utils/noop.ts"],"mappings":";;;;;;AAAO,SAASA,IAAIA,CAAA,EAAS;EAC3B;AAAA","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.shallowEqual = shallowEqual;
7
+ function shallowEqual(a, b) {
8
+ if (Object.is(a, b)) return true;
9
+ if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) {
10
+ return false;
11
+ }
12
+ const aKeys = Object.keys(a);
13
+ const bKeys = Object.keys(b);
14
+ if (aKeys.length !== bKeys.length) return false;
15
+ for (const key of aKeys) {
16
+ if (!(key in b) || !Object.is(a[key], b[key])) {
17
+ return false;
18
+ }
19
+ }
20
+ return true;
21
+ }
22
+ //# sourceMappingURL=shallowEqual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["shallowEqual","a","b","Object","is","aKeys","keys","bKeys","length","key"],"sourceRoot":"../../../src","sources":["utils/shallowEqual.ts"],"mappings":";;;;;;AAAO,SAASA,YAAYA,CAC1BC,CAAU,EACVC,CAAU,EACD;EACT,IAAIC,MAAM,CAACC,EAAE,CAACH,CAAC,EAAEC,CAAC,CAAC,EAAE,OAAO,IAAI;EAEhC,IACE,OAAOD,CAAC,KAAK,QAAQ,IACrB,OAAOC,CAAC,KAAK,QAAQ,IACrBD,CAAC,KAAK,IAAI,IACVC,CAAC,KAAK,IAAI,EACV;IACA,OAAO,KAAK;EACd;EAEA,MAAMG,KAAK,GAAGF,MAAM,CAACG,IAAI,CAACL,CAAW,CAAC;EACtC,MAAMM,KAAK,GAAGJ,MAAM,CAACG,IAAI,CAACJ,CAAW,CAAC;EAEtC,IAAIG,KAAK,CAACG,MAAM,KAAKD,KAAK,CAACC,MAAM,EAAE,OAAO,KAAK;EAE/C,KAAK,MAAMC,GAAG,IAAIJ,KAAK,EAAE;IACvB,IACE,EAAEI,GAAG,IAAKP,CAAY,CAAC,IACvB,CAACC,MAAM,CAACC,EAAE,CACPH,CAAC,CAA6BQ,GAAG,CAAC,EAClCP,CAAC,CAA6BO,GAAG,CACpC,CAAC,EACD;MACA,OAAO,KAAK;IACd;EACF;EAEA,OAAO,IAAI;AACb","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.throttle = throttle;
7
+ function throttle(fn, ms) {
8
+ let last = 0;
9
+ return (...args) => {
10
+ const now = Date.now();
11
+ if (now - last > ms) {
12
+ last = now;
13
+ fn(...args);
14
+ }
15
+ };
16
+ }
17
+ //# sourceMappingURL=throttle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["throttle","fn","ms","last","args","now","Date"],"sourceRoot":"../../../src","sources":["utils/throttle.ts"],"mappings":";;;;;;AAAO,SAASA,QAAQA,CACtBC,EAAK,EACLC,EAAU,EACP;EACH,IAAIC,IAAI,GAAG,CAAC;EACZ,OAAQ,CAAC,GAAGC,IAAa,KAAK;IAC5B,MAAMC,GAAG,GAAGC,IAAI,CAACD,GAAG,CAAC,CAAC;IACtB,IAAIA,GAAG,GAAGF,IAAI,GAAGD,EAAE,EAAE;MACnBC,IAAI,GAAGE,GAAG;MACVJ,EAAE,CAAC,GAAGG,IAAI,CAAC;IACb;EACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ViewabilityHelper = void 0;
7
+ /**
8
+ * Public token describing viewability state of an item.
9
+ * Mirrors FlashList's ViewToken concept.
10
+ */
11
+
12
+ /**
13
+ * Configuration for viewability calculations.
14
+ */
15
+
16
+ /**
17
+ * ViewabilityHelper
18
+ *
19
+ * Pure observer:
20
+ * - Does NOT affect layout
21
+ * - Does NOT affect recycling
22
+ * - Computes visibility based on layout + scroll metrics
23
+ *
24
+ * This class is intentionally stateful (lastVisible)
25
+ * to compute "changed" items efficiently.
26
+ */
27
+ class ViewabilityHelper {
28
+ /** Previously visible indices */
29
+ lastVisible = new Set();
30
+ constructor(config = {}) {
31
+ this.config = config;
32
+ }
33
+
34
+ /**
35
+ * Computes which items are viewable and which changed
36
+ * since the last invocation.
37
+ *
38
+ * IMPORTANT:
39
+ * - This method should be called AFTER windowing,
40
+ * not on the full dataset.
41
+ */
42
+ computeViewableItems(layouts, metrics) {
43
+ const visibleNow = new Set();
44
+ const viewableItems = [];
45
+ const changed = [];
46
+ const viewportTop = metrics.offsetY;
47
+ const viewportBottom = viewportTop + metrics.height;
48
+
49
+ // Normalize threshold into [0, 1]
50
+ const threshold = (this.config.itemVisiblePercentThreshold ?? 0) / 100;
51
+
52
+ /**
53
+ * NOTE:
54
+ * We intentionally iterate layouts sequentially,
55
+ * but EXIT EARLY when items are completely below viewport.
56
+ *
57
+ * This keeps complexity near O(visibleItems),
58
+ * not O(totalItems).
59
+ */
60
+ for (let i = 0; i < layouts.length; i++) {
61
+ const layout = layouts[i];
62
+
63
+ // If item is completely below viewport, stop
64
+ if (layout.y > viewportBottom) {
65
+ break;
66
+ }
67
+ const itemTop = layout.y;
68
+ const itemBottom = layout.y + layout.height;
69
+
70
+ // If item is completely above viewport, skip
71
+ if (itemBottom < viewportTop) {
72
+ continue;
73
+ }
74
+
75
+ // Compute visible intersection
76
+ const visibleTop = Math.max(itemTop, viewportTop);
77
+ const visibleBottom = Math.min(itemBottom, viewportBottom);
78
+ const visibleHeight = Math.max(0, visibleBottom - visibleTop);
79
+
80
+ // Guard against zero-height items
81
+ const itemHeight = layout.height > 0 ? layout.height : 1;
82
+ const visibleRatio = visibleHeight / itemHeight;
83
+ if (visibleRatio >= threshold) {
84
+ visibleNow.add(i);
85
+ viewableItems.push({
86
+ index: i,
87
+ isViewable: true
88
+ });
89
+
90
+ // Newly visible
91
+ if (!this.lastVisible.has(i)) {
92
+ changed.push({
93
+ index: i,
94
+ isViewable: true
95
+ });
96
+ }
97
+ }
98
+ }
99
+
100
+ /**
101
+ * Items that were visible before but not anymore
102
+ */
103
+ for (const index of this.lastVisible) {
104
+ if (!visibleNow.has(index)) {
105
+ changed.push({
106
+ index,
107
+ isViewable: false
108
+ });
109
+ }
110
+ }
111
+
112
+ // Update snapshot
113
+ this.lastVisible = visibleNow;
114
+ return {
115
+ viewableItems,
116
+ changed
117
+ };
118
+ }
119
+ }
120
+ exports.ViewabilityHelper = ViewabilityHelper;
121
+ //# sourceMappingURL=ViewabilityHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ViewabilityHelper","lastVisible","Set","constructor","config","computeViewableItems","layouts","metrics","visibleNow","viewableItems","changed","viewportTop","offsetY","viewportBottom","height","threshold","itemVisiblePercentThreshold","i","length","layout","y","itemTop","itemBottom","visibleTop","Math","max","visibleBottom","min","visibleHeight","itemHeight","visibleRatio","add","push","index","isViewable","has","exports"],"sourceRoot":"../../../src","sources":["viewability/ViewabilityHelper.ts"],"mappings":";;;;;;AAGA;AACA;AACA;AACA;;AAMA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,iBAAiB,CAAC;EAC7B;EACQC,WAAW,GAAG,IAAIC,GAAG,CAAS,CAAC;EAEvCC,WAAWA,CACQC,MAAyB,GAAG,CAAC,CAAC,EAC/C;IAAA,KADiBA,MAAyB,GAAzBA,MAAyB;EACzC;;EAEH;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,oBAAoBA,CAClBC,OAAmC,EACnCC,OAAsB,EAItB;IACA,MAAMC,UAAU,GAAG,IAAIN,GAAG,CAAS,CAAC;IACpC,MAAMO,aAA0B,GAAG,EAAE;IACrC,MAAMC,OAAoB,GAAG,EAAE;IAE/B,MAAMC,WAAW,GAAGJ,OAAO,CAACK,OAAO;IACnC,MAAMC,cAAc,GAAGF,WAAW,GAAGJ,OAAO,CAACO,MAAM;;IAEnD;IACA,MAAMC,SAAS,GACb,CAAC,IAAI,CAACX,MAAM,CAACY,2BAA2B,IAAI,CAAC,IAAI,GAAG;;IAEtD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGX,OAAO,CAACY,MAAM,EAAED,CAAC,EAAE,EAAE;MACvC,MAAME,MAAM,GAAGb,OAAO,CAACW,CAAC,CAAE;;MAE1B;MACA,IAAIE,MAAM,CAACC,CAAC,GAAGP,cAAc,EAAE;QAC7B;MACF;MAEA,MAAMQ,OAAO,GAAGF,MAAM,CAACC,CAAC;MACxB,MAAME,UAAU,GAAGH,MAAM,CAACC,CAAC,GAAGD,MAAM,CAACL,MAAM;;MAE3C;MACA,IAAIQ,UAAU,GAAGX,WAAW,EAAE;QAC5B;MACF;;MAEA;MACA,MAAMY,UAAU,GAAGC,IAAI,CAACC,GAAG,CAACJ,OAAO,EAAEV,WAAW,CAAC;MACjD,MAAMe,aAAa,GAAGF,IAAI,CAACG,GAAG,CAACL,UAAU,EAAET,cAAc,CAAC;MAE1D,MAAMe,aAAa,GAAGJ,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEC,aAAa,GAAGH,UAAU,CAAC;;MAE7D;MACA,MAAMM,UAAU,GACdV,MAAM,CAACL,MAAM,GAAG,CAAC,GAAGK,MAAM,CAACL,MAAM,GAAG,CAAC;MAEvC,MAAMgB,YAAY,GAAGF,aAAa,GAAGC,UAAU;MAE/C,IAAIC,YAAY,IAAIf,SAAS,EAAE;QAC7BP,UAAU,CAACuB,GAAG,CAACd,CAAC,CAAC;QACjBR,aAAa,CAACuB,IAAI,CAAC;UAAEC,KAAK,EAAEhB,CAAC;UAAEiB,UAAU,EAAE;QAAK,CAAC,CAAC;;QAElD;QACA,IAAI,CAAC,IAAI,CAACjC,WAAW,CAACkC,GAAG,CAAClB,CAAC,CAAC,EAAE;UAC5BP,OAAO,CAACsB,IAAI,CAAC;YAAEC,KAAK,EAAEhB,CAAC;YAAEiB,UAAU,EAAE;UAAK,CAAC,CAAC;QAC9C;MACF;IACF;;IAEA;AACJ;AACA;IACI,KAAK,MAAMD,KAAK,IAAI,IAAI,CAAChC,WAAW,EAAE;MACpC,IAAI,CAACO,UAAU,CAAC2B,GAAG,CAACF,KAAK,CAAC,EAAE;QAC1BvB,OAAO,CAACsB,IAAI,CAAC;UAAEC,KAAK;UAAEC,UAAU,EAAE;QAAM,CAAC,CAAC;MAC5C;IACF;;IAEA;IACA,IAAI,CAACjC,WAAW,GAAGO,UAAU;IAE7B,OAAO;MAAEC,aAAa;MAAEC;IAAQ,CAAC;EACnC;AACF;AAAC0B,OAAA,CAAApC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=ScrollMetrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["windowing/ScrollMetrics.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.findVisibleIndexRange = findVisibleIndexRange;
7
+ /**
8
+ * Computes the contiguous range of item indices
9
+ * intersecting the viewport expanded by bufferPx.
10
+ *
11
+ * PURE function. No allocations besides output.
12
+ * FlashList-style windowing.
13
+ */
14
+ function findVisibleIndexRange(layouts, metrics, bufferPx) {
15
+ const count = layouts.length;
16
+
17
+ // 🔒 CRITICAL GUARDS (FlashList-style)
18
+ if (count === 0 || metrics.height <= 0 || bufferPx < 0) {
19
+ return [];
20
+ }
21
+ const windowStart = Math.max(0, metrics.offsetY - bufferPx);
22
+ const windowEnd = metrics.offsetY + metrics.height + bufferPx;
23
+
24
+ // Binary search for first intersecting item
25
+ let low = 0;
26
+ let high = count - 1;
27
+ let firstVisible = count;
28
+ while (low <= high) {
29
+ const mid = low + high >> 1;
30
+ const rect = layouts[mid];
31
+ if (rect.y + rect.height >= windowStart) {
32
+ firstVisible = mid;
33
+ high = mid - 1;
34
+ } else {
35
+ low = mid + 1;
36
+ }
37
+ }
38
+
39
+ // Linear scan forward
40
+ const visible = [];
41
+ for (let i = firstVisible; i < count; i++) {
42
+ const rect = layouts[i];
43
+ if (rect.y > windowEnd) break;
44
+ visible.push(i);
45
+ }
46
+ return visible;
47
+ }
48
+ //# sourceMappingURL=findVisibleIndexRange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["findVisibleIndexRange","layouts","metrics","bufferPx","count","length","height","windowStart","Math","max","offsetY","windowEnd","low","high","firstVisible","mid","rect","y","visible","i","push"],"sourceRoot":"../../../src","sources":["windowing/findVisibleIndexRange.ts"],"mappings":";;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,qBAAqBA,CACnCC,OAAmC,EACnCC,OAAsB,EACtBC,QAAgB,EACG;EACnB,MAAMC,KAAK,GAAGH,OAAO,CAACI,MAAM;;EAE5B;EACA,IACED,KAAK,KAAK,CAAC,IACXF,OAAO,CAACI,MAAM,IAAI,CAAC,IACnBH,QAAQ,GAAG,CAAC,EACZ;IACA,OAAO,EAAE;EACX;EAEA,MAAMI,WAAW,GACfC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEP,OAAO,CAACQ,OAAO,GAAGP,QAAQ,CAAC;EAEzC,MAAMQ,SAAS,GACbT,OAAO,CAACQ,OAAO,GAAGR,OAAO,CAACI,MAAM,GAAGH,QAAQ;;EAE7C;EACA,IAAIS,GAAG,GAAG,CAAC;EACX,IAAIC,IAAI,GAAGT,KAAK,GAAG,CAAC;EACpB,IAAIU,YAAY,GAAGV,KAAK;EAExB,OAAOQ,GAAG,IAAIC,IAAI,EAAE;IAClB,MAAME,GAAG,GAAIH,GAAG,GAAGC,IAAI,IAAK,CAAC;IAC7B,MAAMG,IAAI,GAAGf,OAAO,CAACc,GAAG,CAAE;IAE1B,IAAIC,IAAI,CAACC,CAAC,GAAGD,IAAI,CAACV,MAAM,IAAIC,WAAW,EAAE;MACvCO,YAAY,GAAGC,GAAG;MAClBF,IAAI,GAAGE,GAAG,GAAG,CAAC;IAChB,CAAC,MAAM;MACLH,GAAG,GAAGG,GAAG,GAAG,CAAC;IACf;EACF;;EAEA;EACA,MAAMG,OAAiB,GAAG,EAAE;EAE5B,KAAK,IAAIC,CAAC,GAAGL,YAAY,EAAEK,CAAC,GAAGf,KAAK,EAAEe,CAAC,EAAE,EAAE;IACzC,MAAMH,IAAI,GAAGf,OAAO,CAACkB,CAAC,CAAE;IACxB,IAAIH,IAAI,CAACC,CAAC,GAAGN,SAAS,EAAE;IACxBO,OAAO,CAACE,IAAI,CAACD,CAAC,CAAC;EACjB;EAEA,OAAOD,OAAO;AAChB","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "findVisibleIndexRange", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _findVisibleIndexRange.findVisibleIndexRange;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "useScrollMetrics", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _useScrollMetrics.useScrollMetrics;
16
+ }
17
+ });
18
+ var _findVisibleIndexRange = require("./findVisibleIndexRange");
19
+ var _useScrollMetrics = require("./useScrollMetrics");
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_findVisibleIndexRange","require","_useScrollMetrics"],"sourceRoot":"../../../src","sources":["windowing/index.ts"],"mappings":";;;;;;;;;;;;;;;;;AACA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA","ignoreList":[]}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useScrollMetrics = useScrollMetrics;
7
+ var _react = require("react");
8
+ /**
9
+ * Scroll metrics hook.
10
+ * Provides stable scroll snapshot + handlers.
11
+ *
12
+ * FlashList equivalent: useScrollMetrics
13
+ */
14
+ function useScrollMetrics() {
15
+ const [metrics, setMetrics] = (0, _react.useState)({
16
+ offsetY: 0,
17
+ height: 0
18
+ });
19
+ const onScroll = (0, _react.useCallback)(e => {
20
+ const offsetY = e.nativeEvent.contentOffset.y;
21
+ setMetrics(prev => prev.offsetY === offsetY ? prev : {
22
+ ...prev,
23
+ offsetY
24
+ });
25
+ }, []);
26
+ const onLayout = (0, _react.useCallback)(e => {
27
+ const height = e.nativeEvent.layout.height;
28
+ setMetrics(prev => prev.height === height ? prev : {
29
+ ...prev,
30
+ height
31
+ });
32
+ }, []);
33
+ return {
34
+ metrics,
35
+ onScroll,
36
+ onLayout
37
+ };
38
+ }
39
+ //# sourceMappingURL=useScrollMetrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","useScrollMetrics","metrics","setMetrics","useState","offsetY","height","onScroll","useCallback","e","nativeEvent","contentOffset","y","prev","onLayout","layout"],"sourceRoot":"../../../src","sources":["windowing/useScrollMetrics.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,gBAAgBA,CAAA,EAI9B;EACA,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAC,eAAQ,EAAgB;IACpDC,OAAO,EAAE,CAAC;IACVC,MAAM,EAAE;EACV,CAAC,CAAC;EAEF,MAAMC,QAAQ,GAAG,IAAAC,kBAAW,EACzBC,CAA0C,IAAK;IAC9C,MAAMJ,OAAO,GAAGI,CAAC,CAACC,WAAW,CAACC,aAAa,CAACC,CAAC;IAE7CT,UAAU,CAACU,IAAI,IACbA,IAAI,CAACR,OAAO,KAAKA,OAAO,GACpBQ,IAAI,GACJ;MAAE,GAAGA,IAAI;MAAER;IAAQ,CACzB,CAAC;EACH,CAAC,EACD,EACF,CAAC;EAED,MAAMS,QAAQ,GAAG,IAAAN,kBAAW,EACzBC,CAAoB,IAAK;IACxB,MAAMH,MAAM,GAAGG,CAAC,CAACC,WAAW,CAACK,MAAM,CAACT,MAAM;IAE1CH,UAAU,CAACU,IAAI,IACbA,IAAI,CAACP,MAAM,KAAKA,MAAM,GAClBO,IAAI,GACJ;MAAE,GAAGA,IAAI;MAAEP;IAAO,CACxB,CAAC;EACH,CAAC,EACD,EACF,CAAC;EAED,OAAO;IACLJ,OAAO;IACPK,QAAQ;IACRO;EACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { requireNativeComponent } from 'react-native';
4
+ export const NitroRecyclerView = requireNativeComponent('NitroRecyclerView');
5
+ //# sourceMappingURL=NitroList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["requireNativeComponent","NitroRecyclerView"],"sourceRoot":"../../src","sources":["NitroList.ts"],"mappings":";;AAAA,SAASA,sBAAsB,QAAQ,cAAc;AAMrD,OAAO,MAAMC,iBAAiB,GAC5BD,sBAAsB,CAAyB,mBAAmB,CAAC","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import { useCellRenderer } from './hooks/useCellRenderer';
4
+
5
+ /**
6
+ * INTERNAL hook.
7
+ * MUST ALWAYS CALL hooks in the same order.
8
+ */
9
+ export function useRecyclerListInternal(layouts, metrics, bufferPx, getItemType) {
10
+ /**
11
+ * FlashList rule:
12
+ * Hooks are ALWAYS called.
13
+ * Inputs are guarded instead.
14
+ */
15
+ const safeLayouts = metrics.height > 0 ? layouts : EMPTY_LAYOUTS;
16
+ const safeBufferPx = metrics.height > 0 ? bufferPx : 0;
17
+ return useCellRenderer(safeLayouts, metrics, safeBufferPx, getItemType);
18
+ }
19
+
20
+ /** Stable empty reference */
21
+ const EMPTY_LAYOUTS = [];
22
+ //# sourceMappingURL=RecyclerList.internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCellRenderer","useRecyclerListInternal","layouts","metrics","bufferPx","getItemType","safeLayouts","height","EMPTY_LAYOUTS","safeBufferPx"],"sourceRoot":"../../src","sources":["RecyclerList.internal.ts"],"mappings":";;AAIA,SAASA,eAAe,QAAQ,yBAAyB;;AAEzD;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CACrCC,OAAmC,EACnCC,OAAsB,EACtBC,QAAgB,EAChBC,WAAsC,EACrB;EAEjB;AACF;AACA;AACA;AACA;EACE,MAAMC,WAAW,GACfH,OAAO,CAACI,MAAM,GAAG,CAAC,GAAGL,OAAO,GAAGM,aAAa;EAE9C,MAAMC,YAAY,GAChBN,OAAO,CAACI,MAAM,GAAG,CAAC,GAAGH,QAAQ,GAAG,CAAC;EAEnC,OAAOJ,eAAe,CACpBM,WAAW,EACXH,OAAO,EACPM,YAAY,EACZJ,WACF,CAAC;AACH;;AAEA;AACA,MAAMG,aAAyC,GAAG,EAAE","ignoreList":[]}