@shopify/flash-list 2.0.4-alpha.1 → 2.1.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 (191) 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 +9 -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 +109 -107
  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.js +16 -20
  55. package/dist/recyclerview/ViewHolder.js.map +1 -1
  56. package/dist/recyclerview/ViewHolderCollection.js +26 -30
  57. package/dist/recyclerview/ViewHolderCollection.js.map +1 -1
  58. package/dist/recyclerview/components/CompatScroller.js +6 -7
  59. package/dist/recyclerview/components/CompatScroller.js.map +1 -1
  60. package/dist/recyclerview/components/CompatView.js +6 -7
  61. package/dist/recyclerview/components/CompatView.js.map +1 -1
  62. package/dist/recyclerview/components/ScrollAnchor.js +10 -15
  63. package/dist/recyclerview/components/ScrollAnchor.js.map +1 -1
  64. package/dist/recyclerview/components/StickyHeaders.js +34 -40
  65. package/dist/recyclerview/components/StickyHeaders.js.map +1 -1
  66. package/dist/recyclerview/helpers/ConsecutiveNumbers.js +39 -66
  67. package/dist/recyclerview/helpers/ConsecutiveNumbers.js.map +1 -1
  68. package/dist/recyclerview/helpers/EngagedIndicesTracker.js +57 -63
  69. package/dist/recyclerview/helpers/EngagedIndicesTracker.js.map +1 -1
  70. package/dist/recyclerview/helpers/RenderTimeTracker.js +19 -24
  71. package/dist/recyclerview/helpers/RenderTimeTracker.js.map +1 -1
  72. package/dist/recyclerview/helpers/VelocityTracker.js +16 -22
  73. package/dist/recyclerview/helpers/VelocityTracker.js.map +1 -1
  74. package/dist/recyclerview/hooks/useBoundDetection.js +37 -40
  75. package/dist/recyclerview/hooks/useBoundDetection.js.map +1 -1
  76. package/dist/recyclerview/hooks/useLayoutState.js +9 -15
  77. package/dist/recyclerview/hooks/useLayoutState.js.map +1 -1
  78. package/dist/recyclerview/hooks/useMappingHelper.js +6 -10
  79. package/dist/recyclerview/hooks/useMappingHelper.js.map +1 -1
  80. package/dist/recyclerview/hooks/useOnLoad.js +16 -22
  81. package/dist/recyclerview/hooks/useOnLoad.js.map +1 -1
  82. package/dist/recyclerview/hooks/useRecyclerViewController.d.ts.map +1 -1
  83. package/dist/recyclerview/hooks/useRecyclerViewController.js +169 -188
  84. package/dist/recyclerview/hooks/useRecyclerViewController.js.map +1 -1
  85. package/dist/recyclerview/hooks/useRecyclerViewManager.js +12 -17
  86. package/dist/recyclerview/hooks/useRecyclerViewManager.js.map +1 -1
  87. package/dist/recyclerview/hooks/useRecyclingState.js +10 -14
  88. package/dist/recyclerview/hooks/useRecyclingState.js.map +1 -1
  89. package/dist/recyclerview/hooks/useSecondaryProps.js +24 -30
  90. package/dist/recyclerview/hooks/useSecondaryProps.js.map +1 -1
  91. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js +17 -22
  92. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js.map +1 -1
  93. package/dist/recyclerview/hooks/useUnmountFlag.js +5 -9
  94. package/dist/recyclerview/hooks/useUnmountFlag.js.map +1 -1
  95. package/dist/recyclerview/layout-managers/GridLayoutManager.js +61 -80
  96. package/dist/recyclerview/layout-managers/GridLayoutManager.js.map +1 -1
  97. package/dist/recyclerview/layout-managers/LayoutManager.js +83 -123
  98. package/dist/recyclerview/layout-managers/LayoutManager.js.map +1 -1
  99. package/dist/recyclerview/layout-managers/LinearLayoutManager.js +51 -91
  100. package/dist/recyclerview/layout-managers/LinearLayoutManager.js.map +1 -1
  101. package/dist/recyclerview/layout-managers/MasonryLayoutManager.js +77 -96
  102. package/dist/recyclerview/layout-managers/MasonryLayoutManager.js.map +1 -1
  103. package/dist/recyclerview/utils/adjustOffsetForRTL.js +1 -4
  104. package/dist/recyclerview/utils/adjustOffsetForRTL.js.map +1 -1
  105. package/dist/recyclerview/utils/componentUtils.js +4 -9
  106. package/dist/recyclerview/utils/componentUtils.js.map +1 -1
  107. package/dist/recyclerview/utils/findVisibleIndex.js +9 -13
  108. package/dist/recyclerview/utils/findVisibleIndex.js.map +1 -1
  109. package/dist/recyclerview/utils/measureLayout.js +12 -20
  110. package/dist/recyclerview/utils/measureLayout.js.map +1 -1
  111. package/dist/recyclerview/utils/measureLayout.web.js +15 -23
  112. package/dist/recyclerview/utils/measureLayout.web.js.map +1 -1
  113. package/dist/recyclerview/viewability/ViewToken.js +1 -2
  114. package/dist/recyclerview/viewability/ViewabilityHelper.js +34 -41
  115. package/dist/recyclerview/viewability/ViewabilityHelper.js.map +1 -1
  116. package/dist/recyclerview/viewability/ViewabilityManager.js +48 -61
  117. package/dist/recyclerview/viewability/ViewabilityManager.js.map +1 -1
  118. package/dist/tsconfig.tsbuildinfo +1 -1
  119. package/dist/utils/AverageWindow.js +28 -39
  120. package/dist/utils/AverageWindow.js.map +1 -1
  121. package/package.json +4 -6
  122. package/src/FlashListProps.ts +8 -1
  123. package/src/benchmark/useBenchmark.ts +47 -4
  124. package/src/benchmark/useFlatListBenchmark.ts +38 -5
  125. package/src/recyclerview/RecyclerView.tsx +7 -5
  126. package/src/recyclerview/hooks/useRecyclerViewController.tsx +7 -4
  127. package/dist/__tests__/AverageWindow.test.d.ts +0 -2
  128. package/dist/__tests__/AverageWindow.test.d.ts.map +0 -1
  129. package/dist/__tests__/AverageWindow.test.js +0 -104
  130. package/dist/__tests__/AverageWindow.test.js.map +0 -1
  131. package/dist/__tests__/ConsecutiveNumbers.test.d.ts +0 -2
  132. package/dist/__tests__/ConsecutiveNumbers.test.d.ts.map +0 -1
  133. package/dist/__tests__/ConsecutiveNumbers.test.js +0 -224
  134. package/dist/__tests__/ConsecutiveNumbers.test.js.map +0 -1
  135. package/dist/__tests__/GridLayoutManager.test.d.ts +0 -2
  136. package/dist/__tests__/GridLayoutManager.test.d.ts.map +0 -1
  137. package/dist/__tests__/GridLayoutManager.test.js +0 -69
  138. package/dist/__tests__/GridLayoutManager.test.js.map +0 -1
  139. package/dist/__tests__/LayoutCommitObserver.test.d.ts +0 -2
  140. package/dist/__tests__/LayoutCommitObserver.test.d.ts.map +0 -1
  141. package/dist/__tests__/LayoutCommitObserver.test.js +0 -37
  142. package/dist/__tests__/LayoutCommitObserver.test.js.map +0 -1
  143. package/dist/__tests__/LinearLayoutManager.test.d.ts +0 -2
  144. package/dist/__tests__/LinearLayoutManager.test.d.ts.map +0 -1
  145. package/dist/__tests__/LinearLayoutManager.test.js +0 -140
  146. package/dist/__tests__/LinearLayoutManager.test.js.map +0 -1
  147. package/dist/__tests__/MasonryLayoutManager.test.d.ts +0 -2
  148. package/dist/__tests__/MasonryLayoutManager.test.d.ts.map +0 -1
  149. package/dist/__tests__/MasonryLayoutManager.test.js +0 -148
  150. package/dist/__tests__/MasonryLayoutManager.test.js.map +0 -1
  151. package/dist/__tests__/RecyclerView.test.d.ts +0 -2
  152. package/dist/__tests__/RecyclerView.test.d.ts.map +0 -1
  153. package/dist/__tests__/RecyclerView.test.js +0 -103
  154. package/dist/__tests__/RecyclerView.test.js.map +0 -1
  155. package/dist/__tests__/RecyclerViewManager.test.d.ts +0 -2
  156. package/dist/__tests__/RecyclerViewManager.test.d.ts.map +0 -1
  157. package/dist/__tests__/RecyclerViewManager.test.js +0 -56
  158. package/dist/__tests__/RecyclerViewManager.test.js.map +0 -1
  159. package/dist/__tests__/RenderStackManager.test.d.ts +0 -2
  160. package/dist/__tests__/RenderStackManager.test.d.ts.map +0 -1
  161. package/dist/__tests__/RenderStackManager.test.js +0 -485
  162. package/dist/__tests__/RenderStackManager.test.js.map +0 -1
  163. package/dist/__tests__/ViewabilityHelper.test.d.ts +0 -2
  164. package/dist/__tests__/ViewabilityHelper.test.d.ts.map +0 -1
  165. package/dist/__tests__/ViewabilityHelper.test.js +0 -186
  166. package/dist/__tests__/ViewabilityHelper.test.js.map +0 -1
  167. package/dist/__tests__/findVisibleIndex.test.d.ts +0 -2
  168. package/dist/__tests__/findVisibleIndex.test.d.ts.map +0 -1
  169. package/dist/__tests__/findVisibleIndex.test.js +0 -259
  170. package/dist/__tests__/findVisibleIndex.test.js.map +0 -1
  171. package/dist/__tests__/helpers/createLayoutManager.d.ts +0 -34
  172. package/dist/__tests__/helpers/createLayoutManager.d.ts.map +0 -1
  173. package/dist/__tests__/helpers/createLayoutManager.js +0 -110
  174. package/dist/__tests__/helpers/createLayoutManager.js.map +0 -1
  175. package/dist/__tests__/useUnmountAwareCallbacks.test.d.ts +0 -2
  176. package/dist/__tests__/useUnmountAwareCallbacks.test.d.ts.map +0 -1
  177. package/dist/__tests__/useUnmountAwareCallbacks.test.js +0 -185
  178. package/dist/__tests__/useUnmountAwareCallbacks.test.js.map +0 -1
  179. package/src/__tests__/AverageWindow.test.ts +0 -128
  180. package/src/__tests__/ConsecutiveNumbers.test.ts +0 -232
  181. package/src/__tests__/GridLayoutManager.test.ts +0 -113
  182. package/src/__tests__/LayoutCommitObserver.test.tsx +0 -63
  183. package/src/__tests__/LinearLayoutManager.test.ts +0 -227
  184. package/src/__tests__/MasonryLayoutManager.test.ts +0 -202
  185. package/src/__tests__/RecyclerView.test.tsx +0 -144
  186. package/src/__tests__/RecyclerViewManager.test.ts +0 -74
  187. package/src/__tests__/RenderStackManager.test.ts +0 -574
  188. package/src/__tests__/ViewabilityHelper.test.ts +0 -282
  189. package/src/__tests__/findVisibleIndex.test.ts +0 -369
  190. package/src/__tests__/helpers/createLayoutManager.ts +0 -141
  191. package/src/__tests__/useUnmountAwareCallbacks.test.tsx +0 -285
@@ -1,15 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RVEngagedIndicesTrackerImpl = void 0;
4
- var tslib_1 = require("tslib");
5
- var PlatformHelper_1 = require("../../native/config/PlatformHelper");
6
- var ConsecutiveNumbers_1 = require("./ConsecutiveNumbers");
7
- var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
8
- function RVEngagedIndicesTrackerImpl() {
1
+ import { PlatformConfig } from "../../native/config/PlatformHelper";
2
+ import { ConsecutiveNumbers } from "./ConsecutiveNumbers";
3
+ export class RVEngagedIndicesTrackerImpl {
4
+ constructor() {
9
5
  // Current scroll position of the list
10
6
  this.scrollOffset = 0;
11
7
  // Distance to pre-render items before and after the visible viewport (in pixels)
12
- this.drawDistance = PlatformHelper_1.PlatformConfig.defaultDrawDistance;
8
+ this.drawDistance = PlatformConfig.defaultDrawDistance;
13
9
  // Whether to use offset projection to predict the next scroll offset
14
10
  this.enableOffsetProjection = true;
15
11
  // Average render time of the list
@@ -17,7 +13,7 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
17
13
  // Internal override to disable offset projection
18
14
  this.forceDisableOffsetProjection = false;
19
15
  // Currently rendered item indices (including buffer items)
20
- this.engagedIndices = ConsecutiveNumbers_1.ConsecutiveNumbers.EMPTY;
16
+ this.engagedIndices = ConsecutiveNumbers.EMPTY;
21
17
  // Buffer distribution multipliers for scroll direction optimization
22
18
  this.smallMultiplier = 0.3; // Used for buffer in the opposite direction of scroll
23
19
  this.largeMultiplier = 0.7; // Used for buffer in the direction of scroll
@@ -33,59 +29,59 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
33
29
  * 3. Adjusts buffer sizes at list boundaries
34
30
  * 4. Returns new indices that need to be rendered
35
31
  */
36
- RVEngagedIndicesTrackerImpl.prototype.updateScrollOffset = function (offset, velocity, layoutManager) {
32
+ updateScrollOffset(offset, velocity, layoutManager) {
37
33
  // Update current scroll position
38
34
  this.scrollOffset = offset;
39
35
  // STEP 1: Determine the currently visible viewport
40
- var windowSize = layoutManager.getWindowsSize();
41
- var isHorizontal = layoutManager.isHorizontal();
36
+ const windowSize = layoutManager.getWindowsSize();
37
+ const isHorizontal = layoutManager.isHorizontal();
42
38
  // Update velocity history
43
39
  if (velocity) {
44
40
  this.updateVelocityHistory(isHorizontal ? velocity.x : velocity.y);
45
41
  }
46
42
  // Determine scroll direction to optimize buffer distribution
47
- var isScrollingBackward = this.isScrollingBackward();
48
- var viewportStart = this.enableOffsetProjection && !this.forceDisableOffsetProjection
43
+ const isScrollingBackward = this.isScrollingBackward();
44
+ const viewportStart = this.enableOffsetProjection && !this.forceDisableOffsetProjection
49
45
  ? this.getProjectedScrollOffset(offset, this.averageRenderTime)
50
46
  : offset;
51
47
  // console.log("timeMs", this.averageRenderTime, offset, viewportStart);
52
- var viewportSize = isHorizontal ? windowSize.width : windowSize.height;
53
- var viewportEnd = viewportStart + viewportSize;
48
+ const viewportSize = isHorizontal ? windowSize.width : windowSize.height;
49
+ const viewportEnd = viewportStart + viewportSize;
54
50
  // STEP 2: Determine buffer size and distribution
55
51
  // The total extra space where items will be pre-rendered
56
- var totalBuffer = this.drawDistance * 2;
52
+ const totalBuffer = this.drawDistance * 2;
57
53
  // Distribute more buffer in the direction of scrolling
58
54
  // When scrolling forward: more buffer after viewport
59
55
  // When scrolling backward: more buffer before viewport
60
- var beforeRatio = isScrollingBackward
56
+ const beforeRatio = isScrollingBackward
61
57
  ? this.largeMultiplier
62
58
  : this.smallMultiplier;
63
- var afterRatio = isScrollingBackward
59
+ const afterRatio = isScrollingBackward
64
60
  ? this.smallMultiplier
65
61
  : this.largeMultiplier;
66
- var bufferBefore = Math.ceil(totalBuffer * beforeRatio);
67
- var bufferAfter = Math.ceil(totalBuffer * afterRatio);
62
+ const bufferBefore = Math.ceil(totalBuffer * beforeRatio);
63
+ const bufferAfter = Math.ceil(totalBuffer * afterRatio);
68
64
  // STEP 3: Calculate the extended viewport (visible area + buffers)
69
65
  // The start position with buffer (never less than 0)
70
- var extendedStart = Math.max(0, viewportStart - bufferBefore);
66
+ let extendedStart = Math.max(0, viewportStart - bufferBefore);
71
67
  // If we couldn't apply full buffer at start, calculate how much was unused
72
- var unusedStartBuffer = Math.max(0, bufferBefore - viewportStart);
68
+ const unusedStartBuffer = Math.max(0, bufferBefore - viewportStart);
73
69
  // Add any unused start buffer to the end buffer
74
- var extendedEnd = viewportEnd + bufferAfter + unusedStartBuffer;
70
+ let extendedEnd = viewportEnd + bufferAfter + unusedStartBuffer;
75
71
  // STEP 4: Handle end boundary adjustments
76
72
  // Get the total content size to check for end boundary
77
- var layoutSize = layoutManager.getLayoutSize();
78
- var maxPosition = isHorizontal ? layoutSize.width : layoutSize.height;
73
+ const layoutSize = layoutManager.getLayoutSize();
74
+ const maxPosition = isHorizontal ? layoutSize.width : layoutSize.height;
79
75
  // If we hit the end boundary, redistribute unused buffer to the start
80
76
  if (extendedEnd > maxPosition) {
81
77
  // Calculate unused end buffer and apply it to the start if possible
82
- var unusedEndBuffer = extendedEnd - maxPosition;
78
+ const unusedEndBuffer = extendedEnd - maxPosition;
83
79
  extendedEnd = maxPosition;
84
80
  // Try to extend start position further with the unused end buffer
85
81
  extendedStart = Math.max(0, extendedStart - unusedEndBuffer);
86
82
  }
87
83
  // STEP 5: Get and return the new engaged indices
88
- var newEngagedIndices = layoutManager.getVisibleLayouts(extendedStart, extendedEnd);
84
+ const newEngagedIndices = layoutManager.getVisibleLayouts(extendedStart, extendedEnd);
89
85
  // console.log(
90
86
  // "newEngagedIndices",
91
87
  // newEngagedIndices,
@@ -93,31 +89,31 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
93
89
  // viewportStart
94
90
  // );
95
91
  // Only return new indices if they've changed
96
- var oldEngagedIndices = this.engagedIndices;
92
+ const oldEngagedIndices = this.engagedIndices;
97
93
  this.engagedIndices = newEngagedIndices;
98
94
  return newEngagedIndices.equals(oldEngagedIndices)
99
95
  ? undefined
100
96
  : newEngagedIndices;
101
- };
97
+ }
102
98
  /**
103
99
  * Updates the velocity history with a new velocity value.
104
100
  * @param velocity - Current scroll velocity component (x or y)
105
101
  */
106
- RVEngagedIndicesTrackerImpl.prototype.updateVelocityHistory = function (velocity) {
102
+ updateVelocityHistory(velocity) {
107
103
  this.velocityHistory[this.velocityIndex] = velocity;
108
104
  this.velocityIndex = (this.velocityIndex + 1) % this.velocityHistory.length;
109
- };
105
+ }
110
106
  /**
111
107
  * Determines scroll direction by analyzing recent velocity history.
112
108
  * Uses a majority voting system on the last 5 velocity values.
113
109
  * @returns true if scrolling backward (negative direction), false otherwise
114
110
  */
115
- RVEngagedIndicesTrackerImpl.prototype.isScrollingBackward = function () {
111
+ isScrollingBackward() {
116
112
  // should decide based on whether we have more positive or negative values, use for loop
117
- var positiveCount = 0;
118
- var negativeCount = 0;
113
+ let positiveCount = 0;
114
+ let negativeCount = 0;
119
115
  // eslint-disable-next-line @typescript-eslint/prefer-for-of
120
- for (var i = 0; i < this.velocityHistory.length; i++) {
116
+ for (let i = 0; i < this.velocityHistory.length; i++) {
121
117
  if (this.velocityHistory[i] > 0) {
122
118
  positiveCount++;
123
119
  }
@@ -126,61 +122,61 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
126
122
  }
127
123
  }
128
124
  return positiveCount < negativeCount;
129
- };
125
+ }
130
126
  /**
131
127
  * Calculates the median velocity based on velocity history
132
128
  * Medina works better agains outliers
133
129
  * @returns Median velocity over the recent history
134
130
  */
135
- RVEngagedIndicesTrackerImpl.prototype.getMedianVelocity = function () {
131
+ getMedianVelocity() {
136
132
  // 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;
133
+ const sortedVelocities = [...this.velocityHistory].sort((valueA, valueB) => valueA - valueB);
134
+ const length = sortedVelocities.length;
139
135
  // If length is odd, return the middle element
140
136
  if (length % 2 === 1) {
141
137
  return sortedVelocities[Math.floor(length / 2)];
142
138
  }
143
139
  // If length is even, return the average of the two middle elements
144
- var midIndex = length / 2;
140
+ const midIndex = length / 2;
145
141
  return (sortedVelocities[midIndex - 1] + sortedVelocities[midIndex]) / 2;
146
- };
142
+ }
147
143
  /**
148
144
  * Projects the next scroll offset based on median velocity
149
145
  * @param timeMs Time in milliseconds to predict ahead
150
146
  * @returns Projected scroll offset
151
147
  */
152
- RVEngagedIndicesTrackerImpl.prototype.getProjectedScrollOffset = function (offset, timeMs) {
153
- var medianVelocity = this.getMedianVelocity();
148
+ getProjectedScrollOffset(offset, timeMs) {
149
+ const medianVelocity = this.getMedianVelocity();
154
150
  // Convert time from ms to seconds for velocity calculation
155
151
  // Predict next position: current position + (velocity * time)
156
152
  return offset + medianVelocity * timeMs;
157
- };
153
+ }
158
154
  /**
159
155
  * Calculates which items are currently visible in the viewport.
160
156
  * Unlike getEngagedIndices, this doesn't include buffer items.
161
157
  * @param layoutManager - Layout manager to fetch item positions
162
158
  * @returns Indices of items currently visible in the viewport
163
159
  */
164
- RVEngagedIndicesTrackerImpl.prototype.computeVisibleIndices = function (layoutManager) {
165
- var windowSize = layoutManager.getWindowsSize();
166
- var isHorizontal = layoutManager.isHorizontal();
160
+ computeVisibleIndices(layoutManager) {
161
+ const windowSize = layoutManager.getWindowsSize();
162
+ const isHorizontal = layoutManager.isHorizontal();
167
163
  // Calculate viewport boundaries
168
- var viewportStart = this.scrollOffset;
169
- var viewportSize = isHorizontal ? windowSize.width : windowSize.height;
170
- var viewportEnd = viewportStart + viewportSize;
164
+ const viewportStart = this.scrollOffset;
165
+ const viewportSize = isHorizontal ? windowSize.width : windowSize.height;
166
+ const viewportEnd = viewportStart + viewportSize;
171
167
  // Get indices of items currently visible in the viewport
172
- var newVisibleIndices = layoutManager.getVisibleLayouts(viewportStart, viewportEnd);
168
+ const newVisibleIndices = layoutManager.getVisibleLayouts(viewportStart, viewportEnd);
173
169
  return newVisibleIndices;
174
- };
170
+ }
175
171
  /**
176
172
  * Returns the currently engaged (rendered) indices.
177
173
  * This includes both visible items and buffer items.
178
174
  * @returns The last computed set of engaged indices
179
175
  */
180
- RVEngagedIndicesTrackerImpl.prototype.getEngagedIndices = function () {
176
+ getEngagedIndices() {
181
177
  return this.engagedIndices;
182
- };
183
- RVEngagedIndicesTrackerImpl.prototype.setScrollDirection = function (scrollDirection) {
178
+ }
179
+ setScrollDirection(scrollDirection) {
184
180
  if (scrollDirection === "forward") {
185
181
  this.velocityHistory = [0, 0, 0, 0.1, 0.1];
186
182
  this.velocityIndex = 0;
@@ -189,20 +185,18 @@ var RVEngagedIndicesTrackerImpl = /** @class */ (function () {
189
185
  this.velocityHistory = [0, 0, 0, -0.1, -0.1];
190
186
  this.velocityIndex = 0;
191
187
  }
192
- };
188
+ }
193
189
  /**
194
190
  * Resets the velocity history based on the current scroll direction.
195
191
  * This ensures that the velocity history is always in sync with the current scroll direction.
196
192
  */
197
- RVEngagedIndicesTrackerImpl.prototype.resetVelocityHistory = function () {
193
+ resetVelocityHistory() {
198
194
  if (this.isScrollingBackward()) {
199
195
  this.setScrollDirection("backward");
200
196
  }
201
197
  else {
202
198
  this.setScrollDirection("forward");
203
199
  }
204
- };
205
- return RVEngagedIndicesTrackerImpl;
206
- }());
207
- exports.RVEngagedIndicesTrackerImpl = RVEngagedIndicesTrackerImpl;
200
+ }
201
+ }
208
202
  //# sourceMappingURL=EngagedIndicesTracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EngagedIndicesTracker.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/EngagedIndicesTracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EngagedIndicesTracker.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/EngagedIndicesTracker.ts"],"names":[],"mappings":"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"}
@@ -1,49 +1,44 @@
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);
1
+ import { PlatformConfig } from "../../native/config/PlatformHelper";
2
+ import { AverageWindow } from "../../utils/AverageWindow";
3
+ export class RenderTimeTracker {
4
+ constructor() {
5
+ this.renderTimeAvgWindow = new AverageWindow(5);
9
6
  this.lastTimerStartedAt = -1;
10
7
  this.maxRenderTime = 32; // TODO: Improve this even more
11
8
  this.defaultRenderTime = 16;
12
9
  this.rendersWithoutCommit = 0;
13
10
  this.maxRendersWithoutCommit = 40;
14
11
  }
15
- RenderTimeTracker.prototype.startTracking = function () {
12
+ startTracking() {
16
13
  this.rendersWithoutCommit++;
17
- if (!PlatformHelper_1.PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
14
+ if (!PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
18
15
  return;
19
16
  }
20
17
  if (this.lastTimerStartedAt === -1) {
21
18
  this.lastTimerStartedAt = Date.now();
22
19
  }
23
- };
24
- RenderTimeTracker.prototype.markRenderComplete = function () {
20
+ }
21
+ markRenderComplete() {
25
22
  this.rendersWithoutCommit = 0;
26
- if (!PlatformHelper_1.PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
23
+ if (!PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
27
24
  return;
28
25
  }
29
26
  if (this.lastTimerStartedAt !== -1) {
30
27
  this.renderTimeAvgWindow.addValue(Date.now() - this.lastTimerStartedAt);
31
28
  this.lastTimerStartedAt = -1;
32
29
  }
33
- };
34
- RenderTimeTracker.prototype.hasExceededMaxRendersWithoutCommit = function () {
30
+ }
31
+ hasExceededMaxRendersWithoutCommit() {
35
32
  return this.rendersWithoutCommit >= this.maxRendersWithoutCommit;
36
- };
37
- RenderTimeTracker.prototype.getRawValue = function () {
33
+ }
34
+ getRawValue() {
38
35
  return this.renderTimeAvgWindow.currentValue;
39
- };
40
- RenderTimeTracker.prototype.getAverageRenderTime = function () {
41
- if (!PlatformHelper_1.PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
36
+ }
37
+ getAverageRenderTime() {
38
+ if (!PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
42
39
  return this.defaultRenderTime;
43
40
  }
44
41
  return Math.min(this.maxRenderTime, Math.max(Math.round(this.renderTimeAvgWindow.currentValue), 16));
45
- };
46
- return RenderTimeTracker;
47
- }());
48
- exports.RenderTimeTracker = RenderTimeTracker;
42
+ }
43
+ }
49
44
  //# sourceMappingURL=RenderTimeTracker.js.map
@@ -1 +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;QACvB,yBAAoB,GAAG,CAAC,CAAC;QACzB,4BAAuB,GAAG,EAAE,CAAC;IAwCvC,CAAC;IAtCC,yCAAa,GAAb;QACE,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,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,oBAAoB,GAAG,CAAC,CAAC;QAC9B,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,8DAAkC,GAAlC;QACE,OAAO,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,uBAAuB,CAAC;IACnE,CAAC;IAED,uCAAW,GAAX;QACE,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;IAC/C,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,AA9CD,IA8CC;AA9CY,8CAAiB"}
1
+ {"version":3,"file":"RenderTimeTracker.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/RenderTimeTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,OAAO,iBAAiB;IAA9B;QACU,wBAAmB,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3C,uBAAkB,GAAG,CAAC,CAAC,CAAC;QACxB,kBAAa,GAAG,EAAE,CAAC,CAAC,+BAA+B;QACnD,sBAAiB,GAAG,EAAE,CAAC;QACvB,yBAAoB,GAAG,CAAC,CAAC;QACzB,4BAAuB,GAAG,EAAE,CAAC;IAwCvC,CAAC;IAtCC,aAAa;QACX,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,yCAAyC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,yCAAyC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACxE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,kCAAkC;QAChC,OAAO,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,uBAAuB,CAAC;IACnE,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;IAC/C,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,cAAc,CAAC,yCAAyC,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAChE,CAAC;IACJ,CAAC;CACF"}
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VelocityTracker = void 0;
4
1
  /**
5
2
  * Tracks and calculates velocity for scroll/drag movements
6
3
  * Used to determine momentum scrolling behavior
7
4
  */
8
- var VelocityTracker = /** @class */ (function () {
9
- function VelocityTracker() {
5
+ export class VelocityTracker {
6
+ constructor() {
10
7
  /** Timestamp of the last velocity update */
11
8
  this.lastUpdateTime = Date.now();
12
9
  /** Current velocity vector with x and y components */
@@ -22,15 +19,14 @@ var VelocityTracker = /** @class */ (function () {
22
19
  * @param isRTL Whether layout direction is right-to-left
23
20
  * @param callback Function to call with velocity updates and momentum end signal
24
21
  */
25
- VelocityTracker.prototype.computeVelocity = function (newOffset, oldOffset, isHorizontal, callback) {
26
- var _this = this;
22
+ computeVelocity(newOffset, oldOffset, isHorizontal, callback) {
27
23
  // Clear any pending momentum end timeout
28
24
  this.cleanUp();
29
25
  // Calculate time since last update
30
- var currentTime = Date.now();
31
- var timeSinceLastUpdate = Math.max(1, currentTime - this.lastUpdateTime);
26
+ const currentTime = Date.now();
27
+ const timeSinceLastUpdate = Math.max(1, currentTime - this.lastUpdateTime);
32
28
  // Calculate velocity as distance/time
33
- var newVelocity = (newOffset - oldOffset) / timeSinceLastUpdate;
29
+ const newVelocity = (newOffset - oldOffset) / timeSinceLastUpdate;
34
30
  // console.log(
35
31
  // "newVelocity",
36
32
  // newOffset,
@@ -47,24 +43,22 @@ var VelocityTracker = /** @class */ (function () {
47
43
  // Trigger callback with current velocity
48
44
  callback(this.velocity, false);
49
45
  // 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);
46
+ this.timeoutId = setTimeout(() => {
47
+ this.cleanUp();
48
+ this.lastUpdateTime = Date.now();
49
+ this.velocity.x = 0;
50
+ this.velocity.y = 0;
51
+ callback(this.velocity, true);
56
52
  }, 100);
57
- };
53
+ }
58
54
  /**
59
55
  * Cleans up resources by clearing any pending timeout
60
56
  */
61
- VelocityTracker.prototype.cleanUp = function () {
57
+ cleanUp() {
62
58
  if (this.timeoutId !== null) {
63
59
  clearTimeout(this.timeoutId);
64
60
  this.timeoutId = null;
65
61
  }
66
- };
67
- return VelocityTracker;
68
- }());
69
- exports.VelocityTracker = VelocityTracker;
62
+ }
63
+ }
70
64
  //# sourceMappingURL=VelocityTracker.js.map
@@ -1 +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
+ {"version":3,"file":"VelocityTracker.js","sourceRoot":"","sources":["../../../src/recyclerview/helpers/VelocityTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,eAAe;IAA5B;QACE,4CAA4C;QACpC,mBAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,sDAAsD;QAC9C,aAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAElC,4CAA4C;QACpC,cAAS,GAA0B,IAAI,CAAC;IAiElD,CAAC;IA/DC;;;;;;;OAOG;IACH,eAAe,CACb,SAAiB,EACjB,SAAiB,EACjB,YAAqB,EACrB,QAGS;QAET,yCAAyC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,mCAAmC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QAE3E,sCAAsC;QACtC,MAAM,WAAW,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,mBAAmB,CAAC;QAElE,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,eAAe;QACf,iBAAiB;QACjB,yBAAyB;QACzB,yBAAyB;QACzB,gBAAgB;QAChB,KAAK;QACL,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;QAElC,qCAAqC;QACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAEjD,yCAAyC;QACzC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE/B,+DAA+D;QAC/D,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;CACF"}
@@ -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