@shopify/flash-list 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/CHANGELOG.md +159 -0
  2. package/LICENSE.md +7 -0
  3. package/README.md +65 -0
  4. package/RNFlashList.podspec +26 -0
  5. package/android/build.gradle +59 -0
  6. package/android/src/main/AndroidManifest.xml +3 -0
  7. package/android/src/main/kotlin/com/shopify/reactnative/flash_list/AutoLayoutShadow.kt +94 -0
  8. package/android/src/main/kotlin/com/shopify/reactnative/flash_list/AutoLayoutView.kt +79 -0
  9. package/android/src/main/kotlin/com/shopify/reactnative/flash_list/AutoLayoutViewManager.kt +69 -0
  10. package/android/src/main/kotlin/com/shopify/reactnative/flash_list/CellContainer.java +16 -0
  11. package/android/src/main/kotlin/com/shopify/reactnative/flash_list/CellContainerImpl.kt +16 -0
  12. package/android/src/main/kotlin/com/shopify/reactnative/flash_list/CellContainerManager.kt +27 -0
  13. package/android/src/main/kotlin/com/shopify/reactnative/flash_list/FlashListPackage.kt +19 -0
  14. package/android/src/test/java/com/shopify/reactnative/flash_list/AutoLayoutShadowTest.kt +146 -0
  15. package/android/src/test/java/com/shopify/reactnative/flash_list/models/Rect.kt +59 -0
  16. package/android/src/test/java/com/shopify/reactnative/flash_list/models/TestCollection.kt +6 -0
  17. package/android/src/test/java/com/shopify/reactnative/flash_list/models/TestDataModel.kt +8 -0
  18. package/android/src/test/resources/LayoutTestData.json +708 -0
  19. package/dist/AnimatedFlashList.d.ts +6 -0
  20. package/dist/AnimatedFlashList.d.ts.map +1 -0
  21. package/dist/AnimatedFlashList.js +8 -0
  22. package/dist/AnimatedFlashList.js.map +1 -0
  23. package/dist/FlashList.d.ts +121 -0
  24. package/dist/FlashList.d.ts.map +1 -0
  25. package/dist/FlashList.js +502 -0
  26. package/dist/FlashList.js.map +1 -0
  27. package/dist/FlashListProps.d.ts +251 -0
  28. package/dist/FlashListProps.d.ts.map +1 -0
  29. package/dist/FlashListProps.js +3 -0
  30. package/dist/FlashListProps.js.map +1 -0
  31. package/dist/GridLayoutProviderWithProps.d.ts +30 -0
  32. package/dist/GridLayoutProviderWithProps.d.ts.map +1 -0
  33. package/dist/GridLayoutProviderWithProps.js +80 -0
  34. package/dist/GridLayoutProviderWithProps.js.map +1 -0
  35. package/dist/PureComponentWrapper.d.ts +22 -0
  36. package/dist/PureComponentWrapper.d.ts.map +1 -0
  37. package/dist/PureComponentWrapper.js +37 -0
  38. package/dist/PureComponentWrapper.js.map +1 -0
  39. package/dist/__tests__/AverageWindow.test.d.ts +2 -0
  40. package/dist/__tests__/AverageWindow.test.d.ts.map +1 -0
  41. package/dist/__tests__/AverageWindow.test.js +69 -0
  42. package/dist/__tests__/AverageWindow.test.js.map +1 -0
  43. package/dist/__tests__/FlashList.test.d.ts +2 -0
  44. package/dist/__tests__/FlashList.test.d.ts.map +1 -0
  45. package/dist/__tests__/FlashList.test.js +656 -0
  46. package/dist/__tests__/FlashList.test.js.map +1 -0
  47. package/dist/__tests__/GridLayoutProviderWithProps.test.d.ts +2 -0
  48. package/dist/__tests__/GridLayoutProviderWithProps.test.d.ts.map +1 -0
  49. package/dist/__tests__/GridLayoutProviderWithProps.test.js +133 -0
  50. package/dist/__tests__/GridLayoutProviderWithProps.test.js.map +1 -0
  51. package/dist/__tests__/PlatformHelper.web.test.d.ts +2 -0
  52. package/dist/__tests__/PlatformHelper.web.test.d.ts.map +1 -0
  53. package/dist/__tests__/PlatformHelper.web.test.js +25 -0
  54. package/dist/__tests__/PlatformHelper.web.test.js.map +1 -0
  55. package/dist/__tests__/ViewabilityHelper.test.d.ts +2 -0
  56. package/dist/__tests__/ViewabilityHelper.test.d.ts.map +1 -0
  57. package/dist/__tests__/ViewabilityHelper.test.js +187 -0
  58. package/dist/__tests__/ViewabilityHelper.test.js.map +1 -0
  59. package/dist/__tests__/helpers/mountFlashList.d.ts +20 -0
  60. package/dist/__tests__/helpers/mountFlashList.d.ts.map +1 -0
  61. package/dist/__tests__/helpers/mountFlashList.js +44 -0
  62. package/dist/__tests__/helpers/mountFlashList.js.map +1 -0
  63. package/dist/__tests__/useBlankAreaTracker.test.d.ts +2 -0
  64. package/dist/__tests__/useBlankAreaTracker.test.d.ts.map +1 -0
  65. package/dist/__tests__/useBlankAreaTracker.test.js +179 -0
  66. package/dist/__tests__/useBlankAreaTracker.test.js.map +1 -0
  67. package/dist/benchmark/AutoScrollHelper.d.ts +18 -0
  68. package/dist/benchmark/AutoScrollHelper.d.ts.map +1 -0
  69. package/dist/benchmark/AutoScrollHelper.js +68 -0
  70. package/dist/benchmark/AutoScrollHelper.js.map +1 -0
  71. package/dist/benchmark/JSFPSMonitor.d.ts +23 -0
  72. package/dist/benchmark/JSFPSMonitor.d.ts.map +1 -0
  73. package/dist/benchmark/JSFPSMonitor.js +65 -0
  74. package/dist/benchmark/JSFPSMonitor.js.map +1 -0
  75. package/dist/benchmark/roundToDecimalPlaces.d.ts +2 -0
  76. package/dist/benchmark/roundToDecimalPlaces.d.ts.map +1 -0
  77. package/dist/benchmark/roundToDecimalPlaces.js +9 -0
  78. package/dist/benchmark/roundToDecimalPlaces.js.map +1 -0
  79. package/dist/benchmark/useBenchmark.d.ts +35 -0
  80. package/dist/benchmark/useBenchmark.d.ts.map +1 -0
  81. package/dist/benchmark/useBenchmark.js +167 -0
  82. package/dist/benchmark/useBenchmark.js.map +1 -0
  83. package/dist/benchmark/useBlankAreaTracker.d.ts +34 -0
  84. package/dist/benchmark/useBlankAreaTracker.d.ts.map +1 -0
  85. package/dist/benchmark/useBlankAreaTracker.js +67 -0
  86. package/dist/benchmark/useBlankAreaTracker.js.map +1 -0
  87. package/dist/benchmark/useDataMultiplier.d.ts +9 -0
  88. package/dist/benchmark/useDataMultiplier.d.ts.map +1 -0
  89. package/dist/benchmark/useDataMultiplier.js +25 -0
  90. package/dist/benchmark/useDataMultiplier.js.map +1 -0
  91. package/dist/benchmark/useFlatListBenchmark.d.ts +13 -0
  92. package/dist/benchmark/useFlatListBenchmark.d.ts.map +1 -0
  93. package/dist/benchmark/useFlatListBenchmark.js +100 -0
  94. package/dist/benchmark/useFlatListBenchmark.js.map +1 -0
  95. package/dist/errors/CustomError.d.ts +8 -0
  96. package/dist/errors/CustomError.d.ts.map +1 -0
  97. package/dist/errors/CustomError.js +14 -0
  98. package/dist/errors/CustomError.js.map +1 -0
  99. package/dist/errors/ExceptionList.d.ts +20 -0
  100. package/dist/errors/ExceptionList.d.ts.map +1 -0
  101. package/dist/errors/ExceptionList.js +22 -0
  102. package/dist/errors/ExceptionList.js.map +1 -0
  103. package/dist/errors/Warnings.d.ts +10 -0
  104. package/dist/errors/Warnings.d.ts.map +1 -0
  105. package/dist/errors/Warnings.js +15 -0
  106. package/dist/errors/Warnings.js.map +1 -0
  107. package/dist/index.d.ts +13 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +28 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/native/auto-layout/AutoLayoutView.d.ts +21 -0
  112. package/dist/native/auto-layout/AutoLayoutView.d.ts.map +1 -0
  113. package/dist/native/auto-layout/AutoLayoutView.js +48 -0
  114. package/dist/native/auto-layout/AutoLayoutView.js.map +1 -0
  115. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.d.ts +4 -0
  116. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.d.ts.map +1 -0
  117. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.js +6 -0
  118. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.js.map +1 -0
  119. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.web.d.ts +5 -0
  120. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.web.d.ts.map +1 -0
  121. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.web.js +6 -0
  122. package/dist/native/auto-layout/AutoLayoutViewNativeComponent.web.js.map +1 -0
  123. package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.d.ts +14 -0
  124. package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.d.ts.map +1 -0
  125. package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.js +3 -0
  126. package/dist/native/auto-layout/AutoLayoutViewNativeComponentProps.js.map +1 -0
  127. package/dist/native/cell-container/CellContainer.d.ts +6 -0
  128. package/dist/native/cell-container/CellContainer.d.ts.map +1 -0
  129. package/dist/native/cell-container/CellContainer.js +9 -0
  130. package/dist/native/cell-container/CellContainer.js.map +1 -0
  131. package/dist/native/cell-container/CellContainer.web.d.ts +7 -0
  132. package/dist/native/cell-container/CellContainer.web.d.ts.map +1 -0
  133. package/dist/native/cell-container/CellContainer.web.js +13 -0
  134. package/dist/native/cell-container/CellContainer.web.js.map +1 -0
  135. package/dist/tsconfig.tsbuildinfo +1 -0
  136. package/dist/utils/AverageWindow.d.ts +21 -0
  137. package/dist/utils/AverageWindow.d.ts.map +1 -0
  138. package/dist/utils/AverageWindow.js +49 -0
  139. package/dist/utils/AverageWindow.js.map +1 -0
  140. package/dist/utils/PlatformHelper.d.ts +14 -0
  141. package/dist/utils/PlatformHelper.d.ts.map +1 -0
  142. package/dist/utils/PlatformHelper.js +16 -0
  143. package/dist/utils/PlatformHelper.js.map +1 -0
  144. package/dist/utils/PlatformHelper.web.d.ts +14 -0
  145. package/dist/utils/PlatformHelper.web.d.ts.map +1 -0
  146. package/dist/utils/PlatformHelper.web.js +18 -0
  147. package/dist/utils/PlatformHelper.web.js.map +1 -0
  148. package/dist/viewability/ViewToken.d.ts +8 -0
  149. package/dist/viewability/ViewToken.d.ts.map +1 -0
  150. package/dist/viewability/ViewToken.js +3 -0
  151. package/dist/viewability/ViewToken.js.map +1 -0
  152. package/dist/viewability/ViewabilityHelper.d.ts +25 -0
  153. package/dist/viewability/ViewabilityHelper.d.ts.map +1 -0
  154. package/dist/viewability/ViewabilityHelper.js +104 -0
  155. package/dist/viewability/ViewabilityHelper.js.map +1 -0
  156. package/dist/viewability/ViewabilityManager.d.ts +24 -0
  157. package/dist/viewability/ViewabilityManager.d.ts.map +1 -0
  158. package/dist/viewability/ViewabilityManager.js +94 -0
  159. package/dist/viewability/ViewabilityManager.js.map +1 -0
  160. package/ios/RNFlashList.xcodeproj/project.pbxproj +3 -0
  161. package/ios/RNFlashList.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
  162. package/ios/Sources/AutoLayoutView.swift +218 -0
  163. package/ios/Sources/AutoLayoutViewManager.m +14 -0
  164. package/ios/Sources/AutoLayoutViewManager.swift +12 -0
  165. package/ios/Sources/CellContainer.swift +9 -0
  166. package/ios/Sources/CellContainerManager.m +8 -0
  167. package/ios/Sources/CellContainerManager.swift +12 -0
  168. package/ios/Sources/FlatListPro-Bridging-Header.h +8 -0
  169. package/ios/Tests/AutoLayoutViewTests.swift +113 -0
  170. package/jestSetup.js +15 -0
  171. package/package.json +75 -0
  172. package/src/AnimatedFlashList.ts +11 -0
  173. package/src/FlashList.tsx +801 -0
  174. package/src/FlashListProps.ts +312 -0
  175. package/src/GridLayoutProviderWithProps.ts +137 -0
  176. package/src/PureComponentWrapper.tsx +42 -0
  177. package/src/__tests__/AverageWindow.test.ts +80 -0
  178. package/src/__tests__/FlashList.test.tsx +738 -0
  179. package/src/__tests__/GridLayoutProviderWithProps.test.ts +150 -0
  180. package/src/__tests__/PlatformHelper.web.test.ts +29 -0
  181. package/src/__tests__/ViewabilityHelper.test.ts +283 -0
  182. package/src/__tests__/helpers/mountFlashList.tsx +62 -0
  183. package/src/__tests__/useBlankAreaTracker.test.tsx +206 -0
  184. package/src/benchmark/AutoScrollHelper.ts +70 -0
  185. package/src/benchmark/JSFPSMonitor.ts +74 -0
  186. package/src/benchmark/roundToDecimalPlaces.ts +4 -0
  187. package/src/benchmark/useBenchmark.ts +240 -0
  188. package/src/benchmark/useBlankAreaTracker.ts +117 -0
  189. package/src/benchmark/useDataMultiplier.ts +19 -0
  190. package/src/benchmark/useFlatListBenchmark.ts +107 -0
  191. package/src/errors/CustomError.ts +10 -0
  192. package/src/errors/ExceptionList.ts +23 -0
  193. package/src/errors/Warnings.ts +18 -0
  194. package/src/index.ts +32 -0
  195. package/src/native/auto-layout/AutoLayoutView.tsx +72 -0
  196. package/src/native/auto-layout/AutoLayoutViewNativeComponent.ts +7 -0
  197. package/src/native/auto-layout/AutoLayoutViewNativeComponent.web.ts +8 -0
  198. package/src/native/auto-layout/AutoLayoutViewNativeComponentProps.ts +14 -0
  199. package/src/native/cell-container/CellContainer.ts +7 -0
  200. package/src/native/cell-container/CellContainer.web.tsx +9 -0
  201. package/src/utils/AverageWindow.ts +49 -0
  202. package/src/utils/PlatformHelper.ts +16 -0
  203. package/src/utils/PlatformHelper.web.ts +20 -0
  204. package/src/viewability/ViewToken.ts +7 -0
  205. package/src/viewability/ViewabilityHelper.ts +162 -0
  206. package/src/viewability/ViewabilityManager.ts +133 -0
@@ -0,0 +1,34 @@
1
+ import React from "react";
2
+ import { BlankAreaEvent } from "../native/auto-layout/AutoLayoutView";
3
+ import FlashList from "../FlashList";
4
+ export interface BlankAreaTrackerResult {
5
+ /**
6
+ * Max blank area displayed
7
+ */
8
+ maxBlankArea: number;
9
+ /**
10
+ * Sum of all blank area values across all frames
11
+ */
12
+ cumulativeBlankArea: number;
13
+ }
14
+ export interface BlankAreaTrackerConfig {
15
+ /**
16
+ * When set to true the hook will also sum all negative blank area values.
17
+ * Blank area is negative when list is able to draw faster than the scroll speed.
18
+ */
19
+ sumNegativeValues?: boolean;
20
+ /**
21
+ * By default, the hook ignores blank events for 1s after the list load. This value can be changed using this parameter.
22
+ * Please note that this duration kicks in after the list has loaded and not after the first scroll.
23
+ */
24
+ startDelayInMs?: number;
25
+ }
26
+ /**
27
+ * Can be used to track visible blank area in production
28
+ * @param flashListRef Ref to the FlashList component
29
+ * @param onBlankAreaChange This event handler will be called when the blank area changes
30
+ * @param config additional configuration for the blank area tracker
31
+ * @returns blankAreaTrackerResult - maxBlankArea, cumulativeBlankArea this object is mutated and kept up to date. Also returns a callback that needs to be forwarded to FlashList.
32
+ */
33
+ export declare function useBlankAreaTracker(flashListRef: React.RefObject<FlashList<any>>, onBlankAreaChange?: (value: BlankAreaTrackerResult) => void, config?: BlankAreaTrackerConfig): [BlankAreaTrackerResult, (event: BlankAreaEvent) => void];
34
+ //# sourceMappingURL=useBlankAreaTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBlankAreaTracker.d.ts","sourceRoot":"","sources":["../../src/benchmark/useBlankAreaTracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AACD,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAC7C,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,EAC3D,MAAM,CAAC,EAAE,sBAAsB,GAC9B,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC,CAwC3D"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useBlankAreaTracker = void 0;
4
+ var react_1 = require("react");
5
+ /**
6
+ * Can be used to track visible blank area in production
7
+ * @param flashListRef Ref to the FlashList component
8
+ * @param onBlankAreaChange This event handler will be called when the blank area changes
9
+ * @param config additional configuration for the blank area tracker
10
+ * @returns blankAreaTrackerResult - maxBlankArea, cumulativeBlankArea this object is mutated and kept up to date. Also returns a callback that needs to be forwarded to FlashList.
11
+ */
12
+ function useBlankAreaTracker(flashListRef, onBlankAreaChange, config) {
13
+ var _a;
14
+ var startDelay = (_a = config === null || config === void 0 ? void 0 : config.startDelayInMs) !== null && _a !== void 0 ? _a : 1000;
15
+ var blankAreaResult = (0, react_1.useRef)({
16
+ maxBlankArea: 0,
17
+ cumulativeBlankArea: 0,
18
+ }).current;
19
+ var waitOperations = (0, react_1.useRef)({ inProgress: false, complete: false }).current;
20
+ var onBlankAreaChangeRef = (0, react_1.useRef)(onBlankAreaChange);
21
+ onBlankAreaChangeRef.current = onBlankAreaChange;
22
+ var blankAreaTracker = (0, react_1.useCallback)(function (event) {
23
+ var _a, _b;
24
+ // we're ignoring some of the events that will be fired on list load
25
+ // initial events are fired on mount and thus, this won't lead to missing events during scroll
26
+ if (!waitOperations.complete && startDelay > 0) {
27
+ if (!waitOperations.inProgress) {
28
+ waitOperations.inProgress = true;
29
+ setTimeout(function () {
30
+ waitOperations.complete = true;
31
+ }, startDelay);
32
+ }
33
+ return;
34
+ }
35
+ var rlv = (_a = flashListRef.current) === null || _a === void 0 ? void 0 : _a.recyclerlistview_unsafe;
36
+ var horizontal = Boolean((_b = flashListRef.current) === null || _b === void 0 ? void 0 : _b.props.horizontal);
37
+ if (rlv) {
38
+ processBlankAreaChange(rlv, horizontal, blankAreaResult, event, onBlankAreaChangeRef.current, config);
39
+ }
40
+ },
41
+ // eslint-disable-next-line react-hooks/exhaustive-deps
42
+ [flashListRef]);
43
+ return [blankAreaResult, blankAreaTracker];
44
+ }
45
+ exports.useBlankAreaTracker = useBlankAreaTracker;
46
+ function processBlankAreaChange(rlv, horizontal, blankAreaResult, event, onBlankAreaChange, config) {
47
+ var listSize = horizontal
48
+ ? rlv.getRenderedSize().width
49
+ : rlv.getRenderedSize().height;
50
+ var contentSize = horizontal
51
+ ? rlv.getContentDimension().width
52
+ : rlv.getContentDimension().height;
53
+ // ignores blank events when there isn't enough content to fill the list
54
+ if (contentSize > listSize) {
55
+ var lastMaxBlankArea = blankAreaResult.maxBlankArea;
56
+ var lastCumulativeBlankArea = blankAreaResult.cumulativeBlankArea;
57
+ blankAreaResult.maxBlankArea = Math.max(blankAreaResult.maxBlankArea, event.blankArea, 0);
58
+ blankAreaResult.cumulativeBlankArea += (config === null || config === void 0 ? void 0 : config.sumNegativeValues)
59
+ ? event.blankArea
60
+ : Math.max(event.blankArea, 0);
61
+ if (lastCumulativeBlankArea !== blankAreaResult.cumulativeBlankArea ||
62
+ lastMaxBlankArea !== blankAreaResult.maxBlankArea) {
63
+ onBlankAreaChange === null || onBlankAreaChange === void 0 ? void 0 : onBlankAreaChange(blankAreaResult);
64
+ }
65
+ }
66
+ }
67
+ //# sourceMappingURL=useBlankAreaTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBlankAreaTracker.js","sourceRoot":"","sources":["../../src/benchmark/useBlankAreaTracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Increases the data size by duplicating it, it's kept in hook format so that in future we can add auto pagination support.
3
+ * If you're using this with FlatList then make sure you remove `keyExtractor` because this method might duplicate ids that might be in the data.
4
+ * @param data The data to duplicate
5
+ * @param count Final count of data to be returned from this hook
6
+ * @returns Multiplied data.
7
+ */
8
+ export declare function useDataMultiplier<T>(data: T[], count: number): [T[]];
9
+ //# sourceMappingURL=useDataMultiplier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDataMultiplier.d.ts","sourceRoot":"","sources":["../../src/benchmark/useDataMultiplier.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAWpE"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useDataMultiplier = void 0;
4
+ var tslib_1 = require("tslib");
5
+ /**
6
+ * Increases the data size by duplicating it, it's kept in hook format so that in future we can add auto pagination support.
7
+ * If you're using this with FlatList then make sure you remove `keyExtractor` because this method might duplicate ids that might be in the data.
8
+ * @param data The data to duplicate
9
+ * @param count Final count of data to be returned from this hook
10
+ * @returns Multiplied data.
11
+ */
12
+ function useDataMultiplier(data, count) {
13
+ var len = data.length;
14
+ var arr = new Array(count);
15
+ var isObject = false;
16
+ if (typeof data[0] === "object") {
17
+ isObject = true;
18
+ }
19
+ for (var i = 0; i < count; i++) {
20
+ arr[i] = isObject ? tslib_1.__assign({}, data[i % len]) : data[i % len];
21
+ }
22
+ return [arr];
23
+ }
24
+ exports.useDataMultiplier = useDataMultiplier;
25
+ //# sourceMappingURL=useDataMultiplier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDataMultiplier.js","sourceRoot":"","sources":["../../src/benchmark/useDataMultiplier.ts"],"names":[],"mappings":";;;;AAAA;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAI,IAAS,EAAE,KAAa;IAC3D,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IACxB,IAAM,GAAG,GAAG,IAAI,KAAK,CAAI,KAAK,CAAC,CAAC;IAChC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;QAC/B,QAAQ,GAAG,IAAI,CAAC;KACjB;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;QAC9B,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,sBAAM,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;KAC1D;IACD,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAXD,8CAWC"}
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import { FlatList } from "react-native";
3
+ import { BenchmarkParams, BenchmarkResult } from "./useBenchmark";
4
+ export interface FlatListBenchmarkParams extends BenchmarkParams {
5
+ targetOffset: number;
6
+ }
7
+ /**
8
+ * Runs the benchmark on FlatList and calls the callback method with the result.
9
+ * Target offset is mandatory in params.
10
+ * It's recommended to remove pagination while running the benchmark. Removing the onEndReached callback is the easiest way to do that.
11
+ */
12
+ export declare function useFlatListBenchmark(flatListRef: React.RefObject<FlatList<any>>, callback: (benchmarkResult: BenchmarkResult) => void, params: FlatListBenchmarkParams): never[];
13
+ //# sourceMappingURL=useFlatListBenchmark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFlatListBenchmark.d.ts","sourceRoot":"","sources":["../../src/benchmark/useFlatListBenchmark.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIxC,OAAO,EACL,eAAe,EACf,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC3C,QAAQ,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,IAAI,EACpD,MAAM,EAAE,uBAAuB,WAsChC"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useFlatListBenchmark = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = require("react");
6
+ var AutoScrollHelper_1 = require("./AutoScrollHelper");
7
+ var JSFPSMonitor_1 = require("./JSFPSMonitor");
8
+ var useBenchmark_1 = require("./useBenchmark");
9
+ /**
10
+ * Runs the benchmark on FlatList and calls the callback method with the result.
11
+ * Target offset is mandatory in params.
12
+ * It's recommended to remove pagination while running the benchmark. Removing the onEndReached callback is the easiest way to do that.
13
+ */
14
+ function useFlatListBenchmark(flatListRef, callback, params) {
15
+ var _this = this;
16
+ (0, react_1.useEffect)(function () {
17
+ var _a;
18
+ var cancellable = new AutoScrollHelper_1.Cancellable();
19
+ if (flatListRef.current) {
20
+ if (!(Number((_a = flatListRef.current.props.data) === null || _a === void 0 ? void 0 : _a.length) > 0)) {
21
+ throw new Error("Data is empty, cannot run benchmark");
22
+ }
23
+ }
24
+ var cancelTimeout = setTimeout(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
25
+ var jsFPSMonitor, i, jsProfilerResponse, result;
26
+ return tslib_1.__generator(this, function (_a) {
27
+ switch (_a.label) {
28
+ case 0:
29
+ jsFPSMonitor = new JSFPSMonitor_1.JSFPSMonitor();
30
+ jsFPSMonitor.startTracking();
31
+ i = 0;
32
+ _a.label = 1;
33
+ case 1:
34
+ if (!(i < (params.repeatCount || 1))) return [3 /*break*/, 4];
35
+ return [4 /*yield*/, runScrollBenchmark(flatListRef, params.targetOffset, cancellable, params.speedMultiplier || 1)];
36
+ case 2:
37
+ _a.sent();
38
+ _a.label = 3;
39
+ case 3:
40
+ i++;
41
+ return [3 /*break*/, 1];
42
+ case 4:
43
+ jsProfilerResponse = jsFPSMonitor.stopAndGetData();
44
+ result = {
45
+ js: jsProfilerResponse,
46
+ suggestions: [],
47
+ interrupted: cancellable.isCancelled(),
48
+ };
49
+ if (!cancellable.isCancelled()) {
50
+ result.formattedString = (0, useBenchmark_1.getFormattedString)(result);
51
+ }
52
+ callback(result);
53
+ return [2 /*return*/];
54
+ }
55
+ });
56
+ }); }, params.startDelayInMs || 3000);
57
+ return function () {
58
+ clearTimeout(cancelTimeout);
59
+ cancellable.cancel();
60
+ };
61
+ // eslint-disable-next-line react-hooks/exhaustive-deps
62
+ }, []);
63
+ return [];
64
+ }
65
+ exports.useFlatListBenchmark = useFlatListBenchmark;
66
+ /**
67
+ * Scrolls to the target offset and then back to 0
68
+ */
69
+ function runScrollBenchmark(flatListRef, targetOffset, cancellable, scrollSpeedMultiplier) {
70
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
71
+ var horizontal_1, fromX, fromY, toX, toY, scrollNow;
72
+ return tslib_1.__generator(this, function (_a) {
73
+ switch (_a.label) {
74
+ case 0:
75
+ if (!flatListRef.current) return [3 /*break*/, 3];
76
+ horizontal_1 = flatListRef.current.props.horizontal;
77
+ fromX = 0;
78
+ fromY = 0;
79
+ toX = horizontal_1 ? targetOffset : 0;
80
+ toY = horizontal_1 ? 0 : targetOffset;
81
+ scrollNow = function (x, y) {
82
+ var _a;
83
+ (_a = flatListRef.current) === null || _a === void 0 ? void 0 : _a.scrollToOffset({
84
+ offset: horizontal_1 ? x : y,
85
+ animated: false,
86
+ });
87
+ };
88
+ return [4 /*yield*/, (0, AutoScrollHelper_1.autoScroll)(scrollNow, fromX, fromY, toX, toY, scrollSpeedMultiplier, cancellable)];
89
+ case 1:
90
+ _a.sent();
91
+ return [4 /*yield*/, (0, AutoScrollHelper_1.autoScroll)(scrollNow, toX, toY, fromX, fromY, scrollSpeedMultiplier, cancellable)];
92
+ case 2:
93
+ _a.sent();
94
+ _a.label = 3;
95
+ case 3: return [2 /*return*/];
96
+ }
97
+ });
98
+ });
99
+ }
100
+ //# sourceMappingURL=useFlatListBenchmark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFlatListBenchmark.js","sourceRoot":"","sources":["../../src/benchmark/useFlatListBenchmark.ts"],"names":[],"mappings":";;;;AAAA,+BAAkC;AAGlC,uDAA6D;AAC7D,+CAA8C;AAC9C,+CAIwB;AAMxB;;;;GAIG;AACH,SAAgB,oBAAoB,CAClC,WAA2C,EAC3C,QAAoD,EACpD,MAA+B;IAHjC,iBAyCC;IApCC,IAAA,iBAAS,EAAC;;QACR,IAAM,WAAW,GAAG,IAAI,8BAAW,EAAE,CAAC;QACtC,IAAI,WAAW,CAAC,OAAO,EAAE;YACvB,IAAI,CAAC,CAAC,MAAM,CAAC,MAAA,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,0CAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBACzD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;aACxD;SACF;QACD,IAAM,aAAa,GAAG,UAAU,CAAC;;;;;wBACzB,YAAY,GAAG,IAAI,2BAAY,EAAE,CAAC;wBACxC,YAAY,CAAC,aAAa,EAAE,CAAC;wBACpB,CAAC,GAAG,CAAC;;;6BAAE,CAAA,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAA;wBAC3C,qBAAM,kBAAkB,CACtB,WAAW,EACX,MAAM,CAAC,YAAY,EACnB,WAAW,EACX,MAAM,CAAC,eAAe,IAAI,CAAC,CAC5B,EAAA;;wBALD,SAKC,CAAC;;;wBAN2C,CAAC,EAAE,CAAA;;;wBAQ5C,kBAAkB,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;wBACnD,MAAM,GAAoB;4BAC9B,EAAE,EAAE,kBAAkB;4BACtB,WAAW,EAAE,EAAE;4BACf,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE;yBACvC,CAAC;wBACF,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE;4BAC9B,MAAM,CAAC,eAAe,GAAG,IAAA,iCAAkB,EAAC,MAAM,CAAC,CAAC;yBACrD;wBACD,QAAQ,CAAC,MAAM,CAAC,CAAC;;;;aAClB,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;QAClC,OAAO;YACL,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,WAAW,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC,CAAC;QACF,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,EAAE,CAAC;AACZ,CAAC;AAzCD,oDAyCC;AAED;;GAEG;AACH,SAAe,kBAAkB,CAC/B,WAA8D,EAC9D,YAAoB,EACpB,WAAwB,EACxB,qBAA6B;;;;;;yBAEzB,WAAW,CAAC,OAAO,EAAnB,wBAAmB;oBACf,eAAa,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;oBAElD,KAAK,GAAG,CAAC,CAAC;oBACV,KAAK,GAAG,CAAC,CAAC;oBACV,GAAG,GAAG,YAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpC,GAAG,GAAG,YAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;oBAEpC,SAAS,GAAG,UAAC,CAAS,EAAE,CAAS;;wBACrC,MAAA,WAAW,CAAC,OAAO,0CAAE,cAAc,CAAC;4BAClC,MAAM,EAAE,YAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC1B,QAAQ,EAAE,KAAK;yBAChB,CAAC,CAAC;oBACL,CAAC,CAAC;oBAEF,qBAAM,IAAA,6BAAU,EACd,SAAS,EACT,KAAK,EACL,KAAK,EACL,GAAG,EACH,GAAG,EACH,qBAAqB,EACrB,WAAW,CACZ,EAAA;;oBARD,SAQC,CAAC;oBACF,qBAAM,IAAA,6BAAU,EACd,SAAS,EACT,GAAG,EACH,GAAG,EACH,KAAK,EACL,KAAK,EACL,qBAAqB,EACrB,WAAW,CACZ,EAAA;;oBARD,SAQC,CAAC;;;;;;CAEL"}
@@ -0,0 +1,8 @@
1
+ export default class CustomError extends Error {
2
+ constructor(exception: Exception);
3
+ }
4
+ export interface Exception {
5
+ type: string;
6
+ message: string;
7
+ }
8
+ //# sourceMappingURL=CustomError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomError.d.ts","sourceRoot":"","sources":["../../src/errors/CustomError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,KAAK;gBAChC,SAAS,EAAE,SAAS;CAIjC;AACD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var CustomError = /** @class */ (function (_super) {
5
+ tslib_1.__extends(CustomError, _super);
6
+ function CustomError(exception) {
7
+ var _this = _super.call(this, "".concat(exception.type, ": ").concat(exception.message)) || this;
8
+ _this.name = exception.type;
9
+ return _this;
10
+ }
11
+ return CustomError;
12
+ }(Error));
13
+ exports.default = CustomError;
14
+ //# sourceMappingURL=CustomError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomError.js","sourceRoot":"","sources":["../../src/errors/CustomError.ts"],"names":[],"mappings":";;;AAAA;IAAyC,uCAAK;IAC5C,qBAAY,SAAoB;QAAhC,YACE,kBAAM,UAAG,SAAS,CAAC,IAAI,eAAK,SAAS,CAAC,OAAO,CAAE,CAAC,SAEjD;QADC,KAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;;IAC7B,CAAC;IACH,kBAAC;AAAD,CAAC,AALD,CAAyC,KAAK,GAK7C"}
@@ -0,0 +1,20 @@
1
+ declare const ExceptionList: {
2
+ refreshBooleanMissing: {
3
+ message: string;
4
+ type: string;
5
+ };
6
+ stickyWhileHorizontalNotSupported: {
7
+ message: string;
8
+ type: string;
9
+ };
10
+ columnsWhileHorizontalNotSupported: {
11
+ message: string;
12
+ type: string;
13
+ };
14
+ multipleViewabilityThresholdTypesNotSupported: {
15
+ message: string;
16
+ type: string;
17
+ };
18
+ };
19
+ export default ExceptionList;
20
+ //# sourceMappingURL=ExceptionList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExceptionList.d.ts","sourceRoot":"","sources":["../../src/errors/ExceptionList.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;CAqBlB,CAAC;AACF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var ExceptionList = {
4
+ refreshBooleanMissing: {
5
+ message: "`refreshing` prop must be set as a boolean in order to use `onRefresh`, but got `undefined`.",
6
+ type: "InvariantViolation",
7
+ },
8
+ stickyWhileHorizontalNotSupported: {
9
+ message: "sticky headers are not supported when list is in horizontal mode. Remove `stickyHeaderIndices` prop.",
10
+ type: "NotSupportedException",
11
+ },
12
+ columnsWhileHorizontalNotSupported: {
13
+ message: "numColumns is not supported when list is in horizontal mode. Please remove or set numColumns to 1.",
14
+ type: "NotSupportedException",
15
+ },
16
+ multipleViewabilityThresholdTypesNotSupported: {
17
+ message: "You can set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold. Specifying both is not supported.",
18
+ type: "MultipleViewabilityThresholdTypesException",
19
+ },
20
+ };
21
+ exports.default = ExceptionList;
22
+ //# sourceMappingURL=ExceptionList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExceptionList.js","sourceRoot":"","sources":["../../src/errors/ExceptionList.ts"],"names":[],"mappings":";;AAAA,IAAM,aAAa,GAAG;IACpB,qBAAqB,EAAE;QACrB,OAAO,EACL,8FAA8F;QAChG,IAAI,EAAE,oBAAoB;KAC3B;IACD,iCAAiC,EAAE;QACjC,OAAO,EACL,sGAAsG;QACxG,IAAI,EAAE,uBAAuB;KAC9B;IACD,kCAAkC,EAAE;QAClC,OAAO,EACL,oGAAoG;QACtG,IAAI,EAAE,uBAAuB;KAC9B;IACD,6CAA6C,EAAE;QAC7C,OAAO,EACL,+HAA+H;QACjI,IAAI,EAAE,4CAA4C;KACnD;CACF,CAAC;AACF,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ declare const WarningList: {
2
+ styleUnsupported: string;
3
+ styleContentContainerUnsupported: string;
4
+ styleUnsupportedPaddingType: string;
5
+ unusableRenderedSize: string;
6
+ missingKeyExtractor: string;
7
+ estimatedItemSizeMissingWarning: string;
8
+ };
9
+ export default WarningList;
10
+ //# sourceMappingURL=Warnings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Warnings.d.ts","sourceRoot":"","sources":["../../src/errors/Warnings.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,WAAW;;;;;;;CAgBhB,CAAC;AACF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var WarningList = {
4
+ styleUnsupported: "You have passed a style to FlashList. This list doesn't support styling, use contentContainerStyle or wrap the list in a parent and apply style to it instead.",
5
+ styleContentContainerUnsupported: "FlashList only supports padding related props and backgroundColor in contentContainerStyle." +
6
+ " Please remove other values as they're not used. In case of vertical lists horizontal padding is ignored and vice versa, if you need it apply padding to your items instead.",
7
+ styleUnsupportedPaddingType: "FlashList will ignore horizontal padding in case of vertical lists and vertical padding if the list is horizontal. If you need to have it apply relevant padding to your items instead.",
8
+ unusableRenderedSize: "FlashList's rendered size is not usable. Either the height or width is too small (<2px). " +
9
+ "Please make sure that the parent view of the list has a valid size. FlashList will match the size of the parent.",
10
+ missingKeyExtractor: "FlashList requires a keyExtractor prop to be defined when animating elements. Without it, the animations will not run as expected.",
11
+ estimatedItemSizeMissingWarning: "estimatedItemSize FlashList prop is not defined - based on current configuration you can set it to @size to optimize list performance. " +
12
+ "Refer to FlashList documentation for more details.",
13
+ };
14
+ exports.default = WarningList;
15
+ //# sourceMappingURL=Warnings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Warnings.js","sourceRoot":"","sources":["../../src/errors/Warnings.ts"],"names":[],"mappings":";;AAAA,IAAM,WAAW,GAAG;IAClB,gBAAgB,EACd,gKAAgK;IAClK,gCAAgC,EAC9B,6FAA6F;QAC7F,8KAA8K;IAChL,2BAA2B,EACzB,yLAAyL;IAC3L,oBAAoB,EAClB,2FAA2F;QAC3F,kHAAkH;IACpH,mBAAmB,EACjB,oIAAoI;IACtI,+BAA+B,EAC7B,yIAAyI;QACzI,oDAAoD;CACvD,CAAC;AACF,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,13 @@
1
+ export { default as FlashList } from "./FlashList";
2
+ export { FlashListProps, ContentStyle, ListRenderItem, ListRenderItemInfo, } from "./FlashListProps";
3
+ export { default as AnimatedFlashList } from "./AnimatedFlashList";
4
+ export { useOnNativeBlankAreaEvents, BlankAreaEventHandler, BlankAreaEvent, } from "./native/auto-layout/AutoLayoutView";
5
+ export { useBenchmark, BenchmarkParams, BenchmarkResult, } from "./benchmark/useBenchmark";
6
+ export { useDataMultiplier } from "./benchmark/useDataMultiplier";
7
+ export { useFlatListBenchmark, FlatListBenchmarkParams, } from "./benchmark/useFlatListBenchmark";
8
+ export { useBlankAreaTracker, BlankAreaTrackerResult, BlankAreaTrackerConfig, } from "./benchmark/useBlankAreaTracker";
9
+ export { JSFPSMonitor, JSFPSResult } from "./benchmark/JSFPSMonitor";
10
+ export { autoScroll, Cancellable } from "./benchmark/AutoScrollHelper";
11
+ export { default as ViewToken } from "./viewability/ViewToken";
12
+ export { default as CellContainer } from "./native/cell-container/CellContainer";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,cAAc,EACd,YAAY,EACZ,cAAc,EACd,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,cAAc,GACf,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,uCAAuC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CellContainer = exports.Cancellable = exports.autoScroll = exports.JSFPSMonitor = exports.useBlankAreaTracker = exports.useFlatListBenchmark = exports.useDataMultiplier = exports.useBenchmark = exports.useOnNativeBlankAreaEvents = exports.AnimatedFlashList = exports.FlashList = void 0;
7
+ var FlashList_1 = require("./FlashList");
8
+ Object.defineProperty(exports, "FlashList", { enumerable: true, get: function () { return __importDefault(FlashList_1).default; } });
9
+ var AnimatedFlashList_1 = require("./AnimatedFlashList");
10
+ Object.defineProperty(exports, "AnimatedFlashList", { enumerable: true, get: function () { return __importDefault(AnimatedFlashList_1).default; } });
11
+ var AutoLayoutView_1 = require("./native/auto-layout/AutoLayoutView");
12
+ Object.defineProperty(exports, "useOnNativeBlankAreaEvents", { enumerable: true, get: function () { return AutoLayoutView_1.useOnNativeBlankAreaEvents; } });
13
+ var useBenchmark_1 = require("./benchmark/useBenchmark");
14
+ Object.defineProperty(exports, "useBenchmark", { enumerable: true, get: function () { return useBenchmark_1.useBenchmark; } });
15
+ var useDataMultiplier_1 = require("./benchmark/useDataMultiplier");
16
+ Object.defineProperty(exports, "useDataMultiplier", { enumerable: true, get: function () { return useDataMultiplier_1.useDataMultiplier; } });
17
+ var useFlatListBenchmark_1 = require("./benchmark/useFlatListBenchmark");
18
+ Object.defineProperty(exports, "useFlatListBenchmark", { enumerable: true, get: function () { return useFlatListBenchmark_1.useFlatListBenchmark; } });
19
+ var useBlankAreaTracker_1 = require("./benchmark/useBlankAreaTracker");
20
+ Object.defineProperty(exports, "useBlankAreaTracker", { enumerable: true, get: function () { return useBlankAreaTracker_1.useBlankAreaTracker; } });
21
+ var JSFPSMonitor_1 = require("./benchmark/JSFPSMonitor");
22
+ Object.defineProperty(exports, "JSFPSMonitor", { enumerable: true, get: function () { return JSFPSMonitor_1.JSFPSMonitor; } });
23
+ var AutoScrollHelper_1 = require("./benchmark/AutoScrollHelper");
24
+ Object.defineProperty(exports, "autoScroll", { enumerable: true, get: function () { return AutoScrollHelper_1.autoScroll; } });
25
+ Object.defineProperty(exports, "Cancellable", { enumerable: true, get: function () { return AutoScrollHelper_1.Cancellable; } });
26
+ var CellContainer_1 = require("./native/cell-container/CellContainer");
27
+ Object.defineProperty(exports, "CellContainer", { enumerable: true, get: function () { return __importDefault(CellContainer_1).default; } });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAO7B,yDAAmE;AAA1D,uIAAA,OAAO,OAAqB;AACrC,sEAI6C;AAH3C,4HAAA,0BAA0B,OAAA;AAI5B,yDAIkC;AAHhC,4GAAA,YAAY,OAAA;AAId,mEAAkE;AAAzD,sHAAA,iBAAiB,OAAA;AAC1B,yEAG0C;AAFxC,4HAAA,oBAAoB,OAAA;AAGtB,uEAIyC;AAHvC,0HAAA,mBAAmB,OAAA;AAIrB,yDAAqE;AAA5D,4GAAA,YAAY,OAAA;AACrB,iEAAuE;AAA9D,8GAAA,UAAU,OAAA;AAAE,+GAAA,WAAW,OAAA;AAEhC,uEAAiF;AAAxE,+HAAA,OAAO,OAAiB"}
@@ -0,0 +1,21 @@
1
+ import React from "react";
2
+ import { LayoutChangeEvent } from "react-native";
3
+ export declare type BlankAreaEventHandler = (blankAreaEvent: BlankAreaEvent) => void;
4
+ export declare const useOnNativeBlankAreaEvents: (onBlankAreaEvent: (blankAreaEvent: BlankAreaEvent) => void) => void;
5
+ export interface BlankAreaEvent {
6
+ offsetStart: number;
7
+ offsetEnd: number;
8
+ blankArea: number;
9
+ }
10
+ export interface AutoLayoutViewProps {
11
+ onBlankAreaEvent?: BlankAreaEventHandler;
12
+ onLayout?: (event: LayoutChangeEvent) => void;
13
+ disableAutoLayout?: boolean;
14
+ }
15
+ declare class AutoLayoutView extends React.Component<AutoLayoutViewProps> {
16
+ private onBlankAreaEventCallback;
17
+ private broadcastBlankEvent;
18
+ render(): JSX.Element;
19
+ }
20
+ export default AutoLayoutView;
21
+ //# sourceMappingURL=AutoLayoutView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoLayoutView.d.ts","sourceRoot":"","sources":["../../../src/native/auto-layout/AutoLayoutView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAKjD,oBAAY,qBAAqB,GAAG,CAAC,cAAc,EAAE,cAAc,KAAK,IAAI,CAAC;AAG7E,eAAO,MAAM,0BAA0B,sCACF,cAAc,KAAK,IAAI,SAQ3D,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,cAAM,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC;IAC/D,OAAO,CAAC,wBAAwB,CAa9B;IAEF,OAAO,CAAC,mBAAmB;IAO3B,MAAM;CAcP;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useOnNativeBlankAreaEvents = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
6
+ var AutoLayoutViewNativeComponent_1 = tslib_1.__importDefault(require("./AutoLayoutViewNativeComponent"));
7
+ var listeners = [];
8
+ var useOnNativeBlankAreaEvents = function (onBlankAreaEvent) {
9
+ (0, react_1.useEffect)(function () {
10
+ listeners.push(onBlankAreaEvent);
11
+ return function () {
12
+ listeners.filter(function (callback) { return callback !== onBlankAreaEvent; });
13
+ };
14
+ }, [onBlankAreaEvent]);
15
+ };
16
+ exports.useOnNativeBlankAreaEvents = useOnNativeBlankAreaEvents;
17
+ var AutoLayoutView = /** @class */ (function (_super) {
18
+ tslib_1.__extends(AutoLayoutView, _super);
19
+ function AutoLayoutView() {
20
+ var _this = _super !== null && _super.apply(this, arguments) || this;
21
+ _this.onBlankAreaEventCallback = function (_a) {
22
+ var nativeEvent = _a.nativeEvent;
23
+ var blankArea = Math.max(nativeEvent.offsetStart, nativeEvent.offsetEnd);
24
+ var blankEventValue = {
25
+ blankArea: blankArea,
26
+ offsetStart: nativeEvent.offsetStart,
27
+ offsetEnd: nativeEvent.offsetEnd,
28
+ };
29
+ _this.broadcastBlankEvent(blankEventValue);
30
+ if (_this.props.onBlankAreaEvent) {
31
+ _this.props.onBlankAreaEvent(blankEventValue);
32
+ }
33
+ };
34
+ return _this;
35
+ }
36
+ AutoLayoutView.prototype.broadcastBlankEvent = function (value) {
37
+ var len = listeners.length;
38
+ for (var i = 0; i < len; i++) {
39
+ listeners[i](value);
40
+ }
41
+ };
42
+ AutoLayoutView.prototype.render = function () {
43
+ return (react_1.default.createElement(AutoLayoutViewNativeComponent_1.default, tslib_1.__assign({}, this.props, { onBlankAreaEvent: this.onBlankAreaEventCallback, enableInstrumentation: listeners.length !== 0 || Boolean(this.props.onBlankAreaEvent), disableAutoLayout: this.props.disableAutoLayout }), this.props.children));
44
+ };
45
+ return AutoLayoutView;
46
+ }(react_1.default.Component));
47
+ exports.default = AutoLayoutView;
48
+ //# sourceMappingURL=AutoLayoutView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoLayoutView.js","sourceRoot":"","sources":["../../../src/native/auto-layout/AutoLayoutView.tsx"],"names":[],"mappings":";;;;AAAA,qDAAyC;AAGzC,0GAA4E;AAI5E,IAAM,SAAS,GAA4B,EAAE,CAAC;AAEvC,IAAM,0BAA0B,GAAG,UACxC,gBAA0D;IAE1D,IAAA,iBAAS,EAAC;QACR,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACjC,OAAO;YACL,SAAS,CAAC,MAAM,CAAC,UAAC,QAAQ,IAAK,OAAA,QAAQ,KAAK,gBAAgB,EAA7B,CAA6B,CAAC,CAAC;QAChE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACzB,CAAC,CAAC;AATW,QAAA,0BAA0B,8BASrC;AAcF;IAA6B,0CAAoC;IAAjE;QAAA,qEAqCC;QApCS,8BAAwB,GAAG,UAAC,EAEjB;gBADjB,WAAW,iBAAA;YAEX,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;YAC3E,IAAM,eAAe,GAAG;gBACtB,SAAS,WAAA;gBACT,WAAW,EAAE,WAAW,CAAC,WAAW;gBACpC,SAAS,EAAE,WAAW,CAAC,SAAS;aACjC,CAAC;YACF,KAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;YAC1C,IAAI,KAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;gBAC/B,KAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;aAC9C;QACH,CAAC,CAAC;;IAuBJ,CAAC;IArBS,4CAAmB,GAA3B,UAA4B,KAAqB;QAC/C,IAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SACrB;IACH,CAAC;IAED,+BAAM,GAAN;QACE,OAAO,CACL,8BAAC,uCAA6B,uBACxB,IAAI,CAAC,KAAK,IACd,gBAAgB,EAAE,IAAI,CAAC,wBAAwB,EAC/C,qBAAqB,EACnB,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAEhE,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,KAE9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CACU,CACjC,CAAC;IACJ,CAAC;IACH,qBAAC;AAAD,CAAC,AArCD,CAA6B,eAAK,CAAC,SAAS,GAqC3C;AAED,kBAAe,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { AutoLayoutViewNativeComponentProps } from "./AutoLayoutViewNativeComponentProps";
2
+ declare const AutoLayoutViewNativeComponent: import("react-native").HostComponent<AutoLayoutViewNativeComponentProps>;
3
+ export default AutoLayoutViewNativeComponent;
4
+ //# sourceMappingURL=AutoLayoutViewNativeComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoLayoutViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/native/auto-layout/AutoLayoutViewNativeComponent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AAE1F,QAAA,MAAM,6BAA6B,0EAC2C,CAAC;AAC/E,eAAe,6BAA6B,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var react_native_1 = require("react-native");
4
+ var AutoLayoutViewNativeComponent = (0, react_native_1.requireNativeComponent)("AutoLayoutView");
5
+ exports.default = AutoLayoutViewNativeComponent;
6
+ //# sourceMappingURL=AutoLayoutViewNativeComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoLayoutViewNativeComponent.js","sourceRoot":"","sources":["../../../src/native/auto-layout/AutoLayoutViewNativeComponent.ts"],"names":[],"mappings":";;AAAA,6CAAsD;AAItD,IAAM,6BAA6B,GACjC,IAAA,qCAAsB,EAAqC,gBAAgB,CAAC,CAAC;AAC/E,kBAAe,6BAA6B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ import { AutoLayoutViewNativeComponentProps } from "./AutoLayoutViewNativeComponentProps";
3
+ declare const AutoLayoutViewNativeComponent: React.Component<AutoLayoutViewNativeComponentProps, {}, any>;
4
+ export default AutoLayoutViewNativeComponent;
5
+ //# sourceMappingURL=AutoLayoutViewNativeComponent.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoLayoutViewNativeComponent.web.d.ts","sourceRoot":"","sources":["../../../src/native/auto-layout/AutoLayoutViewNativeComponent.web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AAE1F,QAAA,MAAM,6BAA6B,8DACiC,CAAC;AACrE,eAAe,6BAA6B,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var react_native_1 = require("react-native");
4
+ var AutoLayoutViewNativeComponent = react_native_1.View;
5
+ exports.default = AutoLayoutViewNativeComponent;
6
+ //# sourceMappingURL=AutoLayoutViewNativeComponent.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoLayoutViewNativeComponent.web.js","sourceRoot":"","sources":["../../../src/native/auto-layout/AutoLayoutViewNativeComponent.web.ts"],"names":[],"mappings":";;AACA,6CAAoC;AAIpC,IAAM,6BAA6B,GACjC,mBAAkE,CAAC;AACrE,kBAAe,6BAA6B,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface OnBlankAreaEvent {
2
+ nativeEvent: {
3
+ offsetStart: number;
4
+ offsetEnd: number;
5
+ };
6
+ }
7
+ declare type OnBlankAreaEventHandler = (event: OnBlankAreaEvent) => void;
8
+ export interface AutoLayoutViewNativeComponentProps {
9
+ onBlankAreaEvent: OnBlankAreaEventHandler;
10
+ enableInstrumentation: boolean;
11
+ disableAutoLayout?: boolean;
12
+ }
13
+ export {};
14
+ //# sourceMappingURL=AutoLayoutViewNativeComponentProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoLayoutViewNativeComponentProps.d.ts","sourceRoot":"","sources":["../../../src/native/auto-layout/AutoLayoutViewNativeComponentProps.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,aAAK,uBAAuB,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAEjE,MAAM,WAAW,kCAAkC;IACjD,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=AutoLayoutViewNativeComponentProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoLayoutViewNativeComponentProps.js","sourceRoot":"","sources":["../../../src/native/auto-layout/AutoLayoutViewNativeComponentProps.ts"],"names":[],"mappings":""}