{"ast":null,"code":"import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nimport _createForOfIteratorHelperLoose from \"@babel/runtime/helpers/createForOfIteratorHelperLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport RefreshControl from \"../../../exports/RefreshControl\";\nimport ScrollView from \"../../../exports/ScrollView\";\nimport View from \"../../../exports/View\";\nimport StyleSheet from \"../../../exports/StyleSheet\";\nimport findNodeHandle from \"../../../exports/findNodeHandle\";\nimport Batchinator from \"../Batchinator\";\nimport clamp from \"../Utilities/clamp\";\nimport infoLog from \"../infoLog\";\nimport { CellRenderMask } from \"./CellRenderMask\";\nimport ChildListCollection from \"./ChildListCollection\";\nimport FillRateHelper from \"../FillRateHelper\";\nimport StateSafePureComponent from \"./StateSafePureComponent\";\nimport ViewabilityHelper from \"../ViewabilityHelper\";\nimport CellRenderer from \"./VirtualizedListCellRenderer\";\nimport { VirtualizedListCellContextProvider, VirtualizedListContext, VirtualizedListContextProvider } from \"./VirtualizedListContext.js\";\nimport { computeWindowedRenderLimits, keyExtractor as defaultKeyExtractor } from \"../VirtualizeUtils\";\nimport invariant from 'fbjs/lib/invariant';\nimport nullthrows from 'nullthrows';\nimport * as React from 'react';\nvar __DEV__ = process.env.NODE_ENV !== 'production';\nvar ON_EDGE_REACHED_EPSILON = 0.001;\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 onStartReachedThresholdOrDefault(onStartReachedThreshold) {\n  return onStartReachedThreshold !== null && onStartReachedThreshold !== void 0 ? onStartReachedThreshold : 2;\n}\nfunction onEndReachedThresholdOrDefault(onEndReachedThreshold) {\n  return onEndReachedThreshold !== null && onEndReachedThreshold !== void 0 ? onEndReachedThreshold : 2;\n}\nfunction getScrollingThreshold(threshold, visibleLength) {\n  return threshold * visibleLength / 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}\nfunction findLastWhere(arr, predicate) {\n  for (var i = arr.length - 1; i >= 0; i--) {\n    if (predicate(arr[i])) {\n      return arr[i];\n    }\n  }\n  return null;\n}\nvar VirtualizedList = function (_StateSafePureCompone) {\n  function VirtualizedList(_props) {\n    var _this2;\n    _classCallCheck(this, VirtualizedList);\n    var _this$props$updateCel;\n    _this2 = _callSuper(this, VirtualizedList, [_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 _this2;\n      }\n    };\n    _this2._registerAsNestedChild = function (childList) {\n      _this2._nestedChildLists.add(childList.ref, childList.cellKey);\n      if (_this2._hasInteracted) {\n        childList.ref.recordInteraction();\n      }\n    };\n    _this2._unregisterAsNestedChild = function (childList) {\n      _this2._nestedChildLists.remove(childList.ref);\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._cellRefs = {};\n    _this2._frames = {};\n    _this2._footerLength = 0;\n    _this2._hasTriggeredInitialScrollToIndex = 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._lastFocusedCellKey = null;\n    _this2._nestedChildLists = new ChildListCollection();\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      zoomScale: 1\n    };\n    _this2._scrollRef = null;\n    _this2._sentStartForContentLength = 0;\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        );\n      } else {\n        return React.createElement(ScrollView, props);\n      }\n    };\n    _this2._onCellLayout = function (e, cellKey, index) {\n      var layout = e.nativeEvent.layout;\n      var next = {\n        offset: _this2._selectOffset(layout),\n        length: _this2._selectLength(layout),\n        index: index,\n        inLayout: true\n      };\n      var curr = _this2._frames[cellKey];\n      if (!curr || next.offset !== curr.offset || next.length !== curr.length || index !== curr.index) {\n        _this2._totalCellLength += next.length - (curr ? curr.length : 0);\n        _this2._totalCellsMeasured += curr ? 0 : 1;\n        _this2._averageCellLength = _this2._totalCellLength / _this2._totalCellsMeasured;\n        _this2._frames[cellKey] = next;\n        _this2._highestMeasuredFrameIndex = Math.max(_this2._highestMeasuredFrameIndex, index);\n        _this2._scheduleCellsToRenderUpdate();\n      } else {\n        _this2._frames[cellKey].inLayout = true;\n      }\n      _this2._triggerRemeasureForChildListsInCell(cellKey);\n      _this2._computeBlankness();\n      _this2._updateViewableItems(_this2.props, _this2.state.cellsAroundViewport);\n    };\n    _this2._onCellUnmount = function (cellKey) {\n      delete _this2._cellRefs[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._maybeCallOnEdgeReached();\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._hasTriggeredInitialScrollToIndex) {\n        if (_this2.props.contentOffset == null) {\n          if (_this2.props.initialScrollIndex < _this2.props.getItemCount(_this2.props.data)) {\n            _this2.scrollToIndex({\n              animated: false,\n              index: nullthrows(_this2.props.initialScrollIndex)\n            });\n          } else {\n            _this2.scrollToEnd({\n              animated: false\n            });\n          }\n        }\n        _this2._hasTriggeredInitialScrollToIndex = 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._maybeCallOnEdgeReached();\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._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      var zoomScale = e.nativeEvent.zoomScale < 0 ? 1 : e.nativeEvent.zoomScale;\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        zoomScale: zoomScale\n      };\n      _this2._updateViewableItems(_this2.props, _this2.state.cellsAroundViewport);\n      if (!_this2.props) {\n        return;\n      }\n      _this2._maybeCallOnEdgeReached();\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._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._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._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._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      _this2._updateViewableItems(_this2.props, _this2.state.cellsAroundViewport);\n      _this2.setState(function (state, props) {\n        var cellsAroundViewport = _this2._adjustCellsAroundViewport(props, state.cellsAroundViewport);\n        var renderMask = VirtualizedList._createRenderMask(props, cellsAroundViewport, _this2._getNonViewportRenderRegions(props));\n        if (cellsAroundViewport.first === state.cellsAroundViewport.first && cellsAroundViewport.last === state.cellsAroundViewport.last && renderMask.equals(state.renderMask)) {\n          return null;\n        }\n        return {\n          cellsAroundViewport: cellsAroundViewport,\n          renderMask: renderMask\n        };\n      });\n    };\n    _this2._createViewToken = function (index, isViewable, props) {\n      var data = props.data,\n        getItem = props.getItem;\n      var item = getItem(data, index);\n      return {\n        index: index,\n        item: item,\n        key: _this2._keyExtractor(item, index, props),\n        isViewable: isViewable\n      };\n    };\n    _this2._getOffsetApprox = function (index, props) {\n      if (Number.isInteger(index)) {\n        return _this2.__getFrameMetricsApprox(index, props).offset;\n      } else {\n        var frameMetrics = _this2.__getFrameMetricsApprox(Math.floor(index), props);\n        var remainder = index - Math.floor(index);\n        return frameMetrics.offset + remainder * frameMetrics.length;\n      }\n    };\n    _this2.__getFrameMetricsApprox = function (index, props) {\n      var frame = _this2._getFrameMetrics(index, props);\n      if (frame && frame.index === index) {\n        return frame;\n      } else {\n        var data = props.data,\n          getItemCount = props.getItemCount,\n          getItemLayout = props.getItemLayout;\n        invariant(index >= 0 && index < getItemCount(data), 'Tried to get frame for out of range index ' + index);\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, props) {\n      var data = props.data,\n        getItem = props.getItem,\n        getItemCount = props.getItemCount,\n        getItemLayout = props.getItemLayout;\n      invariant(index >= 0 && index < getItemCount(data), 'Tried to get frame for out of range index ' + index);\n      var item = getItem(data, index);\n      var frame = _this2._frames[_this2._keyExtractor(item, index, props)];\n      if (!frame || frame.index !== index) {\n        if (getItemLayout) {\n          return getItemLayout(data, index);\n        }\n      }\n      return frame;\n    };\n    _this2._getNonViewportRenderRegions = function (props) {\n      if (!(_this2._lastFocusedCellKey && _this2._cellRefs[_this2._lastFocusedCellKey])) {\n        return [];\n      }\n      var lastFocusedCellRenderer = _this2._cellRefs[_this2._lastFocusedCellKey];\n      var focusedCellIndex = lastFocusedCellRenderer.props.index;\n      var itemCount = props.getItemCount(props.data);\n      if (focusedCellIndex >= itemCount || _this2._keyExtractor(props.getItem(props.data, focusedCellIndex), focusedCellIndex, props) !== _this2._lastFocusedCellKey) {\n        return [];\n      }\n      var first = focusedCellIndex;\n      var heightOfCellsBeforeFocused = 0;\n      for (var i = first - 1; i >= 0 && heightOfCellsBeforeFocused < _this2._scrollMetrics.visibleLength; i--) {\n        first--;\n        heightOfCellsBeforeFocused += _this2.__getFrameMetricsApprox(i, props).length;\n      }\n      var last = focusedCellIndex;\n      var heightOfCellsAfterFocused = 0;\n      for (var _i = last + 1; _i < itemCount && heightOfCellsAfterFocused < _this2._scrollMetrics.visibleLength; _i++) {\n        last++;\n        heightOfCellsAfterFocused += _this2.__getFrameMetricsApprox(_i, props).length;\n      }\n      return [{\n        first: first,\n        last: last\n      }];\n    };\n    _this2._checkProps(_props);\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 {\n      var _this$props3 = _this2.props,\n        onViewableItemsChanged = _this$props3.onViewableItemsChanged,\n        viewabilityConfig = _this$props3.viewabilityConfig;\n      if (onViewableItemsChanged) {\n        _this2._viewabilityTuples.push({\n          viewabilityHelper: new ViewabilityHelper(viewabilityConfig),\n          onViewableItemsChanged: onViewableItemsChanged\n        });\n      }\n    }\n    var initialRenderRegion = VirtualizedList._initialRenderRegion(_props);\n    _this2.state = {\n      cellsAroundViewport: initialRenderRegion,\n      renderMask: VirtualizedList._createRenderMask(_props, initialRenderRegion)\n    };\n    _this2.invertedWheelEventHandler = function (ev) {\n      var scrollOffset = _this2.props.horizontal ? ev.target.scrollLeft : ev.target.scrollTop;\n      var scrollLength = _this2.props.horizontal ? ev.target.scrollWidth : ev.target.scrollHeight;\n      var clientLength = _this2.props.horizontal ? ev.target.clientWidth : ev.target.clientHeight;\n      var isEventTargetScrollable = scrollLength > clientLength;\n      var delta = _this2.props.horizontal ? ev.deltaX || ev.wheelDeltaX : ev.deltaY || ev.wheelDeltaY;\n      var leftoverDelta = delta;\n      if (isEventTargetScrollable) {\n        leftoverDelta = delta < 0 ? Math.min(delta + scrollOffset, 0) : Math.max(delta - (scrollLength - clientLength - scrollOffset), 0);\n      }\n      var targetDelta = delta - leftoverDelta;\n      if (_this2.props.inverted && _this2._scrollRef && _this2._scrollRef.getScrollableNode) {\n        var node = _this2._scrollRef.getScrollableNode();\n        if (_this2.props.horizontal) {\n          ev.target.scrollLeft += targetDelta;\n          var nextScrollLeft = node.scrollLeft - leftoverDelta;\n          node.scrollLeft = !_this2.props.getItemLayout ? Math.min(nextScrollLeft, _this2._totalCellLength) : nextScrollLeft;\n        } else {\n          ev.target.scrollTop += targetDelta;\n          var nextScrollTop = node.scrollTop - leftoverDelta;\n          node.scrollTop = !_this2.props.getItemLayout ? Math.min(nextScrollTop, _this2._totalCellLength) : nextScrollTop;\n        }\n        ev.preventDefault();\n      }\n    };\n    return _this2;\n  }\n  _inherits(VirtualizedList, _StateSafePureCompone);\n  return _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      if (veryLast < 0) {\n        return;\n      }\n      var frame = this.__getFrameMetricsApprox(veryLast, this.props);\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(Math.floor(index), this.props);\n      var offset = Math.max(0, this._getOffsetApprox(index, this.props) - (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.recordInteraction();\n      });\n      this._viewabilityTuples.forEach(function (t) {\n        t.viewabilityHelper.recordInteraction();\n      });\n      this._updateViewableItems(this.props, this.state.cellsAroundViewport);\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 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: \"_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: \"hasMore\",\n    value: function hasMore() {\n      return this._hasMore;\n    }\n  }, {\n    key: \"_checkProps\",\n    value: function _checkProps(props) {\n      var onScroll = props.onScroll,\n        windowSize = props.windowSize,\n        getItemCount = props.getItemCount,\n        data = props.data,\n        initialScrollIndex = props.initialScrollIndex;\n      invariant(!onScroll || !onScroll.__isNative, 'Components based on VirtualizedList must be wrapped with Animated.createAnimatedComponent ' + 'to support native onScroll events with useNativeDriver');\n      invariant(windowSizeOrDefault(windowSize) > 0, 'VirtualizedList: The windowSize prop must be present and set to a value greater than 0.');\n      invariant(getItemCount, 'VirtualizedList: The \"getItemCount\" prop must be provided');\n      var itemCount = getItemCount(data);\n      if (initialScrollIndex != null && !this._hasTriggeredInitialScrollToIndex && (initialScrollIndex < 0 || itemCount > 0 && initialScrollIndex >= itemCount) && !this._hasWarned.initialScrollIndex) {\n        console.warn(\"initialScrollIndex \\\"\" + initialScrollIndex + \"\\\" is not valid (list has \" + itemCount + \" items)\");\n        this._hasWarned.initialScrollIndex = true;\n      }\n      if (__DEV__ && !this._hasWarned.flexWrap) {\n        var flatStyles = StyleSheet.flatten(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          this._hasWarned.flexWrap = true;\n        }\n      }\n    }\n  }, {\n    key: \"_adjustCellsAroundViewport\",\n    value: function _adjustCellsAroundViewport(props, cellsAroundViewport) {\n      var data = props.data,\n        getItemCount = props.getItemCount;\n      var onEndReachedThreshold = onEndReachedThresholdOrDefault(props.onEndReachedThreshold);\n      var _this$_scrollMetrics = this._scrollMetrics,\n        contentLength = _this$_scrollMetrics.contentLength,\n        offset = _this$_scrollMetrics.offset,\n        visibleLength = _this$_scrollMetrics.visibleLength;\n      var distanceFromEnd = contentLength - visibleLength - offset;\n      if (visibleLength <= 0 || contentLength <= 0) {\n        return cellsAroundViewport.last >= getItemCount(data) ? VirtualizedList._constrainToItemCount(cellsAroundViewport, props) : cellsAroundViewport;\n      }\n      var newCellsAroundViewport;\n      if (props.disableVirtualization) {\n        var renderAhead = distanceFromEnd < onEndReachedThreshold * visibleLength ? maxToRenderPerBatchOrDefault(props.maxToRenderPerBatch) : 0;\n        newCellsAroundViewport = {\n          first: 0,\n          last: Math.min(cellsAroundViewport.last + renderAhead, getItemCount(data) - 1)\n        };\n      } else {\n        if (props.initialScrollIndex && !this._scrollMetrics.offset && Math.abs(distanceFromEnd) >= Number.EPSILON) {\n          return cellsAroundViewport.last >= getItemCount(data) ? VirtualizedList._constrainToItemCount(cellsAroundViewport, props) : cellsAroundViewport;\n        }\n        newCellsAroundViewport = computeWindowedRenderLimits(props, maxToRenderPerBatchOrDefault(props.maxToRenderPerBatch), windowSizeOrDefault(props.windowSize), cellsAroundViewport, this.__getFrameMetricsApprox, this._scrollMetrics);\n        invariant(newCellsAroundViewport.last < getItemCount(data), 'computeWindowedRenderLimits() should return range in-bounds');\n      }\n      if (this._nestedChildLists.size() > 0) {\n        var childIdx = this._findFirstChildWithMore(newCellsAroundViewport.first, newCellsAroundViewport.last);\n        newCellsAroundViewport.last = childIdx !== null && childIdx !== void 0 ? childIdx : newCellsAroundViewport.last;\n      }\n      return newCellsAroundViewport;\n    }\n  }, {\n    key: \"_findFirstChildWithMore\",\n    value: function _findFirstChildWithMore(first, last) {\n      for (var ii = first; ii <= last; ii++) {\n        var cellKeyForIndex = this._indicesToKeys.get(ii);\n        if (cellKeyForIndex != null && this._nestedChildLists.anyInCell(cellKeyForIndex, function (childList) {\n          return childList.hasMore();\n        })) {\n          return ii;\n        }\n      }\n      return null;\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (this._isNestedWithSameOrientation()) {\n        this.context.registerAsNestedChild({\n          ref: this,\n          cellKey: this.context.cellKey\n        });\n      }\n      this.setupWebWheelHandler();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this._isNestedWithSameOrientation()) {\n        this.context.unregisterAsNestedChild({\n          ref: this\n        });\n      }\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$props4 = this.props,\n        CellRendererComponent = _this$props4.CellRendererComponent,\n        ItemSeparatorComponent = _this$props4.ItemSeparatorComponent,\n        ListHeaderComponent = _this$props4.ListHeaderComponent,\n        ListItemComponent = _this$props4.ListItemComponent,\n        data = _this$props4.data,\n        debug = _this$props4.debug,\n        getItem = _this$props4.getItem,\n        getItemCount = _this$props4.getItemCount,\n        getItemLayout = _this$props4.getItemLayout,\n        horizontal = _this$props4.horizontal,\n        renderItem = _this$props4.renderItem;\n      var stickyOffset = ListHeaderComponent ? 1 : 0;\n      var end = getItemCount(data) - 1;\n      var prevCellKey;\n      last = Math.min(end, last);\n      var _loop = function _loop() {\n        var item = getItem(data, ii);\n        var key = _this._keyExtractor(item, ii, _this.props);\n        _this._indicesToKeys.set(ii, key);\n        if (stickyIndicesFromProps.has(ii + stickyOffset)) {\n          stickyHeaderIndices.push(cells.length);\n        }\n        var shouldListenForLayout = getItemLayout == null || debug || _this._fillRateHelper.enabled();\n        cells.push(React.createElement(CellRenderer, _extends({\n          CellRendererComponent: CellRendererComponent,\n          ItemSeparatorComponent: ii < end ? ItemSeparatorComponent : undefined,\n          ListItemComponent: ListItemComponent,\n          cellKey: key,\n          horizontal: horizontal,\n          index: ii,\n          inversionStyle: inversionStyle,\n          item: item,\n          key: key,\n          prevCellKey: prevCellKey,\n          onUpdateSeparators: _this._onUpdateSeparators,\n          onCellFocusCapture: function onCellFocusCapture(e) {\n            return _this._onCellFocusCapture(key);\n          },\n          onUnmount: _this._onCellUnmount,\n          ref: function ref(_ref) {\n            _this._cellRefs[key] = _ref;\n          },\n          renderItem: renderItem\n        }, shouldListenForLayout && {\n          onCellLayout: _this._onCellLayout\n        })));\n        prevCellKey = key;\n      };\n      for (var ii = first; ii <= last; ii++) {\n        _loop();\n      }\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, props) {\n      if (props.keyExtractor != null) {\n        return 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      this._checkProps(this.props);\n      var _this$props5 = this.props,\n        ListEmptyComponent = _this$props5.ListEmptyComponent,\n        ListFooterComponent = _this$props5.ListFooterComponent,\n        ListHeaderComponent = _this$props5.ListHeaderComponent;\n      var _this$props6 = this.props,\n        data = _this$props6.data,\n        horizontal = _this$props6.horizontal;\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: [inversionStyle, this.props.ListHeaderComponentStyle]\n        }, _element)));\n      }\n      var itemCount = this.props.getItemCount(data);\n      if (itemCount === 0 && ListEmptyComponent) {\n        var _element2 = React.isValidElement(ListEmptyComponent) ? ListEmptyComponent : React.createElement(ListEmptyComponent, null);\n        cells.push(React.createElement(VirtualizedListCellContextProvider, {\n          cellKey: this._getCellKey() + '-empty',\n          key: \"$empty\"\n        }, React.cloneElement(_element2, {\n          onLayout: function onLayout(event) {\n            _this4._onLayoutEmpty(event);\n            if (_element2.props.onLayout) {\n              _element2.props.onLayout(event);\n            }\n          },\n          style: [inversionStyle, _element2.props.style]\n        })));\n      }\n      if (itemCount > 0) {\n        _usedIndexForKey = false;\n        _keylessItemComponentName = '';\n        var spacerKey = this._getSpacerKey(!horizontal);\n        var renderRegions = this.state.renderMask.enumerateRegions();\n        var lastSpacer = findLastWhere(renderRegions, function (r) {\n          return r.isSpacer;\n        });\n        for (var _iterator = _createForOfIteratorHelperLoose(renderRegions), _step; !(_step = _iterator()).done;) {\n          var section = _step.value;\n          if (section.isSpacer) {\n            if (this.props.disableVirtualization) {\n              continue;\n            }\n            var isLastSpacer = section === lastSpacer;\n            var constrainToMeasured = isLastSpacer && !this.props.getItemLayout;\n            var last = constrainToMeasured ? clamp(section.first - 1, section.last, this._highestMeasuredFrameIndex) : section.last;\n            var firstMetrics = this.__getFrameMetricsApprox(section.first, this.props);\n            var lastMetrics = this.__getFrameMetricsApprox(last, this.props);\n            var spacerSize = lastMetrics.offset + lastMetrics.length - firstMetrics.offset;\n            cells.push(React.createElement(View, {\n              key: \"$spacer-\" + section.first,\n              style: _defineProperty({}, spacerKey, spacerSize)\n            }));\n          } else {\n            this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, section.first, section.last, inversionStyle);\n          }\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 (ListFooterComponent) {\n        var _element3 = 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: [inversionStyle, this.props.ListFooterComponentStyle]\n        }, _element3)));\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.cellsAroundViewport.last < itemCount - 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          registerAsNestedChild: this._registerAsNestedChild,\n          unregisterAsNestedChild: this._unregisterAsNestedChild\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$props7 = this.props,\n        data = _this$props7.data,\n        extraData = _this$props7.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.cellsAroundViewport, this._scrollMetrics);\n    }\n  }, {\n    key: \"_onCellFocusCapture\",\n    value: function _onCellFocusCapture(cellKey) {\n      this._lastFocusedCellKey = cellKey;\n      this._updateCellsToRender();\n    }\n  }, {\n    key: \"_triggerRemeasureForChildListsInCell\",\n    value: function _triggerRemeasureForChildListsInCell(cellKey) {\n      this._nestedChildLists.forEachInCell(cellKey, function (childList) {\n        childList.measureLayoutRelativeToContainingList();\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._nestedChildLists.forEach(function (childList) {\n              childList.measureLayoutRelativeToContainingList();\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, this.props);\n        if (frame.inLayout) {\n          framesInLayout.push(frame);\n        }\n      }\n      var windowTop = this.__getFrameMetricsApprox(this.state.cellsAroundViewport.first, this.props).offset;\n      var frameLast = this.__getFrameMetricsApprox(this.state.cellsAroundViewport.last, this.props);\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: \"_maybeCallOnEdgeReached\",\n    value: function _maybeCallOnEdgeReached() {\n      var _this$props8 = this.props,\n        data = _this$props8.data,\n        getItemCount = _this$props8.getItemCount,\n        onStartReached = _this$props8.onStartReached,\n        onStartReachedThreshold = _this$props8.onStartReachedThreshold,\n        onEndReached = _this$props8.onEndReached,\n        onEndReachedThreshold = _this$props8.onEndReachedThreshold,\n        initialScrollIndex = _this$props8.initialScrollIndex;\n      var _this$_scrollMetrics2 = this._scrollMetrics,\n        contentLength = _this$_scrollMetrics2.contentLength,\n        visibleLength = _this$_scrollMetrics2.visibleLength,\n        offset = _this$_scrollMetrics2.offset;\n      var distanceFromStart = offset;\n      var distanceFromEnd = contentLength - visibleLength - offset;\n      if (distanceFromStart < ON_EDGE_REACHED_EPSILON) {\n        distanceFromStart = 0;\n      }\n      if (distanceFromEnd < ON_EDGE_REACHED_EPSILON) {\n        distanceFromEnd = 0;\n      }\n      var DEFAULT_THRESHOLD_PX = 2;\n      var startThreshold = onStartReachedThreshold != null ? onStartReachedThreshold * visibleLength : DEFAULT_THRESHOLD_PX;\n      var endThreshold = onEndReachedThreshold != null ? onEndReachedThreshold * visibleLength : DEFAULT_THRESHOLD_PX;\n      var isWithinStartThreshold = distanceFromStart <= startThreshold;\n      var isWithinEndThreshold = distanceFromEnd <= endThreshold;\n      if (onEndReached && this.state.cellsAroundViewport.last === getItemCount(data) - 1 && isWithinEndThreshold && this._scrollMetrics.contentLength !== this._sentEndForContentLength) {\n        this._sentEndForContentLength = this._scrollMetrics.contentLength;\n        onEndReached({\n          distanceFromEnd: distanceFromEnd\n        });\n      } else if (onStartReached != null && this.state.cellsAroundViewport.first === 0 && isWithinStartThreshold && this._scrollMetrics.contentLength !== this._sentStartForContentLength) {\n        if (!initialScrollIndex || this._scrollMetrics.timestamp !== 0) {\n          this._sentStartForContentLength = this._scrollMetrics.contentLength;\n          onStartReached({\n            distanceFromStart: distanceFromStart\n          });\n        }\n      } else {\n        this._sentStartForContentLength = isWithinStartThreshold ? this._sentStartForContentLength : 0;\n        this._sentEndForContentLength = isWithinEndThreshold ? this._sentEndForContentLength : 0;\n      }\n    }\n  }, {\n    key: \"_scheduleCellsToRenderUpdate\",\n    value: function _scheduleCellsToRenderUpdate() {\n      var _this$state$cellsArou = this.state.cellsAroundViewport,\n        first = _this$state$cellsArou.first,\n        last = _this$state$cellsArou.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 onStartReachedThreshold = onStartReachedThresholdOrDefault(this.props.onStartReachedThreshold);\n      var onEndReachedThreshold = onEndReachedThresholdOrDefault(this.props.onEndReachedThreshold);\n      if (first > 0) {\n        var distTop = offset - this.__getFrameMetricsApprox(first, this.props).offset;\n        hiPri = distTop < 0 || velocity < -2 && distTop < getScrollingThreshold(onStartReachedThreshold, visibleLength);\n      }\n      if (!hiPri && last >= 0 && last < itemCount - 1) {\n        var distBottom = this.__getFrameMetricsApprox(last, this.props).offset - (offset + visibleLength);\n        hiPri = distBottom < 0 || velocity > 2 && distBottom < getScrollingThreshold(onEndReachedThreshold, visibleLength);\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(props, cellsAroundViewport) {\n      var _this6 = this;\n      this._viewabilityTuples.forEach(function (tuple) {\n        tuple.viewabilityHelper.onUpdate(props, _this6._scrollMetrics.offset, _this6._scrollMetrics.visibleLength, _this6._getFrameMetrics, _this6._createViewToken, tuple.onViewableItemsChanged, cellsAroundViewport);\n      });\n    }\n  }], [{\n    key: \"_createRenderMask\",\n    value: function _createRenderMask(props, cellsAroundViewport, additionalRegions) {\n      var itemCount = props.getItemCount(props.data);\n      invariant(cellsAroundViewport.first >= 0 && cellsAroundViewport.last >= cellsAroundViewport.first - 1 && cellsAroundViewport.last < itemCount, \"Invalid cells around viewport \\\"[\" + cellsAroundViewport.first + \", \" + cellsAroundViewport.last + \"]\\\" was passed to VirtualizedList._createRenderMask\");\n      var renderMask = new CellRenderMask(itemCount);\n      if (itemCount > 0) {\n        var allRegions = [cellsAroundViewport].concat(_toConsumableArray(additionalRegions !== null && additionalRegions !== void 0 ? additionalRegions : []));\n        for (var _i2 = 0, _allRegions = allRegions; _i2 < _allRegions.length; _i2++) {\n          var region = _allRegions[_i2];\n          renderMask.addCells(region);\n        }\n        if (props.initialScrollIndex == null || props.initialScrollIndex <= 0) {\n          var initialRegion = VirtualizedList._initialRenderRegion(props);\n          renderMask.addCells(initialRegion);\n        }\n        var stickyIndicesSet = new Set(props.stickyHeaderIndices);\n        VirtualizedList._ensureClosestStickyHeader(props, stickyIndicesSet, renderMask, cellsAroundViewport.first);\n      }\n      return renderMask;\n    }\n  }, {\n    key: \"_initialRenderRegion\",\n    value: function _initialRenderRegion(props) {\n      var _props$initialScrollI;\n      var itemCount = props.getItemCount(props.data);\n      var firstCellIndex = Math.max(0, Math.min(itemCount - 1, Math.floor((_props$initialScrollI = props.initialScrollIndex) !== null && _props$initialScrollI !== void 0 ? _props$initialScrollI : 0)));\n      var lastCellIndex = Math.min(itemCount, firstCellIndex + initialNumToRenderOrDefault(props.initialNumToRender)) - 1;\n      return {\n        first: firstCellIndex,\n        last: lastCellIndex\n      };\n    }\n  }, {\n    key: \"_ensureClosestStickyHeader\",\n    value: function _ensureClosestStickyHeader(props, stickyIndicesSet, renderMask, cellIdx) {\n      var stickyOffset = props.ListHeaderComponent ? 1 : 0;\n      for (var itemIdx = cellIdx - 1; itemIdx >= 0; itemIdx--) {\n        if (stickyIndicesSet.has(itemIdx + stickyOffset)) {\n          renderMask.addCells({\n            first: itemIdx,\n            last: itemIdx\n          });\n          break;\n        }\n      }\n    }\n  }, {\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(newProps, prevState) {\n      var itemCount = newProps.getItemCount(newProps.data);\n      if (itemCount === prevState.renderMask.numCells()) {\n        return prevState;\n      }\n      var constrainedCells = VirtualizedList._constrainToItemCount(prevState.cellsAroundViewport, newProps);\n      return {\n        cellsAroundViewport: constrainedCells,\n        renderMask: VirtualizedList._createRenderMask(newProps, constrainedCells)\n      };\n    }\n  }, {\n    key: \"_constrainToItemCount\",\n    value: function _constrainToItemCount(cells, props) {\n      var itemCount = props.getItemCount(props.data);\n      var last = Math.min(itemCount - 1, cells.last);\n      var maxToRenderPerBatch = maxToRenderPerBatchOrDefault(props.maxToRenderPerBatch);\n      return {\n        first: clamp(0, itemCount - 1 - maxToRenderPerBatch, cells.first),\n        last: last\n      };\n    }\n  }]);\n}(StateSafePureComponent);\nVirtualizedList.contextType = VirtualizedListContext;\nvar styles = StyleSheet.create({\n  verticallyInverted: {\n    transform: 'scaleY(-1)'\n  },\n  horizontallyInverted: {\n    transform: 'scaleX(-1)'\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","RefreshControl","ScrollView","View","StyleSheet","findNodeHandle","Batchinator","clamp","infoLog","CellRenderMask","ChildListCollection","FillRateHelper","StateSafePureComponent","ViewabilityHelper","CellRenderer","VirtualizedListCellContextProvider","VirtualizedListContext","VirtualizedListContextProvider","computeWindowedRenderLimits","keyExtractor","defaultKeyExtractor","invariant","nullthrows","React","__DEV__","process","env","NODE_ENV","ON_EDGE_REACHED_EPSILON","_usedIndexForKey","_keylessItemComponentName","horizontalOrDefault","horizontal","initialNumToRenderOrDefault","initialNumToRender","maxToRenderPerBatchOrDefault","maxToRenderPerBatch","onStartReachedThresholdOrDefault","onStartReachedThreshold","onEndReachedThresholdOrDefault","onEndReachedThreshold","getScrollingThreshold","threshold","visibleLength","scrollEventThrottleOrDefault","scrollEventThrottle","windowSizeOrDefault","windowSize","findLastWhere","arr","predicate","i","length","VirtualizedList","_StateSafePureCompone","_props","_this2","_classCallCheck","_this$props$updateCel","_callSuper","_getScrollMetrics","_scrollMetrics","_getOutermostParentListRef","_isNestedWithSameOrientation","context","getOutermostParentListRef","_registerAsNestedChild","childList","_nestedChildLists","add","ref","cellKey","_hasInteracted","recordInteraction","_unregisterAsNestedChild","remove","_onUpdateSeparators","keys","newProps","forEach","key","_cellRefs","updateSeparatorProps","_getSpacerKey","isVertical","_averageCellLength","_frames","_footerLength","_hasTriggeredInitialScrollToIndex","_hasMore","_hasWarned","_headerLength","_hiPriInProgress","_highestMeasuredFrameIndex","_indicesToKeys","Map","_lastFocusedCellKey","_offsetFromParentVirtualizedList","_prevParentOffset","contentLength","dOffset","dt","offset","timestamp","velocity","zoomScale","_scrollRef","_sentStartForContentLength","_sentEndForContentLength","_totalCellLength","_totalCellsMeasured","_viewabilityTuples","_captureScrollRef","_defaultRenderScrollComponent","props","onRefresh","createElement","_props$refreshing","refreshing","JSON","stringify","refreshControl","progressViewOffset","_onCellLayout","e","index","layout","nativeEvent","next","_selectOffset","_selectLength","inLayout","curr","Math","max","_scheduleCellsToRenderUpdate","_triggerRemeasureForChildListsInCell","_computeBlankness","_updateViewableItems","state","cellsAroundViewport","_onCellUnmount","_onLayout","measureLayoutRelativeToContainingList","onLayout","_maybeCallOnEdgeReached","_onLayoutEmpty","_onLayoutFooter","_getFooterCellKey","_onLayoutHeader","_onContentSizeChange","width","height","initialScrollIndex","contentOffset","getItemCount","data","scrollToIndex","animated","scrollToEnd","onContentSizeChange","_convertParentScrollMetrics","metrics","_onScroll","onScroll","timeStamp","layoutMeasurement","contentSize","_this$_convertParentS","perf","prevDt","_fillRateHelper","activate","_onScrollBeginDrag","tuple","viewabilityHelper","onScrollBeginDrag","_onScrollEndDrag","onScrollEndDrag","_onMomentumScrollBegin","onMomentumScrollBegin","_onMomentumScrollEnd","onMomentumScrollEnd","_updateCellsToRender","setState","_adjustCellsAroundViewport","renderMask","_createRenderMask","_getNonViewportRenderRegions","first","last","equals","_createViewToken","isViewable","getItem","item","_keyExtractor","_getOffsetApprox","Number","isInteger","__getFrameMetricsApprox","frameMetrics","floor","remainder","frame","_getFrameMetrics","getItemLayout","lastFocusedCellRenderer","focusedCellIndex","itemCount","heightOfCellsBeforeFocused","heightOfCellsAfterFocused","_i","_checkProps","_updateCellsToRenderBatcher","updateCellsBatchingPeriod","viewabilityConfigCallbackPairs","map","pair","viewabilityConfig","onViewableItemsChanged","_this$props3","push","initialRenderRegion","_initialRenderRegion","invertedWheelEventHandler","ev","scrollOffset","target","scrollLeft","scrollTop","scrollLength","scrollWidth","scrollHeight","clientLength","clientWidth","clientHeight","isEventTargetScrollable","delta","deltaX","wheelDeltaX","deltaY","wheelDeltaY","leftoverDelta","min","targetDelta","inverted","getScrollableNode","node","nextScrollLeft","nextScrollTop","preventDefault","_inherits","_createClass","value","params","veryLast","scrollTo","console","warn","x","y","_this$props","onScrollToIndexFailed","viewOffset","viewPosition","averageItemLength","highestMeasuredFrameIndex","scrollToItem","_this$props2","_index","scrollToOffset","t","flashScrollIndicators","getScrollResponder","getScrollRef","_getCellKey","_this$context","hasMore","__isNative","flexWrap","flatStyles","flatten","contentContainerStyle","_this$_scrollMetrics","distanceFromEnd","_constrainToItemCount","newCellsAroundViewport","disableVirtualization","renderAhead","abs","EPSILON","size","childIdx","_findFirstChildWithMore","ii","cellKeyForIndex","get","anyInCell","componentDidMount","registerAsNestedChild","setupWebWheelHandler","componentWillUnmount","unregisterAsNestedChild","dispose","abort","deactivateAndFlush","teardownWebWheelHandler","_this3","addEventListener","setTimeout","removeEventListener","_pushCells","cells","stickyHeaderIndices","stickyIndicesFromProps","inversionStyle","_this","_this$props4","CellRendererComponent","ItemSeparatorComponent","ListHeaderComponent","ListItemComponent","debug","renderItem","stickyOffset","end","prevCellKey","_loop","set","has","shouldListenForLayout","enabled","undefined","onUpdateSeparators","onCellFocusCapture","_onCellFocusCapture","onUnmount","_ref","onCellLayout","nestedContext","String","type","displayName","render","_this4","_this$props5","ListEmptyComponent","ListFooterComponent","_this$props6","styles","horizontallyInverted","verticallyInverted","Set","_element","isValidElement","style","ListHeaderComponentStyle","_element2","cloneElement","event","spacerKey","renderRegions","enumerateRegions","lastSpacer","r","isSpacer","_iterator","_step","done","section","isLastSpacer","constrainToMeasured","firstMetrics","lastMetrics","spacerSize","_defineProperty","_element3","ListFooterComponentStyle","scrollProps","invertStickyHeaders","innerRet","getScrollMetrics","renderScrollComponent","ret","_renderDebugOverlay","componentDidUpdate","prevProps","_this$props7","extraData","resetViewableIndices","hiPriInProgress","computeBlankness","forEachInCell","_this5","measureLayout","scrollMetrics","metricsChanged","error","stack","normalize","framesInLayout","windowTop","frameLast","windowLen","visTop","visLen","debugOverlayBase","debugOverlay","f","debugOverlayFrame","top","debugOverlayFrameLast","debugOverlayFrameVis","_this$props8","onStartReached","onEndReached","_this$_scrollMetrics2","distanceFromStart","DEFAULT_THRESHOLD_PX","startThreshold","endThreshold","isWithinStartThreshold","isWithinEndThreshold","_this$state$cellsArou","_this$_scrollMetrics3","hiPri","distTop","distBottom","schedule","_this6","onUpdate","additionalRegions","allRegions","concat","_toConsumableArray","_i2","_allRegions","region","addCells","initialRegion","stickyIndicesSet","_ensureClosestStickyHeader","_props$initialScrollI","firstCellIndex","lastCellIndex","cellIdx","itemIdx","getDerivedStateFromProps","prevState","numCells","constrainedCells","contextType","create","transform","flex","position","right","bottom","borderColor","borderWidth","left","backgroundColor"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/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 * 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 */\n\nimport RefreshControl from '../../../exports/RefreshControl';\nimport ScrollView from '../../../exports/ScrollView';\nimport View from '../../../exports/View';\nimport StyleSheet from '../../../exports/StyleSheet';\nimport findNodeHandle from '../../../exports/findNodeHandle';\nimport Batchinator from '../Batchinator';\nimport clamp from '../Utilities/clamp';\nimport infoLog from '../infoLog';\nimport { CellRenderMask } from './CellRenderMask';\nimport ChildListCollection from './ChildListCollection';\nimport FillRateHelper from '../FillRateHelper';\nimport StateSafePureComponent from './StateSafePureComponent';\nimport ViewabilityHelper from '../ViewabilityHelper';\nimport CellRenderer from './VirtualizedListCellRenderer';\nimport { VirtualizedListCellContextProvider, VirtualizedListContext, VirtualizedListContextProvider } from './VirtualizedListContext.js';\nimport { computeWindowedRenderLimits, keyExtractor as defaultKeyExtractor } from '../VirtualizeUtils';\nimport invariant from 'fbjs/lib/invariant';\nimport nullthrows from 'nullthrows';\nimport * as React from 'react';\nvar __DEV__ = process.env.NODE_ENV !== 'production';\nvar ON_EDGE_REACHED_EPSILON = 0.001;\nvar _usedIndexForKey = false;\nvar _keylessItemComponentName = '';\n/**\n * Default Props Helper Functions\n * Use the following helper functions for default values\n */\n\n// horizontalOrDefault(this.props.horizontal)\nfunction horizontalOrDefault(horizontal) {\n  return horizontal !== null && horizontal !== void 0 ? horizontal : false;\n}\n\n// initialNumToRenderOrDefault(this.props.initialNumToRender)\nfunction initialNumToRenderOrDefault(initialNumToRender) {\n  return initialNumToRender !== null && initialNumToRender !== void 0 ? initialNumToRender : 10;\n}\n\n// maxToRenderPerBatchOrDefault(this.props.maxToRenderPerBatch)\nfunction maxToRenderPerBatchOrDefault(maxToRenderPerBatch) {\n  return maxToRenderPerBatch !== null && maxToRenderPerBatch !== void 0 ? maxToRenderPerBatch : 10;\n}\n\n// onStartReachedThresholdOrDefault(this.props.onStartReachedThreshold)\nfunction onStartReachedThresholdOrDefault(onStartReachedThreshold) {\n  return onStartReachedThreshold !== null && onStartReachedThreshold !== void 0 ? onStartReachedThreshold : 2;\n}\n\n// onEndReachedThresholdOrDefault(this.props.onEndReachedThreshold)\nfunction onEndReachedThresholdOrDefault(onEndReachedThreshold) {\n  return onEndReachedThreshold !== null && onEndReachedThreshold !== void 0 ? onEndReachedThreshold : 2;\n}\n\n// getScrollingThreshold(visibleLength, onEndReachedThreshold)\nfunction getScrollingThreshold(threshold, visibleLength) {\n  return threshold * visibleLength / 2;\n}\n\n// scrollEventThrottleOrDefault(this.props.scrollEventThrottle)\nfunction scrollEventThrottleOrDefault(scrollEventThrottle) {\n  return scrollEventThrottle !== null && scrollEventThrottle !== void 0 ? scrollEventThrottle : 50;\n}\n\n// windowSizeOrDefault(this.props.windowSize)\nfunction windowSizeOrDefault(windowSize) {\n  return windowSize !== null && windowSize !== void 0 ? windowSize : 21;\n}\nfunction findLastWhere(arr, predicate) {\n  for (var i = arr.length - 1; i >= 0; i--) {\n    if (predicate(arr[i])) {\n      return arr[i];\n    }\n  }\n  return null;\n}\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 */\nclass VirtualizedList extends StateSafePureComponent {\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    if (veryLast < 0) {\n      return;\n    }\n    var frame = this.__getFrameMetricsApprox(veryLast, this.props);\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\n    } : {\n      y: offset,\n      animated\n    });\n  }\n\n  // scrollToIndex may be janky without getItemLayout prop\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    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    var frame = this.__getFrameMetricsApprox(Math.floor(index), this.props);\n    var offset = Math.max(0, this._getOffsetApprox(index, this.props) - (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\n    } : {\n      y: offset,\n      animated\n    });\n  }\n\n  // scrollToItem may be janky without getItemLayout prop. Required linear scan through items -\n  // use scrollToIndex instead if possible.\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    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  /**\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  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\n    } : {\n      y: offset,\n      animated\n    });\n  }\n  recordInteraction() {\n    this._nestedChildLists.forEach(childList => {\n      childList.recordInteraction();\n    });\n    this._viewabilityTuples.forEach(t => {\n      t.viewabilityHelper.recordInteraction();\n    });\n    this._updateViewableItems(this.props, this.state.cellsAroundViewport);\n  }\n  flashScrollIndicators() {\n    if (this._scrollRef == null) {\n      return;\n    }\n    this._scrollRef.flashScrollIndicators();\n  }\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  getScrollResponder() {\n    if (this._scrollRef && this._scrollRef.getScrollResponder) {\n      return this._scrollRef.getScrollResponder();\n    }\n  }\n  getScrollableNode() {\n    if (this._scrollRef && this._scrollRef.getScrollableNode) {\n      return this._scrollRef.getScrollableNode();\n    } else {\n      return this._scrollRef;\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  _getCellKey() {\n    var _this$context;\n    return ((_this$context = this.context) == null ? void 0 : _this$context.cellKey) || 'rootList';\n  }\n\n  // $FlowFixMe[missing-local-annot]\n\n  hasMore() {\n    return this._hasMore;\n  }\n\n  // $FlowFixMe[missing-local-annot]\n\n  // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\n\n  constructor(_props) {\n    var _this$props$updateCel;\n    super(_props);\n    this._getScrollMetrics = () => {\n      return this._scrollMetrics;\n    };\n    this._getOutermostParentListRef = () => {\n      if (this._isNestedWithSameOrientation()) {\n        return this.context.getOutermostParentListRef();\n      } else {\n        return this;\n      }\n    };\n    this._registerAsNestedChild = childList => {\n      this._nestedChildLists.add(childList.ref, childList.cellKey);\n      if (this._hasInteracted) {\n        childList.ref.recordInteraction();\n      }\n    };\n    this._unregisterAsNestedChild = childList => {\n      this._nestedChildLists.remove(childList.ref);\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    this._getSpacerKey = isVertical => isVertical ? 'height' : 'width';\n    this._averageCellLength = 0;\n    this._cellRefs = {};\n    this._frames = {};\n    this._footerLength = 0;\n    this._hasTriggeredInitialScrollToIndex = 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._lastFocusedCellKey = null;\n    this._nestedChildLists = new ChildListCollection();\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      zoomScale: 1\n    };\n    this._scrollRef = null;\n    this._sentStartForContentLength = 0;\n    this._sentEndForContentLength = 0;\n    this._totalCellLength = 0;\n    this._totalCellsMeasured = 0;\n    this._viewabilityTuples = [];\n    this._captureScrollRef = ref => {\n      this._scrollRef = ref;\n    };\n    this._defaultRenderScrollComponent = props => {\n      var onRefresh = props.onRefresh;\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        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          // $FlowFixMe[incompatible-use]\n          React.createElement(ScrollView, _extends({}, props, {\n            refreshControl: props.refreshControl == null ? /*#__PURE__*/React.createElement(RefreshControl\n            // $FlowFixMe[incompatible-type]\n            , {\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        // $FlowFixMe[incompatible-use]\n        return /*#__PURE__*/React.createElement(ScrollView, props);\n      }\n    };\n    this._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      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, this.state.cellsAroundViewport);\n    };\n    this._onCellUnmount = cellKey => {\n      delete this._cellRefs[cellKey];\n      var curr = this._frames[cellKey];\n      if (curr) {\n        this._frames[cellKey] = _objectSpread(_objectSpread({}, curr), {}, {\n          inLayout: false\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      this.props.onLayout && this.props.onLayout(e);\n      this._scheduleCellsToRenderUpdate();\n      this._maybeCallOnEdgeReached();\n    };\n    this._onLayoutEmpty = e => {\n      this.props.onLayout && this.props.onLayout(e);\n    };\n    this._onLayoutFooter = e => {\n      this._triggerRemeasureForChildListsInCell(this._getFooterCellKey());\n      this._footerLength = this._selectLength(e.nativeEvent.layout);\n    };\n    this._onLayoutHeader = e => {\n      this._headerLength = this._selectLength(e.nativeEvent.layout);\n    };\n    this._onContentSizeChange = (width, height) => {\n      if (width > 0 && height > 0 && this.props.initialScrollIndex != null && this.props.initialScrollIndex > 0 && !this._hasTriggeredInitialScrollToIndex) {\n        if (this.props.contentOffset == null) {\n          if (this.props.initialScrollIndex < this.props.getItemCount(this.props.data)) {\n            this.scrollToIndex({\n              animated: false,\n              index: nullthrows(this.props.initialScrollIndex)\n            });\n          } else {\n            this.scrollToEnd({\n              animated: false\n            });\n          }\n        }\n        this._hasTriggeredInitialScrollToIndex = true;\n      }\n      if (this.props.onContentSizeChange) {\n        this.props.onContentSizeChange(width, height);\n      }\n      this._scrollMetrics.contentLength = this._selectLength({\n        height,\n        width\n      });\n      this._scheduleCellsToRenderUpdate();\n      this._maybeCallOnEdgeReached();\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;\n      // Child's visible length is the same as its parent's\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    this._onScroll = e => {\n      this._nestedChildLists.forEach(childList => {\n        childList._onScroll(e);\n      });\n      if (this.props.onScroll) {\n        this.props.onScroll(e);\n      }\n      var timestamp = e.timeStamp;\n      var visibleLength = this._selectLength(e.nativeEvent.layoutMeasurement);\n      var contentLength = this._selectLength(e.nativeEvent.contentSize);\n      var offset = this._selectOffset(e.nativeEvent.contentOffset);\n      var dOffset = offset - this._scrollMetrics.offset;\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        var _this$_convertParentS = this._convertParentScrollMetrics({\n          visibleLength,\n          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 = this._scrollMetrics.timestamp ? Math.max(1, timestamp - this._scrollMetrics.timestamp) : 1;\n      var velocity = dOffset / dt;\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      // For invalid negative values (w/ RTL), set this to 1.\n      var zoomScale = e.nativeEvent.zoomScale < 0 ? 1 : e.nativeEvent.zoomScale;\n      this._scrollMetrics = {\n        contentLength,\n        dt,\n        dOffset,\n        offset,\n        timestamp,\n        velocity,\n        visibleLength,\n        zoomScale\n      };\n      this._updateViewableItems(this.props, this.state.cellsAroundViewport);\n      if (!this.props) {\n        return;\n      }\n      this._maybeCallOnEdgeReached();\n      if (velocity !== 0) {\n        this._fillRateHelper.activate();\n      }\n      this._computeBlankness();\n      this._scheduleCellsToRenderUpdate();\n    };\n    this._onScrollBeginDrag = e => {\n      this._nestedChildLists.forEach(childList => {\n        childList._onScrollBeginDrag(e);\n      });\n      this._viewabilityTuples.forEach(tuple => {\n        tuple.viewabilityHelper.recordInteraction();\n      });\n      this._hasInteracted = true;\n      this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);\n    };\n    this._onScrollEndDrag = e => {\n      this._nestedChildLists.forEach(childList => {\n        childList._onScrollEndDrag(e);\n      });\n      var velocity = e.nativeEvent.velocity;\n      if (velocity) {\n        this._scrollMetrics.velocity = this._selectOffset(velocity);\n      }\n      this._computeBlankness();\n      this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);\n    };\n    this._onMomentumScrollBegin = e => {\n      this._nestedChildLists.forEach(childList => {\n        childList._onMomentumScrollBegin(e);\n      });\n      this.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e);\n    };\n    this._onMomentumScrollEnd = e => {\n      this._nestedChildLists.forEach(childList => {\n        childList._onMomentumScrollEnd(e);\n      });\n      this._scrollMetrics.velocity = 0;\n      this._computeBlankness();\n      this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);\n    };\n    this._updateCellsToRender = () => {\n      this._updateViewableItems(this.props, this.state.cellsAroundViewport);\n      this.setState((state, props) => {\n        var cellsAroundViewport = this._adjustCellsAroundViewport(props, state.cellsAroundViewport);\n        var renderMask = VirtualizedList._createRenderMask(props, cellsAroundViewport, this._getNonViewportRenderRegions(props));\n        if (cellsAroundViewport.first === state.cellsAroundViewport.first && cellsAroundViewport.last === state.cellsAroundViewport.last && renderMask.equals(state.renderMask)) {\n          return null;\n        }\n        return {\n          cellsAroundViewport,\n          renderMask\n        };\n      });\n    };\n    this._createViewToken = (index, isViewable, props\n    // $FlowFixMe[missing-local-annot]\n    ) => {\n      var data = props.data,\n        getItem = props.getItem;\n      var item = getItem(data, index);\n      return {\n        index,\n        item,\n        key: this._keyExtractor(item, index, props),\n        isViewable\n      };\n    };\n    this._getOffsetApprox = (index, props) => {\n      if (Number.isInteger(index)) {\n        return this.__getFrameMetricsApprox(index, props).offset;\n      } else {\n        var frameMetrics = this.__getFrameMetricsApprox(Math.floor(index), props);\n        var remainder = index - Math.floor(index);\n        return frameMetrics.offset + remainder * frameMetrics.length;\n      }\n    };\n    this.__getFrameMetricsApprox = (index, props) => {\n      var frame = this._getFrameMetrics(index, props);\n      if (frame && frame.index === index) {\n        // check for invalid frames due to row re-ordering\n        return frame;\n      } else {\n        var data = props.data,\n          getItemCount = props.getItemCount,\n          getItemLayout = props.getItemLayout;\n        invariant(index >= 0 && index < getItemCount(data), 'Tried to get frame for out of range index ' + index);\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    this._getFrameMetrics = (index, props) => {\n      var data = props.data,\n        getItem = props.getItem,\n        getItemCount = props.getItemCount,\n        getItemLayout = props.getItemLayout;\n      invariant(index >= 0 && index < getItemCount(data), 'Tried to get frame for out of range index ' + index);\n      var item = getItem(data, index);\n      var frame = this._frames[this._keyExtractor(item, index, props)];\n      if (!frame || frame.index !== index) {\n        if (getItemLayout) {\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          return getItemLayout(data, index);\n        }\n      }\n      return frame;\n    };\n    this._getNonViewportRenderRegions = props => {\n      // Keep a viewport's worth of content around the last focused cell to allow\n      // random navigation around it without any blanking. E.g. tabbing from one\n      // focused item out of viewport to another.\n      if (!(this._lastFocusedCellKey && this._cellRefs[this._lastFocusedCellKey])) {\n        return [];\n      }\n      var lastFocusedCellRenderer = this._cellRefs[this._lastFocusedCellKey];\n      var focusedCellIndex = lastFocusedCellRenderer.props.index;\n      var itemCount = props.getItemCount(props.data);\n\n      // The last cell we rendered may be at a new index. Bail if we don't know\n      // where it is.\n      if (focusedCellIndex >= itemCount || this._keyExtractor(props.getItem(props.data, focusedCellIndex), focusedCellIndex, props) !== this._lastFocusedCellKey) {\n        return [];\n      }\n      var first = focusedCellIndex;\n      var heightOfCellsBeforeFocused = 0;\n      for (var i = first - 1; i >= 0 && heightOfCellsBeforeFocused < this._scrollMetrics.visibleLength; i--) {\n        first--;\n        heightOfCellsBeforeFocused += this.__getFrameMetricsApprox(i, props).length;\n      }\n      var last = focusedCellIndex;\n      var heightOfCellsAfterFocused = 0;\n      for (var _i = last + 1; _i < itemCount && heightOfCellsAfterFocused < this._scrollMetrics.visibleLength; _i++) {\n        last++;\n        heightOfCellsAfterFocused += this.__getFrameMetricsApprox(_i, props).length;\n      }\n      return [{\n        first,\n        last\n      }];\n    };\n    this._checkProps(_props);\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    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 {\n      var _this$props3 = this.props,\n        onViewableItemsChanged = _this$props3.onViewableItemsChanged,\n        viewabilityConfig = _this$props3.viewabilityConfig;\n      if (onViewableItemsChanged) {\n        this._viewabilityTuples.push({\n          viewabilityHelper: new ViewabilityHelper(viewabilityConfig),\n          onViewableItemsChanged: onViewableItemsChanged\n        });\n      }\n    }\n    var initialRenderRegion = VirtualizedList._initialRenderRegion(_props);\n    this.state = {\n      cellsAroundViewport: initialRenderRegion,\n      renderMask: VirtualizedList._createRenderMask(_props, initialRenderRegion)\n    };\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    this.invertedWheelEventHandler = ev => {\n      var scrollOffset = this.props.horizontal ? ev.target.scrollLeft : ev.target.scrollTop;\n      var scrollLength = this.props.horizontal ? ev.target.scrollWidth : ev.target.scrollHeight;\n      var clientLength = this.props.horizontal ? ev.target.clientWidth : ev.target.clientHeight;\n      var isEventTargetScrollable = scrollLength > clientLength;\n      var delta = this.props.horizontal ? ev.deltaX || ev.wheelDeltaX : ev.deltaY || ev.wheelDeltaY;\n      var leftoverDelta = delta;\n      if (isEventTargetScrollable) {\n        leftoverDelta = delta < 0 ? Math.min(delta + scrollOffset, 0) : Math.max(delta - (scrollLength - clientLength - scrollOffset), 0);\n      }\n      var targetDelta = delta - leftoverDelta;\n      if (this.props.inverted && this._scrollRef && this._scrollRef.getScrollableNode) {\n        var node = this._scrollRef.getScrollableNode();\n        if (this.props.horizontal) {\n          ev.target.scrollLeft += targetDelta;\n          var nextScrollLeft = node.scrollLeft - leftoverDelta;\n          node.scrollLeft = !this.props.getItemLayout ? Math.min(nextScrollLeft, this._totalCellLength) : nextScrollLeft;\n        } else {\n          ev.target.scrollTop += targetDelta;\n          var nextScrollTop = node.scrollTop - leftoverDelta;\n          node.scrollTop = !this.props.getItemLayout ? Math.min(nextScrollTop, this._totalCellLength) : nextScrollTop;\n        }\n        ev.preventDefault();\n      }\n    };\n  }\n  _checkProps(props) {\n    var onScroll = props.onScroll,\n      windowSize = props.windowSize,\n      getItemCount = props.getItemCount,\n      data = props.data,\n      initialScrollIndex = props.initialScrollIndex;\n    invariant(\n    // $FlowFixMe[prop-missing]\n    !onScroll || !onScroll.__isNative, 'Components based on VirtualizedList must be wrapped with Animated.createAnimatedComponent ' + 'to support native onScroll events with useNativeDriver');\n    invariant(windowSizeOrDefault(windowSize) > 0, 'VirtualizedList: The windowSize prop must be present and set to a value greater than 0.');\n    invariant(getItemCount, 'VirtualizedList: The \"getItemCount\" prop must be provided');\n    var itemCount = getItemCount(data);\n    if (initialScrollIndex != null && !this._hasTriggeredInitialScrollToIndex && (initialScrollIndex < 0 || itemCount > 0 && initialScrollIndex >= itemCount) && !this._hasWarned.initialScrollIndex) {\n      console.warn(\"initialScrollIndex \\\"\" + initialScrollIndex + \"\\\" is not valid (list has \" + itemCount + \" items)\");\n      this._hasWarned.initialScrollIndex = true;\n    }\n    if (__DEV__ && !this._hasWarned.flexWrap) {\n      // $FlowFixMe[underconstrained-implicit-instantiation]\n      var flatStyles = StyleSheet.flatten(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        this._hasWarned.flexWrap = true;\n      }\n    }\n  }\n  static _createRenderMask(props, cellsAroundViewport, additionalRegions) {\n    var itemCount = props.getItemCount(props.data);\n    invariant(cellsAroundViewport.first >= 0 && cellsAroundViewport.last >= cellsAroundViewport.first - 1 && cellsAroundViewport.last < itemCount, \"Invalid cells around viewport \\\"[\" + cellsAroundViewport.first + \", \" + cellsAroundViewport.last + \"]\\\" was passed to VirtualizedList._createRenderMask\");\n    var renderMask = new CellRenderMask(itemCount);\n    if (itemCount > 0) {\n      var allRegions = [cellsAroundViewport, ...(additionalRegions !== null && additionalRegions !== void 0 ? additionalRegions : [])];\n      for (var _i2 = 0, _allRegions = allRegions; _i2 < _allRegions.length; _i2++) {\n        var region = _allRegions[_i2];\n        renderMask.addCells(region);\n      }\n\n      // The initially rendered cells are retained as part of the\n      // \"scroll-to-top\" optimization\n      if (props.initialScrollIndex == null || props.initialScrollIndex <= 0) {\n        var initialRegion = VirtualizedList._initialRenderRegion(props);\n        renderMask.addCells(initialRegion);\n      }\n\n      // The layout coordinates of sticker headers may be off-screen while the\n      // actual header is on-screen. Keep the most recent before the viewport\n      // rendered, even if its layout coordinates are not in viewport.\n      var stickyIndicesSet = new Set(props.stickyHeaderIndices);\n      VirtualizedList._ensureClosestStickyHeader(props, stickyIndicesSet, renderMask, cellsAroundViewport.first);\n    }\n    return renderMask;\n  }\n  static _initialRenderRegion(props) {\n    var _props$initialScrollI;\n    var itemCount = props.getItemCount(props.data);\n    var firstCellIndex = Math.max(0, Math.min(itemCount - 1, Math.floor((_props$initialScrollI = props.initialScrollIndex) !== null && _props$initialScrollI !== void 0 ? _props$initialScrollI : 0)));\n    var lastCellIndex = Math.min(itemCount, firstCellIndex + initialNumToRenderOrDefault(props.initialNumToRender)) - 1;\n    return {\n      first: firstCellIndex,\n      last: lastCellIndex\n    };\n  }\n  static _ensureClosestStickyHeader(props, stickyIndicesSet, renderMask, cellIdx) {\n    var stickyOffset = props.ListHeaderComponent ? 1 : 0;\n    for (var itemIdx = cellIdx - 1; itemIdx >= 0; itemIdx--) {\n      if (stickyIndicesSet.has(itemIdx + stickyOffset)) {\n        renderMask.addCells({\n          first: itemIdx,\n          last: itemIdx\n        });\n        break;\n      }\n    }\n  }\n  _adjustCellsAroundViewport(props, cellsAroundViewport) {\n    var data = props.data,\n      getItemCount = props.getItemCount;\n    var onEndReachedThreshold = onEndReachedThresholdOrDefault(props.onEndReachedThreshold);\n    var _this$_scrollMetrics = this._scrollMetrics,\n      contentLength = _this$_scrollMetrics.contentLength,\n      offset = _this$_scrollMetrics.offset,\n      visibleLength = _this$_scrollMetrics.visibleLength;\n    var distanceFromEnd = contentLength - visibleLength - offset;\n\n    // 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      return cellsAroundViewport.last >= getItemCount(data) ? VirtualizedList._constrainToItemCount(cellsAroundViewport, props) : cellsAroundViewport;\n    }\n    var newCellsAroundViewport;\n    if (props.disableVirtualization) {\n      var renderAhead = distanceFromEnd < onEndReachedThreshold * visibleLength ? maxToRenderPerBatchOrDefault(props.maxToRenderPerBatch) : 0;\n      newCellsAroundViewport = {\n        first: 0,\n        last: Math.min(cellsAroundViewport.last + renderAhead, getItemCount(data) - 1)\n      };\n    } else {\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\n      // Thus, we want to recalculate the windowed render limits if any of the following hold:\n      // - initialScrollIndex is undefined or is 0\n      // - initialScrollIndex > 0 AND scrolling is complete\n      // - initialScrollIndex > 0 AND the end of the list is visible (this handles the case\n      //   where the list is shorter than the visible area)\n      if (props.initialScrollIndex && !this._scrollMetrics.offset && Math.abs(distanceFromEnd) >= Number.EPSILON) {\n        return cellsAroundViewport.last >= getItemCount(data) ? VirtualizedList._constrainToItemCount(cellsAroundViewport, props) : cellsAroundViewport;\n      }\n      newCellsAroundViewport = computeWindowedRenderLimits(props, maxToRenderPerBatchOrDefault(props.maxToRenderPerBatch), windowSizeOrDefault(props.windowSize), cellsAroundViewport, this.__getFrameMetricsApprox, this._scrollMetrics);\n      invariant(newCellsAroundViewport.last < getItemCount(data), 'computeWindowedRenderLimits() should return range in-bounds');\n    }\n    if (this._nestedChildLists.size() > 0) {\n      // 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      // Will this prevent rendering if the nested list doesn't realize the end?\n      var childIdx = this._findFirstChildWithMore(newCellsAroundViewport.first, newCellsAroundViewport.last);\n      newCellsAroundViewport.last = childIdx !== null && childIdx !== void 0 ? childIdx : newCellsAroundViewport.last;\n    }\n    return newCellsAroundViewport;\n  }\n  _findFirstChildWithMore(first, last) {\n    for (var ii = first; ii <= last; ii++) {\n      var cellKeyForIndex = this._indicesToKeys.get(ii);\n      if (cellKeyForIndex != null && this._nestedChildLists.anyInCell(cellKeyForIndex, childList => childList.hasMore())) {\n        return ii;\n      }\n    }\n    return null;\n  }\n  componentDidMount() {\n    if (this._isNestedWithSameOrientation()) {\n      this.context.registerAsNestedChild({\n        ref: this,\n        cellKey: this.context.cellKey\n      });\n    }\n\n    // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\n    this.setupWebWheelHandler();\n  }\n  componentWillUnmount() {\n    if (this._isNestedWithSameOrientation()) {\n      this.context.unregisterAsNestedChild({\n        ref: this\n      });\n    }\n    this._updateCellsToRenderBatcher.dispose({\n      abort: true\n    });\n    this._viewabilityTuples.forEach(tuple => {\n      tuple.viewabilityHelper.dispose();\n    });\n    this._fillRateHelper.deactivateAndFlush();\n\n    // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\n    this.teardownWebWheelHandler();\n  }\n\n  // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\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  }\n\n  // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\n  teardownWebWheelHandler() {\n    if (this._scrollRef && this._scrollRef.getScrollableNode) {\n      this._scrollRef.getScrollableNode().removeEventListener('wheel', this.invertedWheelEventHandler);\n    }\n  }\n  static getDerivedStateFromProps(newProps, prevState) {\n    // 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    var itemCount = newProps.getItemCount(newProps.data);\n    if (itemCount === prevState.renderMask.numCells()) {\n      return prevState;\n    }\n    var constrainedCells = VirtualizedList._constrainToItemCount(prevState.cellsAroundViewport, newProps);\n    return {\n      cellsAroundViewport: constrainedCells,\n      renderMask: VirtualizedList._createRenderMask(newProps, constrainedCells)\n    };\n  }\n  _pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, first, last, inversionStyle) {\n    var _this = this;\n    var _this$props4 = this.props,\n      CellRendererComponent = _this$props4.CellRendererComponent,\n      ItemSeparatorComponent = _this$props4.ItemSeparatorComponent,\n      ListHeaderComponent = _this$props4.ListHeaderComponent,\n      ListItemComponent = _this$props4.ListItemComponent,\n      data = _this$props4.data,\n      debug = _this$props4.debug,\n      getItem = _this$props4.getItem,\n      getItemCount = _this$props4.getItemCount,\n      getItemLayout = _this$props4.getItemLayout,\n      horizontal = _this$props4.horizontal,\n      renderItem = _this$props4.renderItem;\n    var stickyOffset = ListHeaderComponent ? 1 : 0;\n    var end = getItemCount(data) - 1;\n    var prevCellKey;\n    last = Math.min(end, last);\n    var _loop = function _loop() {\n      var item = getItem(data, ii);\n      var key = _this._keyExtractor(item, ii, _this.props);\n      _this._indicesToKeys.set(ii, key);\n      if (stickyIndicesFromProps.has(ii + stickyOffset)) {\n        stickyHeaderIndices.push(cells.length);\n      }\n      var shouldListenForLayout = getItemLayout == null || debug || _this._fillRateHelper.enabled();\n      cells.push(/*#__PURE__*/React.createElement(CellRenderer, _extends({\n        CellRendererComponent: CellRendererComponent,\n        ItemSeparatorComponent: ii < end ? ItemSeparatorComponent : undefined,\n        ListItemComponent: ListItemComponent,\n        cellKey: key,\n        horizontal: horizontal,\n        index: ii,\n        inversionStyle: inversionStyle,\n        item: item,\n        key: key,\n        prevCellKey: prevCellKey,\n        onUpdateSeparators: _this._onUpdateSeparators,\n        onCellFocusCapture: e => _this._onCellFocusCapture(key),\n        onUnmount: _this._onCellUnmount,\n        ref: _ref => {\n          _this._cellRefs[key] = _ref;\n        },\n        renderItem: renderItem\n      }, shouldListenForLayout && {\n        onCellLayout: _this._onCellLayout\n      })));\n      prevCellKey = key;\n    };\n    for (var ii = first; ii <= last; ii++) {\n      _loop();\n    }\n  }\n  static _constrainToItemCount(cells, props) {\n    var itemCount = props.getItemCount(props.data);\n    var last = Math.min(itemCount - 1, cells.last);\n    var maxToRenderPerBatch = maxToRenderPerBatchOrDefault(props.maxToRenderPerBatch);\n    return {\n      first: clamp(0, itemCount - 1 - maxToRenderPerBatch, cells.first),\n      last\n    };\n  }\n  _isNestedWithSameOrientation() {\n    var nestedContext = this.context;\n    return !!(nestedContext && !!nestedContext.horizontal === horizontalOrDefault(this.props.horizontal));\n  }\n  _keyExtractor(item, index, props\n  // $FlowFixMe[missing-local-annot]\n  ) {\n    if (props.keyExtractor != null) {\n      return 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  render() {\n    this._checkProps(this.props);\n    var _this$props5 = this.props,\n      ListEmptyComponent = _this$props5.ListEmptyComponent,\n      ListFooterComponent = _this$props5.ListFooterComponent,\n      ListHeaderComponent = _this$props5.ListHeaderComponent;\n    var _this$props6 = this.props,\n      data = _this$props6.data,\n      horizontal = _this$props6.horizontal;\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    // 1. Add cell for ListHeaderComponent\n    if (ListHeaderComponent) {\n      if (stickyIndicesFromProps.has(0)) {\n        stickyHeaderIndices.push(0);\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: [inversionStyle, this.props.ListHeaderComponentStyle]\n      },\n      // $FlowFixMe[incompatible-type] - Typing ReactNativeComponent revealed errors\n      _element)));\n    }\n\n    // 2a. Add a cell for ListEmptyComponent if applicable\n    var itemCount = this.props.getItemCount(data);\n    if (itemCount === 0 && ListEmptyComponent) {\n      var _element2 = /*#__PURE__*/React.isValidElement(ListEmptyComponent) ? ListEmptyComponent :\n      /*#__PURE__*/\n      // $FlowFixMe[not-a-component]\n      // $FlowFixMe[incompatible-type-arg]\n      React.createElement(ListEmptyComponent, null);\n      cells.push(/*#__PURE__*/React.createElement(VirtualizedListCellContextProvider, {\n        cellKey: this._getCellKey() + '-empty',\n        key: \"$empty\"\n      }, /*#__PURE__*/React.cloneElement(_element2, {\n        onLayout: event => {\n          this._onLayoutEmpty(event);\n          if (_element2.props.onLayout) {\n            _element2.props.onLayout(event);\n          }\n        },\n        style: [inversionStyle, _element2.props.style]\n      })));\n    }\n\n    // 2b. Add cells and spacers for each item\n    if (itemCount > 0) {\n      _usedIndexForKey = false;\n      _keylessItemComponentName = '';\n      var spacerKey = this._getSpacerKey(!horizontal);\n      var renderRegions = this.state.renderMask.enumerateRegions();\n      var lastSpacer = findLastWhere(renderRegions, r => r.isSpacer);\n      for (var _iterator = _createForOfIteratorHelperLoose(renderRegions), _step; !(_step = _iterator()).done;) {\n        var section = _step.value;\n        if (section.isSpacer) {\n          // Legacy behavior is to avoid spacers when virtualization is\n          // disabled (including head spacers on initial render).\n          if (this.props.disableVirtualization) {\n            continue;\n          }\n\n          // 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          var isLastSpacer = section === lastSpacer;\n          var constrainToMeasured = isLastSpacer && !this.props.getItemLayout;\n          var last = constrainToMeasured ? clamp(section.first - 1, section.last, this._highestMeasuredFrameIndex) : section.last;\n          var firstMetrics = this.__getFrameMetricsApprox(section.first, this.props);\n          var lastMetrics = this.__getFrameMetricsApprox(last, this.props);\n          var spacerSize = lastMetrics.offset + lastMetrics.length - firstMetrics.offset;\n          cells.push(/*#__PURE__*/React.createElement(View, {\n            key: \"$spacer-\" + section.first,\n            style: {\n              [spacerKey]: spacerSize\n            }\n          }));\n        } else {\n          this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, section.first, section.last, inversionStyle);\n        }\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\n    // 3. Add cell for ListFooterComponent\n    if (ListFooterComponent) {\n      var _element3 = /*#__PURE__*/React.isValidElement(ListFooterComponent) ? ListFooterComponent :\n      /*#__PURE__*/\n      // $FlowFixMe[not-a-component]\n      // $FlowFixMe[incompatible-type-arg]\n      React.createElement(ListFooterComponent, null);\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: [inversionStyle, this.props.ListFooterComponentStyle]\n      },\n      // $FlowFixMe[incompatible-type] - Typing ReactNativeComponent revealed errors\n      _element3)));\n    }\n\n    // 4. Render the ScrollView\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    this._hasMore = this.state.cellsAroundViewport.last < itemCount - 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        registerAsNestedChild: this._registerAsNestedChild,\n        unregisterAsNestedChild: this._unregisterAsNestedChild\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              this.props.scrollEnabled !== false\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    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  componentDidUpdate(prevProps) {\n    var _this$props7 = this.props,\n      data = _this$props7.data,\n      extraData = _this$props7.extraData;\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    }\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    var hiPriInProgress = this._hiPriInProgress;\n    this._scheduleCellsToRenderUpdate();\n    // Make sure setting `this._hiPriInProgress` back to false after `componentDidUpdate`\n    // is triggered with `this._hiPriInProgress = true`\n    if (hiPriInProgress) {\n      this._hiPriInProgress = false;\n    }\n  }\n\n  // Used for preventing scrollToIndex from being called multiple times for initialScrollIndex\n\n  // flag to prevent infinite hiPri cell limit update\n\n  // $FlowFixMe[missing-local-annot]\n\n  /* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's\n   * LTI update could not be added via codemod */\n\n  _computeBlankness() {\n    this._fillRateHelper.computeBlankness(this.props, this.state.cellsAroundViewport, this._scrollMetrics);\n  }\n\n  /* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's\n   * LTI update could not be added via codemod */\n\n  _onCellFocusCapture(cellKey) {\n    this._lastFocusedCellKey = cellKey;\n    this._updateCellsToRender();\n  }\n  _triggerRemeasureForChildListsInCell(cellKey) {\n    this._nestedChildLists.forEachInCell(cellKey, childList => {\n      childList.measureLayoutRelativeToContainingList();\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      }\n      // We are assuming that getOutermostParentListRef().getScrollRef()\n      // is a non-null reference to a ScrollView\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        var scrollMetrics = this._convertParentScrollMetrics(this.context.getScrollMetrics());\n        var metricsChanged = this._scrollMetrics.visibleLength !== scrollMetrics.visibleLength || this._scrollMetrics.offset !== scrollMetrics.offset;\n        if (metricsChanged) {\n          this._scrollMetrics.visibleLength = scrollMetrics.visibleLength;\n          this._scrollMetrics.offset = scrollMetrics.offset;\n\n          // If metrics of the scrollView changed, then we triggered remeasure for child list\n          // to ensure VirtualizedList has the right information.\n          this._nestedChildLists.forEach(childList => {\n            childList.measureLayoutRelativeToContainingList();\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  _getFooterCellKey() {\n    return this._getCellKey() + '-footer';\n  }\n  // $FlowFixMe[missing-local-annot]\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    for (var ii = 0; ii < itemCount; ii++) {\n      var frame = this.__getFrameMetricsApprox(ii, this.props);\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      if (frame.inLayout) {\n        framesInLayout.push(frame);\n      }\n    }\n    var windowTop = this.__getFrameMetricsApprox(this.state.cellsAroundViewport.first, this.props).offset;\n    var frameLast = this.__getFrameMetricsApprox(this.state.cellsAroundViewport.last, this.props);\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  _selectLength(metrics) {\n    return !horizontalOrDefault(this.props.horizontal) ? metrics.height : metrics.width;\n  }\n  _selectOffset(metrics) {\n    return !horizontalOrDefault(this.props.horizontal) ? metrics.y : metrics.x;\n  }\n  _maybeCallOnEdgeReached() {\n    var _this$props8 = this.props,\n      data = _this$props8.data,\n      getItemCount = _this$props8.getItemCount,\n      onStartReached = _this$props8.onStartReached,\n      onStartReachedThreshold = _this$props8.onStartReachedThreshold,\n      onEndReached = _this$props8.onEndReached,\n      onEndReachedThreshold = _this$props8.onEndReachedThreshold,\n      initialScrollIndex = _this$props8.initialScrollIndex;\n    var _this$_scrollMetrics2 = this._scrollMetrics,\n      contentLength = _this$_scrollMetrics2.contentLength,\n      visibleLength = _this$_scrollMetrics2.visibleLength,\n      offset = _this$_scrollMetrics2.offset;\n    var distanceFromStart = offset;\n    var distanceFromEnd = contentLength - visibleLength - offset;\n\n    // Especially when oERT is zero it's necessary to 'floor' very small distance values to be 0\n    // since debouncing causes us to not fire this event for every single \"pixel\" we scroll and can thus\n    // be at the edge of the list with a distance approximating 0 but not quite there.\n    if (distanceFromStart < ON_EDGE_REACHED_EPSILON) {\n      distanceFromStart = 0;\n    }\n    if (distanceFromEnd < ON_EDGE_REACHED_EPSILON) {\n      distanceFromEnd = 0;\n    }\n\n    // TODO: T121172172 Look into why we're \"defaulting\" to a threshold of 2px\n    // when oERT is not present (different from 2 viewports used elsewhere)\n    var DEFAULT_THRESHOLD_PX = 2;\n    var startThreshold = onStartReachedThreshold != null ? onStartReachedThreshold * visibleLength : DEFAULT_THRESHOLD_PX;\n    var endThreshold = onEndReachedThreshold != null ? onEndReachedThreshold * visibleLength : DEFAULT_THRESHOLD_PX;\n    var isWithinStartThreshold = distanceFromStart <= startThreshold;\n    var isWithinEndThreshold = distanceFromEnd <= endThreshold;\n\n    // First check if the user just scrolled within the end threshold\n    // and call onEndReached only once for a given content length,\n    // and only if onStartReached is not being executed\n    if (onEndReached && this.state.cellsAroundViewport.last === getItemCount(data) - 1 && isWithinEndThreshold && this._scrollMetrics.contentLength !== this._sentEndForContentLength) {\n      this._sentEndForContentLength = this._scrollMetrics.contentLength;\n      onEndReached({\n        distanceFromEnd\n      });\n    }\n\n    // Next check if the user just scrolled within the start threshold\n    // and call onStartReached only once for a given content length,\n    // and only if onEndReached is not being executed\n    else if (onStartReached != null && this.state.cellsAroundViewport.first === 0 && isWithinStartThreshold && this._scrollMetrics.contentLength !== this._sentStartForContentLength) {\n      // On initial mount when using initialScrollIndex the offset will be 0 initially\n      // and will trigger an unexpected onStartReached. To avoid this we can use\n      // timestamp to differentiate between the initial scroll metrics and when we actually\n      // received the first scroll event.\n      if (!initialScrollIndex || this._scrollMetrics.timestamp !== 0) {\n        this._sentStartForContentLength = this._scrollMetrics.contentLength;\n        onStartReached({\n          distanceFromStart\n        });\n      }\n    }\n\n    // If the user scrolls away from the start or end and back again,\n    // cause onStartReached or onEndReached to be triggered again\n    else {\n      this._sentStartForContentLength = isWithinStartThreshold ? this._sentStartForContentLength : 0;\n      this._sentEndForContentLength = isWithinEndThreshold ? this._sentEndForContentLength : 0;\n    }\n  }\n\n  /* Translates metrics from a scroll event in a parent VirtualizedList into\n   * coordinates relative to the child list.\n   */\n\n  _scheduleCellsToRenderUpdate() {\n    var _this$state$cellsArou = this.state.cellsAroundViewport,\n      first = _this$state$cellsArou.first,\n      last = _this$state$cellsArou.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 onStartReachedThreshold = onStartReachedThresholdOrDefault(this.props.onStartReachedThreshold);\n    var onEndReachedThreshold = onEndReachedThresholdOrDefault(this.props.onEndReachedThreshold);\n    // 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    if (first > 0) {\n      var distTop = offset - this.__getFrameMetricsApprox(first, this.props).offset;\n      hiPri = distTop < 0 || velocity < -2 && distTop < getScrollingThreshold(onStartReachedThreshold, visibleLength);\n    }\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    if (!hiPri && last >= 0 && last < itemCount - 1) {\n      var distBottom = this.__getFrameMetricsApprox(last, this.props).offset - (offset + visibleLength);\n      hiPri = distBottom < 0 || velocity > 2 && distBottom < getScrollingThreshold(onEndReachedThreshold, visibleLength);\n    }\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    if (hiPri && (this._averageCellLength || this.props.getItemLayout) && !this._hiPriInProgress) {\n      this._hiPriInProgress = true;\n      // Don't worry about interactions when scrolling quickly; focus on filling content as fast\n      // as possible.\n      this._updateCellsToRenderBatcher.dispose({\n        abort: true\n      });\n      this._updateCellsToRender();\n      return;\n    } else {\n      this._updateCellsToRenderBatcher.schedule();\n    }\n  }\n\n  /**\n   * Gets an approximate offset to an item at a given index. Supports\n   * fractional indices.\n   */\n\n  _updateViewableItems(props, cellsAroundViewport) {\n    this._viewabilityTuples.forEach(tuple => {\n      tuple.viewabilityHelper.onUpdate(props, this._scrollMetrics.offset, this._scrollMetrics.visibleLength, this._getFrameMetrics, this._createViewToken, tuple.onViewableItemsChanged, cellsAroundViewport);\n    });\n  }\n}\nVirtualizedList.contextType = VirtualizedListContext;\nvar styles = StyleSheet.create({\n  verticallyInverted: {\n    transform: 'scaleY(-1)'\n  },\n  horizontallyInverted: {\n    transform: 'scaleX(-1)'\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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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}