You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
170 KiB

{"ast":null,"code":"import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport _createForOfIteratorHelperLoose from \"@babel/runtime/helpers/createForOfIteratorHelperLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport Batchinator from \"../Batchinator\";\nimport FillRateHelper from \"../FillRateHelper\";\nimport findNodeHandle from \"../../../exports/findNodeHandle\";\nimport RefreshControl from \"../../../exports/RefreshControl\";\nimport ScrollView from \"../../../exports/ScrollView\";\nimport StyleSheet from \"../../../exports/StyleSheet\";\nimport View from \"../../../exports/View\";\nimport ViewabilityHelper from \"../ViewabilityHelper\";\nvar flattenStyle = StyleSheet.flatten;\nimport infoLog from \"../infoLog\";\nimport invariant from 'fbjs/lib/invariant';\nimport { keyExtractor as defaultKeyExtractor, computeWindowedRenderLimits } from \"../VirtualizeUtils\";\nimport * as React from 'react';\nimport { VirtualizedListCellContextProvider, VirtualizedListContext, VirtualizedListContextProvider } from \"./VirtualizedListContext.js\";\nvar __DEV__ = process.env.NODE_ENV !== 'production';\nvar _usedIndexForKey = false;\nvar _keylessItemComponentName = '';\nfunction horizontalOrDefault(horizontal) {\n return horizontal !== null && horizontal !== void 0 ? horizontal : false;\n}\nfunction initialNumToRenderOrDefault(initialNumToRender) {\n return initialNumToRender !== null && initialNumToRender !== void 0 ? initialNumToRender : 10;\n}\nfunction maxToRenderPerBatchOrDefault(maxToRenderPerBatch) {\n return maxToRenderPerBatch !== null && maxToRenderPerBatch !== void 0 ? maxToRenderPerBatch : 10;\n}\nfunction onEndReachedThresholdOrDefault(onEndReachedThreshold) {\n return onEndReachedThreshold !== null && onEndReachedThreshold !== void 0 ? onEndReachedThreshold : 2;\n}\nfunction scrollEventThrottleOrDefault(scrollEventThrottle) {\n return scrollEventThrottle !== null && scrollEventThrottle !== void 0 ? scrollEventThrottle : 50;\n}\nfunction windowSizeOrDefault(windowSize) {\n return windowSize !== null && windowSize !== void 0 ? windowSize : 21;\n}\nvar VirtualizedList = function (_React$PureComponent) {\n _inherits(VirtualizedList, _React$PureComponent);\n var _super = _createSuper(VirtualizedList);\n function VirtualizedList(_props) {\n var _this2;\n _classCallCheck(this, VirtualizedList);\n var _this$props$updateCel;\n _this2 = _super.call(this, _props);\n _this2._getScrollMetrics = function () {\n return _this2._scrollMetrics;\n };\n _this2._getOutermostParentListRef = function () {\n if (_this2._isNestedWithSameOrientation()) {\n return _this2.context.getOutermostParentListRef();\n } else {\n return _assertThisInitialized(_this2);\n }\n };\n _this2._getNestedChildState = function (key) {\n var existingChildData = _this2._nestedChildLists.get(key);\n return existingChildData && existingChildData.state;\n };\n _this2._registerAsNestedChild = function (childList) {\n var childListsInCell = _this2._cellKeysToChildListKeys.get(childList.cellKey) || new Set();\n childListsInCell.add(childList.key);\n _this2._cellKeysToChildListKeys.set(childList.cellKey, childListsInCell);\n var existingChildData = _this2._nestedChildLists.get(childList.key);\n if (existingChildData && existingChildData.ref !== null) {\n console.error('A VirtualizedList contains a cell which itself contains ' + 'more than one VirtualizedList of the same orientation as the parent ' + 'list. You must pass a unique listKey prop to each sibling list.\\n\\n' + describeNestedLists(_objectSpread(_objectSpread({}, childList), {}, {\n horizontal: !!childList.ref.props.horizontal\n })));\n }\n _this2._nestedChildLists.set(childList.key, {\n ref: childList.ref,\n state: null\n });\n if (_this2._hasInteracted) {\n childList.ref.recordInteraction();\n }\n };\n _this2._unregisterAsNestedChild = function (childList) {\n _this2._nestedChildLists.set(childList.key, {\n ref: null,\n state: childList.state\n });\n };\n _this2._onUpdateSeparators = function (keys, newProps) {\n keys.forEach(function (key) {\n var ref = key != null && _this2._cellRefs[key];\n ref && ref.updateSeparatorProps(newProps);\n });\n };\n _this2._getSpacerKey = function (isVertical) {\n return isVertical ? 'height' : 'width';\n };\n _this2._averageCellLength = 0;\n _this2._cellKeysToChildListKeys = new Map();\n _this2._cellRefs = {};\n _this2._frames = {};\n _this2._footerLength = 0;\n _this2._hasDoneInitialScroll = false;\n _this2._hasInteracted = false;\n _this2._hasMore = false;\n _this2._hasWarned = {};\n _this2._headerLength = 0;\n _this2._hiPriInProgress = false;\n _this2._highestMeasuredFrameIndex = 0;\n _this2._indicesToKeys = new Map();\n _this2._nestedChildLists = new Map();\n _this2._offsetFromParentVirtualizedList = 0;\n _this2._prevParentOffset = 0;\n _this2._scrollMetrics = {\n contentLength: 0,\n dOffset: 0,\n dt: 10,\n offset: 0,\n timestamp: 0,\n velocity: 0,\n visibleLength: 0\n };\n _this2._scrollRef = null;\n _this2._sentEndForContentLength = 0;\n _this2._totalCellLength = 0;\n _this2._totalCellsMeasured = 0;\n _this2._viewabilityTuples = [];\n _this2._captureScrollRef = function (ref) {\n _this2._scrollRef = ref;\n };\n _this2._defaultRenderScrollComponent = function (props) {\n var onRefresh = props.onRefresh;\n if (_this2._isNestedWithSameOrientation()) {\n return React.createElement(View, props);\n } else if (onRefresh) {\n var _props$refreshing;\n invariant(typeof props.refreshing === 'boolean', '`refreshing` prop must be set as a boolean in order to use `onRefresh`, but got `' + JSON.stringify((_props$refreshing = props.refreshing) !== null && _props$refreshing !== void 0 ? _props$refreshing : 'undefined') + '`');\n return React.createElement(ScrollView, _extends({}, props, {\n refreshControl: props.refreshControl == null ? React.createElement(RefreshControl, {\n refreshing: props.refreshing,\n onRefresh: onRefresh,\n progressViewOffset: props.progressViewOffset\n }) : props.refreshControl\n }));\n } else {\n return React.createElement(ScrollView, props);\n }\n };\n _this2._onCellUnmount = function (cellKey) {\n var curr = _this2._frames[cellKey];\n if (curr) {\n _this2._frames[cellKey] = _objectSpread(_objectSpread({}, curr), {}, {\n inLayout: false\n });\n }\n };\n _this2._onLayout = function (e) {\n if (_this2._isNestedWithSameOrientation()) {\n _this2.measureLayoutRelativeToContainingList();\n } else {\n _this2._scrollMetrics.visibleLength = _this2._selectLength(e.nativeEvent.layout);\n }\n _this2.props.onLayout && _this2.props.onLayout(e);\n _this2._scheduleCellsToRenderUpdate();\n _this2._maybeCallOnEndReached();\n };\n _this2._onLayoutEmpty = function (e) {\n _this2.props.onLayout && _this2.props.onLayout(e);\n };\n _this2._onLayoutFooter = function (e) {\n _this2._triggerRemeasureForChildListsInCell(_this2._getFooterCellKey());\n _this2._footerLength = _this2._selectLength(e.nativeEvent.layout);\n };\n _this2._onLayoutHeader = function (e) {\n _this2._headerLength = _this2._selectLength(e.nativeEvent.layout);\n };\n _this2._onContentSizeChange = function (width, height) {\n if (width > 0 && height > 0 && _this2.props.initialScrollIndex != null && _this2.props.initialScrollIndex > 0 && !_this2._hasDoneInitialScroll) {\n if (_this2.props.contentOffset == null) {\n _this2.scrollToIndex({\n animated: false,\n index: _this2.props.initialScrollIndex\n });\n }\n _this2._hasDoneInitialScroll = true;\n }\n if (_this2.props.onContentSizeChange) {\n _this2.props.onContentSizeChange(width, height);\n }\n _this2._scrollMetrics.contentLength = _this2._selectLength({\n height: height,\n width: width\n });\n _this2._scheduleCellsToRenderUpdate();\n _this2._maybeCallOnEndReached();\n };\n _this2._convertParentScrollMetrics = function (metrics) {\n var offset = metrics.offset - _this2._offsetFromParentVirtualizedList;\n var visibleLength = metrics.visibleLength;\n var dOffset = offset - _this2._scrollMetrics.offset;\n var contentLength = _this2._scrollMetrics.contentLength;\n return {\n visibleLength: visibleLength,\n contentLength: contentLength,\n offset: offset,\n dOffset: dOffset\n };\n };\n _this2._onScroll = function (e) {\n _this2._nestedChildLists.forEach(function (childList) {\n childList.ref && childList.ref._onScroll(e);\n });\n if (_this2.props.onScroll) {\n _this2.props.onScroll(e);\n }\n var timestamp = e.timeStamp;\n var visibleLength = _this2._selectLength(e.nativeEvent.layoutMeasurement);\n var contentLength = _this2._selectLength(e.nativeEvent.contentSize);\n var offset = _this2._selectOffset(e.nativeEvent.contentOffset);\n var dOffset = offset - _this2._scrollMetrics.offset;\n if (_this2._isNestedWithSameOrientation()) {\n if (_this2._scrollMetrics.contentLength === 0) {\n return;\n }\n var _this$_convertParentS = _this2._convertParentScrollMetrics({\n visibleLength: visibleLength,\n offset: offset\n });\n visibleLength = _this$_convertParentS.visibleLength;\n contentLength = _this$_convertParentS.contentLength;\n offset = _this$_convertParentS.offset;\n dOffset = _this$_convertParentS.dOffset;\n }\n var dt = _this2._scrollMetrics.timestamp ? Math.max(1, timestamp - _this2._scrollMetrics.timestamp) : 1;\n var velocity = dOffset / dt;\n if (dt > 500 && _this2._scrollMetrics.dt > 500 && contentLength > 5 * visibleLength && !_this2._hasWarned.perf) {\n 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.', {\n dt: dt,\n prevDt: _this2._scrollMetrics.dt,\n contentLength: contentLength\n });\n _this2._hasWarned.perf = true;\n }\n _this2._scrollMetrics = {\n contentLength: contentLength,\n dt: dt,\n dOffset: dOffset,\n offset: offset,\n timestamp: timestamp,\n velocity: velocity,\n visibleLength: visibleLength\n };\n _this2._updateViewableItems(_this2.props.data);\n if (!_this2.props) {\n return;\n }\n _this2._maybeCallOnEndReached();\n if (velocity !== 0) {\n _this2._fillRateHelper.activate();\n }\n _this2._computeBlankness();\n _this2._scheduleCellsToRenderUpdate();\n };\n _this2._onScrollBeginDrag = function (e) {\n _this2._nestedChildLists.forEach(function (childList) {\n childList.ref && childList.ref._onScrollBeginDrag(e);\n });\n _this2._viewabilityTuples.forEach(function (tuple) {\n tuple.viewabilityHelper.recordInteraction();\n });\n _this2._hasInteracted = true;\n _this2.props.onScrollBeginDrag && _this2.props.onScrollBeginDrag(e);\n };\n _this2._onScrollEndDrag = function (e) {\n _this2._nestedChildLists.forEach(function (childList) {\n childList.ref && childList.ref._onScrollEndDrag(e);\n });\n var velocity = e.nativeEvent.velocity;\n if (velocity) {\n _this2._scrollMetrics.velocity = _this2._selectOffset(velocity);\n }\n _this2._computeBlankness();\n _this2.props.onScrollEndDrag && _this2.props.onScrollEndDrag(e);\n };\n _this2._onMomentumScrollBegin = function (e) {\n _this2._nestedChildLists.forEach(function (childList) {\n childList.ref && childList.ref._onMomentumScrollBegin(e);\n });\n _this2.props.onMomentumScrollBegin && _this2.props.onMomentumScrollBegin(e);\n };\n _this2._onMomentumScrollEnd = function (e) {\n _this2._nestedChildLists.forEach(function (childList) {\n childList.ref && childList.ref._onMomentumScrollEnd(e);\n });\n _this2._scrollMetrics.velocity = 0;\n _this2._computeBlankness();\n _this2.props.onMomentumScrollEnd && _this2.props.onMomentumScrollEnd(e);\n };\n _this2._updateCellsToRender = function () {\n var _this$props3 = _this2.props,\n data = _this$props3.data,\n getItemCount = _this$props3.getItemCount,\n _onEndReachedThreshold = _this$props3.onEndReachedThreshold;\n var onEndReachedThreshold = onEndReachedThresholdOrDefault(_onEndReachedThreshold);\n var isVirtualizationDisabled = _this2._isVirtualizationDisabled();\n _this2._updateViewableItems(data);\n if (!data) {\n return;\n }\n _this2.setState(function (state) {\n var newState;\n var _this$_scrollMetrics = _this2._scrollMetrics,\n contentLength = _this$_scrollMetrics.contentLength,\n offset = _this$_scrollMetrics.offset,\n visibleLength = _this$_scrollMetrics.visibleLength;\n if (!isVirtualizationDisabled) {\n if (visibleLength > 0 && contentLength > 0) {\n if (!_this2.props.initialScrollIndex || _this2._scrollMetrics.offset) {\n newState = computeWindowedRenderLimits(_this2.props.data, _this2.props.getItemCount, maxToRenderPerBatchOrDefault(_this2.props.maxToRenderPerBatch), windowSizeOrDefault(_this2.props.windowSize), state, _this2._getFrameMetricsApprox, _this2._scrollMetrics);\n }\n }\n } else {\n var distanceFromEnd = contentLength - visibleLength - offset;\n var renderAhead = distanceFromEnd < onEndReachedThreshold * visibleLength ? maxToRenderPerBatchOrDefault(_this2.props.maxToRenderPerBatch) : 0;\n newState = {\n first: 0,\n last: Math.min(state.last + renderAhead, getItemCount(data) - 1)\n };\n }\n if (newState && _this2._nestedChildLists.size > 0) {\n var newFirst = newState.first;\n var newLast = newState.last;\n for (var ii = newFirst; ii <= newLast; ii++) {\n var cellKeyForIndex = _this2._indicesToKeys.get(ii);\n var childListKeys = cellKeyForIndex && _this2._cellKeysToChildListKeys.get(cellKeyForIndex);\n if (!childListKeys) {\n continue;\n }\n var someChildHasMore = false;\n for (var _iterator = _createForOfIteratorHelperLoose(childListKeys), _step; !(_step = _iterator()).done;) {\n var childKey = _step.value;\n var childList = _this2._nestedChildLists.get(childKey);\n if (childList && childList.ref && childList.ref.hasMore()) {\n someChildHasMore = true;\n break;\n }\n }\n if (someChildHasMore) {\n newState.last = ii;\n break;\n }\n }\n }\n if (newState != null && newState.first === state.first && newState.last === state.last) {\n newState = null;\n }\n return newState;\n });\n };\n _this2._createViewToken = function (index, isViewable) {\n var _this$props4 = _this2.props,\n data = _this$props4.data,\n getItem = _this$props4.getItem;\n var item = getItem(data, index);\n return {\n index: index,\n item: item,\n key: _this2._keyExtractor(item, index),\n isViewable: isViewable\n };\n };\n _this2._getFrameMetricsApprox = function (index) {\n var frame = _this2._getFrameMetrics(index);\n if (frame && frame.index === index) {\n return frame;\n } else {\n var getItemLayout = _this2.props.getItemLayout;\n invariant(!getItemLayout, 'Should not have to estimate frames when a measurement metrics function is provided');\n return {\n length: _this2._averageCellLength,\n offset: _this2._averageCellLength * index\n };\n }\n };\n _this2._getFrameMetrics = function (index) {\n var _this$props5 = _this2.props,\n data = _this$props5.data,\n getItem = _this$props5.getItem,\n getItemCount = _this$props5.getItemCount,\n getItemLayout = _this$props5.getItemLayout;\n invariant(getItemCount(data) > index, 'Tried to get frame for out of range index ' + index);\n var item = getItem(data, index);\n var frame = item && _this2._frames[_this2._keyExtractor(item, index)];\n if (!frame || frame.index !== index) {\n if (getItemLayout) {\n frame = getItemLayout(data, index);\n }\n }\n return frame;\n };\n invariant(!_props.onScroll || !_props.onScroll.__isNative, 'Components based on VirtualizedList must be wrapped with Animated.createAnimatedComponent ' + 'to support native onScroll events with useNativeDriver');\n invariant(windowSizeOrDefault(_props.windowSize) > 0, 'VirtualizedList: The windowSize prop must be present and set to a value greater than 0.');\n _this2._fillRateHelper = new FillRateHelper(_this2._getFrameMetrics);\n _this2._updateCellsToRenderBatcher = new Batchinator(_this2._updateCellsToRender, (_this$props$updateCel = _this2.props.updateCellsBatchingPeriod) !== null && _this$props$updateCel !== void 0 ? _this$props$updateCel : 50);\n if (_this2.props.viewabilityConfigCallbackPairs) {\n _this2._viewabilityTuples = _this2.props.viewabilityConfigCallbackPairs.map(function (pair) {\n return {\n viewabilityHelper: new ViewabilityHelper(pair.viewabilityConfig),\n onViewableItemsChanged: pair.onViewableItemsChanged\n };\n });\n } else if (_this2.props.onViewableItemsChanged) {\n _this2._viewabilityTuples.push({\n viewabilityHelper: new ViewabilityHelper(_this2.props.viewabilityConfig),\n onViewableItemsChanged: _this2.props.onViewableItemsChanged\n });\n }\n var initialState = {\n first: _this2.props.initialScrollIndex || 0,\n last: Math.min(_this2.props.getItemCount(_this2.props.data), (_this2.props.initialScrollIndex || 0) + initialNumToRenderOrDefault(_this2.props.initialNumToRender)) - 1\n };\n if (_this2._isNestedWithSameOrientation()) {\n var storedState = _this2.context.getNestedChildState(_this2._getListKey());\n if (storedState) {\n initialState = storedState;\n _this2.state = storedState;\n _this2._frames = storedState.frames;\n }\n }\n _this2.invertedWheelEventHandler = function (ev) {\n if (_this2.props.inverted && _this2._scrollRef && _this2._scrollRef.getScrollableNode) {\n var node = _this2._scrollRef.getScrollableNode();\n if (_this2.props.horizontal) {\n node.scrollLeft -= ev.deltaX || ev.wheelDeltaX;\n } else {\n node.scrollTop -= ev.deltaY || ev.wheelDeltaY;\n }\n ev.preventDefault();\n }\n };\n _this2.state = initialState;\n return _this2;\n }\n _createClass(VirtualizedList, [{\n key: \"scrollToEnd\",\n value: function scrollToEnd(params) {\n var animated = params ? params.animated : true;\n var veryLast = this.props.getItemCount(this.props.data) - 1;\n var frame = this._getFrameMetricsApprox(veryLast);\n var offset = Math.max(0, frame.offset + frame.length + this._footerLength - this._scrollMetrics.visibleLength);\n if (this._scrollRef == null) {\n return;\n }\n if (this._scrollRef.scrollTo == null) {\n 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.');\n return;\n }\n this._scrollRef.scrollTo(horizontalOrDefault(this.props.horizontal) ? {\n x: offset,\n animated: animated\n } : {\n y: offset,\n animated: animated\n });\n }\n }, {\n key: \"scrollToIndex\",\n value: function scrollToIndex(params) {\n var _this$props = this.props,\n data = _this$props.data,\n horizontal = _this$props.horizontal,\n getItemCount = _this$props.getItemCount,\n getItemLayout = _this$props.getItemLayout,\n onScrollToIndexFailed = _this$props.onScrollToIndexFailed;\n var animated = params.animated,\n index = params.index,\n viewOffset = params.viewOffset,\n viewPosition = params.viewPosition;\n invariant(index >= 0, \"scrollToIndex out of range: requested index \" + index + \" but minimum is 0\");\n invariant(getItemCount(data) >= 1, \"scrollToIndex out of range: item length \" + getItemCount(data) + \" but minimum is 1\");\n invariant(index < getItemCount(data), \"scrollToIndex out of range: requested index \" + index + \" is out of 0 to \" + (getItemCount(data) - 1));\n if (!getItemLayout && index > this._highestMeasuredFrameIndex) {\n 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.');\n onScrollToIndexFailed({\n averageItemLength: this._averageCellLength,\n highestMeasuredFrameIndex: this._highestMeasuredFrameIndex,\n index: index\n });\n return;\n }\n var frame = this._getFrameMetricsApprox(index);\n var offset = Math.max(0, frame.offset - (viewPosition || 0) * (this._scrollMetrics.visibleLength - frame.length)) - (viewOffset || 0);\n if (this._scrollRef == null) {\n return;\n }\n if (this._scrollRef.scrollTo == null) {\n 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.');\n return;\n }\n this._scrollRef.scrollTo(horizontal ? {\n x: offset,\n animated: animated\n } : {\n y: offset,\n animated: animated\n });\n }\n }, {\n key: \"scrollToItem\",\n value: function scrollToItem(params) {\n var item = params.item;\n var _this$props2 = this.props,\n data = _this$props2.data,\n getItem = _this$props2.getItem,\n getItemCount = _this$props2.getItemCount;\n var itemCount = getItemCount(data);\n for (var _index = 0; _index < itemCount; _index++) {\n if (getItem(data, _index) === item) {\n this.scrollToIndex(_objectSpread(_objectSpread({}, params), {}, {\n index: _index\n }));\n break;\n }\n }\n }\n }, {\n key: \"scrollToOffset\",\n value: function scrollToOffset(params) {\n var animated = params.animated,\n offset = params.offset;\n if (this._scrollRef == null) {\n return;\n }\n if (this._scrollRef.scrollTo == null) {\n 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.');\n return;\n }\n this._scrollRef.scrollTo(horizontalOrDefault(this.props.horizontal) ? {\n x: offset,\n animated: animated\n } : {\n y: offset,\n animated: animated\n });\n }\n }, {\n key: \"recordInteraction\",\n value: function recordInteraction() {\n this._nestedChildLists.forEach(function (childList) {\n childList.ref && childList.ref.recordInteraction();\n });\n this._viewabilityTuples.forEach(function (t) {\n t.viewabilityHelper.recordInteraction();\n });\n this._updateViewableItems(this.props.data);\n }\n }, {\n key: \"flashScrollIndicators\",\n value: function flashScrollIndicators() {\n if (this._scrollRef == null) {\n return;\n }\n this._scrollRef.flashScrollIndicators();\n }\n }, {\n key: \"getScrollResponder\",\n value: function getScrollResponder() {\n if (this._scrollRef && this._scrollRef.getScrollResponder) {\n return this._scrollRef.getScrollResponder();\n }\n }\n }, {\n key: \"getScrollableNode\",\n value: function getScrollableNode() {\n if (this._scrollRef && this._scrollRef.getScrollableNode) {\n return this._scrollRef.getScrollableNode();\n } else {\n return findNodeHandle(this._scrollRef);\n }\n }\n }, {\n key: \"getScrollRef\",\n value: function getScrollRef() {\n if (this._scrollRef && this._scrollRef.getScrollRef) {\n return this._scrollRef.getScrollRef();\n } else {\n return this._scrollRef;\n }\n }\n }, {\n key: \"setNativeProps\",\n value: function setNativeProps(props) {\n if (this._scrollRef) {\n this._scrollRef.setNativeProps(props);\n }\n }\n }, {\n key: \"_getCellKey\",\n value: function _getCellKey() {\n var _this$context;\n return ((_this$context = this.context) == null ? void 0 : _this$context.cellKey) || 'rootList';\n }\n }, {\n key: \"_getListKey\",\n value: function _getListKey() {\n return this.props.listKey || this._getCellKey();\n }\n }, {\n key: \"_getDebugInfo\",\n value: function _getDebugInfo() {\n var _this$context2;\n return {\n listKey: this._getListKey(),\n cellKey: this._getCellKey(),\n horizontal: horizontalOrDefault(this.props.horizontal),\n parent: (_this$context2 = this.context) == null ? void 0 : _this$context2.debugInfo\n };\n }\n }, {\n key: \"hasMore\",\n value: function hasMore() {\n return this._hasMore;\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this._isNestedWithSameOrientation()) {\n this.context.registerAsNestedChild({\n cellKey: this._getCellKey(),\n key: this._getListKey(),\n ref: this,\n parentDebugInfo: this.context.debugInfo\n });\n }\n this.setupWebWheelHandler();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._isNestedWithSameOrientation()) {\n this.context.unregisterAsNestedChild({\n key: this._getListKey(),\n state: {\n first: this.state.first,\n last: this.state.last,\n frames: this._frames\n }\n });\n }\n this._updateViewableItems(null);\n this._updateCellsToRenderBatcher.dispose({\n abort: true\n });\n this._viewabilityTuples.forEach(function (tuple) {\n tuple.viewabilityHelper.dispose();\n });\n this._fillRateHelper.deactivateAndFlush();\n this.teardownWebWheelHandler();\n }\n }, {\n key: \"setupWebWheelHandler\",\n value: function setupWebWheelHandler() {\n var _this3 = this;\n if (this._scrollRef && this._scrollRef.getScrollableNode) {\n this._scrollRef.getScrollableNode().addEventListener('wheel', this.invertedWheelEventHandler);\n } else {\n setTimeout(function () {\n return _this3.setupWebWheelHandler();\n }, 50);\n return;\n }\n }\n }, {\n key: \"teardownWebWheelHandler\",\n value: function teardownWebWheelHandler() {\n if (this._scrollRef && this._scrollRef.getScrollableNode) {\n this._scrollRef.getScrollableNode().removeEventListener('wheel', this.invertedWheelEventHandler);\n }\n }\n }, {\n key: \"_pushCells\",\n value: function _pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, first, last, inversionStyle) {\n var _this = this;\n var _this$props6 = this.props,\n CellRendererComponent = _this$props6.CellRendererComponent,\n ItemSeparatorComponent = _this$props6.ItemSeparatorComponent,\n data = _this$props6.data,\n getItem = _this$props6.getItem,\n getItemCount = _this$props6.getItemCount,\n horizontal = _this$props6.horizontal;\n var stickyOffset = this.props.ListHeaderComponent ? 1 : 0;\n var end = getItemCount(data) - 1;\n var prevCellKey;\n last = Math.min(end, last);\n var _loop = function _loop(ii) {\n var item = getItem(data, ii);\n var key = _this._keyExtractor(item, ii);\n _this._indicesToKeys.set(ii, key);\n if (stickyIndicesFromProps.has(ii + stickyOffset)) {\n stickyHeaderIndices.push(cells.length);\n }\n cells.push(React.createElement(CellRenderer, {\n CellRendererComponent: CellRendererComponent,\n ItemSeparatorComponent: ii < end ? ItemSeparatorComponent : undefined,\n cellKey: key,\n fillRateHelper: _this._fillRateHelper,\n horizontal: horizontal,\n index: ii,\n inversionStyle: inversionStyle,\n item: item,\n key: key,\n prevCellKey: prevCellKey,\n onUpdateSeparators: _this._onUpdateSeparators,\n onLayout: function onLayout(e) {\n return _this._onCellLayout(e, key, ii);\n },\n onUnmount: _this._onCellUnmount,\n parentProps: _this.props,\n ref: function ref(_ref) {\n _this._cellRefs[key] = _ref;\n }\n }));\n prevCellKey = key;\n };\n for (var ii = first; ii <= last; ii++) {\n _loop(ii);\n }\n }\n }, {\n key: \"_isVirtualizationDisabled\",\n value: function _isVirtualizationDisabled() {\n return this.props.disableVirtualization || false;\n }\n }, {\n key: \"_isNestedWithSameOrientation\",\n value: function _isNestedWithSameOrientation() {\n var nestedContext = this.context;\n return !!(nestedContext && !!nestedContext.horizontal === horizontalOrDefault(this.props.horizontal));\n }\n }, {\n key: \"_keyExtractor\",\n value: function _keyExtractor(item, index) {\n if (this.props.keyExtractor != null) {\n return this.props.keyExtractor(item, index);\n }\n var key = defaultKeyExtractor(item, index);\n if (key === String(index)) {\n _usedIndexForKey = true;\n if (item.type && item.type.displayName) {\n _keylessItemComponentName = item.type.displayName;\n }\n }\n return key;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n if (__DEV__) {\n var flatStyles = flattenStyle(this.props.contentContainerStyle);\n if (flatStyles != null && flatStyles.flexWrap === 'wrap') {\n console.warn('`flexWrap: `wrap`` is not supported with the `VirtualizedList` components.' + 'Consider using `numColumns` with `FlatList` instead.');\n }\n }\n var _this$props7 = this.props,\n ListEmptyComponent = _this$props7.ListEmptyComponent,\n ListFooterComponent = _this$props7.ListFooterComponent,\n ListHeaderComponent = _this$props7.ListHeaderComponent;\n var _this$props8 = this.props,\n data = _this$props8.data,\n horizontal = _this$props8.horizontal;\n var isVirtualizationDisabled = this._isVirtualizationDisabled();\n var inversionStyle = this.props.inverted ? horizontalOrDefault(this.props.horizontal) ? styles.horizontallyInverted : styles.verticallyInverted : null;\n var cells = [];\n var stickyIndicesFromProps = new Set(this.props.stickyHeaderIndices);\n var stickyHeaderIndices = [];\n if (ListHeaderComponent) {\n if (stickyIndicesFromProps.has(0)) {\n stickyHeaderIndices.push(0);\n }\n var element = React.isValidElement(ListHeaderComponent) ? ListHeaderComponent : React.createElement(ListHeaderComponent, null);\n cells.push(React.createElement(VirtualizedListCellContextProvider, {\n cellKey: this._getCellKey() + '-header',\n key: \"$header\"\n }, React.createElement(View, {\n onLayout: this._onLayoutHeader,\n style: StyleSheet.compose(inversionStyle, this.props.ListHeaderComponentStyle)\n }, element)));\n }\n var itemCount = this.props.getItemCount(data);\n if (itemCount > 0) {\n _usedIndexForKey = false;\n _keylessItemComponentName = '';\n var spacerKey = this._getSpacerKey(!horizontal);\n var lastInitialIndex = this.props.initialScrollIndex ? -1 : initialNumToRenderOrDefault(this.props.initialNumToRender) - 1;\n var _this$state = this.state,\n first = _this$state.first,\n last = _this$state.last;\n this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, 0, lastInitialIndex, inversionStyle);\n var firstAfterInitial = Math.max(lastInitialIndex + 1, first);\n if (!isVirtualizationDisabled && first > lastInitialIndex + 1) {\n var insertedStickySpacer = false;\n if (stickyIndicesFromProps.size > 0) {\n var stickyOffset = ListHeaderComponent ? 1 : 0;\n for (var ii = firstAfterInitial - 1; ii > lastInitialIndex; ii--) {\n if (stickyIndicesFromProps.has(ii + stickyOffset)) {\n var initBlock = this._getFrameMetricsApprox(lastInitialIndex);\n var stickyBlock = this._getFrameMetricsApprox(ii);\n var leadSpace = stickyBlock.offset - initBlock.offset - (this.props.initialScrollIndex ? 0 : initBlock.length);\n cells.push(React.createElement(View, {\n key: \"$sticky_lead\",\n style: _defineProperty({}, spacerKey, leadSpace)\n }));\n this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, ii, ii, inversionStyle);\n var trailSpace = this._getFrameMetricsApprox(first).offset - (stickyBlock.offset + stickyBlock.length);\n cells.push(React.createElement(View, {\n key: \"$sticky_trail\",\n style: _defineProperty({}, spacerKey, trailSpace)\n }));\n insertedStickySpacer = true;\n break;\n }\n }\n }\n if (!insertedStickySpacer) {\n var _initBlock = this._getFrameMetricsApprox(lastInitialIndex);\n var firstSpace = this._getFrameMetricsApprox(first).offset - (_initBlock.offset + _initBlock.length);\n cells.push(React.createElement(View, {\n key: \"$lead_spacer\",\n style: _defineProperty({}, spacerKey, firstSpace)\n }));\n }\n }\n this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, firstAfterInitial, last, inversionStyle);\n if (!this._hasWarned.keys && _usedIndexForKey) {\n 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);\n this._hasWarned.keys = true;\n }\n if (!isVirtualizationDisabled && last < itemCount - 1) {\n var lastFrame = this._getFrameMetricsApprox(last);\n var end = this.props.getItemLayout ? itemCount - 1 : Math.min(itemCount - 1, this._highestMeasuredFrameIndex);\n var endFrame = this._getFrameMetricsApprox(end);\n var tailSpacerLength = endFrame.offset + endFrame.length - (lastFrame.offset + lastFrame.length);\n cells.push(React.createElement(View, {\n key: \"$tail_spacer\",\n style: _defineProperty({}, spacerKey, tailSpacerLength)\n }));\n }\n } else if (ListEmptyComponent) {\n var _element = React.isValidElement(ListEmptyComponent) ? ListEmptyComponent : React.createElement(ListEmptyComponent, null);\n cells.push(React.cloneElement(_element, {\n key: '$empty',\n onLayout: function onLayout(event) {\n _this4._onLayoutEmpty(event);\n if (_element.props.onLayout) {\n _element.props.onLayout(event);\n }\n },\n style: StyleSheet.compose(inversionStyle, _element.props.style)\n }));\n }\n if (ListFooterComponent) {\n var _element2 = React.isValidElement(ListFooterComponent) ? ListFooterComponent : React.createElement(ListFooterComponent, null);\n cells.push(React.createElement(VirtualizedListCellContextProvider, {\n cellKey: this._getFooterCellKey(),\n key: \"$footer\"\n }, React.createElement(View, {\n onLayout: this._onLayoutFooter,\n style: StyleSheet.compose(inversionStyle, this.props.ListFooterComponentStyle)\n }, _element2)));\n }\n var scrollProps = _objectSpread(_objectSpread({}, this.props), {}, {\n onContentSizeChange: this._onContentSizeChange,\n onLayout: this._onLayout,\n onScroll: this._onScroll,\n onScrollBeginDrag: this._onScrollBeginDrag,\n onScrollEndDrag: this._onScrollEndDrag,\n onMomentumScrollBegin: this._onMomentumScrollBegin,\n onMomentumScrollEnd: this._onMomentumScrollEnd,\n scrollEventThrottle: scrollEventThrottleOrDefault(this.props.scrollEventThrottle),\n invertStickyHeaders: this.props.invertStickyHeaders !== undefined ? this.props.invertStickyHeaders : this.props.inverted,\n stickyHeaderIndices: stickyHeaderIndices,\n style: inversionStyle ? [inversionStyle, this.props.style] : this.props.style\n });\n this._hasMore = this.state.last < this.props.getItemCount(this.props.data) - 1;\n var innerRet = React.createElement(VirtualizedListContextProvider, {\n value: {\n cellKey: null,\n getScrollMetrics: this._getScrollMetrics,\n horizontal: horizontalOrDefault(this.props.horizontal),\n getOutermostParentListRef: this._getOutermostParentListRef,\n getNestedChildState: this._getNestedChildState,\n registerAsNestedChild: this._registerAsNestedChild,\n unregisterAsNestedChild: this._unregisterAsNestedChild,\n debugInfo: this._getDebugInfo()\n }\n }, React.cloneElement((this.props.renderScrollComponent || this._defaultRenderScrollComponent)(scrollProps), {\n ref: this._captureScrollRef\n }, cells));\n var ret = innerRet;\n if (this.props.debug) {\n return React.createElement(View, {\n style: styles.debug\n }, ret, this._renderDebugOverlay());\n } else {\n return ret;\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props9 = this.props,\n data = _this$props9.data,\n extraData = _this$props9.extraData;\n if (data !== prevProps.data || extraData !== prevProps.extraData) {\n this._viewabilityTuples.forEach(function (tuple) {\n tuple.viewabilityHelper.resetViewableIndices();\n });\n }\n var hiPriInProgress = this._hiPriInProgress;\n this._scheduleCellsToRenderUpdate();\n if (hiPriInProgress) {\n this._hiPriInProgress = false;\n }\n }\n }, {\n key: \"_computeBlankness\",\n value: function _computeBlankness() {\n this._fillRateHelper.computeBlankness(this.props, this.state, this._scrollMetrics);\n }\n }, {\n key: \"_onCellLayout\",\n value: function _onCellLayout(e, cellKey, index) {\n var layout = e.nativeEvent.layout;\n var next = {\n offset: this._selectOffset(layout),\n length: this._selectLength(layout),\n index: index,\n inLayout: true\n };\n var curr = this._frames[cellKey];\n if (!curr || next.offset !== curr.offset || next.length !== curr.length || index !== curr.index) {\n this._totalCellLength += next.length - (curr ? curr.length : 0);\n this._totalCellsMeasured += curr ? 0 : 1;\n this._averageCellLength = this._totalCellLength / this._totalCellsMeasured;\n this._frames[cellKey] = next;\n this._highestMeasuredFrameIndex = Math.max(this._highestMeasuredFrameIndex, index);\n this._scheduleCellsToRenderUpdate();\n } else {\n this._frames[cellKey].inLayout = true;\n }\n this._triggerRemeasureForChildListsInCell(cellKey);\n this._computeBlankness();\n this._updateViewableItems(this.props.data);\n }\n }, {\n key: \"_triggerRemeasureForChildListsInCell\",\n value: function _triggerRemeasureForChildListsInCell(cellKey) {\n var childListKeys = this._cellKeysToChildListKeys.get(cellKey);\n if (childListKeys) {\n for (var _iterator2 = _createForOfIteratorHelperLoose(childListKeys), _step2; !(_step2 = _iterator2()).done;) {\n var childKey = _step2.value;\n var childList = this._nestedChildLists.get(childKey);\n childList && childList.ref && childList.ref.measureLayoutRelativeToContainingList();\n }\n }\n }\n }, {\n key: \"measureLayoutRelativeToContainingList\",\n value: function measureLayoutRelativeToContainingList() {\n var _this5 = this;\n try {\n if (!this._scrollRef) {\n return;\n }\n this._scrollRef.measureLayout(this.context.getOutermostParentListRef().getScrollRef(), function (x, y, width, height) {\n _this5._offsetFromParentVirtualizedList = _this5._selectOffset({\n x: x,\n y: y\n });\n _this5._scrollMetrics.contentLength = _this5._selectLength({\n width: width,\n height: height\n });\n var scrollMetrics = _this5._convertParentScrollMetrics(_this5.context.getScrollMetrics());\n var metricsChanged = _this5._scrollMetrics.visibleLength !== scrollMetrics.visibleLength || _this5._scrollMetrics.offset !== scrollMetrics.offset;\n if (metricsChanged) {\n _this5._scrollMetrics.visibleLength = scrollMetrics.visibleLength;\n _this5._scrollMetrics.offset = scrollMetrics.offset;\n _this5._cellKeysToChildListKeys.forEach(function (childListKeys) {\n if (childListKeys) {\n for (var _iterator3 = _createForOfIteratorHelperLoose(childListKeys), _step3; !(_step3 = _iterator3()).done;) {\n var childKey = _step3.value;\n var childList = _this5._nestedChildLists.get(childKey);\n childList && childList.ref && childList.ref.measureLayoutRelativeToContainingList();\n }\n }\n });\n }\n }, function (error) {\n console.warn(\"VirtualizedList: Encountered an error while measuring a list's\" + ' offset from its containing VirtualizedList.');\n });\n } catch (error) {\n console.warn('measureLayoutRelativeToContainingList threw an error', error.stack);\n }\n }\n }, {\n key: \"_getFooterCellKey\",\n value: function _getFooterCellKey() {\n return this._getCellKey() + '-footer';\n }\n }, {\n key: \"_renderDebugOverlay\",\n value: function _renderDebugOverlay() {\n var normalize = this._scrollMetrics.visibleLength / (this._scrollMetrics.contentLength || 1);\n var framesInLayout = [];\n var itemCount = this.props.getItemCount(this.props.data);\n for (var ii = 0; ii < itemCount; ii++) {\n var frame = this._getFrameMetricsApprox(ii);\n if (frame.inLayout) {\n framesInLayout.push(frame);\n }\n }\n var windowTop = this._getFrameMetricsApprox(this.state.first).offset;\n var frameLast = this._getFrameMetricsApprox(this.state.last);\n var windowLen = frameLast.offset + frameLast.length - windowTop;\n var visTop = this._scrollMetrics.offset;\n var visLen = this._scrollMetrics.visibleLength;\n return React.createElement(View, {\n style: [styles.debugOverlayBase, styles.debugOverlay]\n }, framesInLayout.map(function (f, ii) {\n return React.createElement(View, {\n key: 'f' + ii,\n style: [styles.debugOverlayBase, styles.debugOverlayFrame, {\n top: f.offset * normalize,\n height: f.length * normalize\n }]\n });\n }), React.createElement(View, {\n style: [styles.debugOverlayBase, styles.debugOverlayFrameLast, {\n top: windowTop * normalize,\n height: windowLen * normalize\n }]\n }), React.createElement(View, {\n style: [styles.debugOverlayBase, styles.debugOverlayFrameVis, {\n top: visTop * normalize,\n height: visLen * normalize\n }]\n }));\n }\n }, {\n key: \"_selectLength\",\n value: function _selectLength(metrics) {\n return !horizontalOrDefault(this.props.horizontal) ? metrics.height : metrics.width;\n }\n }, {\n key: \"_selectOffset\",\n value: function _selectOffset(metrics) {\n return !horizontalOrDefault(this.props.horizontal) ? metrics.y : metrics.x;\n }\n }, {\n key: \"_maybeCallOnEndReached\",\n value: function _maybeCallOnEndReached() {\n var _this$props10 = this.props,\n data = _this$props10.data,\n getItemCount = _this$props10.getItemCount,\n onEndReached = _this$props10.onEndReached,\n onEndReachedThreshold = _this$props10.onEndReachedThreshold;\n var _this$_scrollMetrics2 = this._scrollMetrics,\n contentLength = _this$_scrollMetrics2.contentLength,\n visibleLength = _this$_scrollMetrics2.visibleLength,\n offset = _this$_scrollMetrics2.offset;\n var distanceFromEnd = contentLength - visibleLength - offset;\n var threshold = onEndReachedThreshold != null ? onEndReachedThreshold * visibleLength : 2;\n if (onEndReached && this.state.last === getItemCount(data) - 1 && distanceFromEnd < threshold && this._scrollMetrics.contentLength !== this._sentEndForContentLength) {\n this._sentEndForContentLength = this._scrollMetrics.contentLength;\n onEndReached({\n distanceFromEnd: distanceFromEnd\n });\n } else if (distanceFromEnd > threshold) {\n this._sentEndForContentLength = 0;\n }\n }\n }, {\n key: \"_scheduleCellsToRenderUpdate\",\n value: function _scheduleCellsToRenderUpdate() {\n var _this$state2 = this.state,\n first = _this$state2.first,\n last = _this$state2.last;\n var _this$_scrollMetrics3 = this._scrollMetrics,\n offset = _this$_scrollMetrics3.offset,\n visibleLength = _this$_scrollMetrics3.visibleLength,\n velocity = _this$_scrollMetrics3.velocity;\n var itemCount = this.props.getItemCount(this.props.data);\n var hiPri = false;\n var onEndReachedThreshold = onEndReachedThresholdOrDefault(this.props.onEndReachedThreshold);\n var scrollingThreshold = onEndReachedThreshold * visibleLength / 2;\n if (first > 0) {\n var distTop = offset - this._getFrameMetricsApprox(first).offset;\n hiPri = hiPri || distTop < 0 || velocity < -2 && distTop < scrollingThreshold;\n }\n if (last < itemCount - 1) {\n var distBottom = this._getFrameMetricsApprox(last).offset - (offset + visibleLength);\n hiPri = hiPri || distBottom < 0 || velocity > 2 && distBottom < scrollingThreshold;\n }\n if (hiPri && (this._averageCellLength || this.props.getItemLayout) && !this._hiPriInProgress) {\n this._hiPriInProgress = true;\n this._updateCellsToRenderBatcher.dispose({\n abort: true\n });\n this._updateCellsToRender();\n return;\n } else {\n this._updateCellsToRenderBatcher.schedule();\n }\n }\n }, {\n key: \"_updateViewableItems\",\n value: function _updateViewableItems(data) {\n var _this6 = this;\n var getItemCount = this.props.getItemCount;\n this._viewabilityTuples.forEach(function (tuple) {\n tuple.viewabilityHelper.onUpdate(getItemCount(data), _this6._scrollMetrics.offset, _this6._scrollMetrics.visibleLength, _this6._getFrameMetrics, _this6._createViewToken, tuple.onViewableItemsChanged, _this6.state);\n });\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(newProps, prevState) {\n var data = newProps.data,\n getItemCount = newProps.getItemCount;\n var maxToRenderPerBatch = maxToRenderPerBatchOrDefault(newProps.maxToRenderPerBatch);\n return {\n first: Math.max(0, Math.min(prevState.first, getItemCount(data) - 1 - maxToRenderPerBatch)),\n last: Math.max(0, Math.min(prevState.last, getItemCount(data) - 1))\n };\n }\n }]);\n return VirtualizedList;\n}(React.PureComponent);\nVirtualizedList.contextType = VirtualizedListContext;\nvar CellRenderer = function (_React$Component) {\n _inherits(CellRenderer, _React$Component);\n var _super2 = _createSuper(CellRenderer);\n function CellRenderer() {\n var _this7;\n _classCallCheck(this, CellRenderer);\n _this7 = _super2.apply(this, arguments);\n _this7.state = {\n separatorProps: {\n highlighted: false,\n leadingItem: _this7.props.item\n }\n };\n _this7._separators = {\n highlight: function highlight() {\n var _this$props11 = _this7.props,\n cellKey = _this$props11.cellKey,\n prevCellKey = _this$props11.prevCellKey;\n _this7.props.onUpdateSeparators([cellKey, prevCellKey], {\n highlighted: true\n });\n },\n unhighlight: function unhighlight() {\n var _this$props12 = _this7.props,\n cellKey = _this$props12.cellKey,\n prevCellKey = _this$props12.prevCellKey;\n _this7.props.onUpdateSeparators([cellKey, prevCellKey], {\n highlighted: false\n });\n },\n updateProps: function updateProps(select, newProps) {\n var _this$props13 = _this7.props,\n cellKey = _this$props13.cellKey,\n prevCellKey = _this$props13.prevCellKey;\n _this7.props.onUpdateSeparators([select === 'leading' ? prevCellKey : cellKey], newProps);\n }\n };\n return _this7;\n }\n _createClass(CellRenderer, [{\n key: \"updateSeparatorProps\",\n value: function updateSeparatorProps(newProps) {\n this.setState(function (state) {\n return {\n separatorProps: _objectSpread(_objectSpread({}, state.separatorProps), newProps)\n };\n });\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.props.onUnmount(this.props.cellKey);\n }\n }, {\n key: \"_renderElement\",\n value: function _renderElement(renderItem, ListItemComponent, item, index) {\n if (renderItem && ListItemComponent) {\n console.warn('VirtualizedList: Both ListItemComponent and renderItem props are present. ListItemComponent will take' + ' precedence over renderItem.');\n }\n if (ListItemComponent) {\n return React.createElement(ListItemComponent, {\n item: item,\n index: index,\n separators: this._separators\n });\n }\n if (renderItem) {\n return renderItem({\n item: item,\n index: index,\n separators: this._separators\n });\n }\n invariant(false, 'VirtualizedList: Either ListItemComponent or renderItem props are required but none were found.');\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props14 = this.props,\n CellRendererComponent = _this$props14.CellRendererComponent,\n ItemSeparatorComponent = _this$props14.ItemSeparatorComponent,\n fillRateHelper = _this$props14.fillRateHelper,\n horizontal = _this$props14.horizontal,\n item = _this$props14.item,\n index = _this$props14.index,\n inversionStyle = _this$props14.inversionStyle,\n parentProps = _this$props14.parentProps;\n var renderItem = parentProps.renderItem,\n getItemLayout = parentProps.getItemLayout,\n ListItemComponent = parentProps.ListItemComponent;\n var element = this._renderElement(renderItem, ListItemComponent, item, index);\n var onLayout = getItemLayout && !parentProps.debug && !fillRateHelper.enabled() ? undefined : this.props.onLayout;\n var itemSeparator = ItemSeparatorComponent && React.createElement(ItemSeparatorComponent, this.state.separatorProps);\n var cellStyle = inversionStyle ? horizontal ? [styles.rowReverse, inversionStyle] : [styles.columnReverse, inversionStyle] : horizontal ? [styles.row, inversionStyle] : inversionStyle;\n var result = !CellRendererComponent ? React.createElement(View, {\n style: cellStyle,\n onLayout: onLayout\n }, element, itemSeparator) : React.createElement(CellRendererComponent, _extends({}, this.props, {\n style: cellStyle,\n onLayout: onLayout\n }), element, itemSeparator);\n return React.createElement(VirtualizedListCellContextProvider, {\n cellKey: this.props.cellKey\n }, result);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, prevState) {\n return {\n separatorProps: _objectSpread(_objectSpread({}, prevState.separatorProps), {}, {\n leadingItem: props.item\n })\n };\n }\n }]);\n return CellRenderer;\n}(React.Component);\nfunction describeNestedLists(childList) {\n var trace = 'VirtualizedList trace:\\n' + (\" Child (\" + (childList.horizontal ? 'horizontal' : 'vertical') + \"):\\n\") + (\" listKey: \" + childList.key + \"\\n\") + (\" cellKey: \" + childList.cellKey);\n var debugInfo = childList.parentDebugInfo;\n while (debugInfo) {\n trace += \"\\n Parent (\" + (debugInfo.horizontal ? 'horizontal' : 'vertical') + \"):\\n\" + (\" listKey: \" + debugInfo.listKey + \"\\n\") + (\" cellKey: \" + debugInfo.cellKey);\n debugInfo = debugInfo.parent;\n }\n return trace;\n}\nvar styles = StyleSheet.create({\n verticallyInverted: {\n transform: [{\n scaleY: -1\n }]\n },\n horizontallyInverted: {\n transform: [{\n scaleX: -1\n }]\n },\n row: {\n flexDirection: 'row'\n },\n rowReverse: {\n flexDirection: 'row-reverse'\n },\n columnReverse: {\n flexDirection: 'column-reverse'\n },\n debug: {\n flex: 1\n },\n debugOverlayBase: {\n position: 'absolute',\n top: 0,\n right: 0\n },\n debugOverlay: {\n bottom: 0,\n width: 20,\n borderColor: 'blue',\n borderWidth: 1\n },\n debugOverlayFrame: {\n left: 0,\n backgroundColor: 'orange'\n },\n debugOverlayFrameLast: {\n left: 0,\n borderColor: 'green',\n borderWidth: 2\n },\n debugOverlayFrameVis: {\n left: 0,\n borderColor: 'red',\n borderWidth: 2\n }\n});\nexport default VirtualizedList;","map":{"version":3,"names":["_createForOfIteratorHelperLoose","_extends","_objectSpread","Batchinator","FillRateHelper","findNodeHandle","RefreshControl","ScrollView","StyleSheet","View","ViewabilityHelper","flattenStyle","flatten","infoLog","invariant","keyExtractor","defaultKeyExtractor","computeWindowedRenderLimits","React","VirtualizedListCellContextProvider","VirtualizedListContext","VirtualizedListContextProvider","__DEV__","process","env","NODE_ENV","_usedIndexForKey","_keylessItemComponentName","horizontalOrDefault","horizontal","initialNumToRenderOrDefault","initialNumToRender","maxToRenderPerBatchOrDefault","maxToRenderPerBatch","onEndReachedThresholdOrDefault","onEndReachedThreshold","scrollEventThrottleOrDefault","scrollEventThrottle","windowSizeOrDefault","windowSize","VirtualizedList","_props","_this$props$updateCel","_getScrollMetrics","_scrollMetrics","_getOutermostParentListRef","_isNestedWithSameOrientation","context","getOutermostParentListRef","_getNestedChildState","key","existingChildData","_nestedChildLists","get","state","_registerAsNestedChild","childList","childListsInCell","_cellKeysToChildListKeys","cellKey","Set","add","set","ref","console","error","describeNestedLists","props","_hasInteracted","recordInteraction","_unregisterAsNestedChild","_onUpdateSeparators","keys","newProps","forEach","_cellRefs","updateSeparatorProps","_getSpacerKey","isVertical","_averageCellLength","Map","_frames","_footerLength","_hasDoneInitialScroll","_hasMore","_hasWarned","_headerLength","_hiPriInProgress","_highestMeasuredFrameIndex","_indicesToKeys","_offsetFromParentVirtualizedList","_prevParentOffset","contentLength","dOffset","dt","offset","timestamp","velocity","visibleLength","_scrollRef","_sentEndForContentLength","_totalCellLength","_totalCellsMeasured","_viewabilityTuples","_captureScrollRef","_defaultRenderScrollComponent","onRefresh","createElement","_props$refreshing","refreshing","JSON","stringify","refreshControl","progressViewOffset","_onCellUnmount","curr","inLayout","_onLayout","e","measureLayoutRelativeToContainingList","_selectLength","nativeEvent","layout","onLayout","_scheduleCellsToRenderUpdate","_maybeCallOnEndReached","_onLayoutEmpty","_onLayoutFooter","_triggerRemeasureForChildListsInCell","_getFooterCellKey","_onLayoutHeader","_onContentSizeChange","width","height","initialScrollIndex","contentOffset","scrollToIndex","animated","index","onContentSizeChange","_convertParentScrollMetrics","metrics","_onScroll","onScroll","timeStamp","layoutMeasurement","contentSize","_selectOffset","_this$_convertParentS","Math","max","perf","prevDt","_updateViewableItems","data","_fillRateHelper","activate","_computeBlankness","_onScrollBeginDrag","tuple","viewabilityHelper","onScrollBeginDrag","_onScrollEndDrag","onScrollEndDrag","_onMomentumScrollBegin","onMomentumScrollBegin","_onMomentumScrollEnd","onMomentumScrollEnd","_updateCellsToRender","_this$props3","getItemCount","_onEndReachedThreshold","isVirtualizationDisabled","_isVirtualizationDisabled","setState","newState","_this$_scrollMetrics","_getFrameMetricsApprox","distanceFromEnd","renderAhead","first","last","min","size","newFirst","newLast","ii","cellKeyForIndex","childListKeys","someChildHasMore","_iterator","_step","done","childKey","value","hasMore","_createViewToken","isViewable","_this$props4","getItem","item","_keyExtractor","frame","_getFrameMetrics","getItemLayout","length","_this$props5","__isNative","_updateCellsToRenderBatcher","updateCellsBatchingPeriod","viewabilityConfigCallbackPairs","map","pair","viewabilityConfig","onViewableItemsChanged","push","initialState","storedState","getNestedChildState","_getListKey","frames","invertedWheelEventHandler","ev","inverted","getScrollableNode","node","scrollLeft","deltaX","wheelDeltaX","scrollTop","deltaY","wheelDeltaY","preventDefault","params","veryLast","scrollTo","warn","x","y","_this$props","onScrollToIndexFailed","viewOffset","viewPosition","averageItemLength","highestMeasuredFrameIndex","_this$props2","itemCount","_index","t","flashScrollIndicators","getScrollResponder","getScrollRef","setNativeProps","_this$context","listKey","_getCellKey","_this$context2","parent","debugInfo","registerAsNestedChild","parentDebugInfo","setupWebWheelHandler","unregisterAsNestedChild","dispose","abort","deactivateAndFlush","teardownWebWheelHandler","addEventListener","setTimeout","removeEventListener","cells","stickyHeaderIndices","stickyIndicesFromProps","inversionStyle","_this","_this$props6","CellRendererComponent","ItemSeparatorComponent","stickyOffset","ListHeaderComponent","end","prevCellKey","_loop","has","CellRenderer","undefined","fillRateHelper","onUpdateSeparators","_onCellLayout","onUnmount","parentProps","_ref","disableVirtualization","nestedContext","String","type","displayName","flatStyles","contentContainerStyle","flexWrap","_this$props7","ListEmptyComponent","ListFooterComponent","_this$props8","styles","horizontallyInverted","verticallyInverted","element","isValidElement","style","compose","ListHeaderComponentStyle","spacerKey","lastInitialIndex","_this$state","_pushCells","firstAfterInitial","insertedStickySpacer","initBlock","stickyBlock","leadSpace","trailSpace","_initBlock","firstSpace","lastFrame","endFrame","tailSpacerLength","_element","cloneElement","event","_element2","ListFooterComponentStyle","scrollProps","invertStickyHeaders","innerRet","getScrollMetrics","_getDebugInfo","renderScrollComponent","ret","debug","_renderDebugOverlay","prevProps","_this$props9","extraData","resetViewableIndices","hiPriInProgress","computeBlankness","next","_iterator2","_step2","measureLayout","scrollMetrics","metricsChanged","_iterator3","_step3","stack","normalize","framesInLayout","windowTop","frameLast","windowLen","visTop","visLen","debugOverlayBase","debugOverlay","f","debugOverlayFrame","top","debugOverlayFrameLast","debugOverlayFrameVis","_this$props10","onEndReached","_this$_scrollMetrics2","threshold","_this$state2","_this$_scrollMetrics3","hiPri","scrollingThreshold","distTop","distBottom","schedule","onUpdate","prevState","PureComponent","contextType","arguments","separatorProps","highlighted","leadingItem","_separators","highlight","_this$props11","unhighlight","_this$props12","updateProps","select","_this$props13","renderItem","ListItemComponent","separators","_this$props14","_renderElement","enabled","itemSeparator","cellStyle","rowReverse","columnReverse","row","result","Component","trace","create","transform","scaleY","scaleX","flexDirection","flex","position","right","bottom","borderColor","borderWidth","left","backgroundColor"],"sources":["/Users/mathildejean/Documents/BUT/LaSuperMeteo/LaSuperMeteo/iut-expo-starter/node_modules/react-native-web/dist/vendor/react-native/VirtualizedList/index.js"],"sourcesContent":["import _createForOfIteratorHelperLoose from \"@babel/runtime/helpers/createForOfIteratorHelperLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @format\n */\nimport Batchinator from '../Batchinator';\nimport FillRateHelper from '../FillRateHelper';\nimport findNodeHandle from '../../../exports/findNodeHandle';\nimport RefreshControl from '../../../exports/RefreshControl';\nimport ScrollView from '../../../exports/ScrollView';\nimport StyleSheet from '../../../exports/StyleSheet';\nimport View from '../../../exports/View';\nimport ViewabilityHelper from '../ViewabilityHelper';\nvar flattenStyle = StyleSheet.flatten;\nimport infoLog from '../infoLog';\nimport invariant from 'fbjs/lib/invariant';\nimport { keyExtractor as defaultKeyExtractor, computeWindowedRenderLimits } from '../VirtualizeUtils';\nimport * as React from 'react';\nimport { VirtualizedListCellContextProvider, VirtualizedListContext, VirtualizedListContextProvider } from './VirtualizedListContext.js';\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar _usedIndexForKey = false;\nvar _keylessItemComponentName = '';\n\n/**\n * Default Props Helper Functions\n * Use the following helper functions for default values\n */\n// horizontalOrDefault(this.props.horizontal)\nfunction horizontalOrDefault(horizontal) {\n return horizontal !== null && horizontal !== void 0 ? horizontal : false;\n} // initialNumToRenderOrDefault(this.props.initialNumToRenderOrDefault)\n\n\nfunction initialNumToRenderOrDefault(initialNumToRender) {\n return initialNumToRender !== null && initialNumToRender !== void 0 ? initialNumToRender : 10;\n} // maxToRenderPerBatchOrDefault(this.props.maxToRenderPerBatch)\n\n\nfunction maxToRenderPerBatchOrDefault(maxToRenderPerBatch) {\n return maxToRenderPerBatch !== null && maxToRenderPerBatch !== void 0 ? maxToRenderPerBatch : 10;\n} // onEndReachedThresholdOrDefault(this.props.onEndReachedThreshold)\n\n\nfunction onEndReachedThresholdOrDefault(onEndReachedThreshold) {\n return onEndReachedThreshold !== null && onEndReachedThreshold !== void 0 ? onEndReachedThreshold : 2;\n} // scrollEventThrottleOrDefault(this.props.scrollEventThrottle)\n\n\nfunction scrollEventThrottleOrDefault(scrollEventThrottle) {\n return scrollEventThrottle !== null && scrollEventThrottle !== void 0 ? scrollEventThrottle : 50;\n} // windowSizeOrDefault(this.props.windowSize)\n\n\nfunction windowSizeOrDefault(windowSize) {\n return windowSize !== null && windowSize !== void 0 ? windowSize : 21;\n}\n/**\n * Base implementation for the more convenient [`<FlatList>`](https://reactnative.dev/docs/flatlist)\n * and [`<SectionList>`](https://reactnative.dev/docs/sectionlist) components, which are also better\n * documented. In general, this should only really be used if you need more flexibility than\n * `FlatList` provides, e.g. for use with immutable data instead of plain arrays.\n *\n * Virtualization massively improves memory consumption and performance of large lists by\n * maintaining a finite render window of active items and replacing all items outside of the render\n * window with appropriately sized blank space. The window adapts to scrolling behavior, and items\n * are rendered incrementally with low-pri (after any running interactions) if they are far from the\n * visible area, or with hi-pri otherwise to minimize the potential of seeing blank space.\n *\n * Some caveats:\n *\n * - Internal state is not preserved when content scrolls out of the render window. Make sure all\n * your data is captured in the item data or external stores like Flux, Redux, or Relay.\n * - This is a `PureComponent` which means that it will not re-render if `props` remain shallow-\n * equal. Make sure that everything your `renderItem` function depends on is passed as a prop\n * (e.g. `extraData`) that is not `===` after updates, otherwise your UI may not update on\n * changes. This includes the `data` prop and parent component state.\n * - In order to constrain memory and enable smooth scrolling, content is rendered asynchronously\n * offscreen. This means it's possible to scroll faster than the fill rate ands momentarily see\n * blank content. This is a tradeoff that can be adjusted to suit the needs of each application,\n * and we are working on improving it behind the scenes.\n * - By default, the list looks for a `key` or `id` prop on each item and uses that for the React key.\n * Alternatively, you can provide a custom `keyExtractor` prop.\n * - As an effort to remove defaultProps, use helper functions when referencing certain props\n *\n */\n\n\nclass VirtualizedList extends React.PureComponent {\n // scrollToEnd may be janky without getItemLayout prop\n scrollToEnd(params) {\n var animated = params ? params.animated : true;\n var veryLast = this.props.getItemCount(this.props.data) - 1;\n\n var frame = this._getFrameMetricsApprox(veryLast);\n\n var offset = Math.max(0, frame.offset + frame.length + this._footerLength - this._scrollMetrics.visibleLength);\n\n if (this._scrollRef == null) {\n return;\n }\n\n if (this._scrollRef.scrollTo == null) {\n 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.');\n return;\n }\n\n this._scrollRef.scrollTo(horizontalOrDefault(this.props.horizontal) ? {\n x: offset,\n animated\n } : {\n y: offset,\n animated\n });\n } // scrollToIndex may be janky without getItemLayout prop\n\n\n scrollToIndex(params) {\n var _this$props = this.props,\n data = _this$props.data,\n horizontal = _this$props.horizontal,\n getItemCount = _this$props.getItemCount,\n getItemLayout = _this$props.getItemLayout,\n onScrollToIndexFailed = _this$props.onScrollToIndexFailed;\n var animated = params.animated,\n index = params.index,\n viewOffset = params.viewOffset,\n viewPosition = params.viewPosition;\n invariant(index >= 0, \"scrollToIndex out of range: requested index \" + index + \" but minimum is 0\");\n invariant(getItemCount(data) >= 1, \"scrollToIndex out of range: item length \" + getItemCount(data) + \" but minimum is 1\");\n invariant(index < getItemCount(data), \"scrollToIndex out of range: requested index \" + index + \" is out of 0 to \" + (getItemCount(data) - 1));\n\n if (!getItemLayout && index > this._highestMeasuredFrameIndex) {\n 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.');\n onScrollToIndexFailed({\n averageItemLength: this._averageCellLength,\n highestMeasuredFrameIndex: this._highestMeasuredFrameIndex,\n index\n });\n return;\n }\n\n var frame = this._getFrameMetricsApprox(index);\n\n var offset = Math.max(0, frame.offset - (viewPosition || 0) * (this._scrollMetrics.visibleLength - frame.length)) - (viewOffset || 0);\n\n if (this._scrollRef == null) {\n return;\n }\n\n if (this._scrollRef.scrollTo == null) {\n 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.');\n return;\n }\n\n this._scrollRef.scrollTo(horizontal ? {\n x: offset,\n animated\n } : {\n y: offset,\n animated\n });\n } // scrollToItem may be janky without getItemLayout prop. Required linear scan through items -\n // use scrollToIndex instead if possible.\n\n\n scrollToItem(params) {\n var item = params.item;\n var _this$props2 = this.props,\n data = _this$props2.data,\n getItem = _this$props2.getItem,\n getItemCount = _this$props2.getItemCount;\n var itemCount = getItemCount(data);\n\n for (var _index = 0; _index < itemCount; _index++) {\n if (getItem(data, _index) === item) {\n this.scrollToIndex(_objectSpread(_objectSpread({}, params), {}, {\n index: _index\n }));\n break;\n }\n }\n }\n /**\n * Scroll to a specific content pixel offset in the list.\n *\n * Param `offset` expects the offset to scroll to.\n * In case of `horizontal` is true, the offset is the x-value,\n * in any other case the offset is the y-value.\n *\n * Param `animated` (`true` by default) defines whether the list\n * should do an animation while scrolling.\n */\n\n\n scrollToOffset(params) {\n var animated = params.animated,\n offset = params.offset;\n\n if (this._scrollRef == null) {\n return;\n }\n\n if (this._scrollRef.scrollTo == null) {\n 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.');\n return;\n }\n\n this._scrollRef.scrollTo(horizontalOrDefault(this.props.horizontal) ? {\n x: offset,\n animated\n } : {\n y: offset,\n animated\n });\n }\n\n recordInteraction() {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref.recordInteraction();\n });\n\n this._viewabilityTuples.forEach(t => {\n t.viewabilityHelper.recordInteraction();\n });\n\n this._updateViewableItems(this.props.data);\n }\n\n flashScrollIndicators() {\n if (this._scrollRef == null) {\n return;\n }\n\n this._scrollRef.flashScrollIndicators();\n }\n /**\n * Provides a handle to the underlying scroll responder.\n * Note that `this._scrollRef` might not be a `ScrollView`, so we\n * need to check that it responds to `getScrollResponder` before calling it.\n */\n\n\n getScrollResponder() {\n if (this._scrollRef && this._scrollRef.getScrollResponder) {\n return this._scrollRef.getScrollResponder();\n }\n }\n\n getScrollableNode() {\n if (this._scrollRef && this._scrollRef.getScrollableNode) {\n return this._scrollRef.getScrollableNode();\n } else {\n return findNodeHandle(this._scrollRef);\n }\n }\n\n getScrollRef() {\n if (this._scrollRef && this._scrollRef.getScrollRef) {\n return this._scrollRef.getScrollRef();\n } else {\n return this._scrollRef;\n }\n }\n\n setNativeProps(props) {\n if (this._scrollRef) {\n this._scrollRef.setNativeProps(props);\n }\n }\n\n _getCellKey() {\n var _this$context;\n\n return ((_this$context = this.context) == null ? void 0 : _this$context.cellKey) || 'rootList';\n }\n\n _getListKey() {\n return this.props.listKey || this._getCellKey();\n }\n\n _getDebugInfo() {\n var _this$context2;\n\n return {\n listKey: this._getListKey(),\n cellKey: this._getCellKey(),\n horizontal: horizontalOrDefault(this.props.horizontal),\n parent: (_this$context2 = this.context) == null ? void 0 : _this$context2.debugInfo\n };\n }\n\n hasMore() {\n return this._hasMore;\n }\n\n constructor(_props) {\n var _this$props$updateCel;\n\n super(_props);\n\n this._getScrollMetrics = () => {\n return this._scrollMetrics;\n };\n\n this._getOutermostParentListRef = () => {\n if (this._isNestedWithSameOrientation()) {\n return this.context.getOutermostParentListRef();\n } else {\n return this;\n }\n };\n\n this._getNestedChildState = key => {\n var existingChildData = this._nestedChildLists.get(key);\n\n return existingChildData && existingChildData.state;\n };\n\n this._registerAsNestedChild = childList => {\n // Register the mapping between this child key and the cellKey for its cell\n var childListsInCell = this._cellKeysToChildListKeys.get(childList.cellKey) || new Set();\n childListsInCell.add(childList.key);\n\n this._cellKeysToChildListKeys.set(childList.cellKey, childListsInCell);\n\n var existingChildData = this._nestedChildLists.get(childList.key);\n\n if (existingChildData && existingChildData.ref !== null) {\n console.error('A VirtualizedList contains a cell which itself contains ' + 'more than one VirtualizedList of the same orientation as the parent ' + 'list. You must pass a unique listKey prop to each sibling list.\\n\\n' + describeNestedLists(_objectSpread(_objectSpread({}, childList), {}, {\n // We're called from the child's componentDidMount, so it's safe to\n // read the child's props here (albeit weird).\n horizontal: !!childList.ref.props.horizontal\n })));\n }\n\n this._nestedChildLists.set(childList.key, {\n ref: childList.ref,\n state: null\n });\n\n if (this._hasInteracted) {\n childList.ref.recordInteraction();\n }\n };\n\n this._unregisterAsNestedChild = childList => {\n this._nestedChildLists.set(childList.key, {\n ref: null,\n state: childList.state\n });\n };\n\n this._onUpdateSeparators = (keys, newProps) => {\n keys.forEach(key => {\n var ref = key != null && this._cellRefs[key];\n ref && ref.updateSeparatorProps(newProps);\n });\n };\n\n this._getSpacerKey = isVertical => isVertical ? 'height' : 'width';\n\n this._averageCellLength = 0;\n this._cellKeysToChildListKeys = new Map();\n this._cellRefs = {};\n this._frames = {};\n this._footerLength = 0;\n this._hasDoneInitialScroll = false;\n this._hasInteracted = false;\n this._hasMore = false;\n this._hasWarned = {};\n this._headerLength = 0;\n this._hiPriInProgress = false;\n this._highestMeasuredFrameIndex = 0;\n this._indicesToKeys = new Map();\n this._nestedChildLists = new Map();\n this._offsetFromParentVirtualizedList = 0;\n this._prevParentOffset = 0;\n this._scrollMetrics = {\n contentLength: 0,\n dOffset: 0,\n dt: 10,\n offset: 0,\n timestamp: 0,\n velocity: 0,\n visibleLength: 0\n };\n this._scrollRef = null;\n this._sentEndForContentLength = 0;\n this._totalCellLength = 0;\n this._totalCellsMeasured = 0;\n this._viewabilityTuples = [];\n\n this._captureScrollRef = ref => {\n this._scrollRef = ref;\n };\n\n this._defaultRenderScrollComponent = props => {\n var onRefresh = props.onRefresh;\n\n if (this._isNestedWithSameOrientation()) {\n // $FlowFixMe[prop-missing] - Typing ReactNativeComponent revealed errors\n return /*#__PURE__*/React.createElement(View, props);\n } else if (onRefresh) {\n var _props$refreshing;\n\n invariant(typeof props.refreshing === 'boolean', '`refreshing` prop must be set as a boolean in order to use `onRefresh`, but got `' + JSON.stringify((_props$refreshing = props.refreshing) !== null && _props$refreshing !== void 0 ? _props$refreshing : 'undefined') + '`');\n return (\n /*#__PURE__*/\n // $FlowFixMe[prop-missing] Invalid prop usage\n React.createElement(ScrollView, _extends({}, props, {\n refreshControl: props.refreshControl == null ? /*#__PURE__*/React.createElement(RefreshControl, {\n refreshing: props.refreshing,\n onRefresh: onRefresh,\n progressViewOffset: props.progressViewOffset\n }) : props.refreshControl\n }))\n );\n } else {\n // $FlowFixMe[prop-missing] Invalid prop usage\n return /*#__PURE__*/React.createElement(ScrollView, props);\n }\n };\n\n this._onCellUnmount = cellKey => {\n var curr = this._frames[cellKey];\n\n if (curr) {\n this._frames[cellKey] = _objectSpread(_objectSpread({}, curr), {}, {\n inLayout: false\n });\n }\n };\n\n this._onLayout = e => {\n if (this._isNestedWithSameOrientation()) {\n // Need to adjust our scroll metrics to be relative to our containing\n // VirtualizedList before we can make claims about list item viewability\n this.measureLayoutRelativeToContainingList();\n } else {\n this._scrollMetrics.visibleLength = this._selectLength(e.nativeEvent.layout);\n }\n\n this.props.onLayout && this.props.onLayout(e);\n\n this._scheduleCellsToRenderUpdate();\n\n this._maybeCallOnEndReached();\n };\n\n this._onLayoutEmpty = e => {\n this.props.onLayout && this.props.onLayout(e);\n };\n\n this._onLayoutFooter = e => {\n this._triggerRemeasureForChildListsInCell(this._getFooterCellKey());\n\n this._footerLength = this._selectLength(e.nativeEvent.layout);\n };\n\n this._onLayoutHeader = e => {\n this._headerLength = this._selectLength(e.nativeEvent.layout);\n };\n\n this._onContentSizeChange = (width, height) => {\n if (width > 0 && height > 0 && this.props.initialScrollIndex != null && this.props.initialScrollIndex > 0 && !this._hasDoneInitialScroll) {\n if (this.props.contentOffset == null) {\n this.scrollToIndex({\n animated: false,\n index: this.props.initialScrollIndex\n });\n }\n\n this._hasDoneInitialScroll = true;\n }\n\n if (this.props.onContentSizeChange) {\n this.props.onContentSizeChange(width, height);\n }\n\n this._scrollMetrics.contentLength = this._selectLength({\n height,\n width\n });\n\n this._scheduleCellsToRenderUpdate();\n\n this._maybeCallOnEndReached();\n };\n\n this._convertParentScrollMetrics = metrics => {\n // Offset of the top of the nested list relative to the top of its parent's viewport\n var offset = metrics.offset - this._offsetFromParentVirtualizedList; // Child's visible length is the same as its parent's\n\n var visibleLength = metrics.visibleLength;\n var dOffset = offset - this._scrollMetrics.offset;\n var contentLength = this._scrollMetrics.contentLength;\n return {\n visibleLength,\n contentLength,\n offset,\n dOffset\n };\n };\n\n this._onScroll = e => {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref._onScroll(e);\n });\n\n if (this.props.onScroll) {\n this.props.onScroll(e);\n }\n\n var timestamp = e.timeStamp;\n\n var visibleLength = this._selectLength(e.nativeEvent.layoutMeasurement);\n\n var contentLength = this._selectLength(e.nativeEvent.contentSize);\n\n var offset = this._selectOffset(e.nativeEvent.contentOffset);\n\n var dOffset = offset - this._scrollMetrics.offset;\n\n if (this._isNestedWithSameOrientation()) {\n if (this._scrollMetrics.contentLength === 0) {\n // Ignore scroll events until onLayout has been called and we\n // know our offset from our offset from our parent\n return;\n }\n\n var _this$_convertParentS = this._convertParentScrollMetrics({\n visibleLength,\n offset\n });\n\n visibleLength = _this$_convertParentS.visibleLength;\n contentLength = _this$_convertParentS.contentLength;\n offset = _this$_convertParentS.offset;\n dOffset = _this$_convertParentS.dOffset;\n }\n\n var dt = this._scrollMetrics.timestamp ? Math.max(1, timestamp - this._scrollMetrics.timestamp) : 1;\n var velocity = dOffset / dt;\n\n if (dt > 500 && this._scrollMetrics.dt > 500 && contentLength > 5 * visibleLength && !this._hasWarned.perf) {\n 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.', {\n dt,\n prevDt: this._scrollMetrics.dt,\n contentLength\n });\n this._hasWarned.perf = true;\n }\n\n this._scrollMetrics = {\n contentLength,\n dt,\n dOffset,\n offset,\n timestamp,\n velocity,\n visibleLength\n };\n\n this._updateViewableItems(this.props.data);\n\n if (!this.props) {\n return;\n }\n\n this._maybeCallOnEndReached();\n\n if (velocity !== 0) {\n this._fillRateHelper.activate();\n }\n\n this._computeBlankness();\n\n this._scheduleCellsToRenderUpdate();\n };\n\n this._onScrollBeginDrag = e => {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref._onScrollBeginDrag(e);\n });\n\n this._viewabilityTuples.forEach(tuple => {\n tuple.viewabilityHelper.recordInteraction();\n });\n\n this._hasInteracted = true;\n this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);\n };\n\n this._onScrollEndDrag = e => {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref._onScrollEndDrag(e);\n });\n\n var velocity = e.nativeEvent.velocity;\n\n if (velocity) {\n this._scrollMetrics.velocity = this._selectOffset(velocity);\n }\n\n this._computeBlankness();\n\n this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);\n };\n\n this._onMomentumScrollBegin = e => {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref._onMomentumScrollBegin(e);\n });\n\n this.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e);\n };\n\n this._onMomentumScrollEnd = e => {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref._onMomentumScrollEnd(e);\n });\n\n this._scrollMetrics.velocity = 0;\n\n this._computeBlankness();\n\n this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);\n };\n\n this._updateCellsToRender = () => {\n var _this$props3 = this.props,\n data = _this$props3.data,\n getItemCount = _this$props3.getItemCount,\n _onEndReachedThreshold = _this$props3.onEndReachedThreshold;\n var onEndReachedThreshold = onEndReachedThresholdOrDefault(_onEndReachedThreshold);\n\n var isVirtualizationDisabled = this._isVirtualizationDisabled();\n\n this._updateViewableItems(data);\n\n if (!data) {\n return;\n }\n\n this.setState(state => {\n var newState;\n var _this$_scrollMetrics = this._scrollMetrics,\n contentLength = _this$_scrollMetrics.contentLength,\n offset = _this$_scrollMetrics.offset,\n visibleLength = _this$_scrollMetrics.visibleLength;\n\n if (!isVirtualizationDisabled) {\n // If we run this with bogus data, we'll force-render window {first: 0, last: 0},\n // and wipe out the initialNumToRender rendered elements.\n // So let's wait until the scroll view metrics have been set up. And until then,\n // we will trust the initialNumToRender suggestion\n if (visibleLength > 0 && contentLength > 0) {\n // If we have a non-zero initialScrollIndex and run this before we've scrolled,\n // we'll wipe out the initialNumToRender rendered elements starting at initialScrollIndex.\n // So let's wait until we've scrolled the view to the right place. And until then,\n // we will trust the initialScrollIndex suggestion.\n if (!this.props.initialScrollIndex || this._scrollMetrics.offset) {\n newState = computeWindowedRenderLimits(this.props.data, this.props.getItemCount, maxToRenderPerBatchOrDefault(this.props.maxToRenderPerBatch), windowSizeOrDefault(this.props.windowSize), state, this._getFrameMetricsApprox, this._scrollMetrics);\n }\n }\n } else {\n var distanceFromEnd = contentLength - visibleLength - offset;\n var renderAhead = distanceFromEnd < onEndReachedThreshold * visibleLength ? maxToRenderPerBatchOrDefault(this.props.maxToRenderPerBatch) : 0;\n newState = {\n first: 0,\n last: Math.min(state.last + renderAhead, getItemCount(data) - 1)\n };\n }\n\n if (newState && this._nestedChildLists.size > 0) {\n var newFirst = newState.first;\n var newLast = newState.last; // If some cell in the new state has a child list in it, we should only render\n // up through that item, so that we give that list a chance to render.\n // Otherwise there's churn from multiple child lists mounting and un-mounting\n // their items.\n\n for (var ii = newFirst; ii <= newLast; ii++) {\n var cellKeyForIndex = this._indicesToKeys.get(ii);\n\n var childListKeys = cellKeyForIndex && this._cellKeysToChildListKeys.get(cellKeyForIndex);\n\n if (!childListKeys) {\n continue;\n }\n\n var someChildHasMore = false; // For each cell, need to check whether any child list in it has more elements to render\n\n for (var _iterator = _createForOfIteratorHelperLoose(childListKeys), _step; !(_step = _iterator()).done;) {\n var childKey = _step.value;\n\n var childList = this._nestedChildLists.get(childKey);\n\n if (childList && childList.ref && childList.ref.hasMore()) {\n someChildHasMore = true;\n break;\n }\n }\n\n if (someChildHasMore) {\n // $FlowFixMe[incompatible-use] The newState definitely exists past \"if (newState &&\"\n newState.last = ii;\n break;\n }\n }\n }\n\n if (newState != null && newState.first === state.first && newState.last === state.last) {\n newState = null;\n }\n\n return newState;\n });\n };\n\n this._createViewToken = (index, isViewable) => {\n var _this$props4 = this.props,\n data = _this$props4.data,\n getItem = _this$props4.getItem;\n var item = getItem(data, index);\n return {\n index,\n item,\n key: this._keyExtractor(item, index),\n isViewable\n };\n };\n\n this._getFrameMetricsApprox = index => {\n var frame = this._getFrameMetrics(index);\n\n if (frame && frame.index === index) {\n // check for invalid frames due to row re-ordering\n return frame;\n } else {\n var getItemLayout = this.props.getItemLayout;\n invariant(!getItemLayout, 'Should not have to estimate frames when a measurement metrics function is provided');\n return {\n length: this._averageCellLength,\n offset: this._averageCellLength * index\n };\n }\n };\n\n this._getFrameMetrics = index => {\n var _this$props5 = this.props,\n data = _this$props5.data,\n getItem = _this$props5.getItem,\n getItemCount = _this$props5.getItemCount,\n getItemLayout = _this$props5.getItemLayout;\n invariant(getItemCount(data) > index, 'Tried to get frame for out of range index ' + index);\n var item = getItem(data, index);\n\n var frame = item && this._frames[this._keyExtractor(item, index)];\n\n if (!frame || frame.index !== index) {\n if (getItemLayout) {\n frame = getItemLayout(data, index);\n }\n }\n /* $FlowFixMe[prop-missing] (>=0.63.0 site=react_native_fb) This comment\n * suppresses an error found when Flow v0.63 was deployed. To see the error\n * delete this comment and run Flow. */\n\n\n return frame;\n };\n\n invariant( // $FlowFixMe[prop-missing]\n !_props.onScroll || !_props.onScroll.__isNative, 'Components based on VirtualizedList must be wrapped with Animated.createAnimatedComponent ' + 'to support native onScroll events with useNativeDriver');\n invariant(windowSizeOrDefault(_props.windowSize) > 0, 'VirtualizedList: The windowSize prop must be present and set to a value greater than 0.');\n this._fillRateHelper = new FillRateHelper(this._getFrameMetrics);\n this._updateCellsToRenderBatcher = new Batchinator(this._updateCellsToRender, (_this$props$updateCel = this.props.updateCellsBatchingPeriod) !== null && _this$props$updateCel !== void 0 ? _this$props$updateCel : 50);\n\n if (this.props.viewabilityConfigCallbackPairs) {\n this._viewabilityTuples = this.props.viewabilityConfigCallbackPairs.map(pair => ({\n viewabilityHelper: new ViewabilityHelper(pair.viewabilityConfig),\n onViewableItemsChanged: pair.onViewableItemsChanged\n }));\n } else if (this.props.onViewableItemsChanged) {\n this._viewabilityTuples.push({\n viewabilityHelper: new ViewabilityHelper(this.props.viewabilityConfig),\n // $FlowFixMe[incompatible-call]\n onViewableItemsChanged: this.props.onViewableItemsChanged\n });\n }\n\n var initialState = {\n first: this.props.initialScrollIndex || 0,\n last: Math.min(this.props.getItemCount(this.props.data), (this.props.initialScrollIndex || 0) + initialNumToRenderOrDefault(this.props.initialNumToRender)) - 1\n };\n\n if (this._isNestedWithSameOrientation()) {\n var storedState = this.context.getNestedChildState(this._getListKey());\n\n if (storedState) {\n initialState = storedState;\n this.state = storedState;\n this._frames = storedState.frames;\n }\n } // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\n // For issue https://github.com/necolas/react-native-web/issues/995\n\n\n this.invertedWheelEventHandler = ev => {\n if (this.props.inverted && this._scrollRef && this._scrollRef.getScrollableNode) {\n var node = this._scrollRef.getScrollableNode();\n\n if (this.props.horizontal) {\n node.scrollLeft -= ev.deltaX || ev.wheelDeltaX;\n } else {\n node.scrollTop -= ev.deltaY || ev.wheelDeltaY;\n }\n\n ev.preventDefault();\n }\n };\n\n this.state = initialState;\n }\n\n componentDidMount() {\n if (this._isNestedWithSameOrientation()) {\n this.context.registerAsNestedChild({\n cellKey: this._getCellKey(),\n key: this._getListKey(),\n ref: this,\n // NOTE: When the child mounts (here) it's not necessarily safe to read\n // the parent's props. This is why we explicitly propagate debugInfo\n // \"down\" via context and \"up\" again via this method call on the\n // parent.\n parentDebugInfo: this.context.debugInfo\n });\n } // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\n\n\n this.setupWebWheelHandler();\n }\n\n componentWillUnmount() {\n if (this._isNestedWithSameOrientation()) {\n this.context.unregisterAsNestedChild({\n key: this._getListKey(),\n state: {\n first: this.state.first,\n last: this.state.last,\n frames: this._frames\n }\n });\n }\n\n this._updateViewableItems(null);\n\n this._updateCellsToRenderBatcher.dispose({\n abort: true\n });\n\n this._viewabilityTuples.forEach(tuple => {\n tuple.viewabilityHelper.dispose();\n });\n\n this._fillRateHelper.deactivateAndFlush(); // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\n\n\n this.teardownWebWheelHandler();\n } // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\n\n\n setupWebWheelHandler() {\n if (this._scrollRef && this._scrollRef.getScrollableNode) {\n this._scrollRef.getScrollableNode().addEventListener('wheel', this.invertedWheelEventHandler);\n } else {\n setTimeout(() => this.setupWebWheelHandler(), 50);\n return;\n }\n } // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\n\n\n teardownWebWheelHandler() {\n if (this._scrollRef && this._scrollRef.getScrollableNode) {\n this._scrollRef.getScrollableNode().removeEventListener('wheel', this.invertedWheelEventHandler);\n }\n }\n\n static getDerivedStateFromProps(newProps, prevState) {\n var data = newProps.data,\n getItemCount = newProps.getItemCount;\n var maxToRenderPerBatch = maxToRenderPerBatchOrDefault(newProps.maxToRenderPerBatch); // first and last could be stale (e.g. if a new, shorter items props is passed in), so we make\n // sure we're rendering a reasonable range here.\n\n return {\n first: Math.max(0, Math.min(prevState.first, getItemCount(data) - 1 - maxToRenderPerBatch)),\n last: Math.max(0, Math.min(prevState.last, getItemCount(data) - 1))\n };\n }\n\n _pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, first, last, inversionStyle) {\n var _this = this;\n\n var _this$props6 = this.props,\n CellRendererComponent = _this$props6.CellRendererComponent,\n ItemSeparatorComponent = _this$props6.ItemSeparatorComponent,\n data = _this$props6.data,\n getItem = _this$props6.getItem,\n getItemCount = _this$props6.getItemCount,\n horizontal = _this$props6.horizontal;\n var stickyOffset = this.props.ListHeaderComponent ? 1 : 0;\n var end = getItemCount(data) - 1;\n var prevCellKey;\n last = Math.min(end, last);\n\n var _loop = function _loop(ii) {\n var item = getItem(data, ii);\n\n var key = _this._keyExtractor(item, ii);\n\n _this._indicesToKeys.set(ii, key);\n\n if (stickyIndicesFromProps.has(ii + stickyOffset)) {\n stickyHeaderIndices.push(cells.length);\n }\n\n cells.push( /*#__PURE__*/React.createElement(CellRenderer, {\n CellRendererComponent: CellRendererComponent,\n ItemSeparatorComponent: ii < end ? ItemSeparatorComponent : undefined,\n cellKey: key,\n fillRateHelper: _this._fillRateHelper,\n horizontal: horizontal,\n index: ii,\n inversionStyle: inversionStyle,\n item: item,\n key: key,\n prevCellKey: prevCellKey,\n onUpdateSeparators: _this._onUpdateSeparators,\n onLayout: e => _this._onCellLayout(e, key, ii),\n onUnmount: _this._onCellUnmount,\n parentProps: _this.props,\n ref: _ref => {\n _this._cellRefs[key] = _ref;\n }\n }));\n prevCellKey = key;\n };\n\n for (var ii = first; ii <= last; ii++) {\n _loop(ii);\n }\n }\n\n _isVirtualizationDisabled() {\n return this.props.disableVirtualization || false;\n }\n\n _isNestedWithSameOrientation() {\n var nestedContext = this.context;\n return !!(nestedContext && !!nestedContext.horizontal === horizontalOrDefault(this.props.horizontal));\n }\n\n _keyExtractor(item, index) {\n if (this.props.keyExtractor != null) {\n return this.props.keyExtractor(item, index);\n }\n\n var key = defaultKeyExtractor(item, index);\n\n if (key === String(index)) {\n _usedIndexForKey = true;\n\n if (item.type && item.type.displayName) {\n _keylessItemComponentName = item.type.displayName;\n }\n }\n\n return key;\n }\n\n render() {\n if (__DEV__) {\n var flatStyles = flattenStyle(this.props.contentContainerStyle);\n\n if (flatStyles != null && flatStyles.flexWrap === 'wrap') {\n console.warn('`flexWrap: `wrap`` is not supported with the `VirtualizedList` components.' + 'Consider using `numColumns` with `FlatList` instead.');\n }\n }\n\n var _this$props7 = this.props,\n ListEmptyComponent = _this$props7.ListEmptyComponent,\n ListFooterComponent = _this$props7.ListFooterComponent,\n ListHeaderComponent = _this$props7.ListHeaderComponent;\n var _this$props8 = this.props,\n data = _this$props8.data,\n horizontal = _this$props8.horizontal;\n\n var isVirtualizationDisabled = this._isVirtualizationDisabled();\n\n var inversionStyle = this.props.inverted ? horizontalOrDefault(this.props.horizontal) ? styles.horizontallyInverted : styles.verticallyInverted : null;\n var cells = [];\n var stickyIndicesFromProps = new Set(this.props.stickyHeaderIndices);\n var stickyHeaderIndices = [];\n\n if (ListHeaderComponent) {\n if (stickyIndicesFromProps.has(0)) {\n stickyHeaderIndices.push(0);\n }\n\n var element = /*#__PURE__*/React.isValidElement(ListHeaderComponent) ? ListHeaderComponent :\n /*#__PURE__*/\n // $FlowFixMe[not-a-component]\n // $FlowFixMe[incompatible-type-arg]\n React.createElement(ListHeaderComponent, null);\n cells.push( /*#__PURE__*/React.createElement(VirtualizedListCellContextProvider, {\n cellKey: this._getCellKey() + '-header',\n key: \"$header\"\n }, /*#__PURE__*/React.createElement(View, {\n onLayout: this._onLayoutHeader,\n style: StyleSheet.compose(inversionStyle, this.props.ListHeaderComponentStyle)\n }, // $FlowFixMe[incompatible-type] - Typing ReactNativeComponent revealed errors\n element)));\n }\n\n var itemCount = this.props.getItemCount(data);\n\n if (itemCount > 0) {\n _usedIndexForKey = false;\n _keylessItemComponentName = '';\n\n var spacerKey = this._getSpacerKey(!horizontal);\n\n var lastInitialIndex = this.props.initialScrollIndex ? -1 : initialNumToRenderOrDefault(this.props.initialNumToRender) - 1;\n var _this$state = this.state,\n first = _this$state.first,\n last = _this$state.last;\n\n this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, 0, lastInitialIndex, inversionStyle);\n\n var firstAfterInitial = Math.max(lastInitialIndex + 1, first);\n\n if (!isVirtualizationDisabled && first > lastInitialIndex + 1) {\n var insertedStickySpacer = false;\n\n if (stickyIndicesFromProps.size > 0) {\n var stickyOffset = ListHeaderComponent ? 1 : 0; // See if there are any sticky headers in the virtualized space that we need to render.\n\n for (var ii = firstAfterInitial - 1; ii > lastInitialIndex; ii--) {\n if (stickyIndicesFromProps.has(ii + stickyOffset)) {\n var initBlock = this._getFrameMetricsApprox(lastInitialIndex);\n\n var stickyBlock = this._getFrameMetricsApprox(ii);\n\n var leadSpace = stickyBlock.offset - initBlock.offset - (this.props.initialScrollIndex ? 0 : initBlock.length);\n cells.push( /*#__PURE__*/React.createElement(View, {\n key: \"$sticky_lead\",\n style: {\n [spacerKey]: leadSpace\n }\n }));\n\n this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, ii, ii, inversionStyle);\n\n var trailSpace = this._getFrameMetricsApprox(first).offset - (stickyBlock.offset + stickyBlock.length);\n cells.push( /*#__PURE__*/React.createElement(View, {\n key: \"$sticky_trail\",\n style: {\n [spacerKey]: trailSpace\n }\n }));\n insertedStickySpacer = true;\n break;\n }\n }\n }\n\n if (!insertedStickySpacer) {\n var _initBlock = this._getFrameMetricsApprox(lastInitialIndex);\n\n var firstSpace = this._getFrameMetricsApprox(first).offset - (_initBlock.offset + _initBlock.length);\n\n cells.push( /*#__PURE__*/React.createElement(View, {\n key: \"$lead_spacer\",\n style: {\n [spacerKey]: firstSpace\n }\n }));\n }\n }\n\n this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, firstAfterInitial, last, inversionStyle);\n\n if (!this._hasWarned.keys && _usedIndexForKey) {\n 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);\n this._hasWarned.keys = true;\n }\n\n if (!isVirtualizationDisabled && last < itemCount - 1) {\n var lastFrame = this._getFrameMetricsApprox(last); // Without getItemLayout, we limit our tail spacer to the _highestMeasuredFrameIndex to\n // prevent the user for hyperscrolling into un-measured area because otherwise content will\n // likely jump around as it renders in above the viewport.\n\n\n var end = this.props.getItemLayout ? itemCount - 1 : Math.min(itemCount - 1, this._highestMeasuredFrameIndex);\n\n var endFrame = this._getFrameMetricsApprox(end);\n\n var tailSpacerLength = endFrame.offset + endFrame.length - (lastFrame.offset + lastFrame.length);\n cells.push( /*#__PURE__*/React.createElement(View, {\n key: \"$tail_spacer\",\n style: {\n [spacerKey]: tailSpacerLength\n }\n }));\n }\n } else if (ListEmptyComponent) {\n var _element = /*#__PURE__*/React.isValidElement(ListEmptyComponent) ? ListEmptyComponent :\n /*#__PURE__*/\n // $FlowFixMe[not-a-component]\n // $FlowFixMe[incompatible-type-arg]\n React.createElement(ListEmptyComponent, null);\n\n cells.push( /*#__PURE__*/React.cloneElement(_element, {\n key: '$empty',\n onLayout: event => {\n this._onLayoutEmpty(event);\n\n if (_element.props.onLayout) {\n _element.props.onLayout(event);\n }\n },\n style: StyleSheet.compose(inversionStyle, _element.props.style)\n }));\n }\n\n if (ListFooterComponent) {\n var _element2 = /*#__PURE__*/React.isValidElement(ListFooterComponent) ? ListFooterComponent :\n /*#__PURE__*/\n // $FlowFixMe[not-a-component]\n // $FlowFixMe[incompatible-type-arg]\n React.createElement(ListFooterComponent, null);\n\n cells.push( /*#__PURE__*/React.createElement(VirtualizedListCellContextProvider, {\n cellKey: this._getFooterCellKey(),\n key: \"$footer\"\n }, /*#__PURE__*/React.createElement(View, {\n onLayout: this._onLayoutFooter,\n style: StyleSheet.compose(inversionStyle, this.props.ListFooterComponentStyle)\n }, // $FlowFixMe[incompatible-type] - Typing ReactNativeComponent revealed errors\n _element2)));\n }\n\n var scrollProps = _objectSpread(_objectSpread({}, this.props), {}, {\n onContentSizeChange: this._onContentSizeChange,\n onLayout: this._onLayout,\n onScroll: this._onScroll,\n onScrollBeginDrag: this._onScrollBeginDrag,\n onScrollEndDrag: this._onScrollEndDrag,\n onMomentumScrollBegin: this._onMomentumScrollBegin,\n onMomentumScrollEnd: this._onMomentumScrollEnd,\n scrollEventThrottle: scrollEventThrottleOrDefault(this.props.scrollEventThrottle),\n // TODO: Android support\n invertStickyHeaders: this.props.invertStickyHeaders !== undefined ? this.props.invertStickyHeaders : this.props.inverted,\n stickyHeaderIndices,\n style: inversionStyle ? [inversionStyle, this.props.style] : this.props.style\n });\n\n this._hasMore = this.state.last < this.props.getItemCount(this.props.data) - 1;\n var innerRet = /*#__PURE__*/React.createElement(VirtualizedListContextProvider, {\n value: {\n cellKey: null,\n getScrollMetrics: this._getScrollMetrics,\n horizontal: horizontalOrDefault(this.props.horizontal),\n getOutermostParentListRef: this._getOutermostParentListRef,\n getNestedChildState: this._getNestedChildState,\n registerAsNestedChild: this._registerAsNestedChild,\n unregisterAsNestedChild: this._unregisterAsNestedChild,\n debugInfo: this._getDebugInfo()\n }\n }, /*#__PURE__*/React.cloneElement((this.props.renderScrollComponent || this._defaultRenderScrollComponent)(scrollProps), {\n ref: this._captureScrollRef\n }, cells));\n var ret = innerRet;\n /* https://github.com/necolas/react-native-web/issues/2239: Re-enable when ScrollView.Context.Consumer is available.\n if (__DEV__) {\n ret = (\n <ScrollView.Context.Consumer>\n {scrollContext => {\n if (\n scrollContext != null &&\n !scrollContext.horizontal ===\n !horizontalOrDefault(this.props.horizontal) &&\n !this._hasWarned.nesting &&\n this.context == null\n ) {\n // TODO (T46547044): use React.warn once 16.9 is sync'd: https://github.com/facebook/react/pull/15170\n console.error(\n 'VirtualizedLists should never be nested inside plain ScrollViews with the same ' +\n 'orientation because it can break windowing and other functionality - use another ' +\n 'VirtualizedList-backed container instead.',\n );\n this._hasWarned.nesting = true;\n }\n return innerRet;\n }}\n </ScrollView.Context.Consumer>\n );\n }*/\n\n if (this.props.debug) {\n return /*#__PURE__*/React.createElement(View, {\n style: styles.debug\n }, ret, this._renderDebugOverlay());\n } else {\n return ret;\n }\n }\n\n componentDidUpdate(prevProps) {\n var _this$props9 = this.props,\n data = _this$props9.data,\n extraData = _this$props9.extraData;\n\n if (data !== prevProps.data || extraData !== prevProps.extraData) {\n // clear the viewableIndices cache to also trigger\n // the onViewableItemsChanged callback with the new data\n this._viewabilityTuples.forEach(tuple => {\n tuple.viewabilityHelper.resetViewableIndices();\n });\n } // The `this._hiPriInProgress` is guaranteeing a hiPri cell update will only happen\n // once per fiber update. The `_scheduleCellsToRenderUpdate` will set it to true\n // if a hiPri update needs to perform. If `componentDidUpdate` is triggered with\n // `this._hiPriInProgress=true`, means it's triggered by the hiPri update. The\n // `_scheduleCellsToRenderUpdate` will check this condition and not perform\n // another hiPri update.\n\n\n var hiPriInProgress = this._hiPriInProgress;\n\n this._scheduleCellsToRenderUpdate(); // Make sure setting `this._hiPriInProgress` back to false after `componentDidUpdate`\n // is triggered with `this._hiPriInProgress = true`\n\n\n if (hiPriInProgress) {\n this._hiPriInProgress = false;\n }\n }\n\n _computeBlankness() {\n this._fillRateHelper.computeBlankness(this.props, this.state, this._scrollMetrics);\n }\n\n _onCellLayout(e, cellKey, index) {\n var layout = e.nativeEvent.layout;\n var next = {\n offset: this._selectOffset(layout),\n length: this._selectLength(layout),\n index,\n inLayout: true\n };\n var curr = this._frames[cellKey];\n\n if (!curr || next.offset !== curr.offset || next.length !== curr.length || index !== curr.index) {\n this._totalCellLength += next.length - (curr ? curr.length : 0);\n this._totalCellsMeasured += curr ? 0 : 1;\n this._averageCellLength = this._totalCellLength / this._totalCellsMeasured;\n this._frames[cellKey] = next;\n this._highestMeasuredFrameIndex = Math.max(this._highestMeasuredFrameIndex, index);\n\n this._scheduleCellsToRenderUpdate();\n } else {\n this._frames[cellKey].inLayout = true;\n }\n\n this._triggerRemeasureForChildListsInCell(cellKey);\n\n this._computeBlankness();\n\n this._updateViewableItems(this.props.data);\n }\n\n _triggerRemeasureForChildListsInCell(cellKey) {\n var childListKeys = this._cellKeysToChildListKeys.get(cellKey);\n\n if (childListKeys) {\n for (var _iterator2 = _createForOfIteratorHelperLoose(childListKeys), _step2; !(_step2 = _iterator2()).done;) {\n var childKey = _step2.value;\n\n var childList = this._nestedChildLists.get(childKey);\n\n childList && childList.ref && childList.ref.measureLayoutRelativeToContainingList();\n }\n }\n }\n\n measureLayoutRelativeToContainingList() {\n // TODO (T35574538): findNodeHandle sometimes crashes with \"Unable to find\n // node on an unmounted component\" during scrolling\n try {\n if (!this._scrollRef) {\n return;\n } // We are assuming that getOutermostParentListRef().getScrollRef()\n // is a non-null reference to a ScrollView\n\n\n this._scrollRef.measureLayout(this.context.getOutermostParentListRef().getScrollRef(), (x, y, width, height) => {\n this._offsetFromParentVirtualizedList = this._selectOffset({\n x,\n y\n });\n this._scrollMetrics.contentLength = this._selectLength({\n width,\n height\n });\n\n var scrollMetrics = this._convertParentScrollMetrics(this.context.getScrollMetrics());\n\n var metricsChanged = this._scrollMetrics.visibleLength !== scrollMetrics.visibleLength || this._scrollMetrics.offset !== scrollMetrics.offset;\n\n if (metricsChanged) {\n this._scrollMetrics.visibleLength = scrollMetrics.visibleLength;\n this._scrollMetrics.offset = scrollMetrics.offset; // If metrics of the scrollView changed, then we triggered remeasure for child list\n // to ensure VirtualizedList has the right information.\n\n this._cellKeysToChildListKeys.forEach(childListKeys => {\n if (childListKeys) {\n for (var _iterator3 = _createForOfIteratorHelperLoose(childListKeys), _step3; !(_step3 = _iterator3()).done;) {\n var childKey = _step3.value;\n\n var childList = this._nestedChildLists.get(childKey);\n\n childList && childList.ref && childList.ref.measureLayoutRelativeToContainingList();\n }\n }\n });\n }\n }, error => {\n console.warn(\"VirtualizedList: Encountered an error while measuring a list's\" + ' offset from its containing VirtualizedList.');\n });\n } catch (error) {\n console.warn('measureLayoutRelativeToContainingList threw an error', error.stack);\n }\n }\n\n _getFooterCellKey() {\n return this._getCellKey() + '-footer';\n }\n\n _renderDebugOverlay() {\n var normalize = this._scrollMetrics.visibleLength / (this._scrollMetrics.contentLength || 1);\n var framesInLayout = [];\n var itemCount = this.props.getItemCount(this.props.data);\n\n for (var ii = 0; ii < itemCount; ii++) {\n var frame = this._getFrameMetricsApprox(ii);\n /* $FlowFixMe[prop-missing] (>=0.68.0 site=react_native_fb) This comment\n * suppresses an error found when Flow v0.68 was deployed. To see the\n * error delete this comment and run Flow. */\n\n\n if (frame.inLayout) {\n framesInLayout.push(frame);\n }\n }\n\n var windowTop = this._getFrameMetricsApprox(this.state.first).offset;\n\n var frameLast = this._getFrameMetricsApprox(this.state.last);\n\n var windowLen = frameLast.offset + frameLast.length - windowTop;\n var visTop = this._scrollMetrics.offset;\n var visLen = this._scrollMetrics.visibleLength;\n return /*#__PURE__*/React.createElement(View, {\n style: [styles.debugOverlayBase, styles.debugOverlay]\n }, framesInLayout.map((f, ii) => /*#__PURE__*/React.createElement(View, {\n key: 'f' + ii,\n style: [styles.debugOverlayBase, styles.debugOverlayFrame, {\n top: f.offset * normalize,\n height: f.length * normalize\n }]\n })), /*#__PURE__*/React.createElement(View, {\n style: [styles.debugOverlayBase, styles.debugOverlayFrameLast, {\n top: windowTop * normalize,\n height: windowLen * normalize\n }]\n }), /*#__PURE__*/React.createElement(View, {\n style: [styles.debugOverlayBase, styles.debugOverlayFrameVis, {\n top: visTop * normalize,\n height: visLen * normalize\n }]\n }));\n }\n\n _selectLength(metrics) {\n return !horizontalOrDefault(this.props.horizontal) ? metrics.height : metrics.width;\n }\n\n _selectOffset(metrics) {\n return !horizontalOrDefault(this.props.horizontal) ? metrics.y : metrics.x;\n }\n\n _maybeCallOnEndReached() {\n var _this$props10 = this.props,\n data = _this$props10.data,\n getItemCount = _this$props10.getItemCount,\n onEndReached = _this$props10.onEndReached,\n onEndReachedThreshold = _this$props10.onEndReachedThreshold;\n var _this$_scrollMetrics2 = this._scrollMetrics,\n contentLength = _this$_scrollMetrics2.contentLength,\n visibleLength = _this$_scrollMetrics2.visibleLength,\n offset = _this$_scrollMetrics2.offset;\n var distanceFromEnd = contentLength - visibleLength - offset;\n var threshold = onEndReachedThreshold != null ? onEndReachedThreshold * visibleLength : 2;\n\n if (onEndReached && this.state.last === getItemCount(data) - 1 && distanceFromEnd < threshold && this._scrollMetrics.contentLength !== this._sentEndForContentLength) {\n // Only call onEndReached once for a given content length\n this._sentEndForContentLength = this._scrollMetrics.contentLength;\n onEndReached({\n distanceFromEnd\n });\n } else if (distanceFromEnd > threshold) {\n // If the user scrolls away from the end and back again cause\n // an onEndReached to be triggered again\n this._sentEndForContentLength = 0;\n }\n }\n\n _scheduleCellsToRenderUpdate() {\n var _this$state2 = this.state,\n first = _this$state2.first,\n last = _this$state2.last;\n var _this$_scrollMetrics3 = this._scrollMetrics,\n offset = _this$_scrollMetrics3.offset,\n visibleLength = _this$_scrollMetrics3.visibleLength,\n velocity = _this$_scrollMetrics3.velocity;\n var itemCount = this.props.getItemCount(this.props.data);\n var hiPri = false;\n var onEndReachedThreshold = onEndReachedThresholdOrDefault(this.props.onEndReachedThreshold);\n var scrollingThreshold = onEndReachedThreshold * visibleLength / 2; // Mark as high priority if we're close to the start of the first item\n // But only if there are items before the first rendered item\n\n if (first > 0) {\n var distTop = offset - this._getFrameMetricsApprox(first).offset;\n\n hiPri = hiPri || distTop < 0 || velocity < -2 && distTop < scrollingThreshold;\n } // Mark as high priority if we're close to the end of the last item\n // But only if there are items after the last rendered item\n\n\n if (last < itemCount - 1) {\n var distBottom = this._getFrameMetricsApprox(last).offset - (offset + visibleLength);\n hiPri = hiPri || distBottom < 0 || velocity > 2 && distBottom < scrollingThreshold;\n } // Only trigger high-priority updates if we've actually rendered cells,\n // and with that size estimate, accurately compute how many cells we should render.\n // Otherwise, it would just render as many cells as it can (of zero dimension),\n // each time through attempting to render more (limited by maxToRenderPerBatch),\n // starving the renderer from actually laying out the objects and computing _averageCellLength.\n // If this is triggered in an `componentDidUpdate` followed by a hiPri cellToRenderUpdate\n // We shouldn't do another hipri cellToRenderUpdate\n\n\n if (hiPri && (this._averageCellLength || this.props.getItemLayout) && !this._hiPriInProgress) {\n this._hiPriInProgress = true; // Don't worry about interactions when scrolling quickly; focus on filling content as fast\n // as possible.\n\n this._updateCellsToRenderBatcher.dispose({\n abort: true\n });\n\n this._updateCellsToRender();\n\n return;\n } else {\n this._updateCellsToRenderBatcher.schedule();\n }\n }\n\n _updateViewableItems(data) {\n var getItemCount = this.props.getItemCount;\n\n this._viewabilityTuples.forEach(tuple => {\n tuple.viewabilityHelper.onUpdate(getItemCount(data), this._scrollMetrics.offset, this._scrollMetrics.visibleLength, this._getFrameMetrics, this._createViewToken, tuple.onViewableItemsChanged, this.state);\n });\n }\n\n}\n\nVirtualizedList.contextType = VirtualizedListContext;\n\nclass CellRenderer extends React.Component {\n constructor() {\n super(...arguments);\n this.state = {\n separatorProps: {\n highlighted: false,\n leadingItem: this.props.item\n }\n };\n this._separators = {\n highlight: () => {\n var _this$props11 = this.props,\n cellKey = _this$props11.cellKey,\n prevCellKey = _this$props11.prevCellKey;\n this.props.onUpdateSeparators([cellKey, prevCellKey], {\n highlighted: true\n });\n },\n unhighlight: () => {\n var _this$props12 = this.props,\n cellKey = _this$props12.cellKey,\n prevCellKey = _this$props12.prevCellKey;\n this.props.onUpdateSeparators([cellKey, prevCellKey], {\n highlighted: false\n });\n },\n updateProps: (select, newProps) => {\n var _this$props13 = this.props,\n cellKey = _this$props13.cellKey,\n prevCellKey = _this$props13.prevCellKey;\n this.props.onUpdateSeparators([select === 'leading' ? prevCellKey : cellKey], newProps);\n }\n };\n }\n\n static getDerivedStateFromProps(props, prevState) {\n return {\n separatorProps: _objectSpread(_objectSpread({}, prevState.separatorProps), {}, {\n leadingItem: props.item\n })\n };\n } // TODO: consider factoring separator stuff out of VirtualizedList into FlatList since it's not\n // reused by SectionList and we can keep VirtualizedList simpler.\n\n\n updateSeparatorProps(newProps) {\n this.setState(state => ({\n separatorProps: _objectSpread(_objectSpread({}, state.separatorProps), newProps)\n }));\n }\n\n componentWillUnmount() {\n this.props.onUnmount(this.props.cellKey);\n }\n\n _renderElement(renderItem, ListItemComponent, item, index) {\n if (renderItem && ListItemComponent) {\n console.warn('VirtualizedList: Both ListItemComponent and renderItem props are present. ListItemComponent will take' + ' precedence over renderItem.');\n }\n\n if (ListItemComponent) {\n /* $FlowFixMe[not-a-component] (>=0.108.0 site=react_native_fb) This\n * comment suppresses an error found when Flow v0.108 was deployed. To\n * see the error, delete this comment and run Flow. */\n\n /* $FlowFixMe[incompatible-type-arg] (>=0.108.0 site=react_native_fb)\n * This comment suppresses an error found when Flow v0.108 was deployed.\n * To see the error, delete this comment and run Flow. */\n return /*#__PURE__*/React.createElement(ListItemComponent, {\n item,\n index,\n separators: this._separators\n });\n }\n\n if (renderItem) {\n return renderItem({\n item,\n index,\n separators: this._separators\n });\n }\n\n invariant(false, 'VirtualizedList: Either ListItemComponent or renderItem props are required but none were found.');\n }\n\n render() {\n var _this$props14 = this.props,\n CellRendererComponent = _this$props14.CellRendererComponent,\n ItemSeparatorComponent = _this$props14.ItemSeparatorComponent,\n fillRateHelper = _this$props14.fillRateHelper,\n horizontal = _this$props14.horizontal,\n item = _this$props14.item,\n index = _this$props14.index,\n inversionStyle = _this$props14.inversionStyle,\n parentProps = _this$props14.parentProps;\n var renderItem = parentProps.renderItem,\n getItemLayout = parentProps.getItemLayout,\n ListItemComponent = parentProps.ListItemComponent;\n\n var element = this._renderElement(renderItem, ListItemComponent, item, index);\n\n var onLayout =\n /* $FlowFixMe[prop-missing] (>=0.68.0 site=react_native_fb) This comment\n * suppresses an error found when Flow v0.68 was deployed. To see the\n * error delete this comment and run Flow. */\n getItemLayout && !parentProps.debug && !fillRateHelper.enabled() ? undefined : this.props.onLayout; // NOTE: that when this is a sticky header, `onLayout` will get automatically extracted and\n // called explicitly by `ScrollViewStickyHeader`.\n\n var itemSeparator = ItemSeparatorComponent && /*#__PURE__*/React.createElement(ItemSeparatorComponent, this.state.separatorProps);\n var cellStyle = inversionStyle ? horizontal ? [styles.rowReverse, inversionStyle] : [styles.columnReverse, inversionStyle] : horizontal ? [styles.row, inversionStyle] : inversionStyle;\n var result = !CellRendererComponent ?\n /*#__PURE__*/\n\n /* $FlowFixMe[incompatible-type-arg] (>=0.89.0 site=react_native_fb) *\n This comment suppresses an error found when Flow v0.89 was deployed. *\n To see the error, delete this comment and run Flow. */\n React.createElement(View, {\n style: cellStyle,\n onLayout: onLayout\n }, element, itemSeparator) : /*#__PURE__*/React.createElement(CellRendererComponent, _extends({}, this.props, {\n style: cellStyle,\n onLayout: onLayout\n }), element, itemSeparator);\n return /*#__PURE__*/React.createElement(VirtualizedListCellContextProvider, {\n cellKey: this.props.cellKey\n }, result);\n }\n\n}\n\nfunction describeNestedLists(childList) {\n var trace = 'VirtualizedList trace:\\n' + (\" Child (\" + (childList.horizontal ? 'horizontal' : 'vertical') + \"):\\n\") + (\" listKey: \" + childList.key + \"\\n\") + (\" cellKey: \" + childList.cellKey);\n var debugInfo = childList.parentDebugInfo;\n\n while (debugInfo) {\n trace += \"\\n Parent (\" + (debugInfo.horizontal ? 'horizontal' : 'vertical') + \"):\\n\" + (\" listKey: \" + debugInfo.listKey + \"\\n\") + (\" cellKey: \" + debugInfo.cellKey);\n debugInfo = debugInfo.parent;\n }\n\n return trace;\n}\n\nvar styles = StyleSheet.create({\n verticallyInverted: {\n transform: [{\n scaleY: -1\n }]\n },\n horizontallyInverted: {\n transform: [{\n scaleX: -1\n }]\n },\n row: {\n flexDirection: 'row'\n },\n rowReverse: {\n flexDirection: 'row-reverse'\n },\n columnReverse: {\n flexDirection: 'column-reverse'\n },\n debug: {\n flex: 1\n },\n debugOverlayBase: {\n position: 'absolute',\n top: 0,\n right: 0\n },\n debugOverlay: {\n bottom: 0,\n width: 20,\n borderColor: 'blue',\n borderWidth: 1\n },\n debugOverlayFrame: {\n left: 0,\n backgroundColor: 'orange'\n },\n debugOverlayFrameLast: {\n left: 0,\n borderColor: 'green',\n borderWidth: 2\n },\n debugOverlayFrameVis: {\n left: 0,\n borderColor: 'red',\n borderWidth: 2\n }\n});\nexport default VirtualizedList;"],"mappings":"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"},"metadata":{},"sourceType":"module","externalDependencies":[]}