@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,829 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof3 = require("@babel/runtime/helpers/typeof");
5
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _scrollbarSize = _interopRequireDefault(require("dom-helpers/scrollbarSize"));
11
+ var React = _interopRequireWildcard(require("react"));
12
+ var _reactDom = require("react-dom");
13
+ var _testUtils = require("react-dom/test-utils");
14
+ var _TestUtils = require("../TestUtils");
15
+ var _Collection = _interopRequireDefault(require("./Collection"));
16
+ var _TestData = require("./TestData");
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
19
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /**
21
+ * Tests Collection and CollectionView.
22
+ *
23
+ */
24
+ describe('Collection', function () {
25
+ function defaultCellRenderer(_ref) {
26
+ var index = _ref.index,
27
+ key = _ref.key,
28
+ style = _ref.style;
29
+ return /*#__PURE__*/React.createElement("div", {
30
+ className: "cell",
31
+ key: key,
32
+ style: style
33
+ }, "cell:", index);
34
+ }
35
+ function getMarkup() {
36
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
37
+ var _props$cellCount = props.cellCount,
38
+ cellCount = _props$cellCount === void 0 ? _TestData.CELLS.length : _props$cellCount;
39
+ function defaultCellSizeAndPositionGetter(_ref2) {
40
+ var index = _ref2.index;
41
+ index %= cellCount;
42
+ return _TestData.CELLS[index];
43
+ }
44
+ return /*#__PURE__*/React.createElement(_Collection["default"], (0, _extends2["default"])({
45
+ cellCount: cellCount,
46
+ cellRenderer: defaultCellRenderer,
47
+ cellSizeAndPositionGetter: defaultCellSizeAndPositionGetter,
48
+ height: _TestData.SECTION_SIZE,
49
+ sectionSize: _TestData.SECTION_SIZE,
50
+ width: _TestData.SECTION_SIZE * 2
51
+ }, props));
52
+ }
53
+ function simulateScroll(_ref3) {
54
+ var collection = _ref3.collection,
55
+ _ref3$scrollLeft = _ref3.scrollLeft,
56
+ scrollLeft = _ref3$scrollLeft === void 0 ? 0 : _ref3$scrollLeft,
57
+ _ref3$scrollTop = _ref3.scrollTop,
58
+ scrollTop = _ref3$scrollTop === void 0 ? 0 : _ref3$scrollTop;
59
+ var target = {
60
+ scrollLeft: scrollLeft,
61
+ scrollTop: scrollTop
62
+ };
63
+ collection._collectionView._scrollingContainer = target; // HACK to work around _onScroll target check
64
+ _testUtils.Simulate.scroll((0, _reactDom.findDOMNode)(collection), {
65
+ target: target
66
+ });
67
+ }
68
+ function compareArrays(array1, array2) {
69
+ expect(array1.length).toEqual(array2.length);
70
+ array2.forEach(function (value) {
71
+ expect(array1).toContain(value);
72
+ });
73
+ }
74
+ describe('number of rendered children', function () {
75
+ it('should render enough children to fill the available area', function () {
76
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup()));
77
+ expect(rendered.querySelectorAll('.cell').length).toEqual(4);
78
+ });
79
+ it('should not render more cells than available if the area is not filled', function () {
80
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
81
+ cellCount: 2
82
+ })));
83
+ expect(rendered.querySelectorAll('.cell').length).toEqual(2);
84
+ });
85
+
86
+ // Small performance tweak added in 5.5.6
87
+ it('should not render/parent cells that are null or false', function () {
88
+ function cellRenderer(_ref4) {
89
+ var index = _ref4.index,
90
+ key = _ref4.key,
91
+ style = _ref4.style;
92
+ if (index > 2) {
93
+ return null;
94
+ } else {
95
+ return /*#__PURE__*/React.createElement("div", {
96
+ className: "cell",
97
+ key: key,
98
+ style: style
99
+ }, index);
100
+ }
101
+ }
102
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
103
+ cellRenderer: cellRenderer
104
+ })));
105
+ expect(rendered.querySelectorAll('.cell').length).toEqual(3);
106
+ });
107
+ });
108
+ describe('shows and hides scrollbars based on rendered content', function () {
109
+ var scrollbarSize;
110
+ beforeAll(function () {
111
+ scrollbarSize = (0, _scrollbarSize["default"])();
112
+ });
113
+ it('should set overflowX:hidden if columns fit within the available width and y-axis has no scrollbar', function () {
114
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
115
+ height: 4,
116
+ width: 6
117
+ })));
118
+ expect(rendered.style.overflowX).toEqual('hidden');
119
+ });
120
+ it('should set overflowX:hidden if columns and y-axis scrollbar fit within the available width', function () {
121
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
122
+ height: 1,
123
+ width: 6 + scrollbarSize
124
+ })));
125
+ expect(rendered.style.overflowX).toEqual('hidden');
126
+ });
127
+ it('should leave overflowX:auto if columns require more than the available width', function () {
128
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
129
+ width: 1
130
+ })));
131
+ expect(rendered.style.overflowX).not.toEqual('hidden');
132
+ });
133
+ it('should leave overflowX:auto if columns and y-axis scrollbar require more than the available width', function () {
134
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
135
+ height: 1,
136
+ width: 6 + scrollbarSize - 1
137
+ })));
138
+ expect(rendered.style.overflowX).not.toEqual('hidden');
139
+ });
140
+ it('should set overflowY:hidden if rows fit within the available width and xaxis has no scrollbar', function () {
141
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
142
+ height: 4,
143
+ width: 6
144
+ })));
145
+ expect(rendered.style.overflowY).toEqual('hidden');
146
+ });
147
+ it('should set overflowY:hidden if rows and x-axis scrollbar fit within the available width', function () {
148
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
149
+ height: 4 + scrollbarSize,
150
+ width: 1
151
+ })));
152
+ expect(rendered.style.overflowY).toEqual('hidden');
153
+ });
154
+ it('should leave overflowY:auto if rows require more than the available height', function () {
155
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
156
+ height: 1
157
+ })));
158
+ expect(rendered.style.overflowY).not.toEqual('hidden');
159
+ });
160
+ it('should leave overflowY:auto if rows and y-axis scrollbar require more than the available height', function () {
161
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
162
+ height: 4 + scrollbarSize - 1,
163
+ width: 1
164
+ })));
165
+ expect(rendered.style.overflowY).not.toEqual('hidden');
166
+ });
167
+ it('should accept styles that overwrite calculated ones', function () {
168
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
169
+ height: 1,
170
+ style: {
171
+ overflowX: 'auto',
172
+ overflowY: 'auto'
173
+ },
174
+ width: 1
175
+ })));
176
+ expect(rendered.style.overflowX).toEqual('auto');
177
+ expect(rendered.style.overflowY).toEqual('auto');
178
+ });
179
+ });
180
+ describe('autoHeight', function () {
181
+ it('should set the container height to auto to adjust to innerScrollContainer height', function () {
182
+ var props = {
183
+ autoHeight: true
184
+ };
185
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup(props)));
186
+ expect(rendered.style.height).toEqual('auto');
187
+ });
188
+ it('should have container height still affecting number of rows rendered', function () {
189
+ var indices;
190
+ var props = {
191
+ autoHeight: true,
192
+ height: 500,
193
+ onSectionRendered: function onSectionRendered(params) {
194
+ indices = params.indices;
195
+ }
196
+ };
197
+ (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup(props)));
198
+ compareArrays(indices, [0, 1, 2, 3, 4, 5]);
199
+ });
200
+ it('should have innerScrollContainer height to be equal number of rows * rowHeight', function () {
201
+ var props = {
202
+ autoHeight: true
203
+ };
204
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup(props)));
205
+ expect(rendered.querySelector('.ReactVirtualized__Collection__innerScrollContainer').style.height).toEqual('4px');
206
+ });
207
+ });
208
+ describe(':scrollToCell', function () {
209
+ it('should scroll to the top/left', function () {
210
+ var collection = (0, _TestUtils.render)(getMarkup({
211
+ scrollToCell: 0
212
+ }));
213
+ expect(collection._collectionView.state.scrollLeft).toEqual(0);
214
+ expect(collection._collectionView.state.scrollTop).toEqual(0);
215
+ });
216
+ it('should scroll over to the middle', function () {
217
+ var collection = (0, _TestUtils.render)(getMarkup({
218
+ scrollToCell: 7
219
+ }));
220
+ expect(collection._collectionView.state.scrollLeft).toEqual(1);
221
+ expect(collection._collectionView.state.scrollTop).toEqual(1);
222
+ });
223
+ it('should scroll to the bottom/right', function () {
224
+ var collection = (0, _TestUtils.render)(getMarkup({
225
+ scrollToCell: 9
226
+ }));
227
+ expect(collection._collectionView.state.scrollLeft).toEqual(2);
228
+ expect(collection._collectionView.state.scrollTop).toEqual(2);
229
+ });
230
+ it('should honor the specified :scrollToAlignment', function () {
231
+ var collection = (0, _TestUtils.render)(getMarkup({
232
+ scrollToAlignment: 'start',
233
+ scrollToCell: 2,
234
+ width: _TestData.SECTION_SIZE
235
+ }));
236
+ // Minimum amount of scrolling ("auto") would be 0,0
237
+ expect(collection._collectionView.state.scrollLeft).toEqual(2);
238
+ expect(collection._collectionView.state.scrollTop).toEqual(1);
239
+ collection = (0, _TestUtils.render)(getMarkup({
240
+ scrollToAlignment: 'end',
241
+ scrollToCell: 2,
242
+ width: _TestData.SECTION_SIZE
243
+ }));
244
+ // This cell would already by visible by "auto" rules
245
+ expect(collection._collectionView.state.scrollLeft).toEqual(1);
246
+ expect(collection._collectionView.state.scrollTop).toEqual(0);
247
+ collection = (0, _TestUtils.render)(getMarkup({
248
+ scrollToAlignment: 'center',
249
+ scrollToCell: 4,
250
+ width: _TestData.SECTION_SIZE
251
+ }));
252
+ // This cell doesn't fit entirely in the viewport but we center it anyway.
253
+ expect(collection._collectionView.state.scrollLeft).toEqual(0.5);
254
+ expect(collection._collectionView.state.scrollTop).toEqual(2);
255
+ });
256
+ it('should scroll to a cell just added', function () {
257
+ var collection = (0, _TestUtils.render)(getMarkup({
258
+ cellCount: 4
259
+ }));
260
+ expect(collection._collectionView.state.scrollLeft).toEqual(0);
261
+ expect(collection._collectionView.state.scrollTop).toEqual(0);
262
+ collection = (0, _TestUtils.render)(getMarkup({
263
+ cellCount: 8,
264
+ scrollToCell: 7
265
+ }));
266
+ expect(collection._collectionView.state.scrollLeft).toEqual(1);
267
+ expect(collection._collectionView.state.scrollTop).toEqual(1);
268
+ });
269
+ });
270
+ describe('property updates', function () {
271
+ it('should update :scrollToCell position when :width changes', function () {
272
+ var collection = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
273
+ scrollToCell: 3
274
+ })));
275
+ expect(collection.textContent).toContain('cell:3');
276
+ // Making the collection narrower leaves only room for 1 item
277
+ collection = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
278
+ scrollToCell: 3,
279
+ width: 1
280
+ })));
281
+ expect(collection.textContent).toContain('cell:3');
282
+ });
283
+ it('should update :scrollToCell position when :height changes', function () {
284
+ var collection = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
285
+ scrollToCell: 4
286
+ })));
287
+ expect(collection.textContent).toContain('cell:4');
288
+ // Making the collection shorter leaves only room for 1 item
289
+ collection = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
290
+ scrollToCell: 4,
291
+ height: 1
292
+ })));
293
+ expect(collection.textContent).toContain('cell:4');
294
+ });
295
+ it('should update scroll position when :scrollToCell changes', function () {
296
+ var collection = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup()));
297
+ expect(collection.textContent).not.toContain('cell:9');
298
+ collection = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
299
+ scrollToCell: 9
300
+ })));
301
+ expect(collection.textContent).toContain('cell:9');
302
+ });
303
+ });
304
+ describe('noContentRenderer', function () {
305
+ it('should call :noContentRenderer if :cellCount is 0', function () {
306
+ var list = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
307
+ noContentRenderer: function noContentRenderer() {
308
+ return /*#__PURE__*/React.createElement("div", null, "No data");
309
+ },
310
+ cellCount: 0
311
+ })));
312
+ expect(list.textContent).toEqual('No data');
313
+ });
314
+ it('should render an empty body if :cellCount is 0 and there is no :noContentRenderer', function () {
315
+ var list = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
316
+ cellCount: 0
317
+ })));
318
+ expect(list.textContent).toEqual('');
319
+ });
320
+ it('should not show the :noContentRenderer when there are children, even if no children are currently visible (sparse)', function () {
321
+ var offscreenSizeAndPosition = {
322
+ x: _TestData.SECTION_SIZE * 3,
323
+ y: _TestData.SECTION_SIZE * 3,
324
+ width: 1,
325
+ height: 1
326
+ };
327
+ function cellSizeAndPositionGetter() {
328
+ return offscreenSizeAndPosition;
329
+ }
330
+ var list = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
331
+ cellCount: 1,
332
+ cellSizeAndPositionGetter: cellSizeAndPositionGetter,
333
+ noContentRenderer: function noContentRenderer() {
334
+ return /*#__PURE__*/React.createElement("div", null, "No data");
335
+ }
336
+ })));
337
+ expect(list.textContent).not.toEqual('No data');
338
+ });
339
+ });
340
+ describe('onSectionRendered', function () {
341
+ it('should call :onSectionRendered if at least one cell is rendered', function () {
342
+ var indices;
343
+ (0, _TestUtils.render)(getMarkup({
344
+ onSectionRendered: function onSectionRendered(params) {
345
+ indices = params.indices;
346
+ }
347
+ }));
348
+ compareArrays(indices, [0, 1, 2, 3]);
349
+ });
350
+ it('should not call :onSectionRendered unless the rendered indices have changed', function () {
351
+ var numCalls = 0;
352
+ var indices;
353
+ var onSectionRendered = function onSectionRendered(params) {
354
+ indices = params.indices;
355
+ numCalls++;
356
+ };
357
+ (0, _TestUtils.render)(getMarkup({
358
+ onSectionRendered: onSectionRendered
359
+ }));
360
+ expect(numCalls).toEqual(1);
361
+ compareArrays(indices, [0, 1, 2, 3]);
362
+ (0, _TestUtils.render)(getMarkup({
363
+ onSectionRendered: onSectionRendered
364
+ }));
365
+ expect(numCalls).toEqual(1);
366
+ compareArrays(indices, [0, 1, 2, 3]);
367
+ });
368
+ it('should call :onSectionRendered if the rendered indices have changed', function () {
369
+ var numCalls = 0;
370
+ var indices;
371
+ var onSectionRendered = function onSectionRendered(params) {
372
+ indices = params.indices;
373
+ numCalls++;
374
+ };
375
+ (0, _TestUtils.render)(getMarkup({
376
+ onSectionRendered: onSectionRendered
377
+ }));
378
+ expect(numCalls).toEqual(1);
379
+ compareArrays(indices, [0, 1, 2, 3]);
380
+ (0, _TestUtils.render)(getMarkup({
381
+ height: _TestData.SECTION_SIZE * 2,
382
+ onSectionRendered: onSectionRendered
383
+ }));
384
+ expect(numCalls).toEqual(2);
385
+ compareArrays(indices, [0, 1, 2, 3, 4, 5]);
386
+ (0, _TestUtils.render)(getMarkup({
387
+ height: _TestData.SECTION_SIZE * 2,
388
+ onSectionRendered: onSectionRendered,
389
+ width: _TestData.SECTION_SIZE
390
+ }));
391
+ expect(numCalls).toEqual(3);
392
+ expect(indices).toEqual([0, 4]);
393
+ });
394
+ it('should not call :onSectionRendered if no cells are rendered', function () {
395
+ var numCalls = 0;
396
+ (0, _TestUtils.render)(getMarkup({
397
+ height: 0,
398
+ onSectionRendered: function onSectionRendered() {
399
+ return numCalls++;
400
+ }
401
+ }));
402
+ expect(numCalls).toEqual(0);
403
+ });
404
+ });
405
+ describe(':scrollLeft and :scrollTop properties', function () {
406
+ it('should render correctly when an initial :scrollLeft and :scrollTop properties are specified', function () {
407
+ var indices;
408
+ var collection = (0, _TestUtils.render)(getMarkup({
409
+ onSectionRendered: function onSectionRendered(params) {
410
+ indices = params.indices;
411
+ },
412
+ scrollLeft: 2,
413
+ scrollTop: 2
414
+ }));
415
+ compareArrays(indices, [3, 4, 5, 7, 8, 9]);
416
+ expect(collection._collectionView.state.scrollPositionChangeReason).toEqual('requested');
417
+ });
418
+ it('should render correctly when :scrollLeft and :scrollTop properties are updated', function () {
419
+ var indices;
420
+ (0, _TestUtils.render)(getMarkup({
421
+ onSectionRendered: function onSectionRendered(params) {
422
+ indices = params.indices;
423
+ }
424
+ }));
425
+ compareArrays(indices, [0, 1, 2, 3]);
426
+ var collection = (0, _TestUtils.render)(getMarkup({
427
+ onSectionRendered: function onSectionRendered(params) {
428
+ indices = params.indices;
429
+ },
430
+ scrollLeft: 2,
431
+ scrollTop: 2
432
+ }));
433
+ compareArrays(indices, [3, 4, 5, 7, 8, 9]);
434
+ expect(collection._collectionView.state.scrollPositionChangeReason).toEqual('requested');
435
+ });
436
+ });
437
+ describe('styles, classNames, and ids', function () {
438
+ it('should use the expected global CSS classNames', function () {
439
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup()));
440
+ expect(rendered.className).toEqual('ReactVirtualized__Collection');
441
+ });
442
+ it('should use a custom :className if specified', function () {
443
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
444
+ className: 'foo'
445
+ })));
446
+ expect(rendered.className).toContain('foo');
447
+ });
448
+ it('should use a custom :id if specified', function () {
449
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
450
+ id: 'bar'
451
+ })));
452
+ expect(rendered.getAttribute('id')).toEqual('bar');
453
+ });
454
+ it('should use a custom :style if specified', function () {
455
+ var style = {
456
+ backgroundColor: 'red'
457
+ };
458
+ var rendered = (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
459
+ style: style
460
+ })));
461
+ expect(rendered.style.backgroundColor).toEqual('red');
462
+ });
463
+ });
464
+ describe('onScroll', function () {
465
+ it('should trigger callback when component is mounted', function () {
466
+ var onScrollCalls = [];
467
+ (0, _TestUtils.render)(getMarkup({
468
+ onScroll: function onScroll(params) {
469
+ return onScrollCalls.push(params);
470
+ },
471
+ scrollLeft: 2,
472
+ scrollTop: 1
473
+ }));
474
+ expect(onScrollCalls).toEqual([{
475
+ clientHeight: _TestData.SECTION_SIZE,
476
+ clientWidth: _TestData.SECTION_SIZE * 2,
477
+ scrollHeight: 4,
478
+ scrollLeft: 2,
479
+ scrollTop: 1,
480
+ scrollWidth: 6
481
+ }]);
482
+ });
483
+ it('should trigger callback when component scrolls horizontally', function () {
484
+ var onScrollCalls = [];
485
+ var collection = (0, _TestUtils.render)(getMarkup({
486
+ onScroll: function onScroll(params) {
487
+ return onScrollCalls.push(params);
488
+ }
489
+ }));
490
+ simulateScroll({
491
+ collection: collection,
492
+ scrollLeft: 1,
493
+ scrollTop: 0
494
+ });
495
+ expect(onScrollCalls.length).toEqual(2);
496
+ expect(onScrollCalls[1]).toEqual({
497
+ clientHeight: _TestData.SECTION_SIZE,
498
+ clientWidth: _TestData.SECTION_SIZE * 2,
499
+ scrollHeight: 4,
500
+ scrollLeft: 1,
501
+ scrollTop: 0,
502
+ scrollWidth: 6
503
+ });
504
+ });
505
+ it('should trigger callback when component scrolls vertically', function () {
506
+ var onScrollCalls = [];
507
+ var collection = (0, _TestUtils.render)(getMarkup({
508
+ onScroll: function onScroll(params) {
509
+ return onScrollCalls.push(params);
510
+ }
511
+ }));
512
+ simulateScroll({
513
+ collection: collection,
514
+ scrollLeft: 0,
515
+ scrollTop: 2
516
+ });
517
+ expect(onScrollCalls.length).toEqual(2);
518
+ expect(onScrollCalls[1]).toEqual({
519
+ clientHeight: _TestData.SECTION_SIZE,
520
+ clientWidth: _TestData.SECTION_SIZE * 2,
521
+ scrollHeight: 4,
522
+ scrollLeft: 0,
523
+ scrollTop: 2,
524
+ scrollWidth: 6
525
+ });
526
+ });
527
+ it('should not allow negative scroll values', function () {
528
+ var onScrollCalls = [];
529
+ var collection = (0, _TestUtils.render)(getMarkup({
530
+ onScroll: function onScroll(params) {
531
+ return onScrollCalls.push(params);
532
+ }
533
+ }));
534
+ simulateScroll({
535
+ collection: collection,
536
+ scrollLeft: -1,
537
+ scrollTop: -1
538
+ });
539
+ expect(onScrollCalls.length).toEqual(1);
540
+ expect(onScrollCalls[0].scrollLeft).toEqual(0);
541
+ expect(onScrollCalls[0].scrollTop).toEqual(0);
542
+ });
543
+ });
544
+ describe('cellGroupRenderer', function () {
545
+ it('should use a custom :cellGroupRenderer if specified', function () {
546
+ var cellGroupRendererCalled = 0;
547
+ var cellGroupRendererParams;
548
+ var cellRenderer = function cellRenderer(_ref5) {
549
+ var index = _ref5.index,
550
+ key = _ref5.key,
551
+ style = _ref5.style;
552
+ return /*#__PURE__*/React.createElement("div", {
553
+ key: key,
554
+ style: style
555
+ }, index);
556
+ };
557
+ (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup({
558
+ cellRenderer: cellRenderer,
559
+ cellGroupRenderer: function cellGroupRenderer(params) {
560
+ cellGroupRendererParams = params;
561
+ cellGroupRendererCalled++;
562
+ return [/*#__PURE__*/React.createElement("div", {
563
+ key: "0"
564
+ }, "Fake content")];
565
+ }
566
+ })));
567
+ expect(cellGroupRendererCalled).toEqual(1);
568
+ expect(cellGroupRendererParams.cellRenderer).toEqual(cellRenderer);
569
+ expect((0, _typeof2["default"])(cellGroupRendererParams.cellSizeAndPositionGetter)).toEqual('function');
570
+ compareArrays(cellGroupRendererParams.indices, [0, 1, 2, 3]);
571
+ });
572
+ });
573
+ it('should pass the cellRenderer an :isScrolling flag when scrolling is in progress', /*#__PURE__*/function () {
574
+ var _ref6 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(done) {
575
+ var cellRendererCalls, cellRenderer, collection;
576
+ return _regenerator["default"].wrap(function _callee$(_context) {
577
+ while (1) switch (_context.prev = _context.next) {
578
+ case 0:
579
+ cellRenderer = function _cellRenderer(_ref7) {
580
+ var index = _ref7.index,
581
+ isScrolling = _ref7.isScrolling,
582
+ key = _ref7.key,
583
+ style = _ref7.style;
584
+ cellRendererCalls.push(isScrolling);
585
+ return defaultCellRenderer({
586
+ index: index,
587
+ key: key,
588
+ style: style
589
+ });
590
+ };
591
+ cellRendererCalls = [];
592
+ collection = (0, _TestUtils.render)(getMarkup({
593
+ cellRenderer: cellRenderer
594
+ }));
595
+ expect(cellRendererCalls[0]).toEqual(false);
596
+ cellRendererCalls.splice(0);
597
+ simulateScroll({
598
+ collection: collection,
599
+ scrollTop: 1
600
+ });
601
+
602
+ // Give React time to process the queued setState()
603
+ _context.next = 8;
604
+ return new Promise(function (resolve) {
605
+ return setTimeout(resolve, 1);
606
+ });
607
+ case 8:
608
+ expect(cellRendererCalls[0]).toEqual(true);
609
+ done();
610
+ case 10:
611
+ case "end":
612
+ return _context.stop();
613
+ }
614
+ }, _callee);
615
+ }));
616
+ return function (_x) {
617
+ return _ref6.apply(this, arguments);
618
+ };
619
+ }());
620
+ describe('horizontalOverscanSize and verticalOverscanSize', function () {
621
+ it('should include the horizontal and vertical overscan size when rendering cells', function () {
622
+ var indices;
623
+ (0, _TestUtils.render)(getMarkup({
624
+ onSectionRendered: function onSectionRendered(params) {
625
+ indices = params.indices;
626
+ },
627
+ height: 1,
628
+ horizontalOverscanSize: 2,
629
+ sectionSize: 1,
630
+ scrollLeft: 2,
631
+ scrollTop: 2,
632
+ width: 1,
633
+ verticalOverscanSize: 1
634
+ }));
635
+ compareArrays(indices, [0, 2, 3, 4, 5, 6, 7, 9]);
636
+ });
637
+ it('should not exceed the top/left borders regardless of overscan size', function () {
638
+ var indices;
639
+ (0, _TestUtils.render)(getMarkup({
640
+ onSectionRendered: function onSectionRendered(params) {
641
+ indices = params.indices;
642
+ },
643
+ height: 2,
644
+ horizontalOverscanSize: 1,
645
+ sectionSize: 1,
646
+ scrollLeft: 0,
647
+ scrollTop: 0,
648
+ width: 1,
649
+ verticalOverscanSize: 2
650
+ }));
651
+ compareArrays(indices, [0, 4]);
652
+ });
653
+ it('should not exceed the bottom/right borders regardless of overscan size', function () {
654
+ var indices;
655
+ (0, _TestUtils.render)(getMarkup({
656
+ onSectionRendered: function onSectionRendered(params) {
657
+ indices = params.indices;
658
+ },
659
+ height: 2,
660
+ horizontalOverscanSize: 1,
661
+ sectionSize: 1,
662
+ scrollLeft: 5,
663
+ scrollTop: 2,
664
+ width: 1,
665
+ verticalOverscanSize: 2
666
+ }));
667
+ compareArrays(indices, [6, 7, 8, 9]);
668
+ });
669
+ });
670
+ describe('cell caching', function () {
671
+ it('should not cache cells if the Grid is not scrolling', function () {
672
+ var cellRendererCalls = [];
673
+ function cellRenderer(_ref8) {
674
+ var isScrolling = _ref8.isScrolling,
675
+ index = _ref8.index,
676
+ key = _ref8.key,
677
+ style = _ref8.style;
678
+ cellRendererCalls.push({
679
+ isScrolling: isScrolling,
680
+ index: index
681
+ });
682
+ return defaultCellRenderer({
683
+ index: index,
684
+ key: key,
685
+ style: style
686
+ });
687
+ }
688
+ var props = {
689
+ cellRenderer: cellRenderer,
690
+ scrollLeft: 0,
691
+ scrollTop: 0
692
+ };
693
+ (0, _reactDom.findDOMNode)((0, _TestUtils.render)(getMarkup(props)));
694
+ expect(cellRendererCalls.length).toEqual(4);
695
+ cellRendererCalls.forEach(function (call) {
696
+ return expect(call.isScrolling).toEqual(false);
697
+ });
698
+ cellRendererCalls.splice(0);
699
+ (0, _TestUtils.render)(getMarkup(_objectSpread(_objectSpread({}, props), {}, {
700
+ foo: 'bar' // Force re-render
701
+ })));
702
+ expect(cellRendererCalls.length).toEqual(4);
703
+ cellRendererCalls.forEach(function (call) {
704
+ return expect(call.isScrolling).toEqual(false);
705
+ });
706
+ });
707
+ it.skip('should cache a cell once it has been rendered while scrolling', function () {
708
+ var cellRendererCalls = [];
709
+ function cellRenderer(_ref9) {
710
+ var isScrolling = _ref9.isScrolling,
711
+ index = _ref9.index,
712
+ key = _ref9.key,
713
+ style = _ref9.style;
714
+ cellRendererCalls.push({
715
+ isScrolling: isScrolling,
716
+ index: index
717
+ });
718
+ return defaultCellRenderer({
719
+ index: index,
720
+ key: key,
721
+ style: style
722
+ });
723
+ }
724
+ var props = {
725
+ cellRenderer: cellRenderer,
726
+ scrollLeft: 0,
727
+ scrollTop: 0
728
+ };
729
+ var collection = (0, _TestUtils.render)(getMarkup(props));
730
+ expect(cellRendererCalls.length).toEqual(4);
731
+ cellRendererCalls.forEach(function (call) {
732
+ return expect(call.isScrolling).toEqual(false);
733
+ });
734
+
735
+ // FIXME: simulate scroll is not triggering cells to render in cache
736
+ // Scroll a little bit; newly-rendered cells will be cached.
737
+ simulateScroll({
738
+ collection: collection,
739
+ scrollTop: 2
740
+ });
741
+ cellRendererCalls.splice(0);
742
+
743
+ // At this point cells 4 and 5 have been rendered,
744
+ // But cells 7, 8, and 9 have not.
745
+ (0, _TestUtils.render)(getMarkup(_objectSpread(_objectSpread({}, props), {}, {
746
+ scrollLeft: 1,
747
+ scrollTop: 3
748
+ })));
749
+ expect(cellRendererCalls.length).toEqual(3);
750
+ cellRendererCalls.forEach(function (call) {
751
+ return expect(call.isScrolling).toEqual(true);
752
+ });
753
+ });
754
+ it('should clear cache once :isScrolling is false', /*#__PURE__*/function () {
755
+ var _ref10 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(done) {
756
+ var cellRendererCalls, cellRenderer, props, collection;
757
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
758
+ while (1) switch (_context2.prev = _context2.next) {
759
+ case 0:
760
+ cellRenderer = function _cellRenderer2(_ref11) {
761
+ var isScrolling = _ref11.isScrolling,
762
+ index = _ref11.index,
763
+ key = _ref11.key,
764
+ style = _ref11.style;
765
+ cellRendererCalls.push({
766
+ isScrolling: isScrolling,
767
+ index: index
768
+ });
769
+ return defaultCellRenderer({
770
+ isScrolling: isScrolling,
771
+ index: index,
772
+ key: key,
773
+ style: style
774
+ });
775
+ };
776
+ cellRendererCalls = [];
777
+ props = {
778
+ cellRenderer: cellRenderer,
779
+ scrollLeft: 0,
780
+ scrollTop: 0
781
+ };
782
+ collection = (0, _TestUtils.render)(getMarkup(props));
783
+ simulateScroll({
784
+ collection: collection,
785
+ scrollTop: 1
786
+ });
787
+
788
+ // Allow scrolling timeout to complete so that cell cache is reset
789
+ _context2.next = 7;
790
+ return new Promise(function (resolve) {
791
+ return setTimeout(resolve, 500);
792
+ });
793
+ case 7:
794
+ cellRendererCalls.splice(0);
795
+ (0, _TestUtils.render)(getMarkup(_objectSpread(_objectSpread({}, props), {}, {
796
+ scrollTop: 1
797
+ })));
798
+ expect(cellRendererCalls.length).not.toEqual(0);
799
+ done();
800
+ case 11:
801
+ case "end":
802
+ return _context2.stop();
803
+ }
804
+ }, _callee2);
805
+ }));
806
+ return function (_x2) {
807
+ return _ref10.apply(this, arguments);
808
+ };
809
+ }());
810
+ });
811
+
812
+ // See issue #568 for more
813
+ it('forceUpdate will also forceUpdate the inner CollectionView', function () {
814
+ var cellRenderer = jest.fn();
815
+ cellRenderer.mockImplementation(function (_ref12) {
816
+ var key = _ref12.key;
817
+ return /*#__PURE__*/React.createElement("div", {
818
+ key: key
819
+ });
820
+ });
821
+ var rendered = (0, _TestUtils.render)(getMarkup({
822
+ cellRenderer: cellRenderer
823
+ }));
824
+ expect(cellRenderer).toHaveBeenCalled();
825
+ cellRenderer.mockReset();
826
+ rendered.forceUpdate();
827
+ expect(cellRenderer).toHaveBeenCalled();
828
+ });
829
+ });