@tamagui/react-native-web-lite 1.116.2 → 1.116.3

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 (202) hide show
  1. package/dist/cjs/Batchinator/index.cjs +68 -0
  2. package/dist/cjs/Batchinator/index.js +57 -0
  3. package/dist/cjs/Batchinator/index.js.map +6 -0
  4. package/dist/cjs/Batchinator/index.native.js +92 -0
  5. package/dist/cjs/Batchinator/index.native.js.map +6 -0
  6. package/dist/cjs/FlatList.cjs +196 -0
  7. package/dist/cjs/FlatList.js +193 -0
  8. package/dist/cjs/FlatList.js.map +6 -0
  9. package/dist/cjs/FlatList.native.js +256 -0
  10. package/dist/cjs/FlatList.native.js.map +6 -0
  11. package/dist/cjs/InteractionManager/TaskQueue.cjs +88 -0
  12. package/dist/cjs/InteractionManager/TaskQueue.js +76 -0
  13. package/dist/cjs/InteractionManager/TaskQueue.js.map +6 -0
  14. package/dist/cjs/InteractionManager/TaskQueue.native.js +134 -0
  15. package/dist/cjs/InteractionManager/TaskQueue.native.js.map +6 -0
  16. package/dist/cjs/InteractionManager/index.cjs +114 -0
  17. package/dist/cjs/InteractionManager/index.js +95 -0
  18. package/dist/cjs/InteractionManager/index.js.map +6 -0
  19. package/dist/cjs/InteractionManager/index.native.js +99 -0
  20. package/dist/cjs/InteractionManager/index.native.js.map +6 -0
  21. package/dist/cjs/index.cjs +7 -7
  22. package/dist/cjs/index.js +6 -6
  23. package/dist/cjs/index.js.map +1 -1
  24. package/dist/cjs/index.native.js +6 -6
  25. package/dist/cjs/index.native.js.map +1 -1
  26. package/dist/cjs/vendor/react-native/FillRateHelper/index.cjs +138 -0
  27. package/dist/cjs/vendor/react-native/FillRateHelper/index.js +124 -0
  28. package/dist/cjs/vendor/react-native/FillRateHelper/index.js.map +6 -0
  29. package/dist/cjs/vendor/react-native/FillRateHelper/index.native.js +158 -0
  30. package/dist/cjs/vendor/react-native/FillRateHelper/index.native.js.map +6 -0
  31. package/dist/cjs/vendor/react-native/Utilities/clamp.cjs +29 -0
  32. package/dist/cjs/vendor/react-native/Utilities/clamp.js +24 -0
  33. package/dist/cjs/vendor/react-native/Utilities/clamp.js.map +6 -0
  34. package/dist/cjs/vendor/react-native/Utilities/clamp.native.js +25 -0
  35. package/dist/cjs/vendor/react-native/Utilities/clamp.native.js.map +6 -0
  36. package/dist/cjs/vendor/react-native/ViewabilityHelper.cjs +133 -0
  37. package/dist/cjs/vendor/react-native/ViewabilityHelper.js +144 -0
  38. package/dist/cjs/vendor/react-native/ViewabilityHelper.js.map +6 -0
  39. package/dist/cjs/vendor/react-native/ViewabilityHelper.native.js +199 -0
  40. package/dist/cjs/vendor/react-native/ViewabilityHelper.native.js.map +6 -0
  41. package/dist/cjs/vendor/react-native/VirtualizeUtils/index.cjs +106 -0
  42. package/dist/cjs/vendor/react-native/VirtualizeUtils/index.js +86 -0
  43. package/dist/cjs/vendor/react-native/VirtualizeUtils/index.js.map +6 -0
  44. package/dist/cjs/vendor/react-native/VirtualizeUtils/index.native.js +95 -0
  45. package/dist/cjs/vendor/react-native/VirtualizeUtils/index.native.js.map +6 -0
  46. package/dist/cjs/vendor/react-native/VirtualizedList/CellRenderMask.cjs +81 -0
  47. package/dist/cjs/vendor/react-native/VirtualizedList/CellRenderMask.js +84 -0
  48. package/dist/cjs/vendor/react-native/VirtualizedList/CellRenderMask.js.map +6 -0
  49. package/dist/cjs/vendor/react-native/VirtualizedList/CellRenderMask.native.js +125 -0
  50. package/dist/cjs/vendor/react-native/VirtualizedList/CellRenderMask.native.js.map +6 -0
  51. package/dist/cjs/vendor/react-native/VirtualizedList/ChildListCollection.cjs +56 -0
  52. package/dist/cjs/vendor/react-native/VirtualizedList/ChildListCollection.js +59 -0
  53. package/dist/cjs/vendor/react-native/VirtualizedList/ChildListCollection.js.map +6 -0
  54. package/dist/cjs/vendor/react-native/VirtualizedList/ChildListCollection.native.js +153 -0
  55. package/dist/cjs/vendor/react-native/VirtualizedList/ChildListCollection.native.js.map +6 -0
  56. package/dist/cjs/vendor/react-native/VirtualizedList/StateSafePureComponent.cjs +80 -0
  57. package/dist/cjs/vendor/react-native/VirtualizedList/StateSafePureComponent.js +74 -0
  58. package/dist/cjs/vendor/react-native/VirtualizedList/StateSafePureComponent.js.map +6 -0
  59. package/dist/cjs/vendor/react-native/VirtualizedList/StateSafePureComponent.native.js +163 -0
  60. package/dist/cjs/vendor/react-native/VirtualizedList/StateSafePureComponent.native.js.map +6 -0
  61. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListCellRenderer.cjs +164 -0
  62. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListCellRenderer.js +149 -0
  63. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListCellRenderer.js.map +6 -0
  64. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListCellRenderer.native.js +245 -0
  65. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListCellRenderer.native.js.map +6 -0
  66. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListContext.cjs +84 -0
  67. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListContext.js +72 -0
  68. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListContext.js.map +6 -0
  69. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListContext.native.js +85 -0
  70. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListContext.native.js.map +6 -0
  71. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListProps.cjs +16 -0
  72. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListProps.js +14 -0
  73. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListProps.js.map +6 -0
  74. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListProps.native.js +15 -0
  75. package/dist/cjs/vendor/react-native/VirtualizedList/VirtualizedListProps.native.js.map +6 -0
  76. package/dist/cjs/vendor/react-native/VirtualizedList/index.cjs +1003 -0
  77. package/dist/cjs/vendor/react-native/VirtualizedList/index.js +1021 -0
  78. package/dist/cjs/vendor/react-native/VirtualizedList/index.js.map +6 -0
  79. package/dist/cjs/vendor/react-native/VirtualizedList/index.native.js +1075 -0
  80. package/dist/cjs/vendor/react-native/VirtualizedList/index.native.js.map +6 -0
  81. package/dist/cjs/vendor/react-native/deepDiffer/index.cjs +41 -0
  82. package/dist/cjs/vendor/react-native/deepDiffer/index.js +47 -0
  83. package/dist/cjs/vendor/react-native/deepDiffer/index.js.map +6 -0
  84. package/dist/cjs/vendor/react-native/deepDiffer/index.native.js +48 -0
  85. package/dist/cjs/vendor/react-native/deepDiffer/index.native.js.map +6 -0
  86. package/dist/esm/Batchinator/index.js +33 -0
  87. package/dist/esm/Batchinator/index.js.map +6 -0
  88. package/dist/esm/Batchinator/index.mjs +34 -0
  89. package/dist/esm/Batchinator/index.mjs.map +1 -0
  90. package/dist/esm/Batchinator/index.native.js +67 -0
  91. package/dist/esm/Batchinator/index.native.js.map +6 -0
  92. package/dist/esm/FlatList.js +176 -0
  93. package/dist/esm/FlatList.js.map +6 -0
  94. package/dist/esm/FlatList.mjs +162 -0
  95. package/dist/esm/FlatList.mjs.map +1 -0
  96. package/dist/esm/FlatList.native.js +238 -0
  97. package/dist/esm/FlatList.native.js.map +6 -0
  98. package/dist/esm/InteractionManager/TaskQueue.js +60 -0
  99. package/dist/esm/InteractionManager/TaskQueue.js.map +6 -0
  100. package/dist/esm/InteractionManager/TaskQueue.mjs +65 -0
  101. package/dist/esm/InteractionManager/TaskQueue.mjs.map +1 -0
  102. package/dist/esm/InteractionManager/TaskQueue.native.js +117 -0
  103. package/dist/esm/InteractionManager/TaskQueue.native.js.map +6 -0
  104. package/dist/esm/InteractionManager/index.js +73 -0
  105. package/dist/esm/InteractionManager/index.js.map +6 -0
  106. package/dist/esm/InteractionManager/index.mjs +80 -0
  107. package/dist/esm/InteractionManager/index.mjs.map +1 -0
  108. package/dist/esm/InteractionManager/index.native.js +77 -0
  109. package/dist/esm/InteractionManager/index.native.js.map +6 -0
  110. package/dist/esm/index.js +2 -2
  111. package/dist/esm/index.mjs +2 -2
  112. package/dist/esm/index.native.js +2 -2
  113. package/dist/esm/vendor/react-native/FillRateHelper/index.js +108 -0
  114. package/dist/esm/vendor/react-native/FillRateHelper/index.js.map +6 -0
  115. package/dist/esm/vendor/react-native/FillRateHelper/index.mjs +115 -0
  116. package/dist/esm/vendor/react-native/FillRateHelper/index.mjs.map +1 -0
  117. package/dist/esm/vendor/react-native/FillRateHelper/index.native.js +141 -0
  118. package/dist/esm/vendor/react-native/FillRateHelper/index.native.js.map +6 -0
  119. package/dist/esm/vendor/react-native/Utilities/clamp.js +8 -0
  120. package/dist/esm/vendor/react-native/Utilities/clamp.js.map +6 -0
  121. package/dist/esm/vendor/react-native/Utilities/clamp.mjs +6 -0
  122. package/dist/esm/vendor/react-native/Utilities/clamp.mjs.map +1 -0
  123. package/dist/esm/vendor/react-native/Utilities/clamp.native.js +8 -0
  124. package/dist/esm/vendor/react-native/Utilities/clamp.native.js.map +6 -0
  125. package/dist/esm/vendor/react-native/ViewabilityHelper.js +128 -0
  126. package/dist/esm/vendor/react-native/ViewabilityHelper.js.map +6 -0
  127. package/dist/esm/vendor/react-native/ViewabilityHelper.mjs +110 -0
  128. package/dist/esm/vendor/react-native/ViewabilityHelper.mjs.map +1 -0
  129. package/dist/esm/vendor/react-native/ViewabilityHelper.native.js +182 -0
  130. package/dist/esm/vendor/react-native/ViewabilityHelper.native.js.map +6 -0
  131. package/dist/esm/vendor/react-native/VirtualizeUtils/index.js +70 -0
  132. package/dist/esm/vendor/react-native/VirtualizeUtils/index.js.map +6 -0
  133. package/dist/esm/vendor/react-native/VirtualizeUtils/index.mjs +80 -0
  134. package/dist/esm/vendor/react-native/VirtualizeUtils/index.mjs.map +1 -0
  135. package/dist/esm/vendor/react-native/VirtualizeUtils/index.native.js +71 -0
  136. package/dist/esm/vendor/react-native/VirtualizeUtils/index.native.js.map +6 -0
  137. package/dist/esm/vendor/react-native/VirtualizedList/CellRenderMask.js +68 -0
  138. package/dist/esm/vendor/react-native/VirtualizedList/CellRenderMask.js.map +6 -0
  139. package/dist/esm/vendor/react-native/VirtualizedList/CellRenderMask.mjs +58 -0
  140. package/dist/esm/vendor/react-native/VirtualizedList/CellRenderMask.mjs.map +1 -0
  141. package/dist/esm/vendor/react-native/VirtualizedList/CellRenderMask.native.js +104 -0
  142. package/dist/esm/vendor/react-native/VirtualizedList/CellRenderMask.native.js.map +6 -0
  143. package/dist/esm/vendor/react-native/VirtualizedList/ChildListCollection.js +43 -0
  144. package/dist/esm/vendor/react-native/VirtualizedList/ChildListCollection.js.map +6 -0
  145. package/dist/esm/vendor/react-native/VirtualizedList/ChildListCollection.mjs +33 -0
  146. package/dist/esm/vendor/react-native/VirtualizedList/ChildListCollection.mjs.map +1 -0
  147. package/dist/esm/vendor/react-native/VirtualizedList/ChildListCollection.native.js +136 -0
  148. package/dist/esm/vendor/react-native/VirtualizedList/ChildListCollection.native.js.map +6 -0
  149. package/dist/esm/vendor/react-native/VirtualizedList/StateSafePureComponent.js +51 -0
  150. package/dist/esm/vendor/react-native/VirtualizedList/StateSafePureComponent.js.map +6 -0
  151. package/dist/esm/vendor/react-native/VirtualizedList/StateSafePureComponent.mjs +46 -0
  152. package/dist/esm/vendor/react-native/VirtualizedList/StateSafePureComponent.mjs.map +1 -0
  153. package/dist/esm/vendor/react-native/VirtualizedList/StateSafePureComponent.native.js +139 -0
  154. package/dist/esm/vendor/react-native/VirtualizedList/StateSafePureComponent.native.js.map +6 -0
  155. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListCellRenderer.js +132 -0
  156. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListCellRenderer.js.map +6 -0
  157. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListCellRenderer.mjs +130 -0
  158. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListCellRenderer.mjs.map +1 -0
  159. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListCellRenderer.native.js +224 -0
  160. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListCellRenderer.native.js.map +6 -0
  161. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListContext.js +50 -0
  162. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListContext.js.map +6 -0
  163. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListContext.mjs +47 -0
  164. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListContext.mjs.map +1 -0
  165. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListContext.native.js +56 -0
  166. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListContext.native.js.map +6 -0
  167. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListProps.js +1 -0
  168. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListProps.js.map +6 -0
  169. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListProps.mjs +2 -0
  170. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListProps.mjs.map +1 -0
  171. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListProps.native.js +1 -0
  172. package/dist/esm/vendor/react-native/VirtualizedList/VirtualizedListProps.native.js.map +6 -0
  173. package/dist/esm/vendor/react-native/VirtualizedList/index.js +1016 -0
  174. package/dist/esm/vendor/react-native/VirtualizedList/index.js.map +6 -0
  175. package/dist/esm/vendor/react-native/VirtualizedList/index.mjs +969 -0
  176. package/dist/esm/vendor/react-native/VirtualizedList/index.mjs.map +1 -0
  177. package/dist/esm/vendor/react-native/VirtualizedList/index.native.js +1065 -0
  178. package/dist/esm/vendor/react-native/VirtualizedList/index.native.js.map +6 -0
  179. package/dist/esm/vendor/react-native/deepDiffer/index.js +31 -0
  180. package/dist/esm/vendor/react-native/deepDiffer/index.js.map +6 -0
  181. package/dist/esm/vendor/react-native/deepDiffer/index.mjs +18 -0
  182. package/dist/esm/vendor/react-native/deepDiffer/index.mjs.map +1 -0
  183. package/dist/esm/vendor/react-native/deepDiffer/index.native.js +31 -0
  184. package/dist/esm/vendor/react-native/deepDiffer/index.native.js.map +6 -0
  185. package/package.json +6 -6
  186. package/src/Batchinator/index.tsx +78 -0
  187. package/src/FlatList.tsx +330 -0
  188. package/src/InteractionManager/TaskQueue.tsx +114 -0
  189. package/src/InteractionManager/index.tsx +139 -0
  190. package/src/index.tsx +2 -2
  191. package/src/vendor/react-native/FillRateHelper/index.tsx +218 -0
  192. package/src/vendor/react-native/Utilities/clamp.ts +21 -0
  193. package/src/vendor/react-native/ViewabilityHelper.ts +291 -0
  194. package/src/vendor/react-native/VirtualizeUtils/index.tsx +212 -0
  195. package/src/vendor/react-native/VirtualizedList/CellRenderMask.ts +147 -0
  196. package/src/vendor/react-native/VirtualizedList/ChildListCollection.tsx +73 -0
  197. package/src/vendor/react-native/VirtualizedList/StateSafePureComponent.tsx +79 -0
  198. package/src/vendor/react-native/VirtualizedList/VirtualizedListCellRenderer.tsx +210 -0
  199. package/src/vendor/react-native/VirtualizedList/VirtualizedListContext.tsx +116 -0
  200. package/src/vendor/react-native/VirtualizedList/VirtualizedListProps.ts +130 -0
  201. package/src/vendor/react-native/VirtualizedList/index.tsx +1797 -0
  202. package/src/vendor/react-native/deepDiffer/index.tsx +56 -0
@@ -0,0 +1,1003 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf,
6
+ __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
26
+ value: mod,
27
+ enumerable: !0
28
+ }) : target, mod)),
29
+ __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
30
+ value: !0
31
+ }), mod);
32
+ var VirtualizedList_exports = {};
33
+ __export(VirtualizedList_exports, {
34
+ default: () => VirtualizedList_default
35
+ });
36
+ module.exports = __toCommonJS(VirtualizedList_exports);
37
+ var import_react_native_web_internals = require("@tamagui/react-native-web-internals"),
38
+ import_ViewabilityHelper = __toESM(require("../ViewabilityHelper.cjs")),
39
+ import_CellRenderMask = require("./CellRenderMask.cjs"),
40
+ import_StateSafePureComponent = __toESM(require("./StateSafePureComponent.cjs")),
41
+ import_VirtualizedListContext = require("./VirtualizedListContext.cjs"),
42
+ import_ScrollViewBase = __toESM(require("../../../ScrollView/ScrollViewBase.cjs")),
43
+ import_View = __toESM(require("../../../View/index.cjs")),
44
+ import_VirtualizedListCellRenderer = __toESM(require("./VirtualizedListCellRenderer.cjs")),
45
+ import_FillRateHelper = __toESM(require("../FillRateHelper/index.cjs")),
46
+ import_ChildListCollection = __toESM(require("./ChildListCollection.cjs")),
47
+ import_react = __toESM(require("react")),
48
+ import_clamp = __toESM(require("../Utilities/clamp.cjs")),
49
+ import_VirtualizeUtils = require("../VirtualizeUtils/index.cjs"),
50
+ import_Batchinator = __toESM(require("../../../Batchinator/index.cjs")),
51
+ import_RefreshControl = __toESM(require("../../../RefreshControl/index.cjs")),
52
+ import_jsx_runtime = require("react/jsx-runtime");
53
+ const __DEV__ = process.env.NODE_ENV !== "production",
54
+ ON_EDGE_REACHED_EPSILON = 1e-3;
55
+ let _usedIndexForKey = !1,
56
+ _keylessItemComponentName = "";
57
+ function horizontalOrDefault(horizontal) {
58
+ return horizontal ?? !1;
59
+ }
60
+ function initialNumToRenderOrDefault(initialNumToRender) {
61
+ return initialNumToRender ?? 10;
62
+ }
63
+ function maxToRenderPerBatchOrDefault(maxToRenderPerBatch) {
64
+ return maxToRenderPerBatch ?? 10;
65
+ }
66
+ function onStartReachedThresholdOrDefault(onStartReachedThreshold) {
67
+ return onStartReachedThreshold ?? 2;
68
+ }
69
+ function onEndReachedThresholdOrDefault(onEndReachedThreshold) {
70
+ return onEndReachedThreshold ?? 2;
71
+ }
72
+ function getScrollingThreshold(threshold, visibleLength) {
73
+ return threshold * visibleLength / 2;
74
+ }
75
+ function scrollEventThrottleOrDefault(scrollEventThrottle) {
76
+ return scrollEventThrottle ?? 50;
77
+ }
78
+ function windowSizeOrDefault(windowSize) {
79
+ return windowSize ?? 21;
80
+ }
81
+ function findLastWhere(arr, predicate) {
82
+ for (let i = arr.length - 1; i >= 0; i--) if (predicate(arr[i])) return arr[i];
83
+ return null;
84
+ }
85
+ class VirtualizedList extends import_StateSafePureComponent.default {
86
+ static contextType = import_VirtualizedListContext.VirtualizedListContext;
87
+ // scrollToEnd may be janky without getItemLayout prop
88
+ scrollToEnd(params) {
89
+ const animated = params ? params.animated : !0,
90
+ veryLast = this.props.getItemCount(this.props.data) - 1;
91
+ if (veryLast < 0) return;
92
+ const frame = this.__getFrameMetricsApprox(veryLast, this.props),
93
+ offset = Math.max(0, frame.offset + frame.length + this._footerLength - this._scrollMetrics.visibleLength);
94
+ if (this._scrollRef != null) {
95
+ if (this._scrollRef.scrollTo == null) {
96
+ console.warn("No scrollTo method provided. This may be because you have two nested VirtualizedLists with the same orientation, or because you are using a custom component that does not implement scrollTo.");
97
+ return;
98
+ }
99
+ this._scrollRef.scrollTo(horizontalOrDefault(this.props.horizontal) ? {
100
+ x: offset,
101
+ animated
102
+ } : {
103
+ y: offset,
104
+ animated
105
+ });
106
+ }
107
+ }
108
+ // scrollToIndex may be janky without getItemLayout prop
109
+ scrollToIndex(params) {
110
+ const {
111
+ data,
112
+ horizontal,
113
+ getItemCount,
114
+ getItemLayout,
115
+ onScrollToIndexFailed
116
+ } = this.props,
117
+ {
118
+ animated,
119
+ index,
120
+ viewOffset,
121
+ viewPosition
122
+ } = params;
123
+ if ((0, import_react_native_web_internals.invariant)(index >= 0, `scrollToIndex out of range: requested index ${index} but minimum is 0`), (0, import_react_native_web_internals.invariant)(getItemCount(data) >= 1, `scrollToIndex out of range: item length ${getItemCount(data)} but minimum is 1`), (0, import_react_native_web_internals.invariant)(index < getItemCount(data), `scrollToIndex out of range: requested index ${index} is out of 0 to ${getItemCount(data) - 1}`), !getItemLayout && index > this._highestMeasuredFrameIndex) {
124
+ (0, import_react_native_web_internals.invariant)(!!onScrollToIndexFailed, "scrollToIndex should be used in conjunction with getItemLayout or onScrollToIndexFailed, otherwise there is no way to know the location of offscreen indices or handle failures."), onScrollToIndexFailed({
125
+ averageItemLength: this._averageCellLength,
126
+ highestMeasuredFrameIndex: this._highestMeasuredFrameIndex,
127
+ index
128
+ });
129
+ return;
130
+ }
131
+ const frame = this.__getFrameMetricsApprox(Math.floor(index), this.props),
132
+ offset = Math.max(0,
133
+ // @ts-ignore
134
+ this._getOffsetApprox(index, this.props) - (viewPosition || 0) * (this._scrollMetrics.visibleLength - frame.length)) - (viewOffset || 0);
135
+ if (this._scrollRef != null) {
136
+ if (this._scrollRef.scrollTo == null) {
137
+ console.warn("No scrollTo method provided. This may be because you have two nested VirtualizedLists with the same orientation, or because you are using a custom component that does not implement scrollTo.");
138
+ return;
139
+ }
140
+ this._scrollRef.scrollTo(horizontal ? {
141
+ x: offset,
142
+ animated
143
+ } : {
144
+ y: offset,
145
+ animated
146
+ });
147
+ }
148
+ }
149
+ // scrollToItem may be janky without getItemLayout prop. Required linear scan through items -
150
+ // use scrollToIndex instead if possible.
151
+ scrollToItem(params) {
152
+ const {
153
+ item
154
+ } = params,
155
+ {
156
+ data,
157
+ getItem,
158
+ getItemCount
159
+ } = this.props,
160
+ itemCount = getItemCount(data);
161
+ for (let index = 0; index < itemCount; index++) if (getItem(data, index) === item) {
162
+ this.scrollToIndex({
163
+ ...params,
164
+ index
165
+ });
166
+ break;
167
+ }
168
+ }
169
+ /**
170
+ * Scroll to a specific content pixel offset in the list.
171
+ *
172
+ * Param `offset` expects the offset to scroll to.
173
+ * In case of `horizontal` is true, the offset is the x-value,
174
+ * in any other case the offset is the y-value.
175
+ *
176
+ * Param `animated` (`true` by default) defines whether the list
177
+ * should do an animation while scrolling.
178
+ */
179
+ scrollToOffset(params) {
180
+ const {
181
+ animated,
182
+ offset
183
+ } = params;
184
+ if (this._scrollRef != null) {
185
+ if (this._scrollRef.scrollTo == null) {
186
+ console.warn("No scrollTo method provided. This may be because you have two nested VirtualizedLists with the same orientation, or because you are using a custom component that does not implement scrollTo.");
187
+ return;
188
+ }
189
+ this._scrollRef.scrollTo(horizontalOrDefault(this.props.horizontal) ? {
190
+ x: offset,
191
+ animated
192
+ } : {
193
+ y: offset,
194
+ animated
195
+ });
196
+ }
197
+ }
198
+ recordInteraction() {
199
+ this._nestedChildLists.forEach(childList => {
200
+ childList.recordInteraction();
201
+ }), this._viewabilityTuples.forEach(t => {
202
+ t.viewabilityHelper.recordInteraction();
203
+ }), this._updateViewableItems(this.props, this.state.cellsAroundViewport);
204
+ }
205
+ flashScrollIndicators() {
206
+ this._scrollRef != null && this._scrollRef.flashScrollIndicators();
207
+ }
208
+ /**
209
+ * Provides a handle to the underlying scroll responder.
210
+ * Note that `this._scrollRef` might not be a `ScrollView`, so we
211
+ * need to check that it responds to `getScrollResponder` before calling it.
212
+ */
213
+ getScrollResponder() {
214
+ return this._scrollRef && this._scrollRef.getScrollResponder ? this._scrollRef.getScrollResponder() : null;
215
+ }
216
+ getScrollableNode() {
217
+ return this._scrollRef && this._scrollRef.getScrollableNode ? this._scrollRef.getScrollableNode() : this._scrollRef;
218
+ }
219
+ getScrollRef() {
220
+ return this._scrollRef && this._scrollRef.getScrollRef ? this._scrollRef.getScrollRef() : this._scrollRef;
221
+ }
222
+ _getCellKey() {
223
+ return this.context?.cellKey || "rootList";
224
+ }
225
+ _getScrollMetrics = () => this._scrollMetrics;
226
+ hasMore() {
227
+ return this._hasMore;
228
+ }
229
+ _getOutermostParentListRef = () => this._isNestedWithSameOrientation() ? this.context.getOutermostParentListRef() : this;
230
+ _registerAsNestedChild = childList => {
231
+ this._nestedChildLists.add(childList.ref, childList.cellKey), this._hasInteracted && childList.ref.recordInteraction();
232
+ };
233
+ _unregisterAsNestedChild = childList => {
234
+ this._nestedChildLists.remove(childList.ref);
235
+ };
236
+ invertedWheelEventHandler;
237
+ constructor(props) {
238
+ if (super(props), this._checkProps(props), this._fillRateHelper = new import_FillRateHelper.default(this._getFrameMetrics), this._updateCellsToRenderBatcher = new import_Batchinator.default(this._updateCellsToRender, this.props.updateCellsBatchingPeriod ?? 50), this.props.viewabilityConfigCallbackPairs) this._viewabilityTuples = this.props.viewabilityConfigCallbackPairs.map(pair => ({
239
+ viewabilityHelper: new import_ViewabilityHelper.default(pair.viewabilityConfig),
240
+ onViewableItemsChanged: pair.onViewableItemsChanged
241
+ }));else {
242
+ const {
243
+ onViewableItemsChanged,
244
+ viewabilityConfig
245
+ } = this.props;
246
+ onViewableItemsChanged && this._viewabilityTuples.push({
247
+ viewabilityHelper: new import_ViewabilityHelper.default(viewabilityConfig),
248
+ onViewableItemsChanged
249
+ });
250
+ }
251
+ const initialRenderRegion = VirtualizedList._initialRenderRegion(props);
252
+ this.state = {
253
+ cellsAroundViewport: initialRenderRegion,
254
+ renderMask: VirtualizedList._createRenderMask(props, initialRenderRegion)
255
+ }, this.invertedWheelEventHandler = ev => {
256
+ const scrollOffset = this.props.horizontal ? ev.target.scrollLeft : ev.target.scrollTop,
257
+ scrollLength = this.props.horizontal ? ev.target.scrollWidth : ev.target.scrollHeight,
258
+ clientLength = this.props.horizontal ? ev.target.clientWidth : ev.target.clientHeight,
259
+ isEventTargetScrollable = scrollLength > clientLength,
260
+ delta = this.props.horizontal ? ev.deltaX || ev.wheelDeltaX : ev.deltaY || ev.wheelDeltaY;
261
+ let leftoverDelta = delta;
262
+ isEventTargetScrollable && (leftoverDelta = delta < 0 ? Math.min(delta + scrollOffset, 0) : Math.max(delta - (scrollLength - clientLength - scrollOffset), 0));
263
+ const targetDelta = delta - leftoverDelta;
264
+ if (this.props.inverted && this._scrollRef && this._scrollRef.getScrollableNode) {
265
+ const node = this._scrollRef.getScrollableNode();
266
+ if (this.props.horizontal) {
267
+ ev.target.scrollLeft += targetDelta;
268
+ const nextScrollLeft = node.scrollLeft - leftoverDelta;
269
+ node.scrollLeft = this.props.getItemLayout ? nextScrollLeft : Math.min(nextScrollLeft, this._totalCellLength);
270
+ } else {
271
+ ev.target.scrollTop += targetDelta;
272
+ const nextScrollTop = node.scrollTop - leftoverDelta;
273
+ node.scrollTop = this.props.getItemLayout ? nextScrollTop : Math.min(nextScrollTop, this._totalCellLength);
274
+ }
275
+ ev.preventDefault();
276
+ }
277
+ };
278
+ }
279
+ _checkProps(props) {
280
+ const {
281
+ onScroll,
282
+ windowSize,
283
+ getItemCount,
284
+ data,
285
+ initialScrollIndex
286
+ } = props;
287
+ (0, import_react_native_web_internals.invariant)(!(onScroll && onScroll.__isNative), "Components based on VirtualizedList must be wrapped with Animated.createAnimatedComponent to support native onScroll events with useNativeDriver"), (0, import_react_native_web_internals.invariant)(windowSizeOrDefault(windowSize) > 0, "VirtualizedList: The windowSize prop must be present and set to a value greater than 0."), (0, import_react_native_web_internals.invariant)(getItemCount, 'VirtualizedList: The "getItemCount" prop must be provided');
288
+ const itemCount = getItemCount(data);
289
+ if (initialScrollIndex != null && !this._hasTriggeredInitialScrollToIndex && (initialScrollIndex < 0 || itemCount > 0 && initialScrollIndex >= itemCount) && !this._hasWarned.initialScrollIndex && (console.warn(`initialScrollIndex "${initialScrollIndex}" is not valid (list has ${itemCount} items)`), this._hasWarned.initialScrollIndex = !0), __DEV__ && !this._hasWarned.flexWrap) {
290
+ const flatStyles = import_react_native_web_internals.StyleSheet.flatten(this.props.contentContainerStyle);
291
+ flatStyles != null && flatStyles.flexWrap === "wrap" && (console.warn("`flexWrap: `wrap`` is not supported with the `VirtualizedList` components.Consider using `numColumns` with `FlatList` instead."), this._hasWarned.flexWrap = !0);
292
+ }
293
+ }
294
+ static _createRenderMask(props, cellsAroundViewport, additionalRegions) {
295
+ const itemCount = props.getItemCount(props.data);
296
+ (0, import_react_native_web_internals.invariant)(cellsAroundViewport.first >= 0 && cellsAroundViewport.last >= cellsAroundViewport.first - 1 && cellsAroundViewport.last < itemCount, `Invalid cells around viewport "[${cellsAroundViewport.first}, ${cellsAroundViewport.last}]" was passed to VirtualizedList._createRenderMask`);
297
+ const renderMask = new import_CellRenderMask.CellRenderMask(itemCount);
298
+ if (itemCount > 0) {
299
+ const allRegions = [cellsAroundViewport, ...(additionalRegions ?? [])];
300
+ for (const region of allRegions) renderMask.addCells(region);
301
+ if (props.initialScrollIndex == null || props.initialScrollIndex <= 0) {
302
+ const initialRegion = VirtualizedList._initialRenderRegion(props);
303
+ renderMask.addCells(initialRegion);
304
+ }
305
+ const stickyIndicesSet = new Set(props.stickyHeaderIndices);
306
+ VirtualizedList._ensureClosestStickyHeader(props, stickyIndicesSet, renderMask, cellsAroundViewport.first);
307
+ }
308
+ return renderMask;
309
+ }
310
+ static _initialRenderRegion(props) {
311
+ const itemCount = props.getItemCount(props.data),
312
+ firstCellIndex = Math.max(0, Math.min(itemCount - 1, Math.floor(props.initialScrollIndex ?? 0))),
313
+ lastCellIndex = Math.min(itemCount, firstCellIndex + initialNumToRenderOrDefault(props.initialNumToRender)) - 1;
314
+ return {
315
+ first: firstCellIndex,
316
+ last: lastCellIndex
317
+ };
318
+ }
319
+ static _ensureClosestStickyHeader(props, stickyIndicesSet, renderMask, cellIdx) {
320
+ const stickyOffset = props.ListHeaderComponent ? 1 : 0;
321
+ for (let itemIdx = cellIdx - 1; itemIdx >= 0; itemIdx--) if (stickyIndicesSet.has(itemIdx + stickyOffset)) {
322
+ renderMask.addCells({
323
+ first: itemIdx,
324
+ last: itemIdx
325
+ });
326
+ break;
327
+ }
328
+ }
329
+ _adjustCellsAroundViewport(props, cellsAroundViewport) {
330
+ const {
331
+ data,
332
+ getItemCount
333
+ } = props,
334
+ onEndReachedThreshold = onEndReachedThresholdOrDefault(props.onEndReachedThreshold),
335
+ {
336
+ contentLength,
337
+ offset,
338
+ visibleLength
339
+ } = this._scrollMetrics,
340
+ distanceFromEnd = contentLength - visibleLength - offset;
341
+ if (visibleLength <= 0 || contentLength <= 0) return cellsAroundViewport.last >= getItemCount(data) ? VirtualizedList._constrainToItemCount(cellsAroundViewport, props) : cellsAroundViewport;
342
+ let newCellsAroundViewport;
343
+ if (props.disableVirtualization) {
344
+ const renderAhead = distanceFromEnd < onEndReachedThreshold * visibleLength ? maxToRenderPerBatchOrDefault(props.maxToRenderPerBatch) : 0;
345
+ newCellsAroundViewport = {
346
+ first: 0,
347
+ last: Math.min(cellsAroundViewport.last + renderAhead, getItemCount(data) - 1)
348
+ };
349
+ } else {
350
+ if (props.initialScrollIndex && !this._scrollMetrics.offset && Math.abs(distanceFromEnd) >= Number.EPSILON) return cellsAroundViewport.last >= getItemCount(data) ? VirtualizedList._constrainToItemCount(cellsAroundViewport, props) : cellsAroundViewport;
351
+ newCellsAroundViewport = computeWindowedRenderLimits(props, maxToRenderPerBatchOrDefault(props.maxToRenderPerBatch), windowSizeOrDefault(props.windowSize), cellsAroundViewport, this.__getFrameMetricsApprox, this._scrollMetrics), (0, import_react_native_web_internals.invariant)(newCellsAroundViewport.last < getItemCount(data), "computeWindowedRenderLimits() should return range in-bounds");
352
+ }
353
+ if (this._nestedChildLists.size() > 0) {
354
+ const childIdx = this._findFirstChildWithMore(newCellsAroundViewport.first, newCellsAroundViewport.last);
355
+ newCellsAroundViewport.last = childIdx ?? newCellsAroundViewport.last;
356
+ }
357
+ return newCellsAroundViewport;
358
+ }
359
+ _findFirstChildWithMore(first, last) {
360
+ for (let ii = first; ii <= last; ii++) {
361
+ const cellKeyForIndex = this._indicesToKeys.get(ii);
362
+ if (cellKeyForIndex != null && this._nestedChildLists.anyInCell(cellKeyForIndex, childList => childList.hasMore())) return ii;
363
+ }
364
+ return null;
365
+ }
366
+ componentDidMount() {
367
+ this._isNestedWithSameOrientation() && this.context.registerAsNestedChild({
368
+ ref: this,
369
+ cellKey: this.context.cellKey
370
+ }), this.setupWebWheelHandler();
371
+ }
372
+ componentWillUnmount() {
373
+ this._isNestedWithSameOrientation() && this.context.unregisterAsNestedChild({
374
+ ref: this
375
+ }), this._updateCellsToRenderBatcher.dispose({
376
+ abort: !0
377
+ }), this._viewabilityTuples.forEach(tuple => {
378
+ tuple.viewabilityHelper.dispose();
379
+ }), this._fillRateHelper.deactivateAndFlush(), this.teardownWebWheelHandler();
380
+ }
381
+ setupWebWheelHandler() {
382
+ if (this._scrollRef && this._scrollRef.getScrollableNode) this._scrollRef.getScrollableNode().addEventListener("wheel", this.invertedWheelEventHandler);else {
383
+ setTimeout(() => this.setupWebWheelHandler(), 50);
384
+ return;
385
+ }
386
+ }
387
+ teardownWebWheelHandler() {
388
+ this._scrollRef && this._scrollRef.getScrollableNode && this._scrollRef.getScrollableNode().removeEventListener("wheel", this.invertedWheelEventHandler);
389
+ }
390
+ static getDerivedStateFromProps(newProps, prevState) {
391
+ if (newProps.getItemCount(newProps.data) === prevState.renderMask.numCells()) return prevState;
392
+ const constrainedCells = VirtualizedList._constrainToItemCount(prevState.cellsAroundViewport, newProps);
393
+ return {
394
+ cellsAroundViewport: constrainedCells,
395
+ renderMask: VirtualizedList._createRenderMask(newProps, constrainedCells)
396
+ };
397
+ }
398
+ _pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, first, last, inversionStyle) {
399
+ const {
400
+ CellRendererComponent,
401
+ ItemSeparatorComponent,
402
+ ListHeaderComponent,
403
+ ListItemComponent,
404
+ data,
405
+ debug,
406
+ getItem,
407
+ getItemCount,
408
+ getItemLayout,
409
+ horizontal,
410
+ renderItem
411
+ } = this.props,
412
+ stickyOffset = ListHeaderComponent ? 1 : 0,
413
+ end = getItemCount(data) - 1;
414
+ let prevCellKey;
415
+ last = Math.min(end, last);
416
+ for (let ii = first; ii <= last; ii++) {
417
+ const item = getItem(data, ii),
418
+ key = this._keyExtractor(item, ii, this.props);
419
+ this._indicesToKeys.set(ii, key), stickyIndicesFromProps.has(ii + stickyOffset) && stickyHeaderIndices.push(cells.length);
420
+ const shouldListenForLayout = getItemLayout == null || debug || this._fillRateHelper.enabled();
421
+ cells.push(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_VirtualizedListCellRenderer.default, {
422
+ CellRendererComponent,
423
+ ItemSeparatorComponent: ii < end ? ItemSeparatorComponent : void 0,
424
+ ListItemComponent,
425
+ cellKey: key,
426
+ horizontal,
427
+ index: ii,
428
+ inversionStyle,
429
+ item,
430
+ prevCellKey,
431
+ onUpdateSeparators: this._onUpdateSeparators,
432
+ onCellFocusCapture: e => this._onCellFocusCapture(key),
433
+ onUnmount: this._onCellUnmount,
434
+ ref: ref => {
435
+ this._cellRefs[key] = ref;
436
+ },
437
+ renderItem,
438
+ ...(shouldListenForLayout && {
439
+ onCellLayout: this._onCellLayout
440
+ })
441
+ }, key)), prevCellKey = key;
442
+ }
443
+ }
444
+ static _constrainToItemCount(cells, props) {
445
+ const itemCount = props.getItemCount(props.data),
446
+ last = Math.min(itemCount - 1, cells.last),
447
+ maxToRenderPerBatch = maxToRenderPerBatchOrDefault(props.maxToRenderPerBatch);
448
+ return {
449
+ first: (0, import_clamp.default)(0, itemCount - 1 - maxToRenderPerBatch, cells.first),
450
+ last
451
+ };
452
+ }
453
+ _onUpdateSeparators = (keys, newProps) => {
454
+ keys.forEach(key => {
455
+ const ref = key != null && this._cellRefs[key];
456
+ ref && ref.updateSeparatorProps(newProps);
457
+ });
458
+ };
459
+ _isNestedWithSameOrientation() {
460
+ const nestedContext = this.context;
461
+ return !!(nestedContext && !!nestedContext.horizontal === horizontalOrDefault(this.props.horizontal));
462
+ }
463
+ _getSpacerKey = isVertical => isVertical ? "height" : "width";
464
+ _keyExtractor(item, index, props) {
465
+ if (props.keyExtractor != null) return props.keyExtractor(item, index);
466
+ const key = (0, import_VirtualizeUtils.keyExtractor)(item, index);
467
+ return key === String(index) && (_usedIndexForKey = !0, item.type && item.type.displayName && (_keylessItemComponentName = item.type.displayName)), key;
468
+ }
469
+ render() {
470
+ this._checkProps(this.props);
471
+ const {
472
+ ListEmptyComponent,
473
+ ListFooterComponent,
474
+ ListHeaderComponent
475
+ } = this.props,
476
+ {
477
+ data,
478
+ horizontal
479
+ } = this.props,
480
+ inversionStyle = this.props.inverted ? horizontalOrDefault(this.props.horizontal) ? styles.horizontallyInverted : styles.verticallyInverted : null,
481
+ cells = [],
482
+ stickyIndicesFromProps = new Set(this.props.stickyHeaderIndices),
483
+ stickyHeaderIndices = [];
484
+ if (ListHeaderComponent) {
485
+ stickyIndicesFromProps.has(0) && stickyHeaderIndices.push(0);
486
+ const element = import_react.default.isValidElement(ListHeaderComponent) ? ListHeaderComponent : /* @__PURE__ */(0, import_jsx_runtime.jsx)(ListHeaderComponent, {});
487
+ cells.push(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_VirtualizedListContext.VirtualizedListCellContextProvider, {
488
+ cellKey: this._getCellKey() + "-header",
489
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_View.default, {
490
+ onLayout: this._onLayoutHeader,
491
+ style: [inversionStyle, this.props.ListHeaderComponentStyle],
492
+ children: element
493
+ })
494
+ }, "$header"));
495
+ }
496
+ const itemCount = this.props.getItemCount(data);
497
+ if (itemCount === 0 && ListEmptyComponent) {
498
+ const element = import_react.default.isValidElement(ListEmptyComponent) ? ListEmptyComponent : /* @__PURE__ */(0, import_jsx_runtime.jsx)(ListEmptyComponent, {});
499
+ cells.push(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_VirtualizedListContext.VirtualizedListCellContextProvider, {
500
+ cellKey: this._getCellKey() + "-empty",
501
+ children: import_react.default.cloneElement(element, {
502
+ onLayout: event => {
503
+ this._onLayoutEmpty(event), element.props.onLayout && element.props.onLayout(event);
504
+ },
505
+ style: [inversionStyle, element.props.style]
506
+ })
507
+ }, "$empty"));
508
+ }
509
+ if (itemCount > 0) {
510
+ _usedIndexForKey = !1, _keylessItemComponentName = "";
511
+ const spacerKey = this._getSpacerKey(!horizontal),
512
+ renderRegions = this.state.renderMask.enumerateRegions(),
513
+ lastSpacer = findLastWhere(renderRegions, r => r.isSpacer);
514
+ for (const section of renderRegions) if (section.isSpacer) {
515
+ if (this.props.disableVirtualization) continue;
516
+ const last = section === lastSpacer && !this.props.getItemLayout ? (0, import_clamp.default)(section.first - 1, section.last, this._highestMeasuredFrameIndex) : section.last,
517
+ firstMetrics = this.__getFrameMetricsApprox(section.first, this.props),
518
+ lastMetrics = this.__getFrameMetricsApprox(last, this.props),
519
+ spacerSize = lastMetrics.offset + lastMetrics.length - firstMetrics.offset;
520
+ cells.push(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_View.default, {
521
+ style: {
522
+ [spacerKey]: spacerSize
523
+ }
524
+ }, `$spacer-${section.first}`));
525
+ } else this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, section.first, section.last, inversionStyle);
526
+ !this._hasWarned.keys && _usedIndexForKey && (console.warn("VirtualizedList: missing keys for items, make sure to specify a key or id property on each item or provide a custom keyExtractor.", _keylessItemComponentName), this._hasWarned.keys = !0);
527
+ }
528
+ if (ListFooterComponent) {
529
+ const element = import_react.default.isValidElement(ListFooterComponent) ? ListFooterComponent : /* @__PURE__ */(0, import_jsx_runtime.jsx)(ListFooterComponent, {});
530
+ cells.push(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_VirtualizedListContext.VirtualizedListCellContextProvider, {
531
+ cellKey: this._getFooterCellKey(),
532
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_View.default, {
533
+ onLayout: this._onLayoutFooter,
534
+ style: [inversionStyle, this.props.ListFooterComponentStyle],
535
+ children: element
536
+ })
537
+ }, "$footer"));
538
+ }
539
+ const scrollProps = {
540
+ ...this.props,
541
+ onContentSizeChange: this._onContentSizeChange,
542
+ onLayout: this._onLayout,
543
+ onScroll: this._onScroll,
544
+ onScrollBeginDrag: this._onScrollBeginDrag,
545
+ onScrollEndDrag: this._onScrollEndDrag,
546
+ onMomentumScrollBegin: this._onMomentumScrollBegin,
547
+ onMomentumScrollEnd: this._onMomentumScrollEnd,
548
+ scrollEventThrottle: scrollEventThrottleOrDefault(this.props.scrollEventThrottle),
549
+ invertStickyHeaders: this.props.invertStickyHeaders !== void 0 ? this.props.invertStickyHeaders : this.props.inverted,
550
+ stickyHeaderIndices,
551
+ style: inversionStyle ? [inversionStyle, this.props.style] : this.props.style
552
+ };
553
+ return this._hasMore = this.state.cellsAroundViewport.last < itemCount - 1, /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_VirtualizedListContext.VirtualizedListContextProvider, {
554
+ value: {
555
+ cellKey: null,
556
+ getScrollMetrics: this._getScrollMetrics,
557
+ horizontal: horizontalOrDefault(this.props.horizontal),
558
+ getOutermostParentListRef: this._getOutermostParentListRef,
559
+ registerAsNestedChild: this._registerAsNestedChild,
560
+ unregisterAsNestedChild: this._unregisterAsNestedChild
561
+ },
562
+ children: import_react.default.cloneElement((this.props.renderScrollComponent || this._defaultRenderScrollComponent)(scrollProps), {
563
+ ref: this._captureScrollRef
564
+ }, cells)
565
+ });
566
+ }
567
+ componentDidUpdate(prevProps) {
568
+ const {
569
+ data,
570
+ extraData
571
+ } = this.props;
572
+ (data !== prevProps.data || extraData !== prevProps.extraData) && this._viewabilityTuples.forEach(tuple => {
573
+ tuple.viewabilityHelper.resetViewableIndices();
574
+ });
575
+ const hiPriInProgress = this._hiPriInProgress;
576
+ this._scheduleCellsToRenderUpdate(), hiPriInProgress && (this._hiPriInProgress = !1);
577
+ }
578
+ _averageCellLength = 0;
579
+ _cellRefs = {};
580
+ _fillRateHelper;
581
+ _frames = {};
582
+ _footerLength = 0;
583
+ _hasTriggeredInitialScrollToIndex = !1;
584
+ _hasInteracted = !1;
585
+ _hasMore = !1;
586
+ _hasWarned = {};
587
+ _headerLength = 0;
588
+ _hiPriInProgress = !1;
589
+ _highestMeasuredFrameIndex = 0;
590
+ _indicesToKeys = /* @__PURE__ */new Map();
591
+ _lastFocusedCellKey = null;
592
+ _nestedChildLists = new import_ChildListCollection.default();
593
+ _offsetFromParentVirtualizedList = 0;
594
+ _prevParentOffset = 0;
595
+ _scrollMetrics = {
596
+ contentLength: 0,
597
+ dOffset: 0,
598
+ dt: 10,
599
+ offset: 0,
600
+ timestamp: 0,
601
+ velocity: 0,
602
+ visibleLength: 0,
603
+ zoomScale: 1
604
+ };
605
+ _scrollRef = null;
606
+ _sentStartForContentLength = 0;
607
+ _sentEndForContentLength = 0;
608
+ _totalCellLength = 0;
609
+ _totalCellsMeasured = 0;
610
+ _updateCellsToRenderBatcher;
611
+ _viewabilityTuples = [];
612
+ _captureScrollRef = ref => {
613
+ this._scrollRef = ref;
614
+ };
615
+ _computeBlankness() {
616
+ this._fillRateHelper.computeBlankness(
617
+ // @ts-ignore
618
+ this.props, this.state.cellsAroundViewport, this._scrollMetrics);
619
+ }
620
+ _defaultRenderScrollComponent = props => {
621
+ const onRefresh = props.onRefresh;
622
+ return this._isNestedWithSameOrientation() ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_View.default, {
623
+ ...props
624
+ }) : onRefresh ? ((0, import_react_native_web_internals.invariant)(typeof props.refreshing == "boolean", "`refreshing` prop must be set as a boolean in order to use `onRefresh`, but got `" + JSON.stringify(props.refreshing ?? "undefined") + "`"), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_ScrollViewBase.default, {
625
+ ...props,
626
+ refreshControl: props.refreshControl == null ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_RefreshControl.default, {
627
+ refreshing: props.refreshing,
628
+ onRefresh,
629
+ progressViewOffset: props.progressViewOffset
630
+ }) : props.refreshControl
631
+ })) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_ScrollViewBase.default, {
632
+ ...props
633
+ });
634
+ };
635
+ _onCellLayout = (e, cellKey, index) => {
636
+ const layout = e.nativeEvent.layout,
637
+ next = {
638
+ offset: this._selectOffset(layout),
639
+ length: this._selectLength(layout),
640
+ index,
641
+ inLayout: !0
642
+ },
643
+ curr = this._frames[cellKey];
644
+ !curr || next.offset !== curr.offset || next.length !== curr.length || index !== curr.index ? (this._totalCellLength += next.length - (curr ? curr.length : 0), this._totalCellsMeasured += curr ? 0 : 1, this._averageCellLength = this._totalCellLength / this._totalCellsMeasured, this._frames[cellKey] = next, this._highestMeasuredFrameIndex = Math.max(this._highestMeasuredFrameIndex, index), this._scheduleCellsToRenderUpdate()) : this._frames[cellKey].inLayout = !0, this._triggerRemeasureForChildListsInCell(cellKey), this._computeBlankness(), this._updateViewableItems(
645
+ // @ts-ignore
646
+ this.props, this.state.cellsAroundViewport);
647
+ };
648
+ _onCellFocusCapture(cellKey) {
649
+ this._lastFocusedCellKey = cellKey, this._updateCellsToRender();
650
+ }
651
+ _onCellUnmount = cellKey => {
652
+ delete this._cellRefs[cellKey];
653
+ const curr = this._frames[cellKey];
654
+ curr && (this._frames[cellKey] = {
655
+ ...curr,
656
+ inLayout: !1
657
+ });
658
+ };
659
+ _triggerRemeasureForChildListsInCell(cellKey) {
660
+ this._nestedChildLists.forEachInCell(cellKey, childList => {
661
+ childList.measureLayoutRelativeToContainingList();
662
+ });
663
+ }
664
+ measureLayoutRelativeToContainingList() {
665
+ try {
666
+ if (!this._scrollRef) return;
667
+ this._scrollRef.measureLayout(this.context.getOutermostParentListRef().getScrollRef(), (x, y, width, height) => {
668
+ this._offsetFromParentVirtualizedList = this._selectOffset({
669
+ x,
670
+ y
671
+ }), this._scrollMetrics.contentLength = this._selectLength({
672
+ width,
673
+ height
674
+ });
675
+ const scrollMetrics = this._convertParentScrollMetrics(this.context.getScrollMetrics());
676
+ (this._scrollMetrics.visibleLength !== scrollMetrics.visibleLength || this._scrollMetrics.offset !== scrollMetrics.offset) && (this._scrollMetrics.visibleLength = scrollMetrics.visibleLength, this._scrollMetrics.offset = scrollMetrics.offset, this._nestedChildLists.forEach(childList => {
677
+ childList.measureLayoutRelativeToContainingList();
678
+ }));
679
+ }, error => {
680
+ console.warn("VirtualizedList: Encountered an error while measuring a list's offset from its containing VirtualizedList.");
681
+ });
682
+ } catch (error) {
683
+ console.warn("measureLayoutRelativeToContainingList threw an error", error.stack);
684
+ }
685
+ }
686
+ _onLayout = e => {
687
+ this._isNestedWithSameOrientation() ? this.measureLayoutRelativeToContainingList() : this._scrollMetrics.visibleLength = this._selectLength(e.nativeEvent.layout), this.props.onLayout && this.props.onLayout(e), this._scheduleCellsToRenderUpdate(), this._maybeCallOnEdgeReached();
688
+ };
689
+ _onLayoutEmpty = e => {
690
+ this.props.onLayout && this.props.onLayout(e);
691
+ };
692
+ _getFooterCellKey() {
693
+ return this._getCellKey() + "-footer";
694
+ }
695
+ _onLayoutFooter = e => {
696
+ this._triggerRemeasureForChildListsInCell(this._getFooterCellKey()), this._footerLength = this._selectLength(e.nativeEvent.layout);
697
+ };
698
+ _onLayoutHeader = e => {
699
+ this._headerLength = this._selectLength(e.nativeEvent.layout);
700
+ };
701
+ _renderDebugOverlay() {
702
+ const normalize = this._scrollMetrics.visibleLength / (this._scrollMetrics.contentLength || 1),
703
+ framesInLayout = [],
704
+ itemCount = this.props.getItemCount(this.props.data);
705
+ for (let ii = 0; ii < itemCount; ii++) {
706
+ const frame = this.__getFrameMetricsApprox(ii, this.props);
707
+ frame.inLayout && framesInLayout.push(frame);
708
+ }
709
+ const windowTop = this.__getFrameMetricsApprox(this.state.cellsAroundViewport.first, this.props).offset,
710
+ frameLast = this.__getFrameMetricsApprox(this.state.cellsAroundViewport.last, this.props),
711
+ windowLen = frameLast.offset + frameLast.length - windowTop,
712
+ visTop = this._scrollMetrics.offset,
713
+ visLen = this._scrollMetrics.visibleLength;
714
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_View.default, {
715
+ style: [styles.debugOverlayBase, styles.debugOverlay],
716
+ children: [framesInLayout.map((f, ii) => /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_View.default, {
717
+ style: [styles.debugOverlayBase, styles.debugOverlayFrame, {
718
+ top: f.offset * normalize,
719
+ height: f.length * normalize
720
+ }]
721
+ }, "f" + ii)), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_View.default, {
722
+ style: [styles.debugOverlayBase, styles.debugOverlayFrameLast, {
723
+ top: windowTop * normalize,
724
+ height: windowLen * normalize
725
+ }]
726
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_View.default, {
727
+ style: [styles.debugOverlayBase, styles.debugOverlayFrameVis, {
728
+ top: visTop * normalize,
729
+ height: visLen * normalize
730
+ }]
731
+ })]
732
+ });
733
+ }
734
+ _selectLength(metrics) {
735
+ return horizontalOrDefault(this.props.horizontal) ? metrics.width : metrics.height;
736
+ }
737
+ _selectOffset(metrics) {
738
+ return horizontalOrDefault(this.props.horizontal) ? metrics.x : metrics.y;
739
+ }
740
+ _maybeCallOnEdgeReached() {
741
+ const {
742
+ data,
743
+ getItemCount,
744
+ onStartReached,
745
+ onStartReachedThreshold,
746
+ onEndReached,
747
+ onEndReachedThreshold,
748
+ initialScrollIndex
749
+ } = this.props,
750
+ {
751
+ contentLength,
752
+ visibleLength,
753
+ offset
754
+ } = this._scrollMetrics;
755
+ let distanceFromStart = offset,
756
+ distanceFromEnd = contentLength - visibleLength - offset;
757
+ distanceFromStart < ON_EDGE_REACHED_EPSILON && (distanceFromStart = 0), distanceFromEnd < ON_EDGE_REACHED_EPSILON && (distanceFromEnd = 0);
758
+ const DEFAULT_THRESHOLD_PX = 2,
759
+ startThreshold = onStartReachedThreshold != null ? onStartReachedThreshold * visibleLength : DEFAULT_THRESHOLD_PX,
760
+ endThreshold = onEndReachedThreshold != null ? onEndReachedThreshold * visibleLength : DEFAULT_THRESHOLD_PX,
761
+ isWithinStartThreshold = distanceFromStart <= startThreshold,
762
+ isWithinEndThreshold = distanceFromEnd <= endThreshold;
763
+ onEndReached && this.state.cellsAroundViewport.last === getItemCount(data) - 1 && isWithinEndThreshold && this._scrollMetrics.contentLength !== this._sentEndForContentLength ? (this._sentEndForContentLength = this._scrollMetrics.contentLength, onEndReached({
764
+ distanceFromEnd
765
+ })) : onStartReached != null && this.state.cellsAroundViewport.first === 0 && isWithinStartThreshold && this._scrollMetrics.contentLength !== this._sentStartForContentLength ? (!initialScrollIndex || this._scrollMetrics.timestamp !== 0) && (this._sentStartForContentLength = this._scrollMetrics.contentLength, onStartReached({
766
+ distanceFromStart
767
+ })) : (this._sentStartForContentLength = isWithinStartThreshold ? this._sentStartForContentLength : 0, this._sentEndForContentLength = isWithinEndThreshold ? this._sentEndForContentLength : 0);
768
+ }
769
+ _onContentSizeChange = (width, height) => {
770
+ width > 0 && height > 0 && this.props.initialScrollIndex != null && this.props.initialScrollIndex > 0 && !this._hasTriggeredInitialScrollToIndex && (this.props.contentOffset == null && (this.props.initialScrollIndex < this.props.getItemCount(this.props.data) ? this.scrollToIndex({
771
+ animated: !1,
772
+ index: nullthrows(this.props.initialScrollIndex)
773
+ }) : this.scrollToEnd({
774
+ animated: !1
775
+ })), this._hasTriggeredInitialScrollToIndex = !0), this.props.onContentSizeChange && this.props.onContentSizeChange(width, height), this._scrollMetrics.contentLength = this._selectLength({
776
+ height,
777
+ width
778
+ }), this._scheduleCellsToRenderUpdate(), this._maybeCallOnEdgeReached();
779
+ };
780
+ _convertParentScrollMetrics = metrics => {
781
+ const offset = metrics.offset - this._offsetFromParentVirtualizedList,
782
+ visibleLength = metrics.visibleLength,
783
+ dOffset = offset - this._scrollMetrics.offset,
784
+ contentLength = this._scrollMetrics.contentLength;
785
+ return {
786
+ visibleLength,
787
+ contentLength,
788
+ offset,
789
+ dOffset
790
+ };
791
+ };
792
+ _onScroll = e => {
793
+ this._nestedChildLists.forEach(childList => {
794
+ childList._onScroll(e);
795
+ }), this.props.onScroll && this.props.onScroll(e);
796
+ const timestamp = e.timeStamp;
797
+ let visibleLength = this._selectLength(e.nativeEvent.layoutMeasurement),
798
+ contentLength = this._selectLength(e.nativeEvent.contentSize),
799
+ offset = this._selectOffset(e.nativeEvent.contentOffset),
800
+ dOffset = offset - this._scrollMetrics.offset;
801
+ if (this._isNestedWithSameOrientation()) {
802
+ if (this._scrollMetrics.contentLength === 0) return;
803
+ ({
804
+ visibleLength,
805
+ contentLength,
806
+ offset,
807
+ dOffset
808
+ } = this._convertParentScrollMetrics({
809
+ visibleLength,
810
+ offset
811
+ }));
812
+ }
813
+ const dt = this._scrollMetrics.timestamp ? Math.max(1, timestamp - this._scrollMetrics.timestamp) : 1,
814
+ velocity = dOffset / dt;
815
+ dt > 500 && this._scrollMetrics.dt > 500 && contentLength > 5 * visibleLength && !this._hasWarned.perf && (infoLog("VirtualizedList: You have a large list that is slow to update - make sure your renderItem function renders components that follow React performance best practices like PureComponent, shouldComponentUpdate, etc.", {
816
+ dt,
817
+ prevDt: this._scrollMetrics.dt,
818
+ contentLength
819
+ }), this._hasWarned.perf = !0);
820
+ const zoomScale = e.nativeEvent.zoomScale < 0 ? 1 : e.nativeEvent.zoomScale;
821
+ this._scrollMetrics = {
822
+ contentLength,
823
+ dt,
824
+ dOffset,
825
+ offset,
826
+ timestamp,
827
+ velocity,
828
+ visibleLength,
829
+ zoomScale
830
+ }, this._updateViewableItems(this.props, this.state.cellsAroundViewport), this.props && (this._maybeCallOnEdgeReached(), velocity !== 0 && this._fillRateHelper.activate(), this._computeBlankness(), this._scheduleCellsToRenderUpdate());
831
+ };
832
+ _scheduleCellsToRenderUpdate() {
833
+ const {
834
+ first,
835
+ last
836
+ } = this.state.cellsAroundViewport,
837
+ {
838
+ offset,
839
+ visibleLength,
840
+ velocity
841
+ } = this._scrollMetrics,
842
+ itemCount = this.props.getItemCount(this.props.data);
843
+ let hiPri = !1;
844
+ const onStartReachedThreshold = onStartReachedThresholdOrDefault(this.props.onStartReachedThreshold),
845
+ onEndReachedThreshold = onEndReachedThresholdOrDefault(this.props.onEndReachedThreshold);
846
+ if (first > 0) {
847
+ const distTop = offset - this.__getFrameMetricsApprox(first, this.props).offset;
848
+ hiPri = distTop < 0 || velocity < -2 && distTop < getScrollingThreshold(onStartReachedThreshold, visibleLength);
849
+ }
850
+ if (!hiPri && last >= 0 && last < itemCount - 1) {
851
+ const distBottom = this.__getFrameMetricsApprox(last, this.props).offset - (offset + visibleLength);
852
+ hiPri = distBottom < 0 || velocity > 2 && distBottom < getScrollingThreshold(onEndReachedThreshold, visibleLength);
853
+ }
854
+ if (hiPri && (this._averageCellLength || this.props.getItemLayout) && !this._hiPriInProgress) {
855
+ this._hiPriInProgress = !0, this._updateCellsToRenderBatcher.dispose({
856
+ abort: !0
857
+ }), this._updateCellsToRender();
858
+ return;
859
+ } else this._updateCellsToRenderBatcher.schedule();
860
+ }
861
+ _onScrollBeginDrag = e => {
862
+ this._nestedChildLists.forEach(childList => {
863
+ childList._onScrollBeginDrag(e);
864
+ }), this._viewabilityTuples.forEach(tuple => {
865
+ tuple.viewabilityHelper.recordInteraction();
866
+ }), this._hasInteracted = !0, this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);
867
+ };
868
+ _onScrollEndDrag = e => {
869
+ this._nestedChildLists.forEach(childList => {
870
+ childList._onScrollEndDrag(e);
871
+ });
872
+ const {
873
+ velocity
874
+ } = e.nativeEvent;
875
+ velocity && (this._scrollMetrics.velocity = this._selectOffset(velocity)), this._computeBlankness(), this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);
876
+ };
877
+ _onMomentumScrollBegin = e => {
878
+ this._nestedChildLists.forEach(childList => {
879
+ childList._onMomentumScrollBegin(e);
880
+ }), this.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e);
881
+ };
882
+ _onMomentumScrollEnd = e => {
883
+ this._nestedChildLists.forEach(childList => {
884
+ childList._onMomentumScrollEnd(e);
885
+ }), this._scrollMetrics.velocity = 0, this._computeBlankness(), this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);
886
+ };
887
+ _updateCellsToRender = () => {
888
+ this._updateViewableItems(this.props, this.state.cellsAroundViewport), this.setState((state, props) => {
889
+ const cellsAroundViewport = this._adjustCellsAroundViewport(props, state.cellsAroundViewport),
890
+ renderMask = VirtualizedList._createRenderMask(props, cellsAroundViewport, this._getNonViewportRenderRegions(props));
891
+ return cellsAroundViewport.first === state.cellsAroundViewport.first && cellsAroundViewport.last === state.cellsAroundViewport.last && renderMask.equals(state.renderMask) ? null : {
892
+ cellsAroundViewport,
893
+ renderMask
894
+ };
895
+ });
896
+ };
897
+ _createViewToken = (index, isViewable, props) => {
898
+ const {
899
+ data,
900
+ getItem
901
+ } = props,
902
+ item = getItem(data, index);
903
+ return {
904
+ index,
905
+ item,
906
+ key: this._keyExtractor(item, index, props),
907
+ isViewable
908
+ };
909
+ };
910
+ _getOffsetApprox = (index, props) => {
911
+ if (Number.isInteger(index)) return this.__getFrameMetricsApprox(index, props).offset;
912
+ {
913
+ const frameMetrics = this.__getFrameMetricsApprox(Math.floor(index), props),
914
+ remainder = index - Math.floor(index);
915
+ return frameMetrics.offset + remainder * frameMetrics.length;
916
+ }
917
+ };
918
+ __getFrameMetricsApprox = (index, props) => {
919
+ const frame = this._getFrameMetrics(index, props);
920
+ if (frame && frame.index === index) return frame;
921
+ {
922
+ const {
923
+ data,
924
+ getItemCount,
925
+ getItemLayout
926
+ } = props;
927
+ return (0, import_react_native_web_internals.invariant)(index >= 0 && index < getItemCount(data), "Tried to get frame for out of range index " + index), (0, import_react_native_web_internals.invariant)(!getItemLayout, "Should not have to estimate frames when a measurement metrics function is provided"), {
928
+ length: this._averageCellLength,
929
+ offset: this._averageCellLength * index
930
+ };
931
+ }
932
+ };
933
+ _getFrameMetrics = (index, props) => {
934
+ const {
935
+ data,
936
+ getItem,
937
+ getItemCount,
938
+ getItemLayout
939
+ } = props;
940
+ (0, import_react_native_web_internals.invariant)(index >= 0 && index < getItemCount(data), "Tried to get frame for out of range index " + index);
941
+ const item = getItem(data, index),
942
+ frame = this._frames[this._keyExtractor(item, index, props)];
943
+ return (!frame || frame.index !== index) && getItemLayout ? getItemLayout(data, index) : frame;
944
+ };
945
+ _getNonViewportRenderRegions = props => {
946
+ if (!(this._lastFocusedCellKey && this._cellRefs[this._lastFocusedCellKey])) return [];
947
+ const focusedCellIndex = this._cellRefs[this._lastFocusedCellKey].props.index,
948
+ itemCount = props.getItemCount(props.data);
949
+ if (focusedCellIndex >= itemCount || this._keyExtractor(props.getItem(props.data, focusedCellIndex), focusedCellIndex, props) !== this._lastFocusedCellKey) return [];
950
+ let first = focusedCellIndex,
951
+ heightOfCellsBeforeFocused = 0;
952
+ for (let i = first - 1; i >= 0 && heightOfCellsBeforeFocused < this._scrollMetrics.visibleLength; i--) first--, heightOfCellsBeforeFocused += this.__getFrameMetricsApprox(i, props).length;
953
+ let last = focusedCellIndex,
954
+ heightOfCellsAfterFocused = 0;
955
+ for (let i = last + 1; i < itemCount && heightOfCellsAfterFocused < this._scrollMetrics.visibleLength; i++) last++, heightOfCellsAfterFocused += this.__getFrameMetricsApprox(i, props).length;
956
+ return [{
957
+ first,
958
+ last
959
+ }];
960
+ };
961
+ _updateViewableItems(props, cellsAroundViewport) {
962
+ this._viewabilityTuples.forEach(tuple => {
963
+ tuple.viewabilityHelper.onUpdate(props, this._scrollMetrics.offset, this._scrollMetrics.visibleLength, this._getFrameMetrics, this._createViewToken, tuple.onViewableItemsChanged, cellsAroundViewport);
964
+ });
965
+ }
966
+ }
967
+ const styles = import_react_native_web_internals.StyleSheet.create({
968
+ verticallyInverted: {
969
+ transform: "scaleY(-1)"
970
+ },
971
+ horizontallyInverted: {
972
+ transform: "scaleX(-1)"
973
+ },
974
+ debug: {
975
+ flex: 1
976
+ },
977
+ debugOverlayBase: {
978
+ position: "absolute",
979
+ top: 0,
980
+ right: 0
981
+ },
982
+ debugOverlay: {
983
+ bottom: 0,
984
+ width: 20,
985
+ borderColor: "blue",
986
+ borderWidth: 1
987
+ },
988
+ debugOverlayFrame: {
989
+ left: 0,
990
+ backgroundColor: "orange"
991
+ },
992
+ debugOverlayFrameLast: {
993
+ left: 0,
994
+ borderColor: "green",
995
+ borderWidth: 2
996
+ },
997
+ debugOverlayFrameVis: {
998
+ left: 0,
999
+ borderColor: "red",
1000
+ borderWidth: 2
1001
+ }
1002
+ });
1003
+ var VirtualizedList_default = VirtualizedList;