@depup/react-virtualized 9.22.6-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +34 -0
  3. package/changes.json +22 -0
  4. package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.example.js +184 -0
  5. package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.jest.js +338 -0
  6. package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.js +204 -0
  7. package/dist/commonjs/ArrowKeyStepper/index.js +19 -0
  8. package/dist/commonjs/ArrowKeyStepper/types.js +5 -0
  9. package/dist/commonjs/AutoSizer/AutoSizer.example.js +104 -0
  10. package/dist/commonjs/AutoSizer/AutoSizer.jest.js +341 -0
  11. package/dist/commonjs/AutoSizer/AutoSizer.js +199 -0
  12. package/dist/commonjs/AutoSizer/AutoSizer.ssr.js +25 -0
  13. package/dist/commonjs/AutoSizer/index.js +19 -0
  14. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightGrid.example.js +100 -0
  15. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightList.example.js +99 -0
  16. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightTableColumn.example.js +107 -0
  17. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicWidthGrid.example.js +102 -0
  18. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicWidthMultiGrid.example.js +107 -0
  19. package/dist/commonjs/CellMeasurer/CellMeasurer.example.js +129 -0
  20. package/dist/commonjs/CellMeasurer/CellMeasurer.jest.js +345 -0
  21. package/dist/commonjs/CellMeasurer/CellMeasurer.js +195 -0
  22. package/dist/commonjs/CellMeasurer/CellMeasurerCache.jest.js +298 -0
  23. package/dist/commonjs/CellMeasurer/CellMeasurerCache.js +202 -0
  24. package/dist/commonjs/CellMeasurer/index.js +22 -0
  25. package/dist/commonjs/CellMeasurer/types.js +14 -0
  26. package/dist/commonjs/Collection/Collection.example.js +231 -0
  27. package/dist/commonjs/Collection/Collection.jest.js +829 -0
  28. package/dist/commonjs/Collection/Collection.js +266 -0
  29. package/dist/commonjs/Collection/CollectionView.js +553 -0
  30. package/dist/commonjs/Collection/Section.jest.js +63 -0
  31. package/dist/commonjs/Collection/Section.js +57 -0
  32. package/dist/commonjs/Collection/SectionManager.jest.js +121 -0
  33. package/dist/commonjs/Collection/SectionManager.js +134 -0
  34. package/dist/commonjs/Collection/TestData.js +77 -0
  35. package/dist/commonjs/Collection/index.js +15 -0
  36. package/dist/commonjs/Collection/types.js +22 -0
  37. package/dist/commonjs/Collection/utils/calculateSizeAndPositionData.jest.js +34 -0
  38. package/dist/commonjs/Collection/utils/calculateSizeAndPositionData.js +38 -0
  39. package/dist/commonjs/ColumnSizer/ColumnSizer.example.js +159 -0
  40. package/dist/commonjs/ColumnSizer/ColumnSizer.jest.js +129 -0
  41. package/dist/commonjs/ColumnSizer/ColumnSizer.js +103 -0
  42. package/dist/commonjs/ColumnSizer/index.js +15 -0
  43. package/dist/commonjs/Grid/Grid.example.js +330 -0
  44. package/dist/commonjs/Grid/Grid.jest.js +2561 -0
  45. package/dist/commonjs/Grid/Grid.js +1432 -0
  46. package/dist/commonjs/Grid/Grid.ssr.js +62 -0
  47. package/dist/commonjs/Grid/accessibilityOverscanIndicesGetter.jest.js +92 -0
  48. package/dist/commonjs/Grid/accessibilityOverscanIndicesGetter.js +40 -0
  49. package/dist/commonjs/Grid/defaultCellRangeRenderer.js +139 -0
  50. package/dist/commonjs/Grid/defaultOverscanIndicesGetter.jest.js +92 -0
  51. package/dist/commonjs/Grid/defaultOverscanIndicesGetter.js +36 -0
  52. package/dist/commonjs/Grid/index.js +40 -0
  53. package/dist/commonjs/Grid/types.js +8 -0
  54. package/dist/commonjs/Grid/utils/CellSizeAndPositionManager.jest.js +375 -0
  55. package/dist/commonjs/Grid/utils/CellSizeAndPositionManager.js +296 -0
  56. package/dist/commonjs/Grid/utils/ScalingCellSizeAndPositionManager.jest.js +201 -0
  57. package/dist/commonjs/Grid/utils/ScalingCellSizeAndPositionManager.js +204 -0
  58. package/dist/commonjs/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.jest.js +84 -0
  59. package/dist/commonjs/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js +59 -0
  60. package/dist/commonjs/Grid/utils/maxElementSize.js +22 -0
  61. package/dist/commonjs/Grid/utils/updateScrollIndexHelper.jest.js +180 -0
  62. package/dist/commonjs/Grid/utils/updateScrollIndexHelper.js +85 -0
  63. package/dist/commonjs/InfiniteLoader/InfiniteLoader.example.js +179 -0
  64. package/dist/commonjs/InfiniteLoader/InfiniteLoader.jest.js +571 -0
  65. package/dist/commonjs/InfiniteLoader/InfiniteLoader.js +274 -0
  66. package/dist/commonjs/InfiniteLoader/index.js +15 -0
  67. package/dist/commonjs/List/List.example.js +236 -0
  68. package/dist/commonjs/List/List.jest.js +517 -0
  69. package/dist/commonjs/List/List.js +318 -0
  70. package/dist/commonjs/List/index.js +19 -0
  71. package/dist/commonjs/List/types.js +6 -0
  72. package/dist/commonjs/Masonry/Masonry.example.js +287 -0
  73. package/dist/commonjs/Masonry/Masonry.jest.js +450 -0
  74. package/dist/commonjs/Masonry/Masonry.js +431 -0
  75. package/dist/commonjs/Masonry/PositionCache.js +88 -0
  76. package/dist/commonjs/Masonry/createCellPositioner.js +59 -0
  77. package/dist/commonjs/Masonry/index.js +22 -0
  78. package/dist/commonjs/MultiGrid/CellMeasurerCacheDecorator.js +106 -0
  79. package/dist/commonjs/MultiGrid/MultiGrid.example.js +131 -0
  80. package/dist/commonjs/MultiGrid/MultiGrid.jest.js +584 -0
  81. package/dist/commonjs/MultiGrid/MultiGrid.js +743 -0
  82. package/dist/commonjs/MultiGrid/index.js +15 -0
  83. package/dist/commonjs/ScrollSync/ScrollSync.example.js +257 -0
  84. package/dist/commonjs/ScrollSync/ScrollSync.jest.js +66 -0
  85. package/dist/commonjs/ScrollSync/ScrollSync.js +88 -0
  86. package/dist/commonjs/ScrollSync/index.js +15 -0
  87. package/dist/commonjs/Table/Column.jest.js +90 -0
  88. package/dist/commonjs/Table/Column.js +93 -0
  89. package/dist/commonjs/Table/SortDirection.js +19 -0
  90. package/dist/commonjs/Table/SortIndicator.js +40 -0
  91. package/dist/commonjs/Table/Table.example.js +325 -0
  92. package/dist/commonjs/Table/Table.jest.js +1257 -0
  93. package/dist/commonjs/Table/Table.js +742 -0
  94. package/dist/commonjs/Table/createMultiSort.jest.js +165 -0
  95. package/dist/commonjs/Table/createMultiSort.js +99 -0
  96. package/dist/commonjs/Table/defaultCellDataGetter.js +21 -0
  97. package/dist/commonjs/Table/defaultCellRenderer.js +19 -0
  98. package/dist/commonjs/Table/defaultHeaderRenderer.js +35 -0
  99. package/dist/commonjs/Table/defaultHeaderRowRenderer.js +21 -0
  100. package/dist/commonjs/Table/defaultRowRenderer.js +87 -0
  101. package/dist/commonjs/Table/index.js +78 -0
  102. package/dist/commonjs/Table/types.js +39 -0
  103. package/dist/commonjs/WindowScroller/WindowScroller.e2e.js +298 -0
  104. package/dist/commonjs/WindowScroller/WindowScroller.example.js +167 -0
  105. package/dist/commonjs/WindowScroller/WindowScroller.header-resize.e2e.js +359 -0
  106. package/dist/commonjs/WindowScroller/WindowScroller.jest.js +536 -0
  107. package/dist/commonjs/WindowScroller/WindowScroller.js +268 -0
  108. package/dist/commonjs/WindowScroller/WindowScroller.ssr.js +25 -0
  109. package/dist/commonjs/WindowScroller/index.js +23 -0
  110. package/dist/commonjs/WindowScroller/utils/dimensions.js +89 -0
  111. package/dist/commonjs/WindowScroller/utils/onScroll.js +70 -0
  112. package/dist/commonjs/index.js +180 -0
  113. package/dist/commonjs/jest-setup.js +7 -0
  114. package/dist/commonjs/utils/TestHelper.js +36 -0
  115. package/dist/commonjs/utils/animationFrame.js +29 -0
  116. package/dist/commonjs/utils/createCallbackMemoizer.jest.js +219 -0
  117. package/dist/commonjs/utils/createCallbackMemoizer.js +31 -0
  118. package/dist/commonjs/utils/getUpdatedOffsetForIndex.jest.js +68 -0
  119. package/dist/commonjs/utils/getUpdatedOffsetForIndex.js +38 -0
  120. package/dist/commonjs/utils/initCellMetadata.js +37 -0
  121. package/dist/commonjs/utils/requestAnimationTimeout.js +38 -0
  122. package/dist/commonjs/vendor/binarySearchBounds.js +200 -0
  123. package/dist/commonjs/vendor/detectElementResize.js +192 -0
  124. package/dist/commonjs/vendor/intervalTree.js +361 -0
  125. package/dist/es/ArrowKeyStepper/ArrowKeyStepper.example.js +176 -0
  126. package/dist/es/ArrowKeyStepper/ArrowKeyStepper.jest.js +332 -0
  127. package/dist/es/ArrowKeyStepper/ArrowKeyStepper.js +197 -0
  128. package/dist/es/ArrowKeyStepper/index.js +3 -0
  129. package/dist/es/ArrowKeyStepper/types.js +4 -0
  130. package/dist/es/AutoSizer/AutoSizer.example.js +96 -0
  131. package/dist/es/AutoSizer/AutoSizer.jest.js +335 -0
  132. package/dist/es/AutoSizer/AutoSizer.js +190 -0
  133. package/dist/es/AutoSizer/AutoSizer.js.flow +200 -0
  134. package/dist/es/AutoSizer/AutoSizer.ssr.js +19 -0
  135. package/dist/es/AutoSizer/index.js +2 -0
  136. package/dist/es/AutoSizer/index.js.flow +4 -0
  137. package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightGrid.example.js +91 -0
  138. package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightList.example.js +90 -0
  139. package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightTableColumn.example.js +98 -0
  140. package/dist/es/CellMeasurer/CellMeasurer.DynamicWidthGrid.example.js +93 -0
  141. package/dist/es/CellMeasurer/CellMeasurer.DynamicWidthMultiGrid.example.js +98 -0
  142. package/dist/es/CellMeasurer/CellMeasurer.example.js +120 -0
  143. package/dist/es/CellMeasurer/CellMeasurer.jest.js +340 -0
  144. package/dist/es/CellMeasurer/CellMeasurer.js +187 -0
  145. package/dist/es/CellMeasurer/CellMeasurerCache.jest.js +293 -0
  146. package/dist/es/CellMeasurer/CellMeasurerCache.js +196 -0
  147. package/dist/es/CellMeasurer/index.js +4 -0
  148. package/dist/es/CellMeasurer/types.js +13 -0
  149. package/dist/es/Collection/Collection.example.js +223 -0
  150. package/dist/es/Collection/Collection.jest.js +824 -0
  151. package/dist/es/Collection/Collection.js +257 -0
  152. package/dist/es/Collection/CollectionView.js +544 -0
  153. package/dist/es/Collection/Section.jest.js +60 -0
  154. package/dist/es/Collection/Section.js +51 -0
  155. package/dist/es/Collection/SectionManager.jest.js +118 -0
  156. package/dist/es/Collection/SectionManager.js +128 -0
  157. package/dist/es/Collection/TestData.js +71 -0
  158. package/dist/es/Collection/index.js +3 -0
  159. package/dist/es/Collection/types.js +21 -0
  160. package/dist/es/Collection/utils/calculateSizeAndPositionData.jest.js +31 -0
  161. package/dist/es/Collection/utils/calculateSizeAndPositionData.js +31 -0
  162. package/dist/es/ColumnSizer/ColumnSizer.example.js +150 -0
  163. package/dist/es/ColumnSizer/ColumnSizer.jest.js +123 -0
  164. package/dist/es/ColumnSizer/ColumnSizer.js +95 -0
  165. package/dist/es/ColumnSizer/index.js +3 -0
  166. package/dist/es/Grid/Grid.example.js +321 -0
  167. package/dist/es/Grid/Grid.jest.js +2555 -0
  168. package/dist/es/Grid/Grid.js +1425 -0
  169. package/dist/es/Grid/Grid.ssr.js +57 -0
  170. package/dist/es/Grid/accessibilityOverscanIndicesGetter.jest.js +87 -0
  171. package/dist/es/Grid/accessibilityOverscanIndicesGetter.js +33 -0
  172. package/dist/es/Grid/defaultCellRangeRenderer.js +134 -0
  173. package/dist/es/Grid/defaultOverscanIndicesGetter.jest.js +87 -0
  174. package/dist/es/Grid/defaultOverscanIndicesGetter.js +29 -0
  175. package/dist/es/Grid/index.js +15 -0
  176. package/dist/es/Grid/types.js +96 -0
  177. package/dist/es/Grid/utils/CellSizeAndPositionManager.jest.js +372 -0
  178. package/dist/es/Grid/utils/CellSizeAndPositionManager.js +290 -0
  179. package/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.jest.js +198 -0
  180. package/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.js +198 -0
  181. package/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.jest.js +81 -0
  182. package/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js +53 -0
  183. package/dist/es/Grid/utils/maxElementSize.js +16 -0
  184. package/dist/es/Grid/utils/updateScrollIndexHelper.jest.js +174 -0
  185. package/dist/es/Grid/utils/updateScrollIndexHelper.js +79 -0
  186. package/dist/es/InfiniteLoader/InfiniteLoader.example.js +170 -0
  187. package/dist/es/InfiniteLoader/InfiniteLoader.jest.js +565 -0
  188. package/dist/es/InfiniteLoader/InfiniteLoader.js +263 -0
  189. package/dist/es/InfiniteLoader/index.js +3 -0
  190. package/dist/es/List/List.example.js +227 -0
  191. package/dist/es/List/List.jest.js +511 -0
  192. package/dist/es/List/List.js +312 -0
  193. package/dist/es/List/index.js +3 -0
  194. package/dist/es/List/types.js +21 -0
  195. package/dist/es/Masonry/Masonry.example.js +278 -0
  196. package/dist/es/Masonry/Masonry.jest.js +444 -0
  197. package/dist/es/Masonry/Masonry.js +421 -0
  198. package/dist/es/Masonry/PositionCache.js +82 -0
  199. package/dist/es/Masonry/createCellPositioner.js +53 -0
  200. package/dist/es/Masonry/index.js +4 -0
  201. package/dist/es/MultiGrid/CellMeasurerCacheDecorator.js +100 -0
  202. package/dist/es/MultiGrid/MultiGrid.example.js +122 -0
  203. package/dist/es/MultiGrid/MultiGrid.jest.js +579 -0
  204. package/dist/es/MultiGrid/MultiGrid.js +733 -0
  205. package/dist/es/MultiGrid/index.js +3 -0
  206. package/dist/es/ScrollSync/ScrollSync.example.js +248 -0
  207. package/dist/es/ScrollSync/ScrollSync.jest.js +60 -0
  208. package/dist/es/ScrollSync/ScrollSync.js +80 -0
  209. package/dist/es/ScrollSync/index.js +3 -0
  210. package/dist/es/Table/Column.jest.js +84 -0
  211. package/dist/es/Table/Column.js +85 -0
  212. package/dist/es/Table/SortDirection.js +13 -0
  213. package/dist/es/Table/SortIndicator.js +31 -0
  214. package/dist/es/Table/Table.example.js +316 -0
  215. package/dist/es/Table/Table.jest.js +1251 -0
  216. package/dist/es/Table/Table.js +735 -0
  217. package/dist/es/Table/createMultiSort.jest.js +162 -0
  218. package/dist/es/Table/createMultiSort.js +93 -0
  219. package/dist/es/Table/defaultCellDataGetter.js +15 -0
  220. package/dist/es/Table/defaultCellRenderer.js +13 -0
  221. package/dist/es/Table/defaultHeaderRenderer.js +25 -0
  222. package/dist/es/Table/defaultHeaderRowRenderer.js +12 -0
  223. package/dist/es/Table/defaultRowRenderer.js +77 -0
  224. package/dist/es/Table/index.js +12 -0
  225. package/dist/es/Table/types.js +38 -0
  226. package/dist/es/WindowScroller/WindowScroller.e2e.js +295 -0
  227. package/dist/es/WindowScroller/WindowScroller.example.js +158 -0
  228. package/dist/es/WindowScroller/WindowScroller.header-resize.e2e.js +356 -0
  229. package/dist/es/WindowScroller/WindowScroller.jest.js +530 -0
  230. package/dist/es/WindowScroller/WindowScroller.js +259 -0
  231. package/dist/es/WindowScroller/WindowScroller.js.flow +277 -0
  232. package/dist/es/WindowScroller/WindowScroller.ssr.js +19 -0
  233. package/dist/es/WindowScroller/index.js +3 -0
  234. package/dist/es/WindowScroller/index.js.flow +6 -0
  235. package/dist/es/WindowScroller/utils/dimensions.js +81 -0
  236. package/dist/es/WindowScroller/utils/dimensions.js.flow +91 -0
  237. package/dist/es/WindowScroller/utils/onScroll.js +64 -0
  238. package/dist/es/WindowScroller/utils/onScroll.js.flow +94 -0
  239. package/dist/es/index.js +13 -0
  240. package/dist/es/jest-setup.js +5 -0
  241. package/dist/es/utils/TestHelper.js +30 -0
  242. package/dist/es/utils/animationFrame.js +23 -0
  243. package/dist/es/utils/createCallbackMemoizer.jest.js +216 -0
  244. package/dist/es/utils/createCallbackMemoizer.js +25 -0
  245. package/dist/es/utils/getUpdatedOffsetForIndex.jest.js +65 -0
  246. package/dist/es/utils/getUpdatedOffsetForIndex.js +32 -0
  247. package/dist/es/utils/initCellMetadata.js +31 -0
  248. package/dist/es/utils/requestAnimationTimeout.js +32 -0
  249. package/dist/es/vendor/binarySearchBounds.js +194 -0
  250. package/dist/es/vendor/detectElementResize.js +186 -0
  251. package/dist/es/vendor/intervalTree.js +354 -0
  252. package/dist/umd/react-virtualized.js +4638 -0
  253. package/package.json +188 -0
  254. package/styles.css +80 -0
@@ -0,0 +1,257 @@
1
+ import _objectDestructuringEmpty from "@babel/runtime/helpers/objectDestructuringEmpty";
2
+ import _extends from "@babel/runtime/helpers/extends";
3
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4
+ import _createClass from "@babel/runtime/helpers/createClass";
5
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
+ import _inherits from "@babel/runtime/helpers/inherits";
8
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
10
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
11
+ import PropTypes from 'prop-types';
12
+ import * as React from 'react';
13
+ import CollectionView from './CollectionView';
14
+ import _calculateSizeAndPositionData from './utils/calculateSizeAndPositionData';
15
+ import getUpdatedOffsetForIndex from '../utils/getUpdatedOffsetForIndex';
16
+ /*:: import type {ScrollPosition, SizeInfo} from './types';*/
17
+ /**
18
+ * Renders scattered or non-linear data.
19
+ * Unlike Grid, which renders checkerboard data, Collection can render arbitrarily positioned- even overlapping- data.
20
+ */
21
+ var Collection = /*#__PURE__*/function (_React$PureComponent) {
22
+ function Collection(props, context) {
23
+ var _this;
24
+ _classCallCheck(this, Collection);
25
+ _this = _callSuper(this, Collection, [props, context]);
26
+ _this._cellMetadata = [];
27
+ _this._lastRenderedCellIndices = [];
28
+
29
+ // Cell cache during scroll (for performance)
30
+ _this._cellCache = [];
31
+ _this._isScrollingChange = _this._isScrollingChange.bind(_this);
32
+ _this._setCollectionViewRef = _this._setCollectionViewRef.bind(_this);
33
+ return _this;
34
+ }
35
+ _inherits(Collection, _React$PureComponent);
36
+ return _createClass(Collection, [{
37
+ key: "forceUpdate",
38
+ value: function forceUpdate() {
39
+ if (this._collectionView !== undefined) {
40
+ this._collectionView.forceUpdate();
41
+ }
42
+ }
43
+
44
+ /** See Collection#recomputeCellSizesAndPositions */
45
+ }, {
46
+ key: "recomputeCellSizesAndPositions",
47
+ value: function recomputeCellSizesAndPositions() {
48
+ this._cellCache = [];
49
+ this._collectionView.recomputeCellSizesAndPositions();
50
+ }
51
+
52
+ /** React lifecycle methods */
53
+ }, {
54
+ key: "render",
55
+ value: function render() {
56
+ var props = _extends({}, (_objectDestructuringEmpty(this.props), this.props));
57
+ return /*#__PURE__*/React.createElement(CollectionView, _extends({
58
+ cellLayoutManager: this,
59
+ isScrollingChange: this._isScrollingChange,
60
+ ref: this._setCollectionViewRef
61
+ }, props));
62
+ }
63
+
64
+ /** CellLayoutManager interface */
65
+ }, {
66
+ key: "calculateSizeAndPositionData",
67
+ value: function calculateSizeAndPositionData() {
68
+ var _this$props = this.props,
69
+ cellCount = _this$props.cellCount,
70
+ cellSizeAndPositionGetter = _this$props.cellSizeAndPositionGetter,
71
+ sectionSize = _this$props.sectionSize;
72
+ var data = _calculateSizeAndPositionData({
73
+ cellCount: cellCount,
74
+ cellSizeAndPositionGetter: cellSizeAndPositionGetter,
75
+ sectionSize: sectionSize
76
+ });
77
+ this._cellMetadata = data.cellMetadata;
78
+ this._sectionManager = data.sectionManager;
79
+ this._height = data.height;
80
+ this._width = data.width;
81
+ }
82
+
83
+ /**
84
+ * Returns the most recently rendered set of cell indices.
85
+ */
86
+ }, {
87
+ key: "getLastRenderedIndices",
88
+ value: function getLastRenderedIndices() {
89
+ return this._lastRenderedCellIndices;
90
+ }
91
+
92
+ /**
93
+ * Calculates the minimum amount of change from the current scroll position to ensure the specified cell is (fully) visible.
94
+ */
95
+ }, {
96
+ key: "getScrollPositionForCell",
97
+ value: function getScrollPositionForCell(_ref) /*: ScrollPosition*/{
98
+ var align = _ref.align,
99
+ cellIndex = _ref.cellIndex,
100
+ height = _ref.height,
101
+ scrollLeft = _ref.scrollLeft,
102
+ scrollTop = _ref.scrollTop,
103
+ width = _ref.width;
104
+ var cellCount = this.props.cellCount;
105
+ if (cellIndex >= 0 && cellIndex < cellCount) {
106
+ var cellMetadata = this._cellMetadata[cellIndex];
107
+ scrollLeft = getUpdatedOffsetForIndex({
108
+ align: align,
109
+ cellOffset: cellMetadata.x,
110
+ cellSize: cellMetadata.width,
111
+ containerSize: width,
112
+ currentOffset: scrollLeft,
113
+ targetIndex: cellIndex
114
+ });
115
+ scrollTop = getUpdatedOffsetForIndex({
116
+ align: align,
117
+ cellOffset: cellMetadata.y,
118
+ cellSize: cellMetadata.height,
119
+ containerSize: height,
120
+ currentOffset: scrollTop,
121
+ targetIndex: cellIndex
122
+ });
123
+ }
124
+ return {
125
+ scrollLeft: scrollLeft,
126
+ scrollTop: scrollTop
127
+ };
128
+ }
129
+ }, {
130
+ key: "getTotalSize",
131
+ value: function getTotalSize() /*: SizeInfo*/{
132
+ return {
133
+ height: this._height,
134
+ width: this._width
135
+ };
136
+ }
137
+ }, {
138
+ key: "cellRenderers",
139
+ value: function cellRenderers(_ref2) {
140
+ var _this2 = this;
141
+ var height = _ref2.height,
142
+ isScrolling = _ref2.isScrolling,
143
+ width = _ref2.width,
144
+ x = _ref2.x,
145
+ y = _ref2.y;
146
+ var _this$props2 = this.props,
147
+ cellGroupRenderer = _this$props2.cellGroupRenderer,
148
+ cellRenderer = _this$props2.cellRenderer;
149
+
150
+ // Store for later calls to getLastRenderedIndices()
151
+ this._lastRenderedCellIndices = this._sectionManager.getCellIndices({
152
+ height: height,
153
+ width: width,
154
+ x: x,
155
+ y: y
156
+ });
157
+ return cellGroupRenderer({
158
+ cellCache: this._cellCache,
159
+ cellRenderer: cellRenderer,
160
+ cellSizeAndPositionGetter: function cellSizeAndPositionGetter(_ref3) {
161
+ var index = _ref3.index;
162
+ return _this2._sectionManager.getCellMetadata({
163
+ index: index
164
+ });
165
+ },
166
+ indices: this._lastRenderedCellIndices,
167
+ isScrolling: isScrolling
168
+ });
169
+ }
170
+ }, {
171
+ key: "_isScrollingChange",
172
+ value: function _isScrollingChange(isScrolling) {
173
+ if (!isScrolling) {
174
+ this._cellCache = [];
175
+ }
176
+ }
177
+ }, {
178
+ key: "_setCollectionViewRef",
179
+ value: function _setCollectionViewRef(ref) {
180
+ this._collectionView = ref;
181
+ }
182
+ }]);
183
+ }(React.PureComponent);
184
+ _defineProperty(Collection, "defaultProps", {
185
+ 'aria-label': 'grid',
186
+ cellGroupRenderer: defaultCellGroupRenderer
187
+ });
188
+ export { Collection as default };
189
+ Collection.propTypes = process.env.NODE_ENV !== "production" ? {
190
+ 'aria-label': PropTypes.string,
191
+ /**
192
+ * Number of cells in Collection.
193
+ */
194
+ cellCount: PropTypes.number.isRequired,
195
+ /**
196
+ * Responsible for rendering a group of cells given their indices.
197
+ * Should implement the following interface: ({
198
+ * cellSizeAndPositionGetter:Function,
199
+ * indices: Array<number>,
200
+ * cellRenderer: Function
201
+ * }): Array<PropTypes.node>
202
+ */
203
+ cellGroupRenderer: PropTypes.func.isRequired,
204
+ /**
205
+ * Responsible for rendering a cell given an row and column index.
206
+ * Should implement the following interface: ({ index: number, key: string, style: object }): PropTypes.element
207
+ */
208
+ cellRenderer: PropTypes.func.isRequired,
209
+ /**
210
+ * Callback responsible for returning size and offset/position information for a given cell (index).
211
+ * ({ index: number }): { height: number, width: number, x: number, y: number }
212
+ */
213
+ cellSizeAndPositionGetter: PropTypes.func.isRequired,
214
+ /**
215
+ * Optionally override the size of the sections a Collection's cells are split into.
216
+ */
217
+ sectionSize: PropTypes.number
218
+ } : {};
219
+ function defaultCellGroupRenderer(_ref4) {
220
+ var cellCache = _ref4.cellCache,
221
+ cellRenderer = _ref4.cellRenderer,
222
+ cellSizeAndPositionGetter = _ref4.cellSizeAndPositionGetter,
223
+ indices = _ref4.indices,
224
+ isScrolling = _ref4.isScrolling;
225
+ return indices.map(function (index) {
226
+ var cellMetadata = cellSizeAndPositionGetter({
227
+ index: index
228
+ });
229
+ var cellRendererProps = {
230
+ index: index,
231
+ isScrolling: isScrolling,
232
+ key: index,
233
+ style: {
234
+ height: cellMetadata.height,
235
+ left: cellMetadata.x,
236
+ position: 'absolute',
237
+ top: cellMetadata.y,
238
+ width: cellMetadata.width
239
+ }
240
+ };
241
+
242
+ // Avoid re-creating cells while scrolling.
243
+ // This can lead to the same cell being created many times and can cause performance issues for "heavy" cells.
244
+ // If a scroll is in progress- cache and reuse cells.
245
+ // This cache will be thrown away once scrolling complets.
246
+ if (isScrolling) {
247
+ if (!(index in cellCache)) {
248
+ cellCache[index] = cellRenderer(cellRendererProps);
249
+ }
250
+ return cellCache[index];
251
+ } else {
252
+ return cellRenderer(cellRendererProps);
253
+ }
254
+ }).filter(function (renderedCell) {
255
+ return !!renderedCell;
256
+ });
257
+ }