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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/dist/AnimatedFlashList.js +4 -6
  2. package/dist/AnimatedFlashList.js.map +1 -1
  3. package/dist/FlashList.js +1 -5
  4. package/dist/FlashList.js.map +1 -1
  5. package/dist/FlashListProps.d.ts +41 -1
  6. package/dist/FlashListProps.d.ts.map +1 -1
  7. package/dist/FlashListProps.js +1 -4
  8. package/dist/FlashListProps.js.map +1 -1
  9. package/dist/FlashListRef.js +1 -2
  10. package/dist/benchmark/AutoScrollHelper.js +22 -30
  11. package/dist/benchmark/AutoScrollHelper.js.map +1 -1
  12. package/dist/benchmark/JSFPSMonitor.js +27 -33
  13. package/dist/benchmark/JSFPSMonitor.js.map +1 -1
  14. package/dist/benchmark/roundToDecimalPlaces.js +2 -5
  15. package/dist/benchmark/roundToDecimalPlaces.js.map +1 -1
  16. package/dist/benchmark/useBenchmark.d.ts +9 -1
  17. package/dist/benchmark/useBenchmark.d.ts.map +1 -1
  18. package/dist/benchmark/useBenchmark.js +86 -95
  19. package/dist/benchmark/useBenchmark.js.map +1 -1
  20. package/dist/benchmark/useDataMultiplier.js +6 -10
  21. package/dist/benchmark/useDataMultiplier.js.map +1 -1
  22. package/dist/benchmark/useFlatListBenchmark.d.ts +4 -1
  23. package/dist/benchmark/useFlatListBenchmark.d.ts.map +1 -1
  24. package/dist/benchmark/useFlatListBenchmark.js +73 -81
  25. package/dist/benchmark/useFlatListBenchmark.js.map +1 -1
  26. package/dist/errors/ErrorMessages.js +1 -4
  27. package/dist/errors/ErrorMessages.js.map +1 -1
  28. package/dist/errors/WarningMessages.js +1 -4
  29. package/dist/errors/WarningMessages.js.map +1 -1
  30. package/dist/index.js +17 -35
  31. package/dist/index.js.map +1 -1
  32. package/dist/isNewArch.js +6 -9
  33. package/dist/isNewArch.js.map +1 -1
  34. package/dist/native/config/PlatformHelper.android.js +2 -5
  35. package/dist/native/config/PlatformHelper.android.js.map +1 -1
  36. package/dist/native/config/PlatformHelper.ios.js +2 -5
  37. package/dist/native/config/PlatformHelper.ios.js.map +1 -1
  38. package/dist/native/config/PlatformHelper.js +2 -5
  39. package/dist/native/config/PlatformHelper.js.map +1 -1
  40. package/dist/native/config/PlatformHelper.web.js +2 -5
  41. package/dist/native/config/PlatformHelper.web.js.map +1 -1
  42. package/dist/recyclerview/LayoutCommitObserver.js +20 -24
  43. package/dist/recyclerview/LayoutCommitObserver.js.map +1 -1
  44. package/dist/recyclerview/RecyclerView.d.ts.map +1 -1
  45. package/dist/recyclerview/RecyclerView.js +134 -111
  46. package/dist/recyclerview/RecyclerView.js.map +1 -1
  47. package/dist/recyclerview/RecyclerViewContextProvider.js +7 -12
  48. package/dist/recyclerview/RecyclerViewContextProvider.js.map +1 -1
  49. package/dist/recyclerview/RecyclerViewManager.js +138 -167
  50. package/dist/recyclerview/RecyclerViewManager.js.map +1 -1
  51. package/dist/recyclerview/RecyclerViewProps.js +1 -2
  52. package/dist/recyclerview/RenderStackManager.js +97 -188
  53. package/dist/recyclerview/RenderStackManager.js.map +1 -1
  54. package/dist/recyclerview/ViewHolder.d.ts +2 -0
  55. package/dist/recyclerview/ViewHolder.d.ts.map +1 -1
  56. package/dist/recyclerview/ViewHolder.js +19 -21
  57. package/dist/recyclerview/ViewHolder.js.map +1 -1
  58. package/dist/recyclerview/ViewHolderCollection.d.ts +4 -0
  59. package/dist/recyclerview/ViewHolderCollection.d.ts.map +1 -1
  60. package/dist/recyclerview/ViewHolderCollection.js +26 -30
  61. package/dist/recyclerview/ViewHolderCollection.js.map +1 -1
  62. package/dist/recyclerview/components/CompatScroller.js +6 -7
  63. package/dist/recyclerview/components/CompatScroller.js.map +1 -1
  64. package/dist/recyclerview/components/CompatView.js +6 -7
  65. package/dist/recyclerview/components/CompatView.js.map +1 -1
  66. package/dist/recyclerview/components/ScrollAnchor.js +10 -15
  67. package/dist/recyclerview/components/ScrollAnchor.js.map +1 -1
  68. package/dist/recyclerview/components/StickyHeaders.d.ts +5 -1
  69. package/dist/recyclerview/components/StickyHeaders.d.ts.map +1 -1
  70. package/dist/recyclerview/components/StickyHeaders.js +77 -51
  71. package/dist/recyclerview/components/StickyHeaders.js.map +1 -1
  72. package/dist/recyclerview/helpers/ConsecutiveNumbers.js +39 -66
  73. package/dist/recyclerview/helpers/ConsecutiveNumbers.js.map +1 -1
  74. package/dist/recyclerview/helpers/EngagedIndicesTracker.js +57 -63
  75. package/dist/recyclerview/helpers/EngagedIndicesTracker.js.map +1 -1
  76. package/dist/recyclerview/helpers/RenderTimeTracker.js +19 -24
  77. package/dist/recyclerview/helpers/RenderTimeTracker.js.map +1 -1
  78. package/dist/recyclerview/helpers/VelocityTracker.js +16 -22
  79. package/dist/recyclerview/helpers/VelocityTracker.js.map +1 -1
  80. package/dist/recyclerview/hooks/useBoundDetection.js +37 -40
  81. package/dist/recyclerview/hooks/useBoundDetection.js.map +1 -1
  82. package/dist/recyclerview/hooks/useLayoutState.js +9 -15
  83. package/dist/recyclerview/hooks/useLayoutState.js.map +1 -1
  84. package/dist/recyclerview/hooks/useMappingHelper.js +6 -10
  85. package/dist/recyclerview/hooks/useMappingHelper.js.map +1 -1
  86. package/dist/recyclerview/hooks/useOnLoad.js +16 -22
  87. package/dist/recyclerview/hooks/useOnLoad.js.map +1 -1
  88. package/dist/recyclerview/hooks/useRecyclerViewController.d.ts.map +1 -1
  89. package/dist/recyclerview/hooks/useRecyclerViewController.js +169 -188
  90. package/dist/recyclerview/hooks/useRecyclerViewController.js.map +1 -1
  91. package/dist/recyclerview/hooks/useRecyclerViewManager.js +12 -17
  92. package/dist/recyclerview/hooks/useRecyclerViewManager.js.map +1 -1
  93. package/dist/recyclerview/hooks/useRecyclingState.js +10 -14
  94. package/dist/recyclerview/hooks/useRecyclingState.js.map +1 -1
  95. package/dist/recyclerview/hooks/useSecondaryProps.d.ts +2 -0
  96. package/dist/recyclerview/hooks/useSecondaryProps.d.ts.map +1 -1
  97. package/dist/recyclerview/hooks/useSecondaryProps.js +39 -30
  98. package/dist/recyclerview/hooks/useSecondaryProps.js.map +1 -1
  99. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js +17 -22
  100. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js.map +1 -1
  101. package/dist/recyclerview/hooks/useUnmountFlag.js +5 -9
  102. package/dist/recyclerview/hooks/useUnmountFlag.js.map +1 -1
  103. package/dist/recyclerview/layout-managers/GridLayoutManager.js +61 -80
  104. package/dist/recyclerview/layout-managers/GridLayoutManager.js.map +1 -1
  105. package/dist/recyclerview/layout-managers/LayoutManager.js +83 -123
  106. package/dist/recyclerview/layout-managers/LayoutManager.js.map +1 -1
  107. package/dist/recyclerview/layout-managers/LinearLayoutManager.js +51 -91
  108. package/dist/recyclerview/layout-managers/LinearLayoutManager.js.map +1 -1
  109. package/dist/recyclerview/layout-managers/MasonryLayoutManager.js +77 -96
  110. package/dist/recyclerview/layout-managers/MasonryLayoutManager.js.map +1 -1
  111. package/dist/recyclerview/utils/adjustOffsetForRTL.js +1 -4
  112. package/dist/recyclerview/utils/adjustOffsetForRTL.js.map +1 -1
  113. package/dist/recyclerview/utils/componentUtils.js +4 -9
  114. package/dist/recyclerview/utils/componentUtils.js.map +1 -1
  115. package/dist/recyclerview/utils/findVisibleIndex.js +9 -13
  116. package/dist/recyclerview/utils/findVisibleIndex.js.map +1 -1
  117. package/dist/recyclerview/utils/measureLayout.js +12 -20
  118. package/dist/recyclerview/utils/measureLayout.js.map +1 -1
  119. package/dist/recyclerview/utils/measureLayout.web.js +15 -23
  120. package/dist/recyclerview/utils/measureLayout.web.js.map +1 -1
  121. package/dist/recyclerview/viewability/ViewToken.js +1 -2
  122. package/dist/recyclerview/viewability/ViewabilityHelper.js +34 -41
  123. package/dist/recyclerview/viewability/ViewabilityHelper.js.map +1 -1
  124. package/dist/recyclerview/viewability/ViewabilityManager.js +48 -61
  125. package/dist/recyclerview/viewability/ViewabilityManager.js.map +1 -1
  126. package/dist/tsconfig.tsbuildinfo +1 -1
  127. package/dist/utils/AverageWindow.js +28 -39
  128. package/dist/utils/AverageWindow.js.map +1 -1
  129. package/package.json +4 -6
  130. package/src/FlashListProps.ts +51 -1
  131. package/src/benchmark/useBenchmark.ts +47 -4
  132. package/src/benchmark/useFlatListBenchmark.ts +38 -5
  133. package/src/recyclerview/RecyclerView.tsx +42 -8
  134. package/src/recyclerview/ViewHolder.tsx +6 -1
  135. package/src/recyclerview/ViewHolderCollection.tsx +10 -0
  136. package/src/recyclerview/components/StickyHeaders.tsx +54 -13
  137. package/src/recyclerview/hooks/useRecyclerViewController.tsx +7 -4
  138. package/src/recyclerview/hooks/useSecondaryProps.tsx +23 -0
  139. package/dist/__tests__/AverageWindow.test.d.ts +0 -2
  140. package/dist/__tests__/AverageWindow.test.d.ts.map +0 -1
  141. package/dist/__tests__/AverageWindow.test.js +0 -104
  142. package/dist/__tests__/AverageWindow.test.js.map +0 -1
  143. package/dist/__tests__/ConsecutiveNumbers.test.d.ts +0 -2
  144. package/dist/__tests__/ConsecutiveNumbers.test.d.ts.map +0 -1
  145. package/dist/__tests__/ConsecutiveNumbers.test.js +0 -224
  146. package/dist/__tests__/ConsecutiveNumbers.test.js.map +0 -1
  147. package/dist/__tests__/GridLayoutManager.test.d.ts +0 -2
  148. package/dist/__tests__/GridLayoutManager.test.d.ts.map +0 -1
  149. package/dist/__tests__/GridLayoutManager.test.js +0 -69
  150. package/dist/__tests__/GridLayoutManager.test.js.map +0 -1
  151. package/dist/__tests__/LayoutCommitObserver.test.d.ts +0 -2
  152. package/dist/__tests__/LayoutCommitObserver.test.d.ts.map +0 -1
  153. package/dist/__tests__/LayoutCommitObserver.test.js +0 -37
  154. package/dist/__tests__/LayoutCommitObserver.test.js.map +0 -1
  155. package/dist/__tests__/LinearLayoutManager.test.d.ts +0 -2
  156. package/dist/__tests__/LinearLayoutManager.test.d.ts.map +0 -1
  157. package/dist/__tests__/LinearLayoutManager.test.js +0 -140
  158. package/dist/__tests__/LinearLayoutManager.test.js.map +0 -1
  159. package/dist/__tests__/MasonryLayoutManager.test.d.ts +0 -2
  160. package/dist/__tests__/MasonryLayoutManager.test.d.ts.map +0 -1
  161. package/dist/__tests__/MasonryLayoutManager.test.js +0 -148
  162. package/dist/__tests__/MasonryLayoutManager.test.js.map +0 -1
  163. package/dist/__tests__/RecyclerView.test.d.ts +0 -2
  164. package/dist/__tests__/RecyclerView.test.d.ts.map +0 -1
  165. package/dist/__tests__/RecyclerView.test.js +0 -103
  166. package/dist/__tests__/RecyclerView.test.js.map +0 -1
  167. package/dist/__tests__/RecyclerViewManager.test.d.ts +0 -2
  168. package/dist/__tests__/RecyclerViewManager.test.d.ts.map +0 -1
  169. package/dist/__tests__/RecyclerViewManager.test.js +0 -56
  170. package/dist/__tests__/RecyclerViewManager.test.js.map +0 -1
  171. package/dist/__tests__/RenderStackManager.test.d.ts +0 -2
  172. package/dist/__tests__/RenderStackManager.test.d.ts.map +0 -1
  173. package/dist/__tests__/RenderStackManager.test.js +0 -485
  174. package/dist/__tests__/RenderStackManager.test.js.map +0 -1
  175. package/dist/__tests__/ViewabilityHelper.test.d.ts +0 -2
  176. package/dist/__tests__/ViewabilityHelper.test.d.ts.map +0 -1
  177. package/dist/__tests__/ViewabilityHelper.test.js +0 -186
  178. package/dist/__tests__/ViewabilityHelper.test.js.map +0 -1
  179. package/dist/__tests__/findVisibleIndex.test.d.ts +0 -2
  180. package/dist/__tests__/findVisibleIndex.test.d.ts.map +0 -1
  181. package/dist/__tests__/findVisibleIndex.test.js +0 -259
  182. package/dist/__tests__/findVisibleIndex.test.js.map +0 -1
  183. package/dist/__tests__/helpers/createLayoutManager.d.ts +0 -34
  184. package/dist/__tests__/helpers/createLayoutManager.d.ts.map +0 -1
  185. package/dist/__tests__/helpers/createLayoutManager.js +0 -110
  186. package/dist/__tests__/helpers/createLayoutManager.js.map +0 -1
  187. package/dist/__tests__/useUnmountAwareCallbacks.test.d.ts +0 -2
  188. package/dist/__tests__/useUnmountAwareCallbacks.test.d.ts.map +0 -1
  189. package/dist/__tests__/useUnmountAwareCallbacks.test.js +0 -185
  190. package/dist/__tests__/useUnmountAwareCallbacks.test.js.map +0 -1
  191. package/src/__tests__/AverageWindow.test.ts +0 -128
  192. package/src/__tests__/ConsecutiveNumbers.test.ts +0 -232
  193. package/src/__tests__/GridLayoutManager.test.ts +0 -113
  194. package/src/__tests__/LayoutCommitObserver.test.tsx +0 -63
  195. package/src/__tests__/LinearLayoutManager.test.ts +0 -227
  196. package/src/__tests__/MasonryLayoutManager.test.ts +0 -202
  197. package/src/__tests__/RecyclerView.test.tsx +0 -144
  198. package/src/__tests__/RecyclerViewManager.test.ts +0 -74
  199. package/src/__tests__/RenderStackManager.test.ts +0 -574
  200. package/src/__tests__/ViewabilityHelper.test.ts +0 -282
  201. package/src/__tests__/findVisibleIndex.test.ts +0 -369
  202. package/src/__tests__/helpers/createLayoutManager.ts +0 -141
  203. package/src/__tests__/useUnmountAwareCallbacks.test.tsx +0 -285
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.adjustOffsetForRTL = adjustOffsetForRTL;
4
1
  /**
5
2
  * Adjusts the scroll offset for Right-to-Left (RTL) layouts.
6
3
  * offset it flipped when RTL is enabled.
@@ -11,7 +8,7 @@ exports.adjustOffsetForRTL = adjustOffsetForRTL;
11
8
  * @param windowSize - The size of the visible window/viewport
12
9
  * @returns The adjusted offset for RTL layout
13
10
  */
14
- function adjustOffsetForRTL(offset, contentSize, windowSize) {
11
+ export function adjustOffsetForRTL(offset, contentSize, windowSize) {
15
12
  return contentSize - offset - windowSize;
16
13
  }
17
14
  //# sourceMappingURL=adjustOffsetForRTL.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adjustOffsetForRTL.js","sourceRoot":"","sources":["../../../src/recyclerview/utils/adjustOffsetForRTL.ts"],"names":[],"mappings":";;AAUA,gDAMC;AAhBD;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAChC,MAAc,EACd,WAAmB,EACnB,UAAkB;IAElB,OAAO,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"adjustOffsetForRTL.js","sourceRoot":"","sources":["../../../src/recyclerview/utils/adjustOffsetForRTL.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,WAAmB,EACnB,UAAkB;IAElB,OAAO,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;AAC3C,CAAC"}
@@ -1,8 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getValidComponent = void 0;
4
- var tslib_1 = require("tslib");
5
- var react_1 = tslib_1.__importDefault(require("react"));
1
+ import React from "react";
6
2
  /**
7
3
  * Helper function to handle both React components and React elements.
8
4
  * This utility ensures proper rendering of components whether they are passed as
@@ -19,14 +15,13 @@ var react_1 = tslib_1.__importDefault(require("react"));
19
15
  * // With a pre-rendered element
20
16
  * getValidComponent(<MyComponent />)
21
17
  */
22
- var getValidComponent = function (component) {
23
- if (react_1.default.isValidElement(component)) {
18
+ export const getValidComponent = (component) => {
19
+ if (React.isValidElement(component)) {
24
20
  return component;
25
21
  }
26
22
  else if (typeof component === "function") {
27
- return react_1.default.createElement(component);
23
+ return React.createElement(component);
28
24
  }
29
25
  return null;
30
26
  };
31
- exports.getValidComponent = getValidComponent;
32
27
  //# sourceMappingURL=componentUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"componentUtils.js","sourceRoot":"","sources":["../../../src/recyclerview/utils/componentUtils.ts"],"names":[],"mappings":";;;;AAAA,wDAA0B;AAE1B;;;;;;;;;;;;;;;GAeG;AACI,IAAM,iBAAiB,GAAG,UAC/B,SAAsE;IAEtE,IAAI,eAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;SAAM,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;QAC3C,OAAO,eAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AATW,QAAA,iBAAiB,qBAS5B"}
1
+ {"version":3,"file":"componentUtils.js","sourceRoot":"","sources":["../../../src/recyclerview/utils/componentUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,SAAsE,EAC3C,EAAE;IAC7B,IAAI,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;SAAM,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -1,7 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findFirstVisibleIndex = findFirstVisibleIndex;
4
- exports.findLastVisibleIndex = findLastVisibleIndex;
5
1
  /**
6
2
  * A helper function to perform binary search for the first or last visible index.
7
3
  * This function efficiently finds items that are visible within a viewport by using
@@ -18,15 +14,15 @@ exports.findLastVisibleIndex = findLastVisibleIndex;
18
14
  * The function assumes the layouts array is pre-sorted by the relevant dimension (x or y).
19
15
  */
20
16
  function binarySearchVisibleIndex(layouts, threshold, isSortedByX, findFirst) {
21
- var left = 0;
22
- var right = layouts.length - 1;
23
- var visibleIndex = -1;
17
+ let left = 0;
18
+ let right = layouts.length - 1;
19
+ let visibleIndex = -1;
24
20
  while (left <= right) {
25
- var mid = Math.floor((left + right) / 2);
26
- var layout = layouts[mid];
21
+ const mid = Math.floor((left + right) / 2);
22
+ const layout = layouts[mid];
27
23
  // Check visibility based on the sorting criteria
28
- var position = isSortedByX ? layout.x : layout.y;
29
- var size = isSortedByX ? layout.width : layout.height;
24
+ const position = isSortedByX ? layout.x : layout.y;
25
+ const size = isSortedByX ? layout.width : layout.height;
30
26
  if (findFirst) {
31
27
  // Logic for finding the first visible index
32
28
  if (position >= threshold || position + size > threshold) {
@@ -61,7 +57,7 @@ function binarySearchVisibleIndex(layouts, threshold, isSortedByX, findFirst) {
61
57
  * @param isSortedByX - A boolean indicating if the array is sorted by x (true) or y (false)
62
58
  * @returns The index of the first visible layout or -1 if none are visible
63
59
  */
64
- function findFirstVisibleIndex(layouts, threshold, isSortedByX) {
60
+ export function findFirstVisibleIndex(layouts, threshold, isSortedByX) {
65
61
  return binarySearchVisibleIndex(layouts, threshold, isSortedByX, true);
66
62
  }
67
63
  /**
@@ -74,7 +70,7 @@ function findFirstVisibleIndex(layouts, threshold, isSortedByX) {
74
70
  * @param isSortedByX - A boolean indicating if the array is sorted by x (true) or y (false)
75
71
  * @returns The index of the last visible layout or -1 if none are visible
76
72
  */
77
- function findLastVisibleIndex(layouts, threshold, isSortedByX) {
73
+ export function findLastVisibleIndex(layouts, threshold, isSortedByX) {
78
74
  return binarySearchVisibleIndex(layouts, threshold, isSortedByX, false);
79
75
  }
80
76
  //# sourceMappingURL=findVisibleIndex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findVisibleIndex.js","sourceRoot":"","sources":["../../../src/recyclerview/utils/findVisibleIndex.ts"],"names":[],"mappings":";;AAoEA,sDAMC;AAYD,oDAMC;AA1FD;;;;;;;;;;;;;;GAcG;AACH,SAAS,wBAAwB,CAC/B,OAAmB,EACnB,SAAiB,EACjB,WAAoB,EACpB,SAAkB;IAElB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IAEtB,OAAO,IAAI,IAAI,KAAK,EAAE,CAAC;QACrB,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAE5B,iDAAiD;QACjD,IAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,IAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAExD,IAAI,SAAS,EAAE,CAAC;YACd,4CAA4C;YAC5C,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC;gBACzD,mFAAmF;gBACnF,YAAY,GAAG,GAAG,CAAC;gBACnB,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,6CAA6C;gBAC7C,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,kFAAkF;YAClF,YAAY,GAAG,GAAG,CAAC;YACnB,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,4CAA4C;YAC5C,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,qBAAqB,CACnC,OAAmB,EACnB,SAAiB,EACjB,WAAoB;IAEpB,OAAO,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,oBAAoB,CAClC,OAAmB,EACnB,SAAiB,EACjB,WAAoB;IAEpB,OAAO,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"findVisibleIndex.js","sourceRoot":"","sources":["../../../src/recyclerview/utils/findVisibleIndex.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,SAAS,wBAAwB,CAC/B,OAAmB,EACnB,SAAiB,EACjB,WAAoB,EACpB,SAAkB;IAElB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IAEtB,OAAO,IAAI,IAAI,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAE5B,iDAAiD;QACjD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAExD,IAAI,SAAS,EAAE,CAAC;YACd,4CAA4C;YAC5C,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC;gBACzD,mFAAmF;gBACnF,YAAY,GAAG,GAAG,CAAC;gBACnB,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,6CAA6C;gBAC7C,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,kFAAkF;YAClF,YAAY,GAAG,GAAG,CAAC;YACnB,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,4CAA4C;YAC5C,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAmB,EACnB,SAAiB,EACjB,WAAoB;IAEpB,OAAO,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAmB,EACnB,SAAiB,EACjB,WAAoB;IAEpB,OAAO,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC"}
@@ -1,12 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.areDimensionsNotEqual = areDimensionsNotEqual;
4
- exports.areDimensionsEqual = areDimensionsEqual;
5
- exports.roundOffPixel = roundOffPixel;
6
- exports.measureParentSize = measureParentSize;
7
- exports.measureFirstChildLayout = measureFirstChildLayout;
8
- exports.measureItemLayout = measureItemLayout;
9
- var react_native_1 = require("react-native");
1
+ import { PixelRatio } from "react-native";
10
2
  /**
11
3
  * Measures the layout of a view relative to itselft.
12
4
  * Using measure wasn't returing accurate values but this workaround does.
@@ -31,8 +23,8 @@ function measureLayout(view, oldLayout) {
31
23
  * @returns An object containing x, y, width, and height measurements
32
24
  */
33
25
  function measureLayoutRelative(view, relativeTo, oldLayout) {
34
- var layout = { x: 0, y: 0, width: 0, height: 0 };
35
- view.measureLayout(relativeTo, function (x, y, width, height) {
26
+ const layout = { x: 0, y: 0, width: 0, height: 0 };
27
+ view.measureLayout(relativeTo, (x, y, width, height) => {
36
28
  layout.x = x;
37
29
  layout.y = y;
38
30
  layout.width = roundOffPixel(width);
@@ -56,7 +48,7 @@ function measureLayoutRelative(view, relativeTo, oldLayout) {
56
48
  * @param value2 - Second dimension value to compare
57
49
  * @returns true if the values are significantly different, false otherwise
58
50
  */
59
- function areDimensionsNotEqual(value1, value2) {
51
+ export function areDimensionsNotEqual(value1, value2) {
60
52
  return !areDimensionsEqual(value1, value2);
61
53
  }
62
54
  /**
@@ -67,12 +59,12 @@ function areDimensionsNotEqual(value1, value2) {
67
59
  * @param value2 - Second dimension value to compare
68
60
  * @returns true if the values are approximately equal, false otherwise
69
61
  */
70
- function areDimensionsEqual(value1, value2) {
71
- return (Math.abs(react_native_1.PixelRatio.getPixelSizeForLayoutSize(value1) -
72
- react_native_1.PixelRatio.getPixelSizeForLayoutSize(value2)) <= 1);
62
+ export function areDimensionsEqual(value1, value2) {
63
+ return (Math.abs(PixelRatio.getPixelSizeForLayoutSize(value1) -
64
+ PixelRatio.getPixelSizeForLayoutSize(value2)) <= 1);
73
65
  }
74
- function roundOffPixel(value) {
75
- return react_native_1.PixelRatio.roundToNearestPixel(value);
66
+ export function roundOffPixel(value) {
67
+ return PixelRatio.roundToNearestPixel(value);
76
68
  }
77
69
  /**
78
70
  * Specific method for easier mocking
@@ -81,7 +73,7 @@ function roundOffPixel(value) {
81
73
  * @param view - The React Native View component to measure
82
74
  * @returns An object containing x, y, width, and height measurements
83
75
  */
84
- function measureParentSize(view) {
76
+ export function measureParentSize(view) {
85
77
  return measureLayout(view, undefined);
86
78
  }
87
79
  /**
@@ -91,7 +83,7 @@ function measureParentSize(view) {
91
83
  * @param parentView
92
84
  * @returns
93
85
  */
94
- function measureFirstChildLayout(childContainerView, parentView) {
86
+ export function measureFirstChildLayout(childContainerView, parentView) {
95
87
  return measureLayoutRelative(childContainerView, parentView, undefined);
96
88
  }
97
89
  /**
@@ -101,7 +93,7 @@ function measureFirstChildLayout(childContainerView, parentView) {
101
93
  * @param oldLayout
102
94
  * @returns
103
95
  */
104
- function measureItemLayout(item, oldLayout) {
96
+ export function measureItemLayout(item, oldLayout) {
105
97
  return measureLayout(item, oldLayout);
106
98
  }
107
99
  //# sourceMappingURL=measureLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"measureLayout.js","sourceRoot":"","sources":["../../../src/recyclerview/utils/measureLayout.ts"],"names":[],"mappings":";;AAiEA,sDAEC;AAUD,gDAOC;AAED,sCAEC;AASD,8CAEC;AASD,0DAKC;AASD,8CAKC;AA/HD,6CAAgD;AAShD;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,IAAU,EAAE,SAA6B;IAC9D,wDAAwD;IACxD,8CAA8C;IAC9C,gDAAgD;IAChD,iBAAiB;IACjB,OAAO,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAC5B,IAAU,EACV,UAAgB,EAChB,SAA6B;IAE7B,IAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACnD,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,UAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM;QACjD,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACjC,CAAC;QACD,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CAAC,MAAc,EAAE,MAAc;IAClE,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,MAAc,EAAE,MAAc;IAC/D,OAAO,CACL,IAAI,CAAC,GAAG,CACN,yBAAU,CAAC,yBAAyB,CAAC,MAAM,CAAC;QAC1C,yBAAU,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAC/C,IAAI,CAAC,CACP,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAO,yBAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,IAAU;IAC1C,OAAO,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CACrC,kBAAwB,EACxB,UAAgB;IAEhB,OAAO,qBAAqB,CAAC,kBAAkB,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAC/B,IAAU,EACV,SAA6B;IAE7B,OAAO,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"measureLayout.js","sourceRoot":"","sources":["../../../src/recyclerview/utils/measureLayout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,cAAc,CAAC;AAShD;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,IAAU,EAAE,SAA6B;IAC9D,wDAAwD;IACxD,8CAA8C;IAC9C,gDAAgD;IAChD,iBAAiB;IACjB,OAAO,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAC5B,IAAU,EACV,UAAgB,EAChB,SAA6B;IAE7B,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACnD,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACrD,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACjC,CAAC;QACD,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,MAAc;IAClE,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,MAAc;IAC/D,OAAO,CACL,IAAI,CAAC,GAAG,CACN,UAAU,CAAC,yBAAyB,CAAC,MAAM,CAAC;QAC1C,UAAU,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAC/C,IAAI,CAAC,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAU;IAC1C,OAAO,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,kBAAwB,EACxB,UAAgB;IAEhB,OAAO,qBAAqB,CAAC,kBAAkB,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAU,EACV,SAA6B;IAE7B,OAAO,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC"}
@@ -1,47 +1,39 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.areDimensionsNotEqual = areDimensionsNotEqual;
4
- exports.areDimensionsEqual = areDimensionsEqual;
5
- exports.roundOffPixel = roundOffPixel;
6
- exports.measureParentSize = measureParentSize;
7
- exports.measureFirstChildLayout = measureFirstChildLayout;
8
- exports.measureItemLayout = measureItemLayout;
9
1
  /**
10
2
  * Gets scroll offsets from up to 3 parent elements
11
3
  */
12
4
  function getScrollOffsets(element, stopAt) {
13
5
  var _a, _b;
14
- var scrollX = 0;
15
- var scrollY = 0;
16
- var currentElement = element;
6
+ let scrollX = 0;
7
+ let scrollY = 0;
8
+ let currentElement = element;
17
9
  // Only check up to 3 parent elements
18
10
  while (currentElement && currentElement !== stopAt) {
19
- var htmlElement = currentElement;
11
+ const htmlElement = currentElement;
20
12
  scrollX += (_a = htmlElement.scrollLeft) !== null && _a !== void 0 ? _a : 0;
21
13
  scrollY += (_b = htmlElement.scrollTop) !== null && _b !== void 0 ? _b : 0;
22
14
  currentElement = currentElement.parentElement;
23
15
  }
24
- return { scrollX: scrollX, scrollY: scrollY };
16
+ return { scrollX, scrollY };
25
17
  }
26
18
  /**
27
19
  * Checks if two dimension values are not equal, with a small tolerance.
28
20
  */
29
- function areDimensionsNotEqual(value1, value2) {
21
+ export function areDimensionsNotEqual(value1, value2) {
30
22
  return !areDimensionsEqual(value1, value2);
31
23
  }
32
24
  /**
33
25
  * Checks if two dimension values are equal, with a small tolerance.
34
26
  */
35
- function areDimensionsEqual(value1, value2) {
27
+ export function areDimensionsEqual(value1, value2) {
36
28
  return Math.abs(value1 - value2) <= 1;
37
29
  }
38
- function roundOffPixel(value) {
30
+ export function roundOffPixel(value) {
39
31
  return value;
40
32
  }
41
33
  /**
42
34
  * Measures the layout of parent of RecyclerView
43
35
  */
44
- function measureParentSize(view) {
36
+ export function measureParentSize(view) {
45
37
  return {
46
38
  x: 0,
47
39
  y: 0,
@@ -52,11 +44,11 @@ function measureParentSize(view) {
52
44
  /**
53
45
  * Measures the layout of child container of RecyclerView
54
46
  */
55
- function measureFirstChildLayout(childContainerView, parentView) {
56
- var childRect = childContainerView.getBoundingClientRect();
57
- var parentRect = parentView.getBoundingClientRect();
47
+ export function measureFirstChildLayout(childContainerView, parentView) {
48
+ const childRect = childContainerView.getBoundingClientRect();
49
+ const parentRect = parentView.getBoundingClientRect();
58
50
  // Get scroll offsets for child container (max 3 parents)
59
- var scrollOffsets = getScrollOffsets(childContainerView, parentView);
51
+ const scrollOffsets = getScrollOffsets(childContainerView, parentView);
60
52
  return {
61
53
  x: childRect.left - parentRect.left + scrollOffsets.scrollX,
62
54
  y: childRect.top - parentRect.top + scrollOffsets.scrollY,
@@ -67,8 +59,8 @@ function measureFirstChildLayout(childContainerView, parentView) {
67
59
  /**
68
60
  * Measures the layout of items of RecyclerView
69
61
  */
70
- function measureItemLayout(item, oldLayout) {
71
- var layout = {
62
+ export function measureItemLayout(item, oldLayout) {
63
+ const layout = {
72
64
  x: 0,
73
65
  y: 0,
74
66
  width: item.clientWidth,
@@ -1 +1 @@
1
- {"version":3,"file":"measureLayout.web.js","sourceRoot":"","sources":["../../../src/recyclerview/utils/measureLayout.web.ts"],"names":[],"mappings":";;AA6BA,sDAEC;AAKD,gDAEC;AAED,sCAEC;AAKD,8CAOC;AAKD,0DAgBC;AAKD,8CAqBC;AA9FD;;GAEG;AACH,SAAS,gBAAgB,CAAC,OAAgB,EAAE,MAAe;;IACzD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,cAAc,GAAmB,OAAO,CAAC;IAE7C,qCAAqC;IACrC,OAAO,cAAc,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QACnD,IAAM,WAAW,GAAG,cAA6B,CAAC;QAClD,OAAO,IAAI,MAAA,WAAW,CAAC,UAAU,mCAAI,CAAC,CAAC;QACvC,OAAO,IAAI,MAAA,WAAW,CAAC,SAAS,mCAAI,CAAC,CAAC;QACtC,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC;IAChD,CAAC;IAED,OAAO,EAAE,OAAO,SAAA,EAAE,OAAO,SAAA,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,MAAc,EAAE,MAAc;IAClE,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,MAAc,EAAE,MAAc;IAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAa;IAC7C,OAAO;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,IAAI,CAAC,WAAW;QACvB,MAAM,EAAE,IAAI,CAAC,YAAY;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,kBAA2B,EAC3B,UAAmB;IAEnB,IAAM,SAAS,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;IAC7D,IAAM,UAAU,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;IAEtD,yDAAyD;IACzD,IAAM,aAAa,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAEvE,OAAO;QACL,CAAC,EAAE,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,aAAa,CAAC,OAAO;QAC3D,CAAC,EAAE,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,aAAa,CAAC,OAAO;QACzD,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC;QACrC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC;KACxC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,IAAa,EACb,SAA6B;IAE7B,IAAM,MAAM,GAAG;QACb,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,IAAI,CAAC,WAAW;QACvB,MAAM,EAAE,IAAI,CAAC,YAAY;KAC1B,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACjC,CAAC;QACD,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"measureLayout.web.js","sourceRoot":"","sources":["../../../src/recyclerview/utils/measureLayout.web.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,SAAS,gBAAgB,CAAC,OAAgB,EAAE,MAAe;;IACzD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,cAAc,GAAmB,OAAO,CAAC;IAE7C,qCAAqC;IACrC,OAAO,cAAc,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QACnD,MAAM,WAAW,GAAG,cAA6B,CAAC;QAClD,OAAO,IAAI,MAAA,WAAW,CAAC,UAAU,mCAAI,CAAC,CAAC;QACvC,OAAO,IAAI,MAAA,WAAW,CAAC,SAAS,mCAAI,CAAC,CAAC;QACtC,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC;IAChD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,MAAc;IAClE,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,MAAc;IAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,OAAO;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,IAAI,CAAC,WAAW;QACvB,MAAM,EAAE,IAAI,CAAC,YAAY;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,kBAA2B,EAC3B,UAAmB;IAEnB,MAAM,SAAS,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;IAC7D,MAAM,UAAU,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;IAEtD,yDAAyD;IACzD,MAAM,aAAa,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAEvE,OAAO;QACL,CAAC,EAAE,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,aAAa,CAAC,OAAO;QAC3D,CAAC,EAAE,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,aAAa,CAAC,OAAO;QACzD,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC;QACrC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC;KACxC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAa,EACb,SAA6B;IAE7B,MAAM,MAAM,GAAG;QACb,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,IAAI,CAAC,WAAW;QACvB,MAAM,EAAE,IAAI,CAAC,YAAY;KAC1B,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACjC,CAAC;QACD,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=ViewToken.js.map
@@ -1,12 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var ErrorMessages_1 = require("../../errors/ErrorMessages");
1
+ import { ErrorMessages } from "../../errors/ErrorMessages";
4
2
  /**
5
3
  * Helper class for computing viewable items based on the passed `viewabilityConfig`.
6
4
  * Note methods in this class will be invoked on every scroll and should be optimized for performance.
7
5
  */
8
- var ViewabilityHelper = /** @class */ (function () {
9
- function ViewabilityHelper(viewabilityConfig, viewableIndicesChanged) {
6
+ class ViewabilityHelper {
7
+ constructor(viewabilityConfig, viewableIndicesChanged) {
10
8
  /**
11
9
  * Viewable indices regardless of the viewability config
12
10
  */
@@ -18,12 +16,11 @@ var ViewabilityHelper = /** @class */ (function () {
18
16
  this.viewabilityConfig = viewabilityConfig;
19
17
  this.viewableIndicesChanged = viewableIndicesChanged;
20
18
  }
21
- ViewabilityHelper.prototype.dispose = function () {
19
+ dispose() {
22
20
  // Clean up on dismount
23
21
  this.timers.forEach(clearTimeout);
24
- };
25
- ViewabilityHelper.prototype.updateViewableItems = function (horizontal, scrollOffset, listSize, getLayout, viewableIndices) {
26
- var _this = this;
22
+ }
23
+ updateViewableItems(horizontal, scrollOffset, listSize, getLayout, viewableIndices) {
27
24
  var _a, _b, _c, _d, _e, _f, _g, _h;
28
25
  if (viewableIndices !== undefined) {
29
26
  this.possiblyViewableIndices = viewableIndices;
@@ -32,55 +29,52 @@ var ViewabilityHelper = /** @class */ (function () {
32
29
  ((_b = this.viewabilityConfig) === null || _b === void 0 ? void 0 : _b.itemVisiblePercentThreshold) !== undefined &&
33
30
  ((_c = this.viewabilityConfig) === null || _c === void 0 ? void 0 : _c.viewAreaCoveragePercentThreshold) !== null &&
34
31
  ((_d = this.viewabilityConfig) === null || _d === void 0 ? void 0 : _d.viewAreaCoveragePercentThreshold) !== undefined) {
35
- throw new Error(ErrorMessages_1.ErrorMessages.multipleViewabilityThresholdTypesNotSupported);
32
+ throw new Error(ErrorMessages.multipleViewabilityThresholdTypesNotSupported);
36
33
  }
37
34
  if (((_f = (_e = this.viewabilityConfig) === null || _e === void 0 ? void 0 : _e.waitForInteraction) !== null && _f !== void 0 ? _f : false) &&
38
35
  !this.hasInteracted) {
39
36
  return;
40
37
  }
41
- var newViewableIndices = this.possiblyViewableIndices.filter(function (index) {
38
+ const newViewableIndices = this.possiblyViewableIndices.filter((index) => {
42
39
  var _a, _b;
43
- return _this.isItemViewable(index, horizontal, scrollOffset, listSize, (_a = _this.viewabilityConfig) === null || _a === void 0 ? void 0 : _a.viewAreaCoveragePercentThreshold, (_b = _this.viewabilityConfig) === null || _b === void 0 ? void 0 : _b.itemVisiblePercentThreshold, getLayout);
40
+ return this.isItemViewable(index, horizontal, scrollOffset, listSize, (_a = this.viewabilityConfig) === null || _a === void 0 ? void 0 : _a.viewAreaCoveragePercentThreshold, (_b = this.viewabilityConfig) === null || _b === void 0 ? void 0 : _b.itemVisiblePercentThreshold, getLayout);
44
41
  });
45
42
  this.viewableIndices = newViewableIndices;
46
- var minimumViewTime = (_h = (_g = this.viewabilityConfig) === null || _g === void 0 ? void 0 : _g.minimumViewTime) !== null && _h !== void 0 ? _h : 250;
43
+ const minimumViewTime = (_h = (_g = this.viewabilityConfig) === null || _g === void 0 ? void 0 : _g.minimumViewTime) !== null && _h !== void 0 ? _h : 250;
47
44
  // Setting default to 250. Default of 0 can impact performance when user scrolls fast.
48
45
  if (minimumViewTime > 0) {
49
- var timeoutId_1 = setTimeout(function () {
50
- _this.timers.delete(timeoutId_1);
51
- _this.checkViewableIndicesChanges(newViewableIndices);
46
+ const timeoutId = setTimeout(() => {
47
+ this.timers.delete(timeoutId);
48
+ this.checkViewableIndicesChanges(newViewableIndices);
52
49
  }, minimumViewTime);
53
- this.timers.add(timeoutId_1);
50
+ this.timers.add(timeoutId);
54
51
  }
55
52
  else {
56
53
  this.checkViewableIndicesChanges(newViewableIndices);
57
54
  }
58
- };
59
- ViewabilityHelper.prototype.checkViewableIndicesChanges = function (newViewableIndices) {
60
- var _this = this;
55
+ }
56
+ checkViewableIndicesChanges(newViewableIndices) {
61
57
  // Check if all viewable indices are still available (applicable if minimumViewTime > 0)
62
- var currentlyNewViewableIndices = newViewableIndices.filter(function (index) {
63
- return _this.viewableIndices.includes(index);
64
- });
65
- var newlyVisibleItems = currentlyNewViewableIndices.filter(function (index) { return !_this.lastReportedViewableIndices.includes(index); });
66
- var newlyNonvisibleItems = this.lastReportedViewableIndices.filter(function (index) { return !currentlyNewViewableIndices.includes(index); });
58
+ const currentlyNewViewableIndices = newViewableIndices.filter((index) => this.viewableIndices.includes(index));
59
+ const newlyVisibleItems = currentlyNewViewableIndices.filter((index) => !this.lastReportedViewableIndices.includes(index));
60
+ const newlyNonvisibleItems = this.lastReportedViewableIndices.filter((index) => !currentlyNewViewableIndices.includes(index));
67
61
  if (newlyVisibleItems.length > 0 || newlyNonvisibleItems.length > 0) {
68
62
  this.lastReportedViewableIndices = currentlyNewViewableIndices;
69
63
  this.viewableIndicesChanged(currentlyNewViewableIndices, newlyVisibleItems, newlyNonvisibleItems);
70
64
  }
71
- };
72
- ViewabilityHelper.prototype.clearLastReportedViewableIndices = function () {
65
+ }
66
+ clearLastReportedViewableIndices() {
73
67
  this.lastReportedViewableIndices = [];
74
- };
75
- ViewabilityHelper.prototype.isItemViewable = function (index, horizontal, scrollOffset, listSize, viewAreaCoveragePercentThreshold, itemVisiblePercentThreshold, getLayout) {
76
- var itemLayout = getLayout(index);
68
+ }
69
+ isItemViewable(index, horizontal, scrollOffset, listSize, viewAreaCoveragePercentThreshold, itemVisiblePercentThreshold, getLayout) {
70
+ const itemLayout = getLayout(index);
77
71
  if (itemLayout === undefined) {
78
72
  return false;
79
73
  }
80
- var itemTop = (horizontal ? itemLayout.x : itemLayout.y) - scrollOffset;
81
- var itemSize = horizontal ? itemLayout.width : itemLayout.height;
82
- var listMainSize = horizontal ? listSize.width : listSize.height;
83
- var pixelsVisible = Math.min(itemTop + itemSize, listMainSize) - Math.max(itemTop, 0);
74
+ const itemTop = (horizontal ? itemLayout.x : itemLayout.y) - scrollOffset;
75
+ const itemSize = horizontal ? itemLayout.width : itemLayout.height;
76
+ const listMainSize = horizontal ? listSize.width : listSize.height;
77
+ const pixelsVisible = Math.min(itemTop + itemSize, listMainSize) - Math.max(itemTop, 0);
84
78
  // Always consider item fully viewable if it is fully visible, regardless of the `viewAreaCoveragePercentThreshold`
85
79
  if (pixelsVisible === itemSize) {
86
80
  return true;
@@ -89,17 +83,16 @@ var ViewabilityHelper = /** @class */ (function () {
89
83
  if (pixelsVisible === 0) {
90
84
  return false;
91
85
  }
92
- var viewAreaMode = viewAreaCoveragePercentThreshold !== null &&
86
+ const viewAreaMode = viewAreaCoveragePercentThreshold !== null &&
93
87
  viewAreaCoveragePercentThreshold !== undefined;
94
- var percent = viewAreaMode
88
+ const percent = viewAreaMode
95
89
  ? pixelsVisible / listMainSize
96
90
  : pixelsVisible / itemSize;
97
- var viewableAreaPercentThreshold = viewAreaMode
91
+ const viewableAreaPercentThreshold = viewAreaMode
98
92
  ? viewAreaCoveragePercentThreshold * 0.01
99
93
  : (itemVisiblePercentThreshold !== null && itemVisiblePercentThreshold !== void 0 ? itemVisiblePercentThreshold : 0) * 0.01;
100
94
  return percent >= viewableAreaPercentThreshold;
101
- };
102
- return ViewabilityHelper;
103
- }());
104
- exports.default = ViewabilityHelper;
95
+ }
96
+ }
97
+ export default ViewabilityHelper;
105
98
  //# sourceMappingURL=ViewabilityHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ViewabilityHelper.js","sourceRoot":"","sources":["../../../src/recyclerview/viewability/ViewabilityHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ViewabilityHelper.js","sourceRoot":"","sources":["../../../src/recyclerview/viewability/ViewabilityHelper.ts"],"names":[],"mappings":"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"}
@@ -1,107 +1,94 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- var ViewabilityHelper_1 = tslib_1.__importDefault(require("./ViewabilityHelper"));
1
+ import ViewabilityHelper from "./ViewabilityHelper";
5
2
  /**
6
3
  * Manager for viewability tracking. It holds multiple viewability callback pairs and keeps them updated.
7
4
  */
8
- var ViewabilityManager = /** @class */ (function () {
9
- function ViewabilityManager(rvManager) {
10
- var _this = this;
5
+ export default class ViewabilityManager {
6
+ constructor(rvManager) {
11
7
  var _a;
12
8
  this.viewabilityHelpers = [];
13
9
  this.hasInteracted = false;
14
- this.dispose = function () {
15
- _this.viewabilityHelpers.forEach(function (viewabilityHelper) {
16
- return viewabilityHelper.dispose();
17
- });
10
+ this.dispose = () => {
11
+ this.viewabilityHelpers.forEach((viewabilityHelper) => viewabilityHelper.dispose());
18
12
  };
19
- this.onVisibleIndicesChanged = function (all) {
20
- _this.updateViewableItems(all);
13
+ this.onVisibleIndicesChanged = (all) => {
14
+ this.updateViewableItems(all);
21
15
  };
22
- this.recordInteraction = function () {
23
- if (_this.hasInteracted) {
16
+ this.recordInteraction = () => {
17
+ if (this.hasInteracted) {
24
18
  return;
25
19
  }
26
- _this.hasInteracted = true;
27
- _this.viewabilityHelpers.forEach(function (viewabilityHelper) {
20
+ this.hasInteracted = true;
21
+ this.viewabilityHelpers.forEach((viewabilityHelper) => {
28
22
  viewabilityHelper.hasInteracted = true;
29
23
  });
30
- _this.updateViewableItems();
24
+ this.updateViewableItems();
31
25
  };
32
- this.updateViewableItems = function (newViewableIndices) {
26
+ this.updateViewableItems = (newViewableIndices) => {
33
27
  var _a;
34
- var listSize = _this.rvManager.getWindowSize();
35
- if (listSize === undefined || !_this.shouldListenToVisibleIndices) {
28
+ const listSize = this.rvManager.getWindowSize();
29
+ if (listSize === undefined || !this.shouldListenToVisibleIndices) {
36
30
  return;
37
31
  }
38
- var scrollOffset = ((_a = _this.rvManager.getAbsoluteLastScrollOffset()) !== null && _a !== void 0 ? _a : 0) -
39
- _this.rvManager.firstItemOffset;
40
- _this.viewabilityHelpers.forEach(function (viewabilityHelper) {
32
+ const scrollOffset = ((_a = this.rvManager.getAbsoluteLastScrollOffset()) !== null && _a !== void 0 ? _a : 0) -
33
+ this.rvManager.firstItemOffset;
34
+ this.viewabilityHelpers.forEach((viewabilityHelper) => {
41
35
  var _a;
42
- viewabilityHelper.updateViewableItems((_a = _this.rvManager.props.horizontal) !== null && _a !== void 0 ? _a : false, scrollOffset, listSize, function (index) { return _this.rvManager.getLayout(index); }, newViewableIndices);
36
+ viewabilityHelper.updateViewableItems((_a = this.rvManager.props.horizontal) !== null && _a !== void 0 ? _a : false, scrollOffset, listSize, (index) => this.rvManager.getLayout(index), newViewableIndices);
43
37
  });
44
38
  };
45
- this.recomputeViewableItems = function () {
46
- _this.viewabilityHelpers.forEach(function (viewabilityHelper) {
47
- return viewabilityHelper.clearLastReportedViewableIndices();
48
- });
49
- _this.updateViewableItems();
39
+ this.recomputeViewableItems = () => {
40
+ this.viewabilityHelpers.forEach((viewabilityHelper) => viewabilityHelper.clearLastReportedViewableIndices());
41
+ this.updateViewableItems();
50
42
  };
51
43
  /**
52
44
  * Creates a new `ViewabilityHelper` instance with `onViewableItemsChanged` callback and `ViewabilityConfig`
53
45
  * @returns `ViewabilityHelper` instance
54
46
  */
55
- this.createViewabilityHelper = function (viewabilityConfig, onViewableItemsChanged) {
56
- var mapViewToken = function (index, isViewable) {
57
- var item = _this.rvManager.props.data[index];
58
- var key = item === undefined || _this.rvManager.props.keyExtractor === undefined
47
+ this.createViewabilityHelper = (viewabilityConfig, onViewableItemsChanged) => {
48
+ const mapViewToken = (index, isViewable) => {
49
+ const item = this.rvManager.props.data[index];
50
+ const key = item === undefined || this.rvManager.props.keyExtractor === undefined
59
51
  ? index.toString()
60
- : _this.rvManager.props.keyExtractor(item, index);
52
+ : this.rvManager.props.keyExtractor(item, index);
61
53
  return {
62
- index: index,
63
- isViewable: isViewable,
64
- item: item,
65
- key: key,
54
+ index,
55
+ isViewable,
56
+ item,
57
+ key,
66
58
  timestamp: Date.now(),
67
59
  };
68
60
  };
69
- return new ViewabilityHelper_1.default(viewabilityConfig, function (indices, newlyVisibleIndices, newlyNonvisibleIndices) {
61
+ return new ViewabilityHelper(viewabilityConfig, (indices, newlyVisibleIndices, newlyNonvisibleIndices) => {
70
62
  onViewableItemsChanged === null || onViewableItemsChanged === void 0 ? void 0 : onViewableItemsChanged({
71
- viewableItems: indices.map(function (index) { return mapViewToken(index, true); }),
72
- changed: tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(newlyVisibleIndices.map(function (index) { return mapViewToken(index, true); })), false), tslib_1.__read(newlyNonvisibleIndices.map(function (index) {
73
- return mapViewToken(index, false);
74
- })), false),
63
+ viewableItems: indices.map((index) => mapViewToken(index, true)),
64
+ changed: [
65
+ ...newlyVisibleIndices.map((index) => mapViewToken(index, true)),
66
+ ...newlyNonvisibleIndices.map((index) => mapViewToken(index, false)),
67
+ ],
75
68
  });
76
69
  });
77
70
  };
78
71
  this.rvManager = rvManager;
79
72
  if (rvManager.props.onViewableItemsChanged !== null &&
80
73
  rvManager.props.onViewableItemsChanged !== undefined) {
81
- this.viewabilityHelpers.push(this.createViewabilityHelper(rvManager.props.viewabilityConfig, function (info) {
74
+ this.viewabilityHelpers.push(this.createViewabilityHelper(rvManager.props.viewabilityConfig, (info) => {
82
75
  var _a, _b;
83
76
  (_b = (_a = rvManager.props).onViewableItemsChanged) === null || _b === void 0 ? void 0 : _b.call(_a, info);
84
77
  }));
85
78
  }
86
- ((_a = rvManager.props.viewabilityConfigCallbackPairs) !== null && _a !== void 0 ? _a : []).forEach(function (pair, index) {
87
- _this.viewabilityHelpers.push(_this.createViewabilityHelper(pair.viewabilityConfig, function (info) {
79
+ ((_a = rvManager.props.viewabilityConfigCallbackPairs) !== null && _a !== void 0 ? _a : []).forEach((pair, index) => {
80
+ this.viewabilityHelpers.push(this.createViewabilityHelper(pair.viewabilityConfig, (info) => {
88
81
  var _a, _b;
89
- var callback = (_b = (_a = rvManager.props.viewabilityConfigCallbackPairs) === null || _a === void 0 ? void 0 : _a[index]) === null || _b === void 0 ? void 0 : _b.onViewableItemsChanged;
82
+ const callback = (_b = (_a = rvManager.props.viewabilityConfigCallbackPairs) === null || _a === void 0 ? void 0 : _a[index]) === null || _b === void 0 ? void 0 : _b.onViewableItemsChanged;
90
83
  callback === null || callback === void 0 ? void 0 : callback(info);
91
84
  }));
92
85
  });
93
86
  }
94
- Object.defineProperty(ViewabilityManager.prototype, "shouldListenToVisibleIndices", {
95
- /**
96
- * @returns true if the viewability manager has any viewability callback pairs registered.
97
- */
98
- get: function () {
99
- return this.viewabilityHelpers.length > 0;
100
- },
101
- enumerable: false,
102
- configurable: true
103
- });
104
- return ViewabilityManager;
105
- }());
106
- exports.default = ViewabilityManager;
87
+ /**
88
+ * @returns true if the viewability manager has any viewability callback pairs registered.
89
+ */
90
+ get shouldListenToVisibleIndices() {
91
+ return this.viewabilityHelpers.length > 0;
92
+ }
93
+ }
107
94
  //# sourceMappingURL=ViewabilityManager.js.map