@shopify/flash-list 2.0.0-alpha.8 → 2.0.0-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 (197) hide show
  1. package/README.md +38 -98
  2. package/dist/AnimatedFlashList.d.ts.map +1 -1
  3. package/dist/AnimatedFlashList.js +3 -3
  4. package/dist/AnimatedFlashList.js.map +1 -1
  5. package/dist/FlashList.d.ts +9 -0
  6. package/dist/FlashList.d.ts.map +1 -1
  7. package/dist/FlashList.js +20 -0
  8. package/dist/FlashList.js.map +1 -1
  9. package/dist/FlashListProps.d.ts +15 -8
  10. package/dist/FlashListProps.d.ts.map +1 -1
  11. package/dist/FlashListProps.js.map +1 -1
  12. package/dist/FlashListRef.d.ts +305 -0
  13. package/dist/FlashListRef.d.ts.map +1 -0
  14. package/dist/FlashListRef.js +3 -0
  15. package/dist/FlashListRef.js.map +1 -0
  16. package/dist/MasonryFlashList.js.map +1 -1
  17. package/dist/__tests__/RecyclerView.test.js +63 -28
  18. package/dist/__tests__/RecyclerView.test.js.map +1 -1
  19. package/dist/__tests__/RenderStackManager.test.d.ts +2 -0
  20. package/dist/__tests__/RenderStackManager.test.d.ts.map +1 -0
  21. package/dist/__tests__/RenderStackManager.test.js +486 -0
  22. package/dist/__tests__/RenderStackManager.test.js.map +1 -0
  23. package/dist/__tests__/helpers/createLayoutManager.d.ts.map +1 -1
  24. package/dist/__tests__/helpers/createLayoutManager.js +3 -4
  25. package/dist/__tests__/helpers/createLayoutManager.js.map +1 -1
  26. package/dist/__tests__/useUnmountAwareCallbacks.test.js +1 -1
  27. package/dist/__tests__/useUnmountAwareCallbacks.test.js.map +1 -1
  28. package/dist/benchmark/useFlatListBenchmark.js +8 -7
  29. package/dist/benchmark/useFlatListBenchmark.js.map +1 -1
  30. package/dist/enableNewCore.d.ts.map +1 -1
  31. package/dist/enableNewCore.js +2 -1
  32. package/dist/enableNewCore.js.map +1 -1
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/native/config/PlatformHelper.android.d.ts +2 -0
  37. package/dist/native/config/PlatformHelper.android.d.ts.map +1 -1
  38. package/dist/native/config/PlatformHelper.android.js +2 -0
  39. package/dist/native/config/PlatformHelper.android.js.map +1 -1
  40. package/dist/native/config/PlatformHelper.d.ts +2 -0
  41. package/dist/native/config/PlatformHelper.d.ts.map +1 -1
  42. package/dist/native/config/PlatformHelper.ios.d.ts +2 -0
  43. package/dist/native/config/PlatformHelper.ios.d.ts.map +1 -1
  44. package/dist/native/config/PlatformHelper.ios.js +2 -0
  45. package/dist/native/config/PlatformHelper.ios.js.map +1 -1
  46. package/dist/native/config/PlatformHelper.js +2 -0
  47. package/dist/native/config/PlatformHelper.js.map +1 -1
  48. package/dist/native/config/PlatformHelper.web.d.ts +2 -0
  49. package/dist/native/config/PlatformHelper.web.d.ts.map +1 -1
  50. package/dist/native/config/PlatformHelper.web.js +3 -1
  51. package/dist/native/config/PlatformHelper.web.js.map +1 -1
  52. package/dist/recyclerview/RecyclerView.d.ts +2 -1
  53. package/dist/recyclerview/RecyclerView.d.ts.map +1 -1
  54. package/dist/recyclerview/RecyclerView.js +64 -37
  55. package/dist/recyclerview/RecyclerView.js.map +1 -1
  56. package/dist/recyclerview/RecyclerViewContextProvider.d.ts +6 -5
  57. package/dist/recyclerview/RecyclerViewContextProvider.d.ts.map +1 -1
  58. package/dist/recyclerview/RecyclerViewContextProvider.js.map +1 -1
  59. package/dist/recyclerview/RecyclerViewManager.d.ts +21 -7
  60. package/dist/recyclerview/RecyclerViewManager.d.ts.map +1 -1
  61. package/dist/recyclerview/RecyclerViewManager.js +105 -113
  62. package/dist/recyclerview/RecyclerViewManager.js.map +1 -1
  63. package/dist/recyclerview/RenderStackManager.d.ts +85 -0
  64. package/dist/recyclerview/RenderStackManager.d.ts.map +1 -0
  65. package/dist/recyclerview/RenderStackManager.js +324 -0
  66. package/dist/recyclerview/RenderStackManager.js.map +1 -0
  67. package/dist/recyclerview/ViewHolder.d.ts.map +1 -1
  68. package/dist/recyclerview/ViewHolder.js +5 -3
  69. package/dist/recyclerview/ViewHolder.js.map +1 -1
  70. package/dist/recyclerview/ViewHolderCollection.d.ts +3 -1
  71. package/dist/recyclerview/ViewHolderCollection.d.ts.map +1 -1
  72. package/dist/recyclerview/ViewHolderCollection.js +23 -8
  73. package/dist/recyclerview/ViewHolderCollection.js.map +1 -1
  74. package/dist/recyclerview/components/ScrollAnchor.d.ts +2 -1
  75. package/dist/recyclerview/components/ScrollAnchor.d.ts.map +1 -1
  76. package/dist/recyclerview/components/ScrollAnchor.js +9 -4
  77. package/dist/recyclerview/components/ScrollAnchor.js.map +1 -1
  78. package/dist/recyclerview/components/StickyHeaders.d.ts +1 -1
  79. package/dist/recyclerview/components/StickyHeaders.d.ts.map +1 -1
  80. package/dist/recyclerview/components/StickyHeaders.js +40 -32
  81. package/dist/recyclerview/components/StickyHeaders.js.map +1 -1
  82. package/dist/recyclerview/helpers/EngagedIndicesTracker.d.ts +45 -1
  83. package/dist/recyclerview/helpers/EngagedIndicesTracker.d.ts.map +1 -1
  84. package/dist/recyclerview/helpers/EngagedIndicesTracker.js +79 -20
  85. package/dist/recyclerview/helpers/EngagedIndicesTracker.js.map +1 -1
  86. package/dist/recyclerview/helpers/RenderTimeTracker.d.ts +10 -0
  87. package/dist/recyclerview/helpers/RenderTimeTracker.d.ts.map +1 -0
  88. package/dist/recyclerview/helpers/RenderTimeTracker.js +39 -0
  89. package/dist/recyclerview/helpers/RenderTimeTracker.js.map +1 -0
  90. package/dist/recyclerview/helpers/VelocityTracker.d.ts +29 -0
  91. package/dist/recyclerview/helpers/VelocityTracker.d.ts.map +1 -0
  92. package/dist/recyclerview/helpers/VelocityTracker.js +70 -0
  93. package/dist/recyclerview/helpers/VelocityTracker.js.map +1 -0
  94. package/dist/recyclerview/hooks/useBoundDetection.d.ts +1 -2
  95. package/dist/recyclerview/hooks/useBoundDetection.d.ts.map +1 -1
  96. package/dist/recyclerview/hooks/useBoundDetection.js +19 -16
  97. package/dist/recyclerview/hooks/useBoundDetection.js.map +1 -1
  98. package/dist/recyclerview/hooks/useMappingHelper.d.ts +1 -1
  99. package/dist/recyclerview/hooks/useMappingHelper.d.ts.map +1 -1
  100. package/dist/recyclerview/hooks/useMappingHelper.js +1 -1
  101. package/dist/recyclerview/hooks/useMappingHelper.js.map +1 -1
  102. package/dist/recyclerview/hooks/useOnLoad.d.ts.map +1 -1
  103. package/dist/recyclerview/hooks/useOnLoad.js +4 -6
  104. package/dist/recyclerview/hooks/useOnLoad.js.map +1 -1
  105. package/dist/recyclerview/hooks/useRecyclerViewController.d.ts +3 -48
  106. package/dist/recyclerview/hooks/useRecyclerViewController.d.ts.map +1 -1
  107. package/dist/recyclerview/hooks/useRecyclerViewController.js +179 -119
  108. package/dist/recyclerview/hooks/useRecyclerViewController.js.map +1 -1
  109. package/dist/recyclerview/hooks/useRecyclerViewManager.d.ts +2 -0
  110. package/dist/recyclerview/hooks/useRecyclerViewManager.d.ts.map +1 -1
  111. package/dist/recyclerview/hooks/useRecyclerViewManager.js +10 -1
  112. package/dist/recyclerview/hooks/useRecyclerViewManager.js.map +1 -1
  113. package/dist/recyclerview/hooks/useSecondaryProps.js +1 -1
  114. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.d.ts +10 -3
  115. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.d.ts.map +1 -1
  116. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js +33 -4
  117. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js.map +1 -1
  118. package/dist/recyclerview/layout-managers/GridLayoutManager.d.ts +6 -0
  119. package/dist/recyclerview/layout-managers/GridLayoutManager.d.ts.map +1 -1
  120. package/dist/recyclerview/layout-managers/GridLayoutManager.js +27 -5
  121. package/dist/recyclerview/layout-managers/GridLayoutManager.js.map +1 -1
  122. package/dist/recyclerview/layout-managers/LayoutManager.d.ts +10 -16
  123. package/dist/recyclerview/layout-managers/LayoutManager.d.ts.map +1 -1
  124. package/dist/recyclerview/layout-managers/LayoutManager.js +4 -14
  125. package/dist/recyclerview/layout-managers/LayoutManager.js.map +1 -1
  126. package/dist/recyclerview/layout-managers/MasonryLayoutManager.js +2 -2
  127. package/dist/recyclerview/layout-managers/MasonryLayoutManager.js.map +1 -1
  128. package/dist/recyclerview/utils/measureLayout.d.ts +1 -29
  129. package/dist/recyclerview/utils/measureLayout.d.ts.map +1 -1
  130. package/dist/recyclerview/utils/measureLayout.js +2 -4
  131. package/dist/recyclerview/utils/measureLayout.js.map +1 -1
  132. package/dist/recyclerview/utils/measureLayout.web.d.ts +29 -0
  133. package/dist/recyclerview/utils/measureLayout.web.d.ts.map +1 -0
  134. package/dist/recyclerview/utils/measureLayout.web.js +89 -0
  135. package/dist/recyclerview/utils/measureLayout.web.js.map +1 -0
  136. package/dist/tsconfig.tsbuildinfo +1 -1
  137. package/dist/viewability/ViewToken.d.ts +2 -2
  138. package/dist/viewability/ViewToken.d.ts.map +1 -1
  139. package/dist/viewability/ViewabilityHelper.js +1 -1
  140. package/dist/viewability/ViewabilityHelper.js.map +1 -1
  141. package/dist/viewability/ViewabilityManager.d.ts.map +1 -1
  142. package/dist/viewability/ViewabilityManager.js +1 -2
  143. package/dist/viewability/ViewabilityManager.js.map +1 -1
  144. package/jestSetup.js +30 -11
  145. package/package.json +2 -1
  146. package/src/AnimatedFlashList.ts +3 -2
  147. package/src/FlashList.tsx +24 -0
  148. package/src/FlashListProps.ts +20 -8
  149. package/src/FlashListRef.ts +320 -0
  150. package/src/MasonryFlashList.tsx +2 -2
  151. package/src/__tests__/RecyclerView.test.tsx +84 -30
  152. package/src/__tests__/RenderStackManager.test.ts +575 -0
  153. package/src/__tests__/helpers/createLayoutManager.ts +2 -3
  154. package/src/__tests__/useUnmountAwareCallbacks.test.tsx +12 -12
  155. package/src/benchmark/useFlatListBenchmark.ts +2 -2
  156. package/src/enableNewCore.ts +3 -1
  157. package/src/index.ts +1 -0
  158. package/src/native/config/PlatformHelper.android.ts +2 -0
  159. package/src/native/config/PlatformHelper.ios.ts +2 -0
  160. package/src/native/config/PlatformHelper.ts +2 -0
  161. package/src/native/config/PlatformHelper.web.ts +3 -1
  162. package/src/recyclerview/RecyclerView.tsx +85 -43
  163. package/src/recyclerview/RecyclerViewContextProvider.ts +12 -6
  164. package/src/recyclerview/RecyclerViewManager.ts +123 -98
  165. package/src/recyclerview/RenderStackManager.ts +291 -0
  166. package/src/recyclerview/ViewHolder.tsx +5 -3
  167. package/src/recyclerview/ViewHolderCollection.tsx +33 -12
  168. package/src/recyclerview/components/ScrollAnchor.tsx +21 -8
  169. package/src/recyclerview/components/StickyHeaders.tsx +63 -44
  170. package/src/recyclerview/helpers/EngagedIndicesTracker.ts +120 -23
  171. package/src/recyclerview/helpers/RenderTimeTracker.ts +38 -0
  172. package/src/recyclerview/helpers/VelocityTracker.ts +77 -0
  173. package/src/recyclerview/hooks/useBoundDetection.ts +25 -18
  174. package/src/recyclerview/hooks/useMappingHelper.ts +1 -1
  175. package/src/recyclerview/hooks/useOnLoad.ts +4 -6
  176. package/src/recyclerview/hooks/useRecyclerViewController.tsx +204 -173
  177. package/src/recyclerview/hooks/useRecyclerViewManager.ts +11 -1
  178. package/src/recyclerview/hooks/useSecondaryProps.tsx +1 -1
  179. package/src/recyclerview/hooks/useUnmountAwareCallbacks.ts +39 -3
  180. package/src/recyclerview/layout-managers/GridLayoutManager.ts +30 -7
  181. package/src/recyclerview/layout-managers/LayoutManager.ts +12 -21
  182. package/src/recyclerview/layout-managers/MasonryLayoutManager.ts +1 -1
  183. package/src/recyclerview/utils/measureLayout.ts +3 -3
  184. package/src/recyclerview/utils/measureLayout.web.ts +104 -0
  185. package/src/viewability/ViewToken.ts +2 -2
  186. package/src/viewability/ViewabilityHelper.ts +1 -1
  187. package/src/viewability/ViewabilityManager.ts +6 -3
  188. package/dist/__tests__/RecycleKeyManager.test.d.ts +0 -2
  189. package/dist/__tests__/RecycleKeyManager.test.d.ts.map +0 -1
  190. package/dist/__tests__/RecycleKeyManager.test.js +0 -210
  191. package/dist/__tests__/RecycleKeyManager.test.js.map +0 -1
  192. package/dist/recyclerview/RecycleKeyManager.d.ts +0 -82
  193. package/dist/recyclerview/RecycleKeyManager.d.ts.map +0 -1
  194. package/dist/recyclerview/RecycleKeyManager.js +0 -135
  195. package/dist/recyclerview/RecycleKeyManager.js.map +0 -1
  196. package/src/__tests__/RecycleKeyManager.test.ts +0 -254
  197. package/src/recyclerview/RecycleKeyManager.ts +0 -185
@@ -12,30 +12,52 @@ var ViewHolder_1 = require("../ViewHolder");
12
12
  var CompatView_1 = require("./CompatView");
13
13
  var StickyHeaders = function (_a) {
14
14
  var stickyHeaderIndices = _a.stickyHeaderIndices, renderItem = _a.renderItem, stickyHeaderRef = _a.stickyHeaderRef, recyclerViewManager = _a.recyclerViewManager, scrollY = _a.scrollY, data = _a.data, extraData = _a.extraData;
15
- var _b = tslib_1.__read((0, react_1.useState)({ currentStickyIndex: -1, nextStickyIndex: -1 }), 2), stickyIndices = _b[0], setStickyIndices = _b[1];
16
- var currentStickyIndex = stickyIndices.currentStickyIndex, nextStickyIndex = stickyIndices.nextStickyIndex;
17
- // Memoize sorted indices based on their Y positions
15
+ var _b = tslib_1.__read((0, react_1.useState)({
16
+ currentStickyIndex: -1,
17
+ pushStartsAt: Number.MAX_SAFE_INTEGER,
18
+ }), 2), stickyHeaderState = _b[0], setStickyHeaderState = _b[1];
19
+ var currentStickyIndex = stickyHeaderState.currentStickyIndex, pushStartsAt = stickyHeaderState.pushStartsAt;
20
+ // sort indices and memoize compute
18
21
  var sortedIndices = (0, react_1.useMemo)(function () {
19
22
  return stickyHeaderIndices.sort(function (first, second) { return first - second; });
20
23
  }, [stickyHeaderIndices]);
24
+ var legthInvalid = sortedIndices.length === 0 ||
25
+ recyclerViewManager.getDataLength() <=
26
+ sortedIndices[sortedIndices.length - 1];
21
27
  var compute = (0, react_1.useCallback)(function () {
22
- var _a, _b;
23
- var adjustedValue = recyclerViewManager.getLastScrollOffset();
28
+ var _a, _b, _c, _d, _e, _f;
29
+ if (legthInvalid) {
30
+ return;
31
+ }
32
+ var adjustedScrollOffset = recyclerViewManager.getLastScrollOffset();
24
33
  // Binary search for current sticky index
25
- var currentIndexInArray = findCurrentStickyIndex(sortedIndices, adjustedValue, function (index) { return recyclerViewManager.getLayout(index).y; });
34
+ var currentIndexInArray = findCurrentStickyIndex(sortedIndices, adjustedScrollOffset, function (index) { return recyclerViewManager.getLayout(index).y; });
26
35
  var newStickyIndex = (_a = sortedIndices[currentIndexInArray]) !== null && _a !== void 0 ? _a : -1;
27
36
  var newNextStickyIndex = (_b = sortedIndices[currentIndexInArray + 1]) !== null && _b !== void 0 ? _b : -1;
28
37
  if (newNextStickyIndex > recyclerViewManager.getEngagedIndices().endIndex) {
29
38
  newNextStickyIndex = -1;
30
39
  }
40
+ // To make sure header offset is 0 in the interpolate compute
41
+ var newNextStickyY = newNextStickyIndex === -1
42
+ ? Number.MAX_SAFE_INTEGER
43
+ : ((_d = (_c = recyclerViewManager.tryGetLayout(newNextStickyIndex)) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : 0) +
44
+ recyclerViewManager.firstItemOffset;
45
+ var newCurrentStickyHeight = (_f = (_e = recyclerViewManager.tryGetLayout(newStickyIndex)) === null || _e === void 0 ? void 0 : _e.height) !== null && _f !== void 0 ? _f : 0;
46
+ var newPushStartsAt = newNextStickyY - newCurrentStickyHeight;
31
47
  if (newStickyIndex !== currentStickyIndex ||
32
- newNextStickyIndex !== nextStickyIndex) {
33
- setStickyIndices({
48
+ newPushStartsAt !== pushStartsAt) {
49
+ setStickyHeaderState({
34
50
  currentStickyIndex: newStickyIndex,
35
- nextStickyIndex: newNextStickyIndex,
51
+ pushStartsAt: newPushStartsAt,
36
52
  });
37
53
  }
38
- }, [currentStickyIndex, nextStickyIndex, recyclerViewManager, sortedIndices]);
54
+ }, [
55
+ legthInvalid,
56
+ recyclerViewManager,
57
+ sortedIndices,
58
+ currentStickyIndex,
59
+ pushStartsAt,
60
+ ]);
39
61
  (0, react_1.useEffect)(function () {
40
62
  compute();
41
63
  }, [compute]);
@@ -46,40 +68,26 @@ var StickyHeaders = function (_a) {
46
68
  },
47
69
  }); }, [compute]);
48
70
  var refHolder = (0, react_1.useRef)(new Map()).current;
49
- // Memoize translateY calculation
50
71
  var translateY = (0, react_1.useMemo)(function () {
51
- if (currentStickyIndex === -1 || nextStickyIndex === -1) {
52
- return scrollY.interpolate({
53
- inputRange: [0, Infinity],
54
- outputRange: [0, 0],
55
- extrapolate: "clamp",
56
- });
57
- }
58
- var currentLayout = recyclerViewManager.getLayout(currentStickyIndex);
59
- var nextLayout = recyclerViewManager.getLayout(nextStickyIndex);
60
- var pushStartsAt = nextLayout.y - currentLayout.height;
72
+ var _a, _b;
73
+ var currentStickyHeight = (_b = (_a = recyclerViewManager.tryGetLayout(currentStickyIndex)) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : 0;
61
74
  return scrollY.interpolate({
62
- inputRange: [
63
- pushStartsAt + recyclerViewManager.firstItemOffset,
64
- nextLayout.y + recyclerViewManager.firstItemOffset,
65
- ],
66
- outputRange: [0, -currentLayout.height],
75
+ inputRange: [pushStartsAt, pushStartsAt + currentStickyHeight],
76
+ outputRange: [0, -currentStickyHeight],
67
77
  extrapolate: "clamp",
68
78
  });
69
- }, [currentStickyIndex, nextStickyIndex, recyclerViewManager, scrollY]);
79
+ }, [recyclerViewManager, currentStickyIndex, scrollY, pushStartsAt]);
70
80
  // Memoize header content
71
81
  var headerContent = (0, react_1.useMemo)(function () {
72
- if (currentStickyIndex === -1)
73
- return null;
74
82
  return (react_1.default.createElement(CompatView_1.CompatAnimatedView, { style: {
75
83
  position: "absolute",
76
84
  top: 0,
77
85
  left: 0,
78
86
  right: 0,
87
+ zIndex: 1,
79
88
  transform: [{ translateY: translateY }],
80
- } },
81
- react_1.default.createElement(ViewHolder_1.ViewHolder, { index: currentStickyIndex, item: data[currentStickyIndex], renderItem: renderItem, layout: { x: 0, y: 0, width: 0, height: 0 }, refHolder: refHolder, extraData: extraData, trailingItem: null, target: "StickyHeader" })));
82
- }, [currentStickyIndex, data, renderItem, extraData, refHolder, translateY]);
89
+ } }, currentStickyIndex !== -1 ? (react_1.default.createElement(ViewHolder_1.ViewHolder, { index: currentStickyIndex, item: data[currentStickyIndex], renderItem: renderItem, layout: { x: 0, y: 0, width: 0, height: 0 }, refHolder: refHolder, extraData: extraData, trailingItem: null, target: "StickyHeader" })) : null));
90
+ }, [translateY, currentStickyIndex, data, renderItem, refHolder, extraData]);
83
91
  return headerContent;
84
92
  };
85
93
  exports.StickyHeaders = StickyHeaders;
@@ -1 +1 @@
1
- {"version":3,"file":"StickyHeaders.js","sourceRoot":"","sources":["../../../src/recyclerview/components/StickyHeaders.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StickyHeaders.js","sourceRoot":"","sources":["../../../src/recyclerview/components/StickyHeaders.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ import { ConsecutiveNumbers } from "./ConsecutiveNumbers";
3
3
  export interface RVEngagedIndicesTracker {
4
4
  scrollOffset: number;
5
5
  drawDistance: number;
6
+ enableOffsetProjection: boolean;
7
+ averageRenderTime: number;
6
8
  /**
7
9
  * Updates the scroll offset and calculates which items should be rendered (engaged indices).
8
10
  * @param offset - The new scroll offset position
@@ -11,9 +13,27 @@ export interface RVEngagedIndicesTracker {
11
13
  * @returns New engaged indices if changed, undefined if no change
12
14
  */
13
15
  updateScrollOffset: (offset: number, velocity: Velocity | null | undefined, layoutManager: RVLayoutManager) => ConsecutiveNumbers | undefined;
16
+ /**
17
+ * Returns the currently engaged (rendered) indices.
18
+ * This includes both visible items and buffer items.
19
+ * @returns The last computed set of engaged indices
20
+ */
14
21
  getEngagedIndices: () => ConsecutiveNumbers;
22
+ /**
23
+ * Computes the visible indices in the viewport.
24
+ * @param layoutManager - Layout manager to fetch item positions and dimensions
25
+ * @returns Indices of items currently visible in the viewport
26
+ */
15
27
  computeVisibleIndices: (layoutManager: RVLayoutManager) => ConsecutiveNumbers;
28
+ /**
29
+ * Sets the scroll direction for velocity history tracking.
30
+ * @param scrollDirection - The direction of scrolling ("forward" or "backward")
31
+ */
16
32
  setScrollDirection: (scrollDirection: "forward" | "backward") => void;
33
+ /**
34
+ * Resets the velocity history based on the current scroll direction.
35
+ */
36
+ resetVelocityHistory: () => void;
17
37
  }
18
38
  export interface Velocity {
19
39
  x: number;
@@ -22,6 +42,9 @@ export interface Velocity {
22
42
  export declare class RVEngagedIndicesTrackerImpl implements RVEngagedIndicesTracker {
23
43
  scrollOffset: number;
24
44
  drawDistance: number;
45
+ enableOffsetProjection: boolean;
46
+ averageRenderTime: number;
47
+ private forceDisableOffsetProjection;
25
48
  private engagedIndices;
26
49
  private smallMultiplier;
27
50
  private largeMultiplier;
@@ -36,13 +59,29 @@ export declare class RVEngagedIndicesTrackerImpl implements RVEngagedIndicesTrac
36
59
  * 4. Returns new indices that need to be rendered
37
60
  */
38
61
  updateScrollOffset(offset: number, velocity: Velocity | null | undefined, layoutManager: RVLayoutManager): ConsecutiveNumbers | undefined;
62
+ /**
63
+ * Updates the velocity history with a new velocity value.
64
+ * @param velocity - Current scroll velocity component (x or y)
65
+ */
66
+ private updateVelocityHistory;
39
67
  /**
40
68
  * Determines scroll direction by analyzing recent velocity history.
41
69
  * Uses a majority voting system on the last 5 velocity values.
42
- * @param velocity - Current scroll velocity component (x or y)
43
70
  * @returns true if scrolling backward (negative direction), false otherwise
44
71
  */
45
72
  private isScrollingBackward;
73
+ /**
74
+ * Calculates the median velocity based on velocity history
75
+ * Medina works better agains outliers
76
+ * @returns Median velocity over the recent history
77
+ */
78
+ private getMedianVelocity;
79
+ /**
80
+ * Projects the next scroll offset based on median velocity
81
+ * @param timeMs Time in milliseconds to predict ahead
82
+ * @returns Projected scroll offset
83
+ */
84
+ private getProjectedScrollOffset;
46
85
  /**
47
86
  * Calculates which items are currently visible in the viewport.
48
87
  * Unlike getEngagedIndices, this doesn't include buffer items.
@@ -57,5 +96,10 @@ export declare class RVEngagedIndicesTrackerImpl implements RVEngagedIndicesTrac
57
96
  */
58
97
  getEngagedIndices(): ConsecutiveNumbers;
59
98
  setScrollDirection(scrollDirection: "forward" | "backward"): void;
99
+ /**
100
+ * Resets the velocity history based on the current scroll direction.
101
+ * This ensures that the velocity history is always in sync with the current scroll direction.
102
+ */
103
+ resetVelocityHistory(): void;
60
104
  }
61
105
  //# sourceMappingURL=EngagedIndicesTracker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EngagedIndicesTracker.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/helpers/EngagedIndicesTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,uBAAuB;IAEtC,YAAY,EAAE,MAAM,CAAC;IAErB,YAAY,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,kBAAkB,EAAE,CAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACrC,aAAa,EAAE,eAAe,KAC3B,kBAAkB,GAAG,SAAS,CAAC;IACpC,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;IAC5C,qBAAqB,EAAE,CAAC,aAAa,EAAE,eAAe,KAAK,kBAAkB,CAAC;IAC9E,kBAAkB,EAAE,CAAC,eAAe,EAAE,SAAS,GAAG,UAAU,KAAK,IAAI,CAAC;CACvE;AAED,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,qBAAa,2BAA4B,YAAW,uBAAuB;IAElE,YAAY,SAAK;IAEjB,YAAY,SAAO;IAE1B,OAAO,CAAC,cAAc,CAA4B;IAGlD,OAAO,CAAC,eAAe,CAAO;IAC9B,OAAO,CAAC,eAAe,CAAO;IAG9B,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,aAAa,CAAK;IAE1B;;;;;;;OAOG;IACH,kBAAkB,CAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACrC,aAAa,EAAE,eAAe,GAC7B,kBAAkB,GAAG,SAAS;IA2EjC;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;;;;OAKG;IACH,qBAAqB,CAAC,aAAa,EAAE,eAAe,GAAG,kBAAkB;IAiBzE;;;;OAIG;IACH,iBAAiB,IAAI,kBAAkB;IAIvC,kBAAkB,CAAC,eAAe,EAAE,SAAS,GAAG,UAAU;CAS3D"}
1
+ {"version":3,"file":"EngagedIndicesTracker.d.ts","sourceRoot":"","sources":["../../../src/recyclerview/helpers/EngagedIndicesTracker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,uBAAuB;IAEtC,YAAY,EAAE,MAAM,CAAC;IAErB,YAAY,EAAE,MAAM,CAAC;IAErB,sBAAsB,EAAE,OAAO,CAAC;IAEhC,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;;;;;OAMG;IACH,kBAAkB,EAAE,CAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACrC,aAAa,EAAE,eAAe,KAC3B,kBAAkB,GAAG,SAAS,CAAC;IAEpC;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;IAE5C;;;;OAIG;IACH,qBAAqB,EAAE,CAAC,aAAa,EAAE,eAAe,KAAK,kBAAkB,CAAC;IAE9E;;;OAGG;IACH,kBAAkB,EAAE,CAAC,eAAe,EAAE,SAAS,GAAG,UAAU,KAAK,IAAI,CAAC;IAEtE;;OAEG;IACH,oBAAoB,EAAE,MAAM,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,qBAAa,2BAA4B,YAAW,uBAAuB;IAElE,YAAY,SAAK;IAEjB,YAAY,SAAsC;IAGlD,sBAAsB,UAAQ;IAG9B,iBAAiB,SAAM;IAG9B,OAAO,CAAC,4BAA4B,CAAS;IAG7C,OAAO,CAAC,cAAc,CAA4B;IAGlD,OAAO,CAAC,eAAe,CAAO;IAC9B,OAAO,CAAC,eAAe,CAAO;IAG9B,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,aAAa,CAAK;IAE1B;;;;;;;OAOG;IACH,kBAAkB,CAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACrC,aAAa,EAAE,eAAe,GAC7B,kBAAkB,GAAG,SAAS;IAuFjC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAK7B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAOhC;;;;;OAKG;IACH,qBAAqB,CAAC,aAAa,EAAE,eAAe,GAAG,kBAAkB;IAiBzE;;;;OAIG;IACH,iBAAiB,IAAI,kBAAkB;IAIvC,kBAAkB,CAAC,eAAe,EAAE,SAAS,GAAG,UAAU;IAU1D;;;OAGG;IACH,oBAAoB;CAOrB"}
@@ -1,20 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RVEngagedIndicesTrackerImpl = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var PlatformHelper_1 = require("../../native/config/PlatformHelper");
4
6
  var ConsecutiveNumbers_1 = require("./ConsecutiveNumbers");
5
7
  var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
6
8
  function RVEngagedIndicesTrackerImpl() {
7
9
  // Current scroll position of the list
8
10
  this.scrollOffset = 0;
9
11
  // Distance to pre-render items before and after the visible viewport (in pixels)
10
- this.drawDistance = 250;
12
+ this.drawDistance = PlatformHelper_1.PlatformConfig.defaultDrawDistance;
13
+ // Whether to use offset projection to predict the next scroll offset
14
+ this.enableOffsetProjection = true;
15
+ // Average render time of the list
16
+ this.averageRenderTime = 16;
17
+ // Internal override to disable offset projection
18
+ this.forceDisableOffsetProjection = false;
11
19
  // Currently rendered item indices (including buffer items)
12
20
  this.engagedIndices = ConsecutiveNumbers_1.ConsecutiveNumbers.EMPTY;
13
21
  // Buffer distribution multipliers for scroll direction optimization
14
- this.smallMultiplier = 0.1; // Used for buffer in the opposite direction of scroll
15
- this.largeMultiplier = 0.9; // Used for buffer in the direction of scroll
22
+ this.smallMultiplier = 0.3; // Used for buffer in the opposite direction of scroll
23
+ this.largeMultiplier = 0.7; // Used for buffer in the direction of scroll
16
24
  // Circular buffer to track recent scroll velocities for direction detection
17
- this.velocityHistory = [-1, -1, -1, -1, -1];
25
+ this.velocityHistory = [0, 0, 0, -0.1, -0.1];
18
26
  this.velocityIndex = 0;
19
27
  }
20
28
  /**
@@ -31,14 +39,21 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
31
39
  // STEP 1: Determine the currently visible viewport
32
40
  var windowSize = layoutManager.getWindowsSize();
33
41
  var isHorizontal = layoutManager.isHorizontal();
34
- var viewportStart = offset;
42
+ // Update velocity history
43
+ if (velocity) {
44
+ this.updateVelocityHistory(isHorizontal ? velocity.x : velocity.y);
45
+ }
46
+ // Determine scroll direction to optimize buffer distribution
47
+ var isScrollingBackward = this.isScrollingBackward();
48
+ var viewportStart = this.enableOffsetProjection && !this.forceDisableOffsetProjection
49
+ ? this.getProjectedScrollOffset(offset, this.averageRenderTime)
50
+ : offset;
51
+ // console.log("timeMs", this.averageRenderTime, offset, viewportStart);
35
52
  var viewportSize = isHorizontal ? windowSize.width : windowSize.height;
36
53
  var viewportEnd = viewportStart + viewportSize;
37
54
  // STEP 2: Determine buffer size and distribution
38
55
  // The total extra space where items will be pre-rendered
39
56
  var totalBuffer = this.drawDistance * 2;
40
- // Determine scroll direction to optimize buffer distribution
41
- var isScrollingBackward = this.isScrollingBackward(isHorizontal ? velocity === null || velocity === void 0 ? void 0 : velocity.x : velocity === null || velocity === void 0 ? void 0 : velocity.y);
42
57
  // Distribute more buffer in the direction of scrolling
43
58
  // When scrolling forward: more buffer after viewport
44
59
  // When scrolling backward: more buffer before viewport
@@ -71,9 +86,12 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
71
86
  }
72
87
  // STEP 5: Get and return the new engaged indices
73
88
  var newEngagedIndices = layoutManager.getVisibleLayouts(extendedStart, extendedEnd);
74
- if (!isHorizontal) {
75
- // console.log("newEngagedIndices", newEngagedIndices, this.scrollOffset);
76
- }
89
+ // console.log(
90
+ // "newEngagedIndices",
91
+ // newEngagedIndices,
92
+ // this.scrollOffset,
93
+ // viewportStart
94
+ // );
77
95
  // Only return new indices if they've changed
78
96
  var oldEngagedIndices = this.engagedIndices;
79
97
  this.engagedIndices = newEngagedIndices;
@@ -81,19 +99,20 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
81
99
  ? undefined
82
100
  : newEngagedIndices;
83
101
  };
102
+ /**
103
+ * Updates the velocity history with a new velocity value.
104
+ * @param velocity - Current scroll velocity component (x or y)
105
+ */
106
+ RVEngagedIndicesTrackerImpl.prototype.updateVelocityHistory = function (velocity) {
107
+ this.velocityHistory[this.velocityIndex] = velocity;
108
+ this.velocityIndex = (this.velocityIndex + 1) % this.velocityHistory.length;
109
+ };
84
110
  /**
85
111
  * Determines scroll direction by analyzing recent velocity history.
86
112
  * Uses a majority voting system on the last 5 velocity values.
87
- * @param velocity - Current scroll velocity component (x or y)
88
113
  * @returns true if scrolling backward (negative direction), false otherwise
89
114
  */
90
- RVEngagedIndicesTrackerImpl.prototype.isScrollingBackward = function (velocity) {
91
- // update velocity history
92
- if (velocity) {
93
- this.velocityHistory[this.velocityIndex] = velocity;
94
- this.velocityIndex =
95
- (this.velocityIndex + 1) % this.velocityHistory.length;
96
- }
115
+ RVEngagedIndicesTrackerImpl.prototype.isScrollingBackward = function () {
97
116
  // should decide based on whether we have more positive or negative values, use for loop
98
117
  var positiveCount = 0;
99
118
  var negativeCount = 0;
@@ -108,6 +127,34 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
108
127
  }
109
128
  return positiveCount < negativeCount;
110
129
  };
130
+ /**
131
+ * Calculates the median velocity based on velocity history
132
+ * Medina works better agains outliers
133
+ * @returns Median velocity over the recent history
134
+ */
135
+ RVEngagedIndicesTrackerImpl.prototype.getMedianVelocity = function () {
136
+ // Make a copy of velocity history and sort it
137
+ var sortedVelocities = tslib_1.__spreadArray([], tslib_1.__read(this.velocityHistory), false).sort(function (valueA, valueB) { return valueA - valueB; });
138
+ var length = sortedVelocities.length;
139
+ // If length is odd, return the middle element
140
+ if (length % 2 === 1) {
141
+ return sortedVelocities[Math.floor(length / 2)];
142
+ }
143
+ // If length is even, return the average of the two middle elements
144
+ var midIndex = length / 2;
145
+ return (sortedVelocities[midIndex - 1] + sortedVelocities[midIndex]) / 2;
146
+ };
147
+ /**
148
+ * Projects the next scroll offset based on median velocity
149
+ * @param timeMs Time in milliseconds to predict ahead
150
+ * @returns Projected scroll offset
151
+ */
152
+ RVEngagedIndicesTrackerImpl.prototype.getProjectedScrollOffset = function (offset, timeMs) {
153
+ var medianVelocity = this.getMedianVelocity();
154
+ // Convert time from ms to seconds for velocity calculation
155
+ // Predict next position: current position + (velocity * time)
156
+ return offset + medianVelocity * timeMs;
157
+ };
111
158
  /**
112
159
  * Calculates which items are currently visible in the viewport.
113
160
  * Unlike getEngagedIndices, this doesn't include buffer items.
@@ -135,14 +182,26 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
135
182
  };
136
183
  RVEngagedIndicesTrackerImpl.prototype.setScrollDirection = function (scrollDirection) {
137
184
  if (scrollDirection === "forward") {
138
- this.velocityHistory = [1, 1, 1, 1, 1];
185
+ this.velocityHistory = [0, 0, 0, 0.1, 0.1];
139
186
  this.velocityIndex = 0;
140
187
  }
141
188
  else {
142
- this.velocityHistory = [-1, -1, -1, -1, -1];
189
+ this.velocityHistory = [0, 0, 0, -0.1, -0.1];
143
190
  this.velocityIndex = 0;
144
191
  }
145
192
  };
193
+ /**
194
+ * Resets the velocity history based on the current scroll direction.
195
+ * This ensures that the velocity history is always in sync with the current scroll direction.
196
+ */
197
+ RVEngagedIndicesTrackerImpl.prototype.resetVelocityHistory = function () {
198
+ if (this.isScrollingBackward()) {
199
+ this.setScrollDirection("backward");
200
+ }
201
+ else {
202
+ this.setScrollDirection("forward");
203
+ }
204
+ };
146
205
  return RVEngagedIndicesTrackerImpl;
147
206
  }());
148
207
  exports.RVEngagedIndicesTrackerImpl = RVEngagedIndicesTrackerImpl;
@@ -1 +1 @@
1
- {"version":3,"file":"EngagedIndicesTracker.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/EngagedIndicesTracker.ts"],"names":[],"mappings":";;;AAEA,2DAA0D;AA8B1D;IAAA;QACE,sCAAsC;QAC/B,iBAAY,GAAG,CAAC,CAAC;QACxB,iFAAiF;QAC1E,iBAAY,GAAG,GAAG,CAAC;QAC1B,2DAA2D;QACnD,mBAAc,GAAG,uCAAkB,CAAC,KAAK,CAAC;QAElD,oEAAoE;QAC5D,oBAAe,GAAG,GAAG,CAAC,CAAC,sDAAsD;QAC7E,oBAAe,GAAG,GAAG,CAAC,CAAC,6CAA6C;QAE5E,4EAA4E;QACpE,oBAAe,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvC,kBAAa,GAAG,CAAC,CAAC;IA6J5B,CAAC;IA3JC;;;;;;;OAOG;IACH,wDAAkB,GAAlB,UACE,MAAc,EACd,QAAqC,EACrC,aAA8B;QAE9B,iCAAiC;QACjC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAE3B,mDAAmD;QACnD,IAAM,UAAU,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;QAClD,IAAM,YAAY,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;QAClD,IAAM,aAAa,GAAG,MAAM,CAAC;QAC7B,IAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QACzE,IAAM,WAAW,GAAG,aAAa,GAAG,YAAY,CAAC;QAEjD,iDAAiD;QACjD,yDAAyD;QACzD,IAAM,WAAW,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QAE1C,6DAA6D;QAC7D,IAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAClD,YAAY,CAAC,CAAC,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,CAAC,CACzC,CAAC;QAEF,uDAAuD;QACvD,qDAAqD;QACrD,uDAAuD;QACvD,IAAM,WAAW,GAAG,mBAAmB;YACrC,CAAC,CAAC,IAAI,CAAC,eAAe;YACtB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;QACzB,IAAM,UAAU,GAAG,mBAAmB;YACpC,CAAC,CAAC,IAAI,CAAC,eAAe;YACtB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;QAEzB,IAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;QAC1D,IAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;QAExD,mEAAmE;QACnE,qDAAqD;QACrD,IAAI,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC,CAAC;QAE9D,2EAA2E;QAC3E,IAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,CAAC;QAEpE,gDAAgD;QAChD,IAAI,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,iBAAiB,CAAC;QAEhE,0CAA0C;QAC1C,uDAAuD;QACvD,IAAM,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC;QACjD,IAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QAExE,sEAAsE;QACtE,IAAI,WAAW,GAAG,WAAW,EAAE,CAAC;YAC9B,oEAAoE;YACpE,IAAM,eAAe,GAAG,WAAW,GAAG,WAAW,CAAC;YAClD,WAAW,GAAG,WAAW,CAAC;YAE1B,kEAAkE;YAClE,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,eAAe,CAAC,CAAC;QAC/D,CAAC;QAED,iDAAiD;QACjD,IAAM,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CACvD,aAAa,EACb,WAAW,CACZ,CAAC;QACF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,0EAA0E;QAC5E,CAAC;QACD,6CAA6C;QAC7C,IAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC;QAC9C,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC;QAExC,OAAO,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAChD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,iBAAiB,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACK,yDAAmB,GAA3B,UAA4B,QAAiB;QAC3C,0BAA0B;QAC1B,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;YACpD,IAAI,CAAC,aAAa;gBAChB,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QAC3D,CAAC;QACD,wFAAwF;QACxF,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,4DAA4D;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,aAAa,EAAE,CAAC;YAClB,CAAC;iBAAM,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvC,aAAa,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,2DAAqB,GAArB,UAAsB,aAA8B;QAClD,IAAM,UAAU,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;QAClD,IAAM,YAAY,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;QAElD,gCAAgC;QAChC,IAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;QACxC,IAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QACzE,IAAM,WAAW,GAAG,aAAa,GAAG,YAAY,CAAC;QAEjD,yDAAyD;QACzD,IAAM,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CACvD,aAAa,EACb,WAAW,CACZ,CAAC;QACF,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,uDAAiB,GAAjB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,wDAAkB,GAAlB,UAAmB,eAAuC;QACxD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACH,kCAAC;AAAD,CAAC,AA3KD,IA2KC;AA3KY,kEAA2B"}
1
+ {"version":3,"file":"EngagedIndicesTracker.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/EngagedIndicesTracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare class RenderTimeTracker {
2
+ private renderTimeAvgWindow;
3
+ private lastTimerStartedAt;
4
+ private maxRenderTime;
5
+ private defaultRenderTime;
6
+ startTracking(): void;
7
+ markRenderComplete(): void;
8
+ getAverageRenderTime(): number;
9
+ }
10
+ //# 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;IAE/B,aAAa;IASb,kBAAkB;IAUlB,oBAAoB;CASrB"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RenderTimeTracker = void 0;
4
+ var PlatformHelper_1 = require("../../native/config/PlatformHelper");
5
+ var AverageWindow_1 = require("../../utils/AverageWindow");
6
+ var RenderTimeTracker = /** @class */ (function () {
7
+ function RenderTimeTracker() {
8
+ this.renderTimeAvgWindow = new AverageWindow_1.AverageWindow(5);
9
+ this.lastTimerStartedAt = -1;
10
+ this.maxRenderTime = 32; // TODO: Improve this even more
11
+ this.defaultRenderTime = 16;
12
+ }
13
+ RenderTimeTracker.prototype.startTracking = function () {
14
+ if (!PlatformHelper_1.PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
15
+ return;
16
+ }
17
+ if (this.lastTimerStartedAt === -1) {
18
+ this.lastTimerStartedAt = Date.now();
19
+ }
20
+ };
21
+ RenderTimeTracker.prototype.markRenderComplete = function () {
22
+ if (!PlatformHelper_1.PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
23
+ return;
24
+ }
25
+ if (this.lastTimerStartedAt !== -1) {
26
+ this.renderTimeAvgWindow.addValue(Date.now() - this.lastTimerStartedAt);
27
+ this.lastTimerStartedAt = -1;
28
+ }
29
+ };
30
+ RenderTimeTracker.prototype.getAverageRenderTime = function () {
31
+ if (!PlatformHelper_1.PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
32
+ return this.defaultRenderTime;
33
+ }
34
+ return Math.min(this.maxRenderTime, Math.max(Math.round(this.renderTimeAvgWindow.currentValue), 16));
35
+ };
36
+ return RenderTimeTracker;
37
+ }());
38
+ exports.RenderTimeTracker = RenderTimeTracker;
39
+ //# sourceMappingURL=RenderTimeTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderTimeTracker.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/RenderTimeTracker.ts"],"names":[],"mappings":";;;AAAA,qEAAoE;AACpE,2DAA0D;AAE1D;IAAA;QACU,wBAAmB,GAAG,IAAI,6BAAa,CAAC,CAAC,CAAC,CAAC;QAC3C,uBAAkB,GAAG,CAAC,CAAC,CAAC;QACxB,kBAAa,GAAG,EAAE,CAAC,CAAC,+BAA+B;QACnD,sBAAiB,GAAG,EAAE,CAAC;IA8BjC,CAAC;IA5BC,yCAAa,GAAb;QACE,IAAI,CAAC,+BAAc,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,8CAAkB,GAAlB;QACE,IAAI,CAAC,+BAAc,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,gDAAoB,GAApB;QACE,IAAI,CAAC,+BAAc,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;IACH,wBAAC;AAAD,CAAC,AAlCD,IAkCC;AAlCY,8CAAiB"}
@@ -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,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VelocityTracker = void 0;
4
+ /**
5
+ * Tracks and calculates velocity for scroll/drag movements
6
+ * Used to determine momentum scrolling behavior
7
+ */
8
+ var VelocityTracker = /** @class */ (function () {
9
+ function VelocityTracker() {
10
+ /** Timestamp of the last velocity update */
11
+ this.lastUpdateTime = Date.now();
12
+ /** Current velocity vector with x and y components */
13
+ this.velocity = { x: 0, y: 0 };
14
+ /** Reference to the momentum end timeout */
15
+ this.timeoutId = null;
16
+ }
17
+ /**
18
+ * Calculates velocity based on position change over time
19
+ * @param newOffset Current position value
20
+ * @param oldOffset Previous position value
21
+ * @param isHorizontal Whether movement is horizontal (true) or vertical (false)
22
+ * @param isRTL Whether layout direction is right-to-left
23
+ * @param callback Function to call with velocity updates and momentum end signal
24
+ */
25
+ VelocityTracker.prototype.computeVelocity = function (newOffset, oldOffset, isHorizontal, callback) {
26
+ var _this = this;
27
+ // Clear any pending momentum end timeout
28
+ this.cleanUp();
29
+ // Calculate time since last update
30
+ var currentTime = Date.now();
31
+ var timeSinceLastUpdate = Math.max(1, currentTime - this.lastUpdateTime);
32
+ // Calculate velocity as distance/time
33
+ var newVelocity = (newOffset - oldOffset) / timeSinceLastUpdate;
34
+ // console.log(
35
+ // "newVelocity",
36
+ // newOffset,
37
+ // oldOffset,
38
+ // currentTime,
39
+ // this.lastUpdateTime,
40
+ // timeSinceLastUpdate,
41
+ // newVelocity
42
+ // );
43
+ this.lastUpdateTime = currentTime;
44
+ // Apply velocity to the correct axis
45
+ this.velocity.x = isHorizontal ? newVelocity : 0;
46
+ this.velocity.y = isHorizontal ? 0 : newVelocity;
47
+ // Trigger callback with current velocity
48
+ callback(this.velocity, false);
49
+ // Set timeout to signal momentum end after 100ms of no updates
50
+ this.timeoutId = setTimeout(function () {
51
+ _this.cleanUp();
52
+ _this.lastUpdateTime = Date.now();
53
+ _this.velocity.x = 0;
54
+ _this.velocity.y = 0;
55
+ callback(_this.velocity, true);
56
+ }, 100);
57
+ };
58
+ /**
59
+ * Cleans up resources by clearing any pending timeout
60
+ */
61
+ VelocityTracker.prototype.cleanUp = function () {
62
+ if (this.timeoutId !== null) {
63
+ clearTimeout(this.timeoutId);
64
+ this.timeoutId = null;
65
+ }
66
+ };
67
+ return VelocityTracker;
68
+ }());
69
+ exports.VelocityTracker = VelocityTracker;
70
+ //# 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;IAAA;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,yCAAe,GAAf,UACE,SAAiB,EACjB,SAAiB,EACjB,YAAqB,EACrB,QAGS;QAPX,iBA4CC;QAnCC,yCAAyC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,mCAAmC;QACnC,IAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QAE3E,sCAAsC;QACtC,IAAM,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;YAC1B,KAAI,CAAC,OAAO,EAAE,CAAC;YACf,KAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,KAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;YACpB,KAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;YACpB,QAAQ,CAAC,KAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED;;OAEG;IACH,iCAAO,GAAP;QACE,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;IACH,sBAAC;AAAD,CAAC,AAxED,IAwEC;AAxEY,0CAAe"}
@@ -1,5 +1,4 @@
1
1
  import { RecyclerViewManager } from "../RecyclerViewManager";
2
- import { RecyclerViewProps } from "../RecyclerViewProps";
3
2
  import { CompatScroller } from "../components/CompatScroller";
4
3
  /**
5
4
  * Hook to detect when the scroll position reaches near the start or end of the list
@@ -12,7 +11,7 @@ import { CompatScroller } from "../components/CompatScroller";
12
11
  * @param props - The RecyclerViewProps containing configuration and callbacks
13
12
  * @param scrollViewRef - Reference to the scrollable container component
14
13
  */
15
- export declare function useBoundDetection<T>(recyclerViewManager: RecyclerViewManager<T>, props: RecyclerViewProps<T>, scrollViewRef: React.RefObject<CompatScroller>): {
14
+ export declare function useBoundDetection<T>(recyclerViewManager: RecyclerViewManager<T>, scrollViewRef: React.RefObject<CompatScroller>): {
16
15
  checkBounds: () => void;
17
16
  };
18
17
  //# sourceMappingURL=useBoundDetection.d.ts.map
@@ -1 +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,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC3C,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC3B,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC;;EA0G/C"}
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;;EAiH/C"}