@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,180 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getCellSizeAndPositionManager = getCellSizeAndPositionManager;
8
+ var _updateScrollIndexHelper = _interopRequireDefault(require("./updateScrollIndexHelper"));
9
+ var _CellSizeAndPositionManager = _interopRequireDefault(require("./CellSizeAndPositionManager"));
10
+ // Default cell sizes and offsets for use in shared tests
11
+ function getCellSizeAndPositionManager(_ref) {
12
+ var _ref$cellCount = _ref.cellCount,
13
+ cellCount = _ref$cellCount === void 0 ? CELL_SIZES.length : _ref$cellCount,
14
+ _ref$estimatedCellSiz = _ref.estimatedCellSize,
15
+ estimatedCellSize = _ref$estimatedCellSiz === void 0 ? 10 : _ref$estimatedCellSiz;
16
+ return new _CellSizeAndPositionManager["default"]({
17
+ cellCount: cellCount,
18
+ cellSizeGetter: function cellSizeGetter(_ref2) {
19
+ var index = _ref2.index;
20
+ return CELL_SIZES[index % CELL_SIZES.length];
21
+ },
22
+ estimatedCellSize: estimatedCellSize
23
+ });
24
+ }
25
+ var CELL_SIZES = [10,
26
+ // 0: 0..0 (min)
27
+ 20,
28
+ // 1: 0..10
29
+ 15,
30
+ // 2: 0..30
31
+ 10,
32
+ // 3: 5..45
33
+ 15,
34
+ // 4: 20..55
35
+ 30,
36
+ // 5: 50..70
37
+ 20,
38
+ // 6: 70..100
39
+ 10,
40
+ // 7: 80..110
41
+ 30 // 8: 110..110 (max)
42
+ ];
43
+ describe('updateScrollIndexHelper', function () {
44
+ function helper() {
45
+ var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
46
+ _ref3$cellCount = _ref3.cellCount,
47
+ cellCount = _ref3$cellCount === void 0 ? undefined : _ref3$cellCount,
48
+ cellSizeAndPositionManager = _ref3.cellSizeAndPositionManager,
49
+ _ref3$cellSize = _ref3.cellSize,
50
+ cellSize = _ref3$cellSize === void 0 ? 10 : _ref3$cellSize,
51
+ _ref3$previousCellsCo = _ref3.previousCellsCount,
52
+ previousCellsCount = _ref3$previousCellsCo === void 0 ? undefined : _ref3$previousCellsCo,
53
+ _ref3$previousCellSiz = _ref3.previousCellSize,
54
+ previousCellSize = _ref3$previousCellSiz === void 0 ? 10 : _ref3$previousCellSiz,
55
+ _ref3$previousScrollT = _ref3.previousScrollToAlignment,
56
+ previousScrollToAlignment = _ref3$previousScrollT === void 0 ? 'auto' : _ref3$previousScrollT,
57
+ previousScrollToIndex = _ref3.previousScrollToIndex,
58
+ _ref3$previousSize = _ref3.previousSize,
59
+ previousSize = _ref3$previousSize === void 0 ? 50 : _ref3$previousSize,
60
+ _ref3$scrollOffset = _ref3.scrollOffset,
61
+ scrollOffset = _ref3$scrollOffset === void 0 ? 0 : _ref3$scrollOffset,
62
+ _ref3$scrollToAlignme = _ref3.scrollToAlignment,
63
+ scrollToAlignment = _ref3$scrollToAlignme === void 0 ? 'auto' : _ref3$scrollToAlignme,
64
+ scrollToIndex = _ref3.scrollToIndex,
65
+ _ref3$size = _ref3.size,
66
+ size = _ref3$size === void 0 ? 50 : _ref3$size;
67
+ cellSizeAndPositionManager = cellSizeAndPositionManager || getCellSizeAndPositionManager({
68
+ cellCount: cellCount
69
+ });
70
+ cellCount = cellCount === undefined ? cellSizeAndPositionManager.getCellCount() : cellCount;
71
+ previousCellsCount = previousCellsCount === undefined ? cellCount : previousCellsCount;
72
+ var updateScrollIndexCallbackCalled = false;
73
+ function updateScrollIndexCallback() {
74
+ updateScrollIndexCallbackCalled = true;
75
+ }
76
+ (0, _updateScrollIndexHelper["default"])({
77
+ cellCount: cellCount,
78
+ cellSizeAndPositionManager: cellSizeAndPositionManager,
79
+ cellSize: cellSize,
80
+ previousCellsCount: previousCellsCount,
81
+ previousCellSize: previousCellSize,
82
+ previousScrollToAlignment: previousScrollToAlignment,
83
+ previousScrollToIndex: previousScrollToIndex,
84
+ previousSize: previousSize,
85
+ scrollOffset: scrollOffset,
86
+ scrollToAlignment: scrollToAlignment,
87
+ scrollToIndex: scrollToIndex,
88
+ size: size,
89
+ updateScrollIndexCallback: updateScrollIndexCallback
90
+ });
91
+ return updateScrollIndexCallbackCalled;
92
+ }
93
+ it('should not call :updateScrollIndexCallback if there is no :scrollToIndex and size has not changed', function () {
94
+ expect(helper()).toEqual(false);
95
+ });
96
+ it('should not call :updateScrollIndexCallback if an invalid :scrollToIndex has been specified', function () {
97
+ expect(helper({
98
+ size: 100,
99
+ previousSize: 50,
100
+ scrollToIndex: -1
101
+ })).toEqual(false);
102
+ });
103
+ it('should call :updateScrollIndexCallback if there is a :scrollToIndex and :size has changed', function () {
104
+ expect(helper({
105
+ cellCount: 100,
106
+ size: 100,
107
+ previousSize: 50,
108
+ scrollToIndex: 10
109
+ })).toEqual(true);
110
+ });
111
+ it('should call :updateScrollIndexCallback if there is a :scrollToIndex and :cellSize has changed', function () {
112
+ expect(helper({
113
+ cellCount: 100,
114
+ cellSize: 15,
115
+ previousCellSize: 20,
116
+ scrollToIndex: 10
117
+ })).toEqual(true);
118
+ });
119
+ it('should call :updateScrollIndexCallback if previous :scrollToIndex has changed', function () {
120
+ expect(helper({
121
+ cellCount: 15,
122
+ previousScrollToIndex: 20,
123
+ scrollToIndex: 10
124
+ })).toEqual(true);
125
+ });
126
+ it('should call :updateScrollIndexCallback if :cellCount has been reduced past the current scroll offset', function () {
127
+ expect(helper({
128
+ previousCellsCount: 100,
129
+ scrollOffset: 510
130
+ })).toEqual(true);
131
+ });
132
+ it('should call :updateScrollIndexCallback if there is no :scrollToIndex but :size has been reduced', function () {
133
+ expect(helper({
134
+ previousSize: 100,
135
+ scrollOffset: 510,
136
+ size: 50
137
+ })).toEqual(true);
138
+ });
139
+ it('should not measure rows if :size or :cellCount have been reduced but only use already measured (or estimated) total size', function () {
140
+ var cellSizeAndPositionManager = {
141
+ getCellCount: function getCellCount() {
142
+ return CELL_SIZES.length;
143
+ },
144
+ getTotalSize: function getTotalSize() {
145
+ return 560;
146
+ }
147
+ };
148
+ expect(helper({
149
+ cellSizeAndPositionManager: cellSizeAndPositionManager,
150
+ previousSize: 100,
151
+ scrollOffset: 510,
152
+ size: 50
153
+ })).toEqual(false);
154
+ });
155
+ it('should not call :updateScrollIndexCallback if there is no :scrollToIndex but :cellCount has been increased', function () {
156
+ expect(helper({
157
+ cellCount: 100,
158
+ previousCellsCount: 50
159
+ })).toEqual(false);
160
+ });
161
+ it('should not call :updateScrollIndexCallback if there is no :scrollToIndex but :size has been increased', function () {
162
+ expect(helper({
163
+ previousSize: 50,
164
+ size: 100
165
+ })).toEqual(false);
166
+ });
167
+ it('should call :updateScrollIndexCallback if :scrollToAlignment has changed', function () {
168
+ expect(helper({
169
+ previousScrollToAlignment: 'start',
170
+ scrollToAlignment: 'end',
171
+ scrollToIndex: 5
172
+ })).toEqual(true);
173
+ });
174
+ it('should not call :updateScrollIndexCallback if :scrollToAlignment has changed but there is no :scrollToIndex', function () {
175
+ expect(helper({
176
+ previousScrollToAlignment: 'start',
177
+ scrollToAlignment: 'end'
178
+ })).toEqual(false);
179
+ });
180
+ });
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = updateScrollIndexHelper;
8
+ var _ScalingCellSizeAndPositionManager = _interopRequireDefault(require("./ScalingCellSizeAndPositionManager.js"));
9
+ /*:: import type {Alignment, CellSize} from '../types';*/
10
+ /**
11
+ * Helper function that determines when to update scroll offsets to ensure that a scroll-to-index remains visible.
12
+ * This function also ensures that the scroll ofset isn't past the last column/row of cells.
13
+ */
14
+ /*:: type Params = {
15
+ // Width or height of cells for the current axis
16
+ cellSize?: CellSize,
17
+
18
+ // Manages size and position metadata of cells
19
+ cellSizeAndPositionManager: ScalingCellSizeAndPositionManager,
20
+
21
+ // Previous number of rows or columns
22
+ previousCellsCount: number,
23
+
24
+ // Previous width or height of cells
25
+ previousCellSize: CellSize,
26
+
27
+ previousScrollToAlignment: Alignment,
28
+
29
+ // Previous scroll-to-index
30
+ previousScrollToIndex: number,
31
+
32
+ // Previous width or height of the virtualized container
33
+ previousSize: number,
34
+
35
+ // Current scrollLeft or scrollTop
36
+ scrollOffset: number,
37
+
38
+ scrollToAlignment: Alignment,
39
+
40
+ // Scroll-to-index
41
+ scrollToIndex: number,
42
+
43
+ // Width or height of the virtualized container
44
+ size: number,
45
+
46
+ sizeJustIncreasedFromZero: boolean,
47
+
48
+ // Callback to invoke with an scroll-to-index value
49
+ updateScrollIndexCallback: (index: number) => void,
50
+ };*/
51
+ function updateScrollIndexHelper(_ref /*:: */) {
52
+ var cellSize = _ref /*:: */.cellSize,
53
+ cellSizeAndPositionManager = _ref /*:: */.cellSizeAndPositionManager,
54
+ previousCellsCount = _ref /*:: */.previousCellsCount,
55
+ previousCellSize = _ref /*:: */.previousCellSize,
56
+ previousScrollToAlignment = _ref /*:: */.previousScrollToAlignment,
57
+ previousScrollToIndex = _ref /*:: */.previousScrollToIndex,
58
+ previousSize = _ref /*:: */.previousSize,
59
+ scrollOffset = _ref /*:: */.scrollOffset,
60
+ scrollToAlignment = _ref /*:: */.scrollToAlignment,
61
+ scrollToIndex = _ref /*:: */.scrollToIndex,
62
+ size = _ref /*:: */.size,
63
+ sizeJustIncreasedFromZero = _ref /*:: */.sizeJustIncreasedFromZero,
64
+ updateScrollIndexCallback = _ref /*:: */.updateScrollIndexCallback;
65
+ var cellCount = cellSizeAndPositionManager.getCellCount();
66
+ var hasScrollToIndex = scrollToIndex >= 0 && scrollToIndex < cellCount;
67
+ var sizeHasChanged = size !== previousSize || sizeJustIncreasedFromZero || !previousCellSize || typeof cellSize === 'number' && cellSize !== previousCellSize;
68
+
69
+ // If we have a new scroll target OR if height/row-height has changed,
70
+ // We should ensure that the scroll target is visible.
71
+ if (hasScrollToIndex && (sizeHasChanged || scrollToAlignment !== previousScrollToAlignment || scrollToIndex !== previousScrollToIndex)) {
72
+ updateScrollIndexCallback(scrollToIndex);
73
+
74
+ // If we don't have a selected item but list size or number of children have decreased,
75
+ // Make sure we aren't scrolled too far past the current content.
76
+ } else if (!hasScrollToIndex && cellCount > 0 && (size < previousSize || cellCount < previousCellsCount)) {
77
+ // We need to ensure that the current scroll offset is still within the collection's range.
78
+ // To do this, we don't need to measure everything; CellMeasurer would perform poorly.
79
+ // Just check to make sure we're still okay.
80
+ // Only adjust the scroll position if we've scrolled below the last set of rows.
81
+ if (scrollOffset > cellSizeAndPositionManager.getTotalSize() - size) {
82
+ updateScrollIndexCallback(cellCount - 1);
83
+ }
84
+ }
85
+ }
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
12
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
13
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+ var React = _interopRequireWildcard(require("react"));
16
+ var _propTypes = _interopRequireDefault(require("prop-types"));
17
+ var _ContentBox = require("../demo/ContentBox");
18
+ var _immutable = _interopRequireDefault(require("immutable"));
19
+ var _AutoSizer = _interopRequireDefault(require("../AutoSizer"));
20
+ var _InfiniteLoader = _interopRequireDefault(require("./InfiniteLoader"));
21
+ var _List = _interopRequireDefault(require("../List"));
22
+ var _InfiniteLoaderExample2 = _interopRequireDefault(require("./InfiniteLoader.example.css"));
23
+ 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); }
24
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(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; }
25
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
26
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
27
+ var STATUS_LOADING = 1;
28
+ var STATUS_LOADED = 2;
29
+ var InfiniteLoaderExample = exports["default"] = /*#__PURE__*/function (_React$PureComponent) {
30
+ function InfiniteLoaderExample(props) {
31
+ var _this;
32
+ (0, _classCallCheck2["default"])(this, InfiniteLoaderExample);
33
+ _this = _callSuper(this, InfiniteLoaderExample, [props]);
34
+ _this.state = {
35
+ loadedRowCount: 0,
36
+ loadedRowsMap: {},
37
+ loadingRowCount: 0
38
+ };
39
+ _this._timeoutIdMap = {};
40
+ _this._clearData = _this._clearData.bind(_this);
41
+ _this._isRowLoaded = _this._isRowLoaded.bind(_this);
42
+ _this._loadMoreRows = _this._loadMoreRows.bind(_this);
43
+ _this._rowRenderer = _this._rowRenderer.bind(_this);
44
+ return _this;
45
+ }
46
+ (0, _inherits2["default"])(InfiniteLoaderExample, _React$PureComponent);
47
+ return (0, _createClass2["default"])(InfiniteLoaderExample, [{
48
+ key: "componentWillUnmount",
49
+ value: function componentWillUnmount() {
50
+ Object.keys(this._timeoutIdMap).forEach(function (timeoutId) {
51
+ clearTimeout(timeoutId);
52
+ });
53
+ }
54
+ }, {
55
+ key: "render",
56
+ value: function render() {
57
+ var _this2 = this;
58
+ var list = this.context.list;
59
+ var _this$state = this.state,
60
+ loadedRowCount = _this$state.loadedRowCount,
61
+ loadingRowCount = _this$state.loadingRowCount;
62
+ return /*#__PURE__*/React.createElement(_ContentBox.ContentBox, null, /*#__PURE__*/React.createElement(_ContentBox.ContentBoxHeader, {
63
+ text: "InfiniteLoader",
64
+ sourceLink: "https://github.com/bvaughn/react-virtualized/blob/master/source/InfiniteLoader/InfiniteLoader.example.js",
65
+ docsLink: "https://github.com/bvaughn/react-virtualized/blob/master/docs/InfiniteLoader.md"
66
+ }), /*#__PURE__*/React.createElement(_ContentBox.ContentBoxParagraph, null, "This component manages just-in-time data fetching to ensure that the all visible rows have been loaded. It also uses a threshold to determine how early to pre-fetch rows (before a user scrolls to them)."), /*#__PURE__*/React.createElement(_ContentBox.ContentBoxParagraph, null, /*#__PURE__*/React.createElement("div", {
67
+ className: _InfiniteLoaderExample2["default"].cacheButtonAndCountRow
68
+ }, /*#__PURE__*/React.createElement("button", {
69
+ className: _InfiniteLoaderExample2["default"].button,
70
+ onClick: this._clearData
71
+ }, "Flush Cached Data"), /*#__PURE__*/React.createElement("div", {
72
+ className: _InfiniteLoaderExample2["default"].cacheCountRow
73
+ }, loadingRowCount, " loading, ", loadedRowCount, " loaded"))), /*#__PURE__*/React.createElement(_InfiniteLoader["default"], {
74
+ isRowLoaded: this._isRowLoaded,
75
+ loadMoreRows: this._loadMoreRows,
76
+ rowCount: list.size
77
+ }, function (_ref) {
78
+ var onRowsRendered = _ref.onRowsRendered,
79
+ registerChild = _ref.registerChild;
80
+ return /*#__PURE__*/React.createElement(_AutoSizer["default"], {
81
+ disableHeight: true
82
+ }, function (_ref2) {
83
+ var width = _ref2.width;
84
+ return /*#__PURE__*/React.createElement(_List["default"], {
85
+ ref: registerChild,
86
+ className: _InfiniteLoaderExample2["default"].List,
87
+ height: 200,
88
+ onRowsRendered: onRowsRendered,
89
+ rowCount: list.size,
90
+ rowHeight: 30,
91
+ rowRenderer: _this2._rowRenderer,
92
+ width: width
93
+ });
94
+ });
95
+ }));
96
+ }
97
+ }, {
98
+ key: "_clearData",
99
+ value: function _clearData() {
100
+ this.setState({
101
+ loadedRowCount: 0,
102
+ loadedRowsMap: {},
103
+ loadingRowCount: 0
104
+ });
105
+ }
106
+ }, {
107
+ key: "_isRowLoaded",
108
+ value: function _isRowLoaded(_ref3) {
109
+ var index = _ref3.index;
110
+ var loadedRowsMap = this.state.loadedRowsMap;
111
+ return !!loadedRowsMap[index]; // STATUS_LOADING or STATUS_LOADED
112
+ }
113
+ }, {
114
+ key: "_loadMoreRows",
115
+ value: function _loadMoreRows(_ref4) {
116
+ var _this3 = this;
117
+ var startIndex = _ref4.startIndex,
118
+ stopIndex = _ref4.stopIndex;
119
+ var _this$state2 = this.state,
120
+ loadedRowsMap = _this$state2.loadedRowsMap,
121
+ loadingRowCount = _this$state2.loadingRowCount;
122
+ var increment = stopIndex - startIndex + 1;
123
+ for (var i = startIndex; i <= stopIndex; i++) {
124
+ loadedRowsMap[i] = STATUS_LOADING;
125
+ }
126
+ this.setState({
127
+ loadingRowCount: loadingRowCount + increment
128
+ });
129
+ var timeoutId = setTimeout(function () {
130
+ var _this3$state = _this3.state,
131
+ loadedRowCount = _this3$state.loadedRowCount,
132
+ loadingRowCount = _this3$state.loadingRowCount;
133
+ delete _this3._timeoutIdMap[timeoutId];
134
+ for (var i = startIndex; i <= stopIndex; i++) {
135
+ loadedRowsMap[i] = STATUS_LOADED;
136
+ }
137
+ _this3.setState({
138
+ loadingRowCount: loadingRowCount - increment,
139
+ loadedRowCount: loadedRowCount + increment
140
+ });
141
+ promiseResolver();
142
+ }, 1000 + Math.round(Math.random() * 2000));
143
+ this._timeoutIdMap[timeoutId] = true;
144
+ var promiseResolver;
145
+ return new Promise(function (resolve) {
146
+ promiseResolver = resolve;
147
+ });
148
+ }
149
+ }, {
150
+ key: "_rowRenderer",
151
+ value: function _rowRenderer(_ref5) {
152
+ var index = _ref5.index,
153
+ key = _ref5.key,
154
+ style = _ref5.style;
155
+ var list = this.context.list;
156
+ var loadedRowsMap = this.state.loadedRowsMap;
157
+ var row = list.get(index);
158
+ var content;
159
+ if (loadedRowsMap[index] === STATUS_LOADED) {
160
+ content = row.name;
161
+ } else {
162
+ content = /*#__PURE__*/React.createElement("div", {
163
+ className: _InfiniteLoaderExample2["default"].placeholder,
164
+ style: {
165
+ width: row.size
166
+ }
167
+ });
168
+ }
169
+ return /*#__PURE__*/React.createElement("div", {
170
+ className: _InfiniteLoaderExample2["default"].row,
171
+ key: key,
172
+ style: style
173
+ }, content);
174
+ }
175
+ }]);
176
+ }(React.PureComponent);
177
+ (0, _defineProperty2["default"])(InfiniteLoaderExample, "contextTypes", {
178
+ list: _propTypes["default"].instanceOf(_immutable["default"].List).isRequired
179
+ });