@shopify/flash-list 2.0.4-alpha.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/dist/AnimatedFlashList.js +4 -6
  2. package/dist/AnimatedFlashList.js.map +1 -1
  3. package/dist/FlashList.js +1 -5
  4. package/dist/FlashList.js.map +1 -1
  5. package/dist/FlashListProps.d.ts +41 -1
  6. package/dist/FlashListProps.d.ts.map +1 -1
  7. package/dist/FlashListProps.js +1 -4
  8. package/dist/FlashListProps.js.map +1 -1
  9. package/dist/FlashListRef.js +1 -2
  10. package/dist/benchmark/AutoScrollHelper.js +22 -30
  11. package/dist/benchmark/AutoScrollHelper.js.map +1 -1
  12. package/dist/benchmark/JSFPSMonitor.js +27 -33
  13. package/dist/benchmark/JSFPSMonitor.js.map +1 -1
  14. package/dist/benchmark/roundToDecimalPlaces.js +2 -5
  15. package/dist/benchmark/roundToDecimalPlaces.js.map +1 -1
  16. package/dist/benchmark/useBenchmark.d.ts +9 -1
  17. package/dist/benchmark/useBenchmark.d.ts.map +1 -1
  18. package/dist/benchmark/useBenchmark.js +86 -95
  19. package/dist/benchmark/useBenchmark.js.map +1 -1
  20. package/dist/benchmark/useDataMultiplier.js +6 -10
  21. package/dist/benchmark/useDataMultiplier.js.map +1 -1
  22. package/dist/benchmark/useFlatListBenchmark.d.ts +4 -1
  23. package/dist/benchmark/useFlatListBenchmark.d.ts.map +1 -1
  24. package/dist/benchmark/useFlatListBenchmark.js +73 -81
  25. package/dist/benchmark/useFlatListBenchmark.js.map +1 -1
  26. package/dist/errors/ErrorMessages.js +1 -4
  27. package/dist/errors/ErrorMessages.js.map +1 -1
  28. package/dist/errors/WarningMessages.js +1 -4
  29. package/dist/errors/WarningMessages.js.map +1 -1
  30. package/dist/index.js +17 -35
  31. package/dist/index.js.map +1 -1
  32. package/dist/isNewArch.js +6 -9
  33. package/dist/isNewArch.js.map +1 -1
  34. package/dist/native/config/PlatformHelper.android.js +2 -5
  35. package/dist/native/config/PlatformHelper.android.js.map +1 -1
  36. package/dist/native/config/PlatformHelper.ios.js +2 -5
  37. package/dist/native/config/PlatformHelper.ios.js.map +1 -1
  38. package/dist/native/config/PlatformHelper.js +2 -5
  39. package/dist/native/config/PlatformHelper.js.map +1 -1
  40. package/dist/native/config/PlatformHelper.web.js +2 -5
  41. package/dist/native/config/PlatformHelper.web.js.map +1 -1
  42. package/dist/recyclerview/LayoutCommitObserver.js +20 -24
  43. package/dist/recyclerview/LayoutCommitObserver.js.map +1 -1
  44. package/dist/recyclerview/RecyclerView.d.ts.map +1 -1
  45. package/dist/recyclerview/RecyclerView.js +134 -111
  46. package/dist/recyclerview/RecyclerView.js.map +1 -1
  47. package/dist/recyclerview/RecyclerViewContextProvider.js +7 -12
  48. package/dist/recyclerview/RecyclerViewContextProvider.js.map +1 -1
  49. package/dist/recyclerview/RecyclerViewManager.js +138 -167
  50. package/dist/recyclerview/RecyclerViewManager.js.map +1 -1
  51. package/dist/recyclerview/RecyclerViewProps.js +1 -2
  52. package/dist/recyclerview/RenderStackManager.js +97 -188
  53. package/dist/recyclerview/RenderStackManager.js.map +1 -1
  54. package/dist/recyclerview/ViewHolder.d.ts +2 -0
  55. package/dist/recyclerview/ViewHolder.d.ts.map +1 -1
  56. package/dist/recyclerview/ViewHolder.js +19 -21
  57. package/dist/recyclerview/ViewHolder.js.map +1 -1
  58. package/dist/recyclerview/ViewHolderCollection.d.ts +4 -0
  59. package/dist/recyclerview/ViewHolderCollection.d.ts.map +1 -1
  60. package/dist/recyclerview/ViewHolderCollection.js +26 -30
  61. package/dist/recyclerview/ViewHolderCollection.js.map +1 -1
  62. package/dist/recyclerview/components/CompatScroller.js +6 -7
  63. package/dist/recyclerview/components/CompatScroller.js.map +1 -1
  64. package/dist/recyclerview/components/CompatView.js +6 -7
  65. package/dist/recyclerview/components/CompatView.js.map +1 -1
  66. package/dist/recyclerview/components/ScrollAnchor.js +10 -15
  67. package/dist/recyclerview/components/ScrollAnchor.js.map +1 -1
  68. package/dist/recyclerview/components/StickyHeaders.d.ts +5 -1
  69. package/dist/recyclerview/components/StickyHeaders.d.ts.map +1 -1
  70. package/dist/recyclerview/components/StickyHeaders.js +77 -51
  71. package/dist/recyclerview/components/StickyHeaders.js.map +1 -1
  72. package/dist/recyclerview/helpers/ConsecutiveNumbers.js +39 -66
  73. package/dist/recyclerview/helpers/ConsecutiveNumbers.js.map +1 -1
  74. package/dist/recyclerview/helpers/EngagedIndicesTracker.js +57 -63
  75. package/dist/recyclerview/helpers/EngagedIndicesTracker.js.map +1 -1
  76. package/dist/recyclerview/helpers/RenderTimeTracker.js +19 -24
  77. package/dist/recyclerview/helpers/RenderTimeTracker.js.map +1 -1
  78. package/dist/recyclerview/helpers/VelocityTracker.js +16 -22
  79. package/dist/recyclerview/helpers/VelocityTracker.js.map +1 -1
  80. package/dist/recyclerview/hooks/useBoundDetection.js +37 -40
  81. package/dist/recyclerview/hooks/useBoundDetection.js.map +1 -1
  82. package/dist/recyclerview/hooks/useLayoutState.js +9 -15
  83. package/dist/recyclerview/hooks/useLayoutState.js.map +1 -1
  84. package/dist/recyclerview/hooks/useMappingHelper.js +6 -10
  85. package/dist/recyclerview/hooks/useMappingHelper.js.map +1 -1
  86. package/dist/recyclerview/hooks/useOnLoad.js +16 -22
  87. package/dist/recyclerview/hooks/useOnLoad.js.map +1 -1
  88. package/dist/recyclerview/hooks/useRecyclerViewController.d.ts.map +1 -1
  89. package/dist/recyclerview/hooks/useRecyclerViewController.js +169 -188
  90. package/dist/recyclerview/hooks/useRecyclerViewController.js.map +1 -1
  91. package/dist/recyclerview/hooks/useRecyclerViewManager.js +12 -17
  92. package/dist/recyclerview/hooks/useRecyclerViewManager.js.map +1 -1
  93. package/dist/recyclerview/hooks/useRecyclingState.js +10 -14
  94. package/dist/recyclerview/hooks/useRecyclingState.js.map +1 -1
  95. package/dist/recyclerview/hooks/useSecondaryProps.d.ts +2 -0
  96. package/dist/recyclerview/hooks/useSecondaryProps.d.ts.map +1 -1
  97. package/dist/recyclerview/hooks/useSecondaryProps.js +39 -30
  98. package/dist/recyclerview/hooks/useSecondaryProps.js.map +1 -1
  99. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js +17 -22
  100. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js.map +1 -1
  101. package/dist/recyclerview/hooks/useUnmountFlag.js +5 -9
  102. package/dist/recyclerview/hooks/useUnmountFlag.js.map +1 -1
  103. package/dist/recyclerview/layout-managers/GridLayoutManager.js +61 -80
  104. package/dist/recyclerview/layout-managers/GridLayoutManager.js.map +1 -1
  105. package/dist/recyclerview/layout-managers/LayoutManager.js +83 -123
  106. package/dist/recyclerview/layout-managers/LayoutManager.js.map +1 -1
  107. package/dist/recyclerview/layout-managers/LinearLayoutManager.js +51 -91
  108. package/dist/recyclerview/layout-managers/LinearLayoutManager.js.map +1 -1
  109. package/dist/recyclerview/layout-managers/MasonryLayoutManager.js +77 -96
  110. package/dist/recyclerview/layout-managers/MasonryLayoutManager.js.map +1 -1
  111. package/dist/recyclerview/utils/adjustOffsetForRTL.js +1 -4
  112. package/dist/recyclerview/utils/adjustOffsetForRTL.js.map +1 -1
  113. package/dist/recyclerview/utils/componentUtils.js +4 -9
  114. package/dist/recyclerview/utils/componentUtils.js.map +1 -1
  115. package/dist/recyclerview/utils/findVisibleIndex.js +9 -13
  116. package/dist/recyclerview/utils/findVisibleIndex.js.map +1 -1
  117. package/dist/recyclerview/utils/measureLayout.js +12 -20
  118. package/dist/recyclerview/utils/measureLayout.js.map +1 -1
  119. package/dist/recyclerview/utils/measureLayout.web.js +15 -23
  120. package/dist/recyclerview/utils/measureLayout.web.js.map +1 -1
  121. package/dist/recyclerview/viewability/ViewToken.js +1 -2
  122. package/dist/recyclerview/viewability/ViewabilityHelper.js +34 -41
  123. package/dist/recyclerview/viewability/ViewabilityHelper.js.map +1 -1
  124. package/dist/recyclerview/viewability/ViewabilityManager.js +48 -61
  125. package/dist/recyclerview/viewability/ViewabilityManager.js.map +1 -1
  126. package/dist/tsconfig.tsbuildinfo +1 -1
  127. package/dist/utils/AverageWindow.js +28 -39
  128. package/dist/utils/AverageWindow.js.map +1 -1
  129. package/package.json +4 -6
  130. package/src/FlashListProps.ts +51 -1
  131. package/src/benchmark/useBenchmark.ts +47 -4
  132. package/src/benchmark/useFlatListBenchmark.ts +38 -5
  133. package/src/recyclerview/RecyclerView.tsx +42 -8
  134. package/src/recyclerview/ViewHolder.tsx +6 -1
  135. package/src/recyclerview/ViewHolderCollection.tsx +10 -0
  136. package/src/recyclerview/components/StickyHeaders.tsx +54 -13
  137. package/src/recyclerview/hooks/useRecyclerViewController.tsx +7 -4
  138. package/src/recyclerview/hooks/useSecondaryProps.tsx +23 -0
  139. package/dist/__tests__/AverageWindow.test.d.ts +0 -2
  140. package/dist/__tests__/AverageWindow.test.d.ts.map +0 -1
  141. package/dist/__tests__/AverageWindow.test.js +0 -104
  142. package/dist/__tests__/AverageWindow.test.js.map +0 -1
  143. package/dist/__tests__/ConsecutiveNumbers.test.d.ts +0 -2
  144. package/dist/__tests__/ConsecutiveNumbers.test.d.ts.map +0 -1
  145. package/dist/__tests__/ConsecutiveNumbers.test.js +0 -224
  146. package/dist/__tests__/ConsecutiveNumbers.test.js.map +0 -1
  147. package/dist/__tests__/GridLayoutManager.test.d.ts +0 -2
  148. package/dist/__tests__/GridLayoutManager.test.d.ts.map +0 -1
  149. package/dist/__tests__/GridLayoutManager.test.js +0 -69
  150. package/dist/__tests__/GridLayoutManager.test.js.map +0 -1
  151. package/dist/__tests__/LayoutCommitObserver.test.d.ts +0 -2
  152. package/dist/__tests__/LayoutCommitObserver.test.d.ts.map +0 -1
  153. package/dist/__tests__/LayoutCommitObserver.test.js +0 -37
  154. package/dist/__tests__/LayoutCommitObserver.test.js.map +0 -1
  155. package/dist/__tests__/LinearLayoutManager.test.d.ts +0 -2
  156. package/dist/__tests__/LinearLayoutManager.test.d.ts.map +0 -1
  157. package/dist/__tests__/LinearLayoutManager.test.js +0 -140
  158. package/dist/__tests__/LinearLayoutManager.test.js.map +0 -1
  159. package/dist/__tests__/MasonryLayoutManager.test.d.ts +0 -2
  160. package/dist/__tests__/MasonryLayoutManager.test.d.ts.map +0 -1
  161. package/dist/__tests__/MasonryLayoutManager.test.js +0 -148
  162. package/dist/__tests__/MasonryLayoutManager.test.js.map +0 -1
  163. package/dist/__tests__/RecyclerView.test.d.ts +0 -2
  164. package/dist/__tests__/RecyclerView.test.d.ts.map +0 -1
  165. package/dist/__tests__/RecyclerView.test.js +0 -103
  166. package/dist/__tests__/RecyclerView.test.js.map +0 -1
  167. package/dist/__tests__/RecyclerViewManager.test.d.ts +0 -2
  168. package/dist/__tests__/RecyclerViewManager.test.d.ts.map +0 -1
  169. package/dist/__tests__/RecyclerViewManager.test.js +0 -56
  170. package/dist/__tests__/RecyclerViewManager.test.js.map +0 -1
  171. package/dist/__tests__/RenderStackManager.test.d.ts +0 -2
  172. package/dist/__tests__/RenderStackManager.test.d.ts.map +0 -1
  173. package/dist/__tests__/RenderStackManager.test.js +0 -485
  174. package/dist/__tests__/RenderStackManager.test.js.map +0 -1
  175. package/dist/__tests__/ViewabilityHelper.test.d.ts +0 -2
  176. package/dist/__tests__/ViewabilityHelper.test.d.ts.map +0 -1
  177. package/dist/__tests__/ViewabilityHelper.test.js +0 -186
  178. package/dist/__tests__/ViewabilityHelper.test.js.map +0 -1
  179. package/dist/__tests__/findVisibleIndex.test.d.ts +0 -2
  180. package/dist/__tests__/findVisibleIndex.test.d.ts.map +0 -1
  181. package/dist/__tests__/findVisibleIndex.test.js +0 -259
  182. package/dist/__tests__/findVisibleIndex.test.js.map +0 -1
  183. package/dist/__tests__/helpers/createLayoutManager.d.ts +0 -34
  184. package/dist/__tests__/helpers/createLayoutManager.d.ts.map +0 -1
  185. package/dist/__tests__/helpers/createLayoutManager.js +0 -110
  186. package/dist/__tests__/helpers/createLayoutManager.js.map +0 -1
  187. package/dist/__tests__/useUnmountAwareCallbacks.test.d.ts +0 -2
  188. package/dist/__tests__/useUnmountAwareCallbacks.test.d.ts.map +0 -1
  189. package/dist/__tests__/useUnmountAwareCallbacks.test.js +0 -185
  190. package/dist/__tests__/useUnmountAwareCallbacks.test.js.map +0 -1
  191. package/src/__tests__/AverageWindow.test.ts +0 -128
  192. package/src/__tests__/ConsecutiveNumbers.test.ts +0 -232
  193. package/src/__tests__/GridLayoutManager.test.ts +0 -113
  194. package/src/__tests__/LayoutCommitObserver.test.tsx +0 -63
  195. package/src/__tests__/LinearLayoutManager.test.ts +0 -227
  196. package/src/__tests__/MasonryLayoutManager.test.ts +0 -202
  197. package/src/__tests__/RecyclerView.test.tsx +0 -144
  198. package/src/__tests__/RecyclerViewManager.test.ts +0 -74
  199. package/src/__tests__/RenderStackManager.test.ts +0 -574
  200. package/src/__tests__/ViewabilityHelper.test.ts +0 -282
  201. package/src/__tests__/findVisibleIndex.test.ts +0 -369
  202. package/src/__tests__/helpers/createLayoutManager.ts +0 -141
  203. package/src/__tests__/useUnmountAwareCallbacks.test.tsx +0 -285
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useBoundDetection = useBoundDetection;
4
- var react_1 = require("react");
5
- var useUnmountAwareCallbacks_1 = require("./useUnmountAwareCallbacks");
1
+ import { useCallback, useEffect, useMemo, useRef } from "react";
2
+ import { useUnmountAwareAnimationFrame } from "./useUnmountAwareCallbacks";
6
3
  /**
7
4
  * Hook to detect when the scroll position reaches near the start or end of the list
8
5
  * and trigger the appropriate callbacks. This hook is responsible for:
@@ -14,55 +11,55 @@ var useUnmountAwareCallbacks_1 = require("./useUnmountAwareCallbacks");
14
11
  * @param props - The RecyclerViewProps containing configuration and callbacks
15
12
  * @param scrollViewRef - Reference to the scrollable container component
16
13
  */
17
- function useBoundDetection(recyclerViewManager, scrollViewRef) {
14
+ export function useBoundDetection(recyclerViewManager, scrollViewRef) {
18
15
  // Track whether we've already triggered the end reached callback to prevent duplicate calls
19
- var pendingEndReached = (0, react_1.useRef)(false);
16
+ const pendingEndReached = useRef(false);
20
17
  // Track whether we've already triggered the start reached callback to prevent duplicate calls
21
- var pendingStartReached = (0, react_1.useRef)(false);
18
+ const pendingStartReached = useRef(false);
22
19
  // Track whether we should auto-scroll to bottom when new content is added
23
- var pendingAutoscrollToBottom = (0, react_1.useRef)(false);
24
- var lastCheckBoundsTime = (0, react_1.useRef)(Date.now());
25
- var data = recyclerViewManager.props.data;
26
- var requestAnimationFrame = (0, useUnmountAwareCallbacks_1.useUnmountAwareAnimationFrame)().requestAnimationFrame;
27
- var windowHeight = recyclerViewManager.hasLayout()
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()
28
25
  ? recyclerViewManager.getWindowSize().height
29
26
  : 0;
30
- var contentHeight = recyclerViewManager.hasLayout()
27
+ const contentHeight = recyclerViewManager.hasLayout()
31
28
  ? recyclerViewManager.getChildContainerDimensions().height
32
29
  : 0;
33
- var windowWidth = recyclerViewManager.hasLayout()
30
+ const windowWidth = recyclerViewManager.hasLayout()
34
31
  ? recyclerViewManager.getWindowSize().width
35
32
  : 0;
36
- var contentWidth = recyclerViewManager.hasLayout()
33
+ const contentWidth = recyclerViewManager.hasLayout()
37
34
  ? recyclerViewManager.getChildContainerDimensions().width
38
35
  : 0;
39
36
  /**
40
37
  * Checks if the scroll position is near the start or end of the list
41
38
  * and triggers appropriate callbacks if configured.
42
39
  */
43
- var checkBounds = (0, react_1.useCallback)(function () {
40
+ const checkBounds = useCallback(() => {
44
41
  var _a;
45
42
  lastCheckBoundsTime.current = Date.now();
46
- var _b = recyclerViewManager.props, onEndReached = _b.onEndReached, onStartReached = _b.onStartReached, maintainVisibleContentPosition = _b.maintainVisibleContentPosition, horizontal = _b.horizontal, onEndReachedThresholdProp = _b.onEndReachedThreshold, onStartReachedThresholdProp = _b.onStartReachedThreshold;
43
+ const { onEndReached, onStartReached, maintainVisibleContentPosition, horizontal, onEndReachedThreshold: onEndReachedThresholdProp, onStartReachedThreshold: onStartReachedThresholdProp, } = recyclerViewManager.props;
47
44
  // Skip all calculations if neither callback is provided and autoscroll is disabled
48
- var autoscrollToBottomThreshold = (_a = maintainVisibleContentPosition === null || maintainVisibleContentPosition === void 0 ? void 0 : maintainVisibleContentPosition.autoscrollToBottomThreshold) !== null && _a !== void 0 ? _a : -1;
45
+ const autoscrollToBottomThreshold = (_a = maintainVisibleContentPosition === null || maintainVisibleContentPosition === void 0 ? void 0 : maintainVisibleContentPosition.autoscrollToBottomThreshold) !== null && _a !== void 0 ? _a : -1;
49
46
  if (!onEndReached && !onStartReached && autoscrollToBottomThreshold < 0) {
50
47
  return;
51
48
  }
52
49
  if (recyclerViewManager.getIsFirstLayoutComplete()) {
53
- var lastScrollOffset = recyclerViewManager.getAbsoluteLastScrollOffset();
54
- var contentSize = recyclerViewManager.getChildContainerDimensions();
55
- var windowSize = recyclerViewManager.getWindowSize();
56
- var isHorizontal = horizontal === true;
50
+ const lastScrollOffset = recyclerViewManager.getAbsoluteLastScrollOffset();
51
+ const contentSize = recyclerViewManager.getChildContainerDimensions();
52
+ const windowSize = recyclerViewManager.getWindowSize();
53
+ const isHorizontal = horizontal === true;
57
54
  // Calculate dimensions based on scroll direction
58
- var visibleLength = isHorizontal ? windowSize.width : windowSize.height;
59
- var contentLength = (isHorizontal ? contentSize.width : contentSize.height) +
55
+ const visibleLength = isHorizontal ? windowSize.width : windowSize.height;
56
+ const contentLength = (isHorizontal ? contentSize.width : contentSize.height) +
60
57
  recyclerViewManager.firstItemOffset;
61
58
  // Check if we're near the end of the list
62
59
  if (onEndReached) {
63
- var onEndReachedThreshold = onEndReachedThresholdProp !== null && onEndReachedThresholdProp !== void 0 ? onEndReachedThresholdProp : 0.5;
64
- var endThresholdDistance = onEndReachedThreshold * visibleLength;
65
- var isNearEnd = Math.ceil(lastScrollOffset + visibleLength) >=
60
+ const onEndReachedThreshold = onEndReachedThresholdProp !== null && onEndReachedThresholdProp !== void 0 ? onEndReachedThresholdProp : 0.5;
61
+ const endThresholdDistance = onEndReachedThreshold * visibleLength;
62
+ const isNearEnd = Math.ceil(lastScrollOffset + visibleLength) >=
66
63
  contentLength - endThresholdDistance;
67
64
  if (isNearEnd && !pendingEndReached.current) {
68
65
  pendingEndReached.current = true;
@@ -72,9 +69,9 @@ function useBoundDetection(recyclerViewManager, scrollViewRef) {
72
69
  }
73
70
  // Check if we're near the start of the list
74
71
  if (onStartReached) {
75
- var onStartReachedThreshold = onStartReachedThresholdProp !== null && onStartReachedThresholdProp !== void 0 ? onStartReachedThresholdProp : 0.2;
76
- var startThresholdDistance = onStartReachedThreshold * visibleLength;
77
- var isNearStart = lastScrollOffset <= startThresholdDistance;
72
+ const onStartReachedThreshold = onStartReachedThresholdProp !== null && onStartReachedThresholdProp !== void 0 ? onStartReachedThresholdProp : 0.2;
73
+ const startThresholdDistance = onStartReachedThreshold * visibleLength;
74
+ const isNearStart = lastScrollOffset <= startThresholdDistance;
78
75
  if (isNearStart && !pendingStartReached.current) {
79
76
  pendingStartReached.current = true;
80
77
  onStartReached();
@@ -83,8 +80,8 @@ function useBoundDetection(recyclerViewManager, scrollViewRef) {
83
80
  }
84
81
  // Handle auto-scrolling to bottom for vertical lists
85
82
  if (!isHorizontal && autoscrollToBottomThreshold >= 0) {
86
- var autoscrollToBottomThresholdDistance = autoscrollToBottomThreshold * visibleLength;
87
- var isNearBottom = Math.ceil(lastScrollOffset + visibleLength) >=
83
+ const autoscrollToBottomThresholdDistance = autoscrollToBottomThreshold * visibleLength;
84
+ const isNearBottom = Math.ceil(lastScrollOffset + visibleLength) >=
88
85
  contentLength - autoscrollToBottomThresholdDistance;
89
86
  if (isNearBottom) {
90
87
  pendingAutoscrollToBottom.current = true;
@@ -95,12 +92,12 @@ function useBoundDetection(recyclerViewManager, scrollViewRef) {
95
92
  }
96
93
  }
97
94
  }, [recyclerViewManager]);
98
- var runAutoScrollToBottomCheck = (0, react_1.useCallback)(function () {
95
+ const runAutoScrollToBottomCheck = useCallback(() => {
99
96
  if (pendingAutoscrollToBottom.current) {
100
97
  pendingAutoscrollToBottom.current = false;
101
- requestAnimationFrame(function () {
98
+ requestAnimationFrame(() => {
102
99
  var _a, _b, _c;
103
- var shouldAnimate = (_b = (_a = recyclerViewManager.props.maintainVisibleContentPosition) === null || _a === void 0 ? void 0 : _a.animateAutoScrollToBottom) !== null && _b !== void 0 ? _b : true;
100
+ const shouldAnimate = (_b = (_a = recyclerViewManager.props.maintainVisibleContentPosition) === null || _a === void 0 ? void 0 : _a.animateAutoScrollToBottom) !== null && _b !== void 0 ? _b : true;
104
101
  (_c = scrollViewRef.current) === null || _c === void 0 ? void 0 : _c.scrollToEnd({
105
102
  animated: shouldAnimate,
106
103
  });
@@ -108,17 +105,17 @@ function useBoundDetection(recyclerViewManager, scrollViewRef) {
108
105
  }
109
106
  }, [requestAnimationFrame, scrollViewRef, recyclerViewManager]);
110
107
  // Reset end reached state when data changes
111
- (0, react_1.useMemo)(function () {
108
+ useMemo(() => {
112
109
  pendingEndReached.current = false;
113
110
  // needs to run only when data changes
114
111
  // eslint-disable-next-line react-hooks/exhaustive-deps
115
112
  }, [data]);
116
113
  // Auto-scroll to bottom when new content is added and we're near the bottom
117
- (0, react_1.useEffect)(function () {
114
+ useEffect(() => {
118
115
  runAutoScrollToBottomCheck();
119
116
  }, [data, runAutoScrollToBottomCheck, windowHeight, windowWidth]);
120
117
  // Since content changes frequently, we try and avoid doing the auto scroll during active scrolls
121
- (0, react_1.useEffect)(function () {
118
+ useEffect(() => {
122
119
  if (Date.now() - lastCheckBoundsTime.current >= 100) {
123
120
  runAutoScrollToBottomCheck();
124
121
  }
@@ -129,7 +126,7 @@ function useBoundDetection(recyclerViewManager, scrollViewRef) {
129
126
  runAutoScrollToBottomCheck,
130
127
  ]);
131
128
  return {
132
- checkBounds: checkBounds,
129
+ checkBounds,
133
130
  };
134
131
  }
135
132
  //# sourceMappingURL=useBoundDetection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBoundDetection.js","sourceRoot":"","sources":["../../../src/recyclerview/hooks/useBoundDetection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useBoundDetection.js","sourceRoot":"","sources":["../../../src/recyclerview/hooks/useBoundDetection.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useLayoutState = useLayoutState;
4
- var tslib_1 = require("tslib");
5
- var react_1 = require("react");
6
- var RecyclerViewContextProvider_1 = require("../RecyclerViewContextProvider");
1
+ import { useState, useCallback } from "react";
2
+ import { useRecyclerViewContext } from "../RecyclerViewContextProvider";
7
3
  /**
8
4
  * Custom hook that combines state management with RecyclerView layout updates.
9
5
  * This hook provides a way to manage state that affects the layout of the RecyclerView,
@@ -14,11 +10,11 @@ var RecyclerViewContextProvider_1 = require("../RecyclerViewContextProvider");
14
10
  * - The current state value
15
11
  * - A setter function that updates the state and triggers a layout recalculation
16
12
  */
17
- function useLayoutState(initialState) {
13
+ export function useLayoutState(initialState) {
18
14
  // Initialize state with the provided initial value
19
- var _a = tslib_1.__read((0, react_1.useState)(initialState), 2), state = _a[0], setState = _a[1];
15
+ const [state, setState] = useState(initialState);
20
16
  // Get the RecyclerView context for layout management
21
- var recyclerViewContext = (0, RecyclerViewContextProvider_1.useRecyclerViewContext)();
17
+ const recyclerViewContext = useRecyclerViewContext();
22
18
  /**
23
19
  * Setter function that updates the state and triggers a layout recalculation.
24
20
  * This ensures that any state changes that affect the layout are properly reflected
@@ -27,13 +23,11 @@ function useLayoutState(initialState) {
27
23
  * @param newValue - Either a new state value or a function that receives the previous state
28
24
  * and returns the new state
29
25
  */
30
- var setLayoutState = (0, react_1.useCallback)(function (newValue, skipParentLayout) {
26
+ const setLayoutState = useCallback((newValue, skipParentLayout) => {
31
27
  // Update the state using either the new value or the result of the updater function
32
- setState(function (prevValue) {
33
- return typeof newValue === "function"
34
- ? newValue(prevValue)
35
- : newValue;
36
- });
28
+ setState((prevValue) => typeof newValue === "function"
29
+ ? newValue(prevValue)
30
+ : newValue);
37
31
  if (!skipParentLayout) {
38
32
  // Trigger a layout recalculation in the RecyclerView
39
33
  recyclerViewContext === null || recyclerViewContext === void 0 ? void 0 : recyclerViewContext.layout();
@@ -1 +1 @@
1
- {"version":3,"file":"useLayoutState.js","sourceRoot":"","sources":["../../../src/recyclerview/hooks/useLayoutState.ts"],"names":[],"mappings":";;AAqBA,wCAiCC;;AAtDD,+BAA8C;AAE9C,8EAAwE;AASxE;;;;;;;;;GASG;AACH,SAAgB,cAAc,CAC5B,YAAwC;IAExC,mDAAmD;IAC7C,IAAA,KAAA,eAAoB,IAAA,gBAAQ,EAAI,YAAY,CAAC,IAAA,EAA5C,KAAK,QAAA,EAAE,QAAQ,QAA6B,CAAC;IACpD,qDAAqD;IACrD,IAAM,mBAAmB,GAAG,IAAA,oDAAsB,GAAE,CAAC;IAErD;;;;;;;OAOG;IACH,IAAM,cAAc,GAAyB,IAAA,mBAAW,EACtD,UAAC,QAAQ,EAAE,gBAAgB;QACzB,oFAAoF;QACpF,QAAQ,CAAC,UAAC,SAAS;YACjB,OAAA,OAAO,QAAQ,KAAK,UAAU;gBAC5B,CAAC,CAAE,QAAgC,CAAC,SAAS,CAAC;gBAC9C,CAAC,CAAC,QAAQ;QAFZ,CAEY,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"}
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"}
@@ -1,19 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useMappingHelper = void 0;
4
- var react_1 = require("react");
5
- var RecyclerViewContextProvider_1 = require("../RecyclerViewContextProvider");
1
+ import { useCallback } from "react";
2
+ import { useRecyclerViewContext } from "../RecyclerViewContextProvider";
6
3
  /**
7
4
  * Returns a function that can help create a mapping key for the items.
8
5
  * Useful when doing .map on items to create a list of components.
9
6
  * Using this ensures that performance is optimal for FlashList
10
7
  */
11
- var useMappingHelper = function () {
12
- var recyclerViewContext = (0, RecyclerViewContextProvider_1.useRecyclerViewContext)();
13
- var getMappingKey = (0, react_1.useCallback)(function (itemKey, index) {
8
+ export const useMappingHelper = () => {
9
+ const recyclerViewContext = useRecyclerViewContext();
10
+ const getMappingKey = useCallback((itemKey, index) => {
14
11
  return recyclerViewContext ? index : itemKey;
15
12
  }, [recyclerViewContext]);
16
- return { getMappingKey: getMappingKey };
13
+ return { getMappingKey };
17
14
  };
18
- exports.useMappingHelper = useMappingHelper;
19
15
  //# sourceMappingURL=useMappingHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMappingHelper.js","sourceRoot":"","sources":["../../../src/recyclerview/hooks/useMappingHelper.ts"],"names":[],"mappings":";;;AAAA,+BAAoC;AAEpC,8EAAwE;AAExE;;;;GAIG;AACI,IAAM,gBAAgB,GAAG;IAC9B,IAAM,mBAAmB,GAAG,IAAA,oDAAsB,GAAE,CAAC;IACrD,IAAM,aAAa,GAAG,IAAA,mBAAW,EAC/B,UAAC,OAAiC,EAAE,KAAa;QAC/C,OAAO,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/C,CAAC,EACD,CAAC,mBAAmB,CAAC,CACtB,CAAC;IAEF,OAAO,EAAE,aAAa,eAAA,EAAE,CAAC;AAC3B,CAAC,CAAC;AAVW,QAAA,gBAAgB,oBAU3B"}
1
+ {"version":3,"file":"useMappingHelper.js","sourceRoot":"","sources":["../../../src/recyclerview/hooks/useMappingHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAC;IACrD,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,OAAiC,EAAE,KAAa,EAAE,EAAE;QACnD,OAAO,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/C,CAAC,EACD,CAAC,mBAAmB,CAAC,CACtB,CAAC;IAEF,OAAO,EAAE,aAAa,EAAE,CAAC;AAC3B,CAAC,CAAC"}
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useOnLoad = exports.useOnListLoad = void 0;
4
- var tslib_1 = require("tslib");
5
- var react_1 = require("react");
6
- var useUnmountAwareCallbacks_1 = require("./useUnmountAwareCallbacks");
1
+ import { useEffect, useMemo, useRef, useState } from "react";
2
+ import { useUnmountAwareAnimationFrame } from "./useUnmountAwareCallbacks";
7
3
  // import { ToastAndroid } from "react-native";
8
4
  /**
9
5
  * Hook to track when the RecyclerView has loaded its items and notify when loading is complete.
@@ -14,23 +10,23 @@ var useUnmountAwareCallbacks_1 = require("./useUnmountAwareCallbacks");
14
10
  * @param onLoad - Optional callback function that will be called when the list has loaded with timing information
15
11
  * @returns Object containing isLoaded state indicating whether the list has completed initial rendering
16
12
  */
17
- var useOnListLoad = function (recyclerViewManager, onLoad) {
18
- var loadStartTimeRef = (0, react_1.useRef)(Date.now());
19
- var _a = tslib_1.__read((0, react_1.useState)(false), 2), isLoaded = _a[0], setIsLoaded = _a[1];
20
- var dataLength = recyclerViewManager.getDataLength();
13
+ export const useOnListLoad = (recyclerViewManager, onLoad) => {
14
+ const loadStartTimeRef = useRef(Date.now());
15
+ const [isLoaded, setIsLoaded] = useState(false);
16
+ const dataLength = recyclerViewManager.getDataLength();
21
17
  // const dataCollector = useRef<number[]>([]);
22
- var requestAnimationFrame = (0, useUnmountAwareCallbacks_1.useUnmountAwareAnimationFrame)().requestAnimationFrame;
18
+ const { requestAnimationFrame } = useUnmountAwareAnimationFrame();
23
19
  // Track render cycles by collecting elapsed time on each render
24
20
  // useEffect(() => {
25
21
  // const elapsedTimeInMs = Date.now() - loadStartTimeRef.current;
26
22
  // dataCollector.current?.push(elapsedTimeInMs);
27
23
  // });
28
- (0, react_1.useMemo)(function () {
24
+ useMemo(() => {
29
25
  loadStartTimeRef.current = Date.now();
30
26
  // eslint-disable-next-line react-hooks/exhaustive-deps
31
27
  }, [dataLength]);
32
- (0, exports.useOnLoad)(recyclerViewManager, function () {
33
- var elapsedTimeInMs = Date.now() - loadStartTimeRef.current;
28
+ useOnLoad(recyclerViewManager, () => {
29
+ const elapsedTimeInMs = Date.now() - loadStartTimeRef.current;
34
30
  // Commented code below was used for debugging purposes
35
31
  // to display all collected timing data points
36
32
  // const dataCollectorString = dataCollector.current
@@ -42,15 +38,14 @@ var useOnListLoad = function (recyclerViewManager, onLoad) {
42
38
  // );
43
39
  // console.log("----------> dataCollector", dataCollectorString);
44
40
  // console.log("----------> FlashList v2 load in", `${elapsedTimeInMs} ms`);
45
- requestAnimationFrame(function () {
41
+ requestAnimationFrame(() => {
46
42
  recyclerViewManager.isFirstPaintOnUiComplete = true;
47
- onLoad === null || onLoad === void 0 ? void 0 : onLoad({ elapsedTimeInMs: elapsedTimeInMs });
43
+ onLoad === null || onLoad === void 0 ? void 0 : onLoad({ elapsedTimeInMs });
48
44
  setIsLoaded(true);
49
45
  });
50
46
  });
51
- return { isLoaded: isLoaded };
47
+ return { isLoaded };
52
48
  };
53
- exports.useOnListLoad = useOnListLoad;
54
49
  /**
55
50
  * Core hook that detects when a RecyclerView has completed its initial layout.
56
51
  * This hook monitors the RecyclerViewManager and triggers the provided callback
@@ -59,9 +54,9 @@ exports.useOnListLoad = useOnListLoad;
59
54
  * @param recyclerViewManager - The RecyclerViewManager instance to monitor
60
55
  * @param onLoad - Callback function that will be called once when the first layout is complete
61
56
  */
62
- var useOnLoad = function (recyclerViewManager, onLoad) {
63
- var isLoaded = (0, react_1.useRef)(false);
64
- (0, react_1.useEffect)(function () {
57
+ export const useOnLoad = (recyclerViewManager, onLoad) => {
58
+ const isLoaded = useRef(false);
59
+ useEffect(() => {
65
60
  // Only trigger onLoad callback once when first layout is complete
66
61
  if (recyclerViewManager.getIsFirstLayoutComplete() && !isLoaded.current) {
67
62
  isLoaded.current = true;
@@ -69,5 +64,4 @@ var useOnLoad = function (recyclerViewManager, onLoad) {
69
64
  }
70
65
  });
71
66
  };
72
- exports.useOnLoad = useOnLoad;
73
67
  //# sourceMappingURL=useOnLoad.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOnLoad.js","sourceRoot":"","sources":["../../../src/recyclerview/hooks/useOnLoad.ts"],"names":[],"mappings":";;;;AAAA,+BAA6D;AAI7D,uEAA2E;AAC3E,+CAA+C;AAE/C;;;;;;;;GAQG;AACI,IAAM,aAAa,GAAG,UAC3B,mBAA2C,EAC3C,MAAoD;IAEpD,IAAM,gBAAgB,GAAG,IAAA,cAAM,EAAS,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,IAAA,KAAA,eAA0B,IAAA,gBAAQ,EAAU,KAAK,CAAC,IAAA,EAAjD,QAAQ,QAAA,EAAE,WAAW,QAA4B,CAAC;IACzD,IAAM,UAAU,GAAG,mBAAmB,CAAC,aAAa,EAAE,CAAC;IACvD,8CAA8C;IACtC,IAAA,qBAAqB,GAAK,IAAA,wDAA6B,GAAE,sBAApC,CAAqC;IAClE,gEAAgE;IAChE,oBAAoB;IACpB,mEAAmE;IACnE,kDAAkD;IAClD,MAAM;IAEN,IAAA,eAAO,EAAC;QACN,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,uDAAuD;IACzD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,IAAA,iBAAS,EAAC,mBAAmB,EAAE;QAC7B,IAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC;QAC9D,uDAAuD;QACvD,8CAA8C;QAC9C,oDAAoD;QACpD,uCAAuC;QACvC,iBAAiB;QACjB,sBAAsB;QACtB,kDAAkD;QAClD,uBAAuB;QACvB,KAAK;QACL,iEAAiE;QACjE,4EAA4E;QAC5E,qBAAqB,CAAC;YACpB,mBAAmB,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACpD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,EAAE,eAAe,iBAAA,EAAE,CAAC,CAAC;YAC9B,WAAW,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,UAAA,EAAE,CAAC;AACtB,CAAC,CAAC;AAzCW,QAAA,aAAa,iBAyCxB;AAEF;;;;;;;GAOG;AACI,IAAM,SAAS,GAAG,UACvB,mBAA2C,EAC3C,MAAkB;IAElB,IAAM,QAAQ,GAAG,IAAA,cAAM,EAAU,KAAK,CAAC,CAAC;IACxC,IAAA,iBAAS,EAAC;QACR,kEAAkE;QAClE,IAAI,mBAAmB,CAAC,wBAAwB,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;YACxB,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAZW,QAAA,SAAS,aAYpB"}
1
+ {"version":3,"file":"useOnLoad.js","sourceRoot":"","sources":["../../../src/recyclerview/hooks/useOnLoad.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAI7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,+CAA+C;AAE/C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,mBAA2C,EAC3C,MAAoD,EAC7B,EAAE;IACzB,MAAM,gBAAgB,GAAG,MAAM,CAAS,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,mBAAmB,CAAC,aAAa,EAAE,CAAC;IACvD,8CAA8C;IAC9C,MAAM,EAAE,qBAAqB,EAAE,GAAG,6BAA6B,EAAE,CAAC;IAClE,gEAAgE;IAChE,oBAAoB;IACpB,mEAAmE;IACnE,kDAAkD;IAClD,MAAM;IAEN,OAAO,CAAC,GAAG,EAAE;QACX,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,uDAAuD;IACzD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,SAAS,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAClC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC;QAC9D,uDAAuD;QACvD,8CAA8C;QAC9C,oDAAoD;QACpD,uCAAuC;QACvC,iBAAiB;QACjB,sBAAsB;QACtB,kDAAkD;QAClD,uBAAuB;QACvB,KAAK;QACL,iEAAiE;QACjE,4EAA4E;QAC5E,qBAAqB,CAAC,GAAG,EAAE;YACzB,mBAAmB,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACpD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,EAAE,eAAe,EAAE,CAAC,CAAC;YAC9B,WAAW,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,mBAA2C,EAC3C,MAAkB,EAClB,EAAE;IACF,MAAM,QAAQ,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;IACxC,SAAS,CAAC,GAAG,EAAE;QACb,kEAAkE;QAClE,IAAI,mBAAmB,CAAC,wBAAwB,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;YACxB,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useRecyclerViewController.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/hooks/useRecyclerViewController.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAMV,MAAM,OAAO,CAAC;AAGf,OAAO,EAKL,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAO7D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EACzC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC3C,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC/B,aAAa,EAAE,SAAS,CAAC,cAAc,CAAC,EACxC,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC;;;;;EAqkBlD"}
1
+ {"version":3,"file":"useRecyclerViewController.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/hooks/useRecyclerViewController.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAMV,MAAM,OAAO,CAAC;AAGf,OAAO,EAKL,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAO7D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EACzC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC3C,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC/B,aAAa,EAAE,SAAS,CAAC,cAAc,CAAC,EACxC,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC;;;;;EAwkBlD"}