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

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