80299b1fea3ea88ccb7ca341a0ee2a13.json 46.5 KB
{"ast":null,"code":"function ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport Filler from './Filler';\nimport ScrollBar from './ScrollBar';\nimport useChildren from './hooks/useChildren';\nimport useHeights from './hooks/useHeights';\nimport useScrollTo from './hooks/useScrollTo';\nimport useDiffItem from './hooks/useDiffItem';\nimport useFrameWheel from './hooks/useFrameWheel';\nimport useMobileTouchMove from './hooks/useMobileTouchMove';\nimport useOriginScroll from './hooks/useOriginScroll';\nvar EMPTY_DATA = [];\nvar ScrollStyle = {\n  overflowY: 'auto',\n  overflowAnchor: 'none'\n};\nexport function RawList(props, ref) {\n  var _props$prefixCls = props.prefixCls,\n      prefixCls = _props$prefixCls === void 0 ? 'rc-virtual-list' : _props$prefixCls,\n      className = props.className,\n      height = props.height,\n      itemHeight = props.itemHeight,\n      _props$fullHeight = props.fullHeight,\n      fullHeight = _props$fullHeight === void 0 ? true : _props$fullHeight,\n      style = props.style,\n      data = props.data,\n      children = props.children,\n      itemKey = props.itemKey,\n      virtual = props.virtual,\n      _props$component = props.component,\n      Component = _props$component === void 0 ? 'div' : _props$component,\n      onScroll = props.onScroll,\n      restProps = _objectWithoutProperties(props, [\"prefixCls\", \"className\", \"height\", \"itemHeight\", \"fullHeight\", \"style\", \"data\", \"children\", \"itemKey\", \"virtual\", \"component\", \"onScroll\"]); // ================================= MISC =================================\n\n\n  var useVirtual = !!(virtual !== false && height && itemHeight);\n  var inVirtual = useVirtual && data && itemHeight * data.length > height;\n\n  var _useState = useState(0),\n      _useState2 = _slicedToArray(_useState, 2),\n      scrollTop = _useState2[0],\n      setScrollTop = _useState2[1];\n\n  var _useState3 = useState(false),\n      _useState4 = _slicedToArray(_useState3, 2),\n      scrollMoving = _useState4[0],\n      setScrollMoving = _useState4[1];\n\n  var mergedClassName = classNames(prefixCls, className);\n  var mergedData = data || EMPTY_DATA;\n  var componentRef = useRef();\n  var fillerInnerRef = useRef();\n  var scrollBarRef = useRef(); // Hack on scrollbar to enable flash call\n  // =============================== Item Key ===============================\n\n  var getKey = React.useCallback(function (item) {\n    if (typeof itemKey === 'function') {\n      return itemKey(item);\n    }\n\n    return item === null || item === void 0 ? void 0 : item[itemKey];\n  }, [itemKey]);\n  var sharedConfig = {\n    getKey: getKey\n  }; // ================================ Scroll ================================\n\n  function syncScrollTop(newTop) {\n    setScrollTop(function (origin) {\n      var value;\n\n      if (typeof newTop === 'function') {\n        value = newTop(origin);\n      } else {\n        value = newTop;\n      }\n\n      var alignedTop = keepInRange(value);\n      componentRef.current.scrollTop = alignedTop;\n      return alignedTop;\n    });\n  } // ================================ Legacy ================================\n  // Put ref here since the range is generate by follow\n\n\n  var rangeRef = useRef({\n    start: 0,\n    end: mergedData.length\n  });\n  var diffItemRef = useRef();\n\n  var _useDiffItem = useDiffItem(mergedData, getKey),\n      _useDiffItem2 = _slicedToArray(_useDiffItem, 1),\n      diffItem = _useDiffItem2[0];\n\n  diffItemRef.current = diffItem; // ================================ Height ================================\n\n  var _useHeights = useHeights(getKey, null, null),\n      _useHeights2 = _slicedToArray(_useHeights, 4),\n      setInstanceRef = _useHeights2[0],\n      collectHeight = _useHeights2[1],\n      heights = _useHeights2[2],\n      heightUpdatedMark = _useHeights2[3]; // ========================== Visible Calculation =========================\n\n\n  var _React$useMemo = React.useMemo(function () {\n    if (!useVirtual) {\n      return {\n        scrollHeight: undefined,\n        start: 0,\n        end: mergedData.length - 1,\n        offset: undefined\n      };\n    } // Always use virtual scroll bar in avoid shaking\n\n\n    if (!inVirtual) {\n      var _fillerInnerRef$curre;\n\n      return {\n        scrollHeight: ((_fillerInnerRef$curre = fillerInnerRef.current) === null || _fillerInnerRef$curre === void 0 ? void 0 : _fillerInnerRef$curre.offsetHeight) || 0,\n        start: 0,\n        end: mergedData.length - 1,\n        offset: undefined\n      };\n    }\n\n    var itemTop = 0;\n    var startIndex;\n    var startOffset;\n    var endIndex;\n    var dataLen = mergedData.length;\n\n    for (var i = 0; i < dataLen; i += 1) {\n      var item = mergedData[i];\n      var key = getKey(item);\n      var cacheHeight = heights.get(key);\n      var currentItemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight); // Check item top in the range\n\n      if (currentItemBottom >= scrollTop && startIndex === undefined) {\n        startIndex = i;\n        startOffset = itemTop;\n      } // Check item bottom in the range. We will render additional one item for motion usage\n\n\n      if (currentItemBottom > scrollTop + height && endIndex === undefined) {\n        endIndex = i;\n      }\n\n      itemTop = currentItemBottom;\n    } // Fallback to normal if not match. This code should never reach\n\n    /* istanbul ignore next */\n\n\n    if (startIndex === undefined) {\n      startIndex = 0;\n      startOffset = 0;\n    }\n\n    if (endIndex === undefined) {\n      endIndex = mergedData.length - 1;\n    } // Give cache to improve scroll experience\n\n\n    endIndex = Math.min(endIndex + 1, mergedData.length);\n    return {\n      scrollHeight: itemTop,\n      start: startIndex,\n      end: endIndex,\n      offset: startOffset\n    };\n  }, [inVirtual, useVirtual, scrollTop, mergedData, heightUpdatedMark, height]),\n      scrollHeight = _React$useMemo.scrollHeight,\n      start = _React$useMemo.start,\n      end = _React$useMemo.end,\n      offset = _React$useMemo.offset;\n\n  rangeRef.current.start = start;\n  rangeRef.current.end = end; // =============================== In Range ===============================\n\n  var maxScrollHeight = scrollHeight - height;\n  var maxScrollHeightRef = useRef(maxScrollHeight);\n  maxScrollHeightRef.current = maxScrollHeight;\n\n  function keepInRange(newScrollTop) {\n    var newTop = Math.max(newScrollTop, 0);\n\n    if (!Number.isNaN(maxScrollHeightRef.current)) {\n      newTop = Math.min(newTop, maxScrollHeightRef.current);\n    }\n\n    return newTop;\n  }\n\n  var isScrollAtTop = scrollTop <= 0;\n  var isScrollAtBottom = scrollTop >= maxScrollHeight;\n  var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom); // ================================ Scroll ================================\n\n  function onScrollBar(newScrollTop) {\n    var newTop = newScrollTop;\n    syncScrollTop(newTop);\n  } // This code may only trigger in test case.\n  // But we still need a sync if some special escape\n\n\n  function onFallbackScroll(e) {\n    var newScrollTop = e.currentTarget.scrollTop;\n\n    if (newScrollTop !== scrollTop) {\n      syncScrollTop(newScrollTop);\n    } // Trigger origin onScroll\n\n\n    onScroll === null || onScroll === void 0 ? void 0 : onScroll(e);\n  } // Since this added in global,should use ref to keep update\n\n\n  var _useFrameWheel = useFrameWheel(useVirtual, isScrollAtTop, isScrollAtBottom, function (offsetY) {\n    syncScrollTop(function (top) {\n      var newTop = top + offsetY;\n      return newTop;\n    });\n  }),\n      _useFrameWheel2 = _slicedToArray(_useFrameWheel, 2),\n      onRawWheel = _useFrameWheel2[0],\n      onFireFoxScroll = _useFrameWheel2[1]; // Mobile touch move\n\n\n  useMobileTouchMove(useVirtual, componentRef, function (deltaY, smoothOffset) {\n    if (originScroll(deltaY, smoothOffset)) {\n      return false;\n    }\n\n    onRawWheel({\n      preventDefault: function preventDefault() {},\n      deltaY: deltaY\n    });\n    return true;\n  });\n  React.useLayoutEffect(function () {\n    // Firefox only\n    function onMozMousePixelScroll(e) {\n      if (useVirtual) {\n        e.preventDefault();\n      }\n    }\n\n    componentRef.current.addEventListener('wheel', onRawWheel);\n    componentRef.current.addEventListener('DOMMouseScroll', onFireFoxScroll);\n    componentRef.current.addEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n    return function () {\n      componentRef.current.removeEventListener('wheel', onRawWheel);\n      componentRef.current.removeEventListener('DOMMouseScroll', onFireFoxScroll);\n      componentRef.current.removeEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n    };\n  }, [useVirtual]); // ================================= Ref ==================================\n\n  var scrollTo = useScrollTo(componentRef, mergedData, heights, itemHeight, getKey, collectHeight, syncScrollTop, function () {\n    var _scrollBarRef$current;\n\n    (_scrollBarRef$current = scrollBarRef.current) === null || _scrollBarRef$current === void 0 ? void 0 : _scrollBarRef$current.delayHidden();\n  });\n  React.useImperativeHandle(ref, function () {\n    return {\n      scrollTo: scrollTo\n    };\n  }); // ================================ Render ================================\n\n  var listChildren = useChildren(mergedData, start, end, setInstanceRef, children, sharedConfig);\n  var componentStyle = null;\n\n  if (height) {\n    componentStyle = _objectSpread(_defineProperty({}, fullHeight ? 'height' : 'maxHeight', height), ScrollStyle);\n\n    if (useVirtual) {\n      componentStyle.overflowY = 'hidden';\n\n      if (scrollMoving) {\n        componentStyle.pointerEvents = 'none';\n      }\n    }\n  }\n\n  return /*#__PURE__*/React.createElement(\"div\", Object.assign({\n    style: _objectSpread(_objectSpread({}, style), {}, {\n      position: 'relative'\n    }),\n    className: mergedClassName\n  }, restProps), /*#__PURE__*/React.createElement(Component, {\n    className: \"\".concat(prefixCls, \"-holder\"),\n    style: componentStyle,\n    ref: componentRef,\n    onScroll: onFallbackScroll\n  }, /*#__PURE__*/React.createElement(Filler, {\n    prefixCls: prefixCls,\n    height: scrollHeight,\n    offset: offset,\n    onInnerResize: collectHeight,\n    ref: fillerInnerRef\n  }, listChildren)), useVirtual && /*#__PURE__*/React.createElement(ScrollBar, {\n    ref: scrollBarRef,\n    prefixCls: prefixCls,\n    scrollTop: scrollTop,\n    height: height,\n    scrollHeight: scrollHeight,\n    count: mergedData.length,\n    onScroll: onScrollBar,\n    onStartMove: function onStartMove() {\n      setScrollMoving(true);\n    },\n    onStopMove: function onStopMove() {\n      setScrollMoving(false);\n    }\n  }));\n}\nvar List = /*#__PURE__*/React.forwardRef(RawList);\nList.displayName = 'List';\nexport default List;","map":{"version":3,"sources":["C:/Users/kkwan_000/Desktop/git/2017110269/minsung/node_modules/rc-virtual-list/es/List.js"],"names":["ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","prototype","toString","call","slice","constructor","name","Array","from","test","len","arr2","Symbol","iterator","_arr","_n","_d","_e","undefined","_i","_s","next","done","err","isArray","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","React","useRef","useState","classNames","Filler","ScrollBar","useChildren","useHeights","useScrollTo","useDiffItem","useFrameWheel","useMobileTouchMove","useOriginScroll","EMPTY_DATA","ScrollStyle","overflowY","overflowAnchor","RawList","props","ref","_props$prefixCls","prefixCls","className","height","itemHeight","_props$fullHeight","fullHeight","style","data","children","itemKey","virtual","_props$component","component","Component","onScroll","restProps","useVirtual","inVirtual","_useState","_useState2","scrollTop","setScrollTop","_useState3","_useState4","scrollMoving","setScrollMoving","mergedClassName","mergedData","componentRef","fillerInnerRef","scrollBarRef","getKey","useCallback","item","sharedConfig","syncScrollTop","newTop","origin","alignedTop","keepInRange","current","rangeRef","start","end","diffItemRef","_useDiffItem","_useDiffItem2","diffItem","_useHeights","_useHeights2","setInstanceRef","collectHeight","heights","heightUpdatedMark","_React$useMemo","useMemo","scrollHeight","offset","_fillerInnerRef$curre","offsetHeight","itemTop","startIndex","startOffset","endIndex","dataLen","cacheHeight","get","currentItemBottom","Math","min","maxScrollHeight","maxScrollHeightRef","newScrollTop","max","Number","isNaN","isScrollAtTop","isScrollAtBottom","originScroll","onScrollBar","onFallbackScroll","e","currentTarget","_useFrameWheel","offsetY","top","_useFrameWheel2","onRawWheel","onFireFoxScroll","deltaY","smoothOffset","preventDefault","useLayoutEffect","onMozMousePixelScroll","addEventListener","removeEventListener","scrollTo","_scrollBarRef$current","delayHidden","useImperativeHandle","listChildren","componentStyle","pointerEvents","createElement","assign","position","concat","onInnerResize","count","onStartMove","onStopMove","List","forwardRef","displayName"],"mappings":"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","sourcesContent":["function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport Filler from './Filler';\nimport ScrollBar from './ScrollBar';\nimport useChildren from './hooks/useChildren';\nimport useHeights from './hooks/useHeights';\nimport useScrollTo from './hooks/useScrollTo';\nimport useDiffItem from './hooks/useDiffItem';\nimport useFrameWheel from './hooks/useFrameWheel';\nimport useMobileTouchMove from './hooks/useMobileTouchMove';\nimport useOriginScroll from './hooks/useOriginScroll';\nvar EMPTY_DATA = [];\nvar ScrollStyle = {\n  overflowY: 'auto',\n  overflowAnchor: 'none'\n};\nexport function RawList(props, ref) {\n  var _props$prefixCls = props.prefixCls,\n      prefixCls = _props$prefixCls === void 0 ? 'rc-virtual-list' : _props$prefixCls,\n      className = props.className,\n      height = props.height,\n      itemHeight = props.itemHeight,\n      _props$fullHeight = props.fullHeight,\n      fullHeight = _props$fullHeight === void 0 ? true : _props$fullHeight,\n      style = props.style,\n      data = props.data,\n      children = props.children,\n      itemKey = props.itemKey,\n      virtual = props.virtual,\n      _props$component = props.component,\n      Component = _props$component === void 0 ? 'div' : _props$component,\n      onScroll = props.onScroll,\n      restProps = _objectWithoutProperties(props, [\"prefixCls\", \"className\", \"height\", \"itemHeight\", \"fullHeight\", \"style\", \"data\", \"children\", \"itemKey\", \"virtual\", \"component\", \"onScroll\"]); // ================================= MISC =================================\n\n\n  var useVirtual = !!(virtual !== false && height && itemHeight);\n  var inVirtual = useVirtual && data && itemHeight * data.length > height;\n\n  var _useState = useState(0),\n      _useState2 = _slicedToArray(_useState, 2),\n      scrollTop = _useState2[0],\n      setScrollTop = _useState2[1];\n\n  var _useState3 = useState(false),\n      _useState4 = _slicedToArray(_useState3, 2),\n      scrollMoving = _useState4[0],\n      setScrollMoving = _useState4[1];\n\n  var mergedClassName = classNames(prefixCls, className);\n  var mergedData = data || EMPTY_DATA;\n  var componentRef = useRef();\n  var fillerInnerRef = useRef();\n  var scrollBarRef = useRef(); // Hack on scrollbar to enable flash call\n  // =============================== Item Key ===============================\n\n  var getKey = React.useCallback(function (item) {\n    if (typeof itemKey === 'function') {\n      return itemKey(item);\n    }\n\n    return item === null || item === void 0 ? void 0 : item[itemKey];\n  }, [itemKey]);\n  var sharedConfig = {\n    getKey: getKey\n  }; // ================================ Scroll ================================\n\n  function syncScrollTop(newTop) {\n    setScrollTop(function (origin) {\n      var value;\n\n      if (typeof newTop === 'function') {\n        value = newTop(origin);\n      } else {\n        value = newTop;\n      }\n\n      var alignedTop = keepInRange(value);\n      componentRef.current.scrollTop = alignedTop;\n      return alignedTop;\n    });\n  } // ================================ Legacy ================================\n  // Put ref here since the range is generate by follow\n\n\n  var rangeRef = useRef({\n    start: 0,\n    end: mergedData.length\n  });\n  var diffItemRef = useRef();\n\n  var _useDiffItem = useDiffItem(mergedData, getKey),\n      _useDiffItem2 = _slicedToArray(_useDiffItem, 1),\n      diffItem = _useDiffItem2[0];\n\n  diffItemRef.current = diffItem; // ================================ Height ================================\n\n  var _useHeights = useHeights(getKey, null, null),\n      _useHeights2 = _slicedToArray(_useHeights, 4),\n      setInstanceRef = _useHeights2[0],\n      collectHeight = _useHeights2[1],\n      heights = _useHeights2[2],\n      heightUpdatedMark = _useHeights2[3]; // ========================== Visible Calculation =========================\n\n\n  var _React$useMemo = React.useMemo(function () {\n    if (!useVirtual) {\n      return {\n        scrollHeight: undefined,\n        start: 0,\n        end: mergedData.length - 1,\n        offset: undefined\n      };\n    } // Always use virtual scroll bar in avoid shaking\n\n\n    if (!inVirtual) {\n      var _fillerInnerRef$curre;\n\n      return {\n        scrollHeight: ((_fillerInnerRef$curre = fillerInnerRef.current) === null || _fillerInnerRef$curre === void 0 ? void 0 : _fillerInnerRef$curre.offsetHeight) || 0,\n        start: 0,\n        end: mergedData.length - 1,\n        offset: undefined\n      };\n    }\n\n    var itemTop = 0;\n    var startIndex;\n    var startOffset;\n    var endIndex;\n    var dataLen = mergedData.length;\n\n    for (var i = 0; i < dataLen; i += 1) {\n      var item = mergedData[i];\n      var key = getKey(item);\n      var cacheHeight = heights.get(key);\n      var currentItemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight); // Check item top in the range\n\n      if (currentItemBottom >= scrollTop && startIndex === undefined) {\n        startIndex = i;\n        startOffset = itemTop;\n      } // Check item bottom in the range. We will render additional one item for motion usage\n\n\n      if (currentItemBottom > scrollTop + height && endIndex === undefined) {\n        endIndex = i;\n      }\n\n      itemTop = currentItemBottom;\n    } // Fallback to normal if not match. This code should never reach\n\n    /* istanbul ignore next */\n\n\n    if (startIndex === undefined) {\n      startIndex = 0;\n      startOffset = 0;\n    }\n\n    if (endIndex === undefined) {\n      endIndex = mergedData.length - 1;\n    } // Give cache to improve scroll experience\n\n\n    endIndex = Math.min(endIndex + 1, mergedData.length);\n    return {\n      scrollHeight: itemTop,\n      start: startIndex,\n      end: endIndex,\n      offset: startOffset\n    };\n  }, [inVirtual, useVirtual, scrollTop, mergedData, heightUpdatedMark, height]),\n      scrollHeight = _React$useMemo.scrollHeight,\n      start = _React$useMemo.start,\n      end = _React$useMemo.end,\n      offset = _React$useMemo.offset;\n\n  rangeRef.current.start = start;\n  rangeRef.current.end = end; // =============================== In Range ===============================\n\n  var maxScrollHeight = scrollHeight - height;\n  var maxScrollHeightRef = useRef(maxScrollHeight);\n  maxScrollHeightRef.current = maxScrollHeight;\n\n  function keepInRange(newScrollTop) {\n    var newTop = Math.max(newScrollTop, 0);\n\n    if (!Number.isNaN(maxScrollHeightRef.current)) {\n      newTop = Math.min(newTop, maxScrollHeightRef.current);\n    }\n\n    return newTop;\n  }\n\n  var isScrollAtTop = scrollTop <= 0;\n  var isScrollAtBottom = scrollTop >= maxScrollHeight;\n  var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom); // ================================ Scroll ================================\n\n  function onScrollBar(newScrollTop) {\n    var newTop = newScrollTop;\n    syncScrollTop(newTop);\n  } // This code may only trigger in test case.\n  // But we still need a sync if some special escape\n\n\n  function onFallbackScroll(e) {\n    var newScrollTop = e.currentTarget.scrollTop;\n\n    if (newScrollTop !== scrollTop) {\n      syncScrollTop(newScrollTop);\n    } // Trigger origin onScroll\n\n\n    onScroll === null || onScroll === void 0 ? void 0 : onScroll(e);\n  } // Since this added in global,should use ref to keep update\n\n\n  var _useFrameWheel = useFrameWheel(useVirtual, isScrollAtTop, isScrollAtBottom, function (offsetY) {\n    syncScrollTop(function (top) {\n      var newTop = top + offsetY;\n      return newTop;\n    });\n  }),\n      _useFrameWheel2 = _slicedToArray(_useFrameWheel, 2),\n      onRawWheel = _useFrameWheel2[0],\n      onFireFoxScroll = _useFrameWheel2[1]; // Mobile touch move\n\n\n  useMobileTouchMove(useVirtual, componentRef, function (deltaY, smoothOffset) {\n    if (originScroll(deltaY, smoothOffset)) {\n      return false;\n    }\n\n    onRawWheel({\n      preventDefault: function preventDefault() {},\n      deltaY: deltaY\n    });\n    return true;\n  });\n  React.useLayoutEffect(function () {\n    // Firefox only\n    function onMozMousePixelScroll(e) {\n      if (useVirtual) {\n        e.preventDefault();\n      }\n    }\n\n    componentRef.current.addEventListener('wheel', onRawWheel);\n    componentRef.current.addEventListener('DOMMouseScroll', onFireFoxScroll);\n    componentRef.current.addEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n    return function () {\n      componentRef.current.removeEventListener('wheel', onRawWheel);\n      componentRef.current.removeEventListener('DOMMouseScroll', onFireFoxScroll);\n      componentRef.current.removeEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n    };\n  }, [useVirtual]); // ================================= Ref ==================================\n\n  var scrollTo = useScrollTo(componentRef, mergedData, heights, itemHeight, getKey, collectHeight, syncScrollTop, function () {\n    var _scrollBarRef$current;\n\n    (_scrollBarRef$current = scrollBarRef.current) === null || _scrollBarRef$current === void 0 ? void 0 : _scrollBarRef$current.delayHidden();\n  });\n  React.useImperativeHandle(ref, function () {\n    return {\n      scrollTo: scrollTo\n    };\n  }); // ================================ Render ================================\n\n  var listChildren = useChildren(mergedData, start, end, setInstanceRef, children, sharedConfig);\n  var componentStyle = null;\n\n  if (height) {\n    componentStyle = _objectSpread(_defineProperty({}, fullHeight ? 'height' : 'maxHeight', height), ScrollStyle);\n\n    if (useVirtual) {\n      componentStyle.overflowY = 'hidden';\n\n      if (scrollMoving) {\n        componentStyle.pointerEvents = 'none';\n      }\n    }\n  }\n\n  return /*#__PURE__*/React.createElement(\"div\", Object.assign({\n    style: _objectSpread(_objectSpread({}, style), {}, {\n      position: 'relative'\n    }),\n    className: mergedClassName\n  }, restProps), /*#__PURE__*/React.createElement(Component, {\n    className: \"\".concat(prefixCls, \"-holder\"),\n    style: componentStyle,\n    ref: componentRef,\n    onScroll: onFallbackScroll\n  }, /*#__PURE__*/React.createElement(Filler, {\n    prefixCls: prefixCls,\n    height: scrollHeight,\n    offset: offset,\n    onInnerResize: collectHeight,\n    ref: fillerInnerRef\n  }, listChildren)), useVirtual && /*#__PURE__*/React.createElement(ScrollBar, {\n    ref: scrollBarRef,\n    prefixCls: prefixCls,\n    scrollTop: scrollTop,\n    height: height,\n    scrollHeight: scrollHeight,\n    count: mergedData.length,\n    onScroll: onScrollBar,\n    onStartMove: function onStartMove() {\n      setScrollMoving(true);\n    },\n    onStopMove: function onStopMove() {\n      setScrollMoving(false);\n    }\n  }));\n}\nvar List = /*#__PURE__*/React.forwardRef(RawList);\nList.displayName = 'List';\nexport default List;"]},"metadata":{},"sourceType":"module"}