@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,295 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
+ /**
4
+ * @jest-environment jest-environment-puppeteer
5
+ */
6
+
7
+ var bootstrap = /*#__PURE__*/function () {
8
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
9
+ var page, scripts, _i, _scripts, path;
10
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
11
+ while (1) switch (_context.prev = _context.next) {
12
+ case 0:
13
+ _context.next = 2;
14
+ return global.browser.newPage();
15
+ case 2:
16
+ page = _context.sent;
17
+ scripts = ['./node_modules/react/umd/react.development.js', './node_modules/react-dom/umd/react-dom.development.js', './dist/umd/react-virtualized.js'];
18
+ _i = 0, _scripts = scripts;
19
+ case 5:
20
+ if (!(_i < _scripts.length)) {
21
+ _context.next = 12;
22
+ break;
23
+ }
24
+ path = _scripts[_i];
25
+ _context.next = 9;
26
+ return page.addScriptTag({
27
+ path: path
28
+ });
29
+ case 9:
30
+ _i++;
31
+ _context.next = 5;
32
+ break;
33
+ case 12:
34
+ return _context.abrupt("return", page);
35
+ case 13:
36
+ case "end":
37
+ return _context.stop();
38
+ }
39
+ }, _callee);
40
+ }));
41
+ return function bootstrap() {
42
+ return _ref.apply(this, arguments);
43
+ };
44
+ }();
45
+ var renderWindowScroller = function renderWindowScroller(_ref2) {
46
+ var scrollElement = _ref2.scrollElement;
47
+ var render = window.ReactDOM.render;
48
+ var createElement = window.React.createElement;
49
+ var WindowScroller = window.ReactVirtualized.WindowScroller;
50
+ var container = document.createElement('div');
51
+ container.id = 'container';
52
+ container.style.margin = '100px';
53
+ container.style.padding = '50px';
54
+ document.body.appendChild(container);
55
+ document.body.style.margin = 0;
56
+ if (scrollElement === 'container') {
57
+ container.style.width = '100%';
58
+ container.style.height = '100%';
59
+ container.style.overflow = 'auto';
60
+ }
61
+ render(createElement(WindowScroller, {
62
+ scrollElement: scrollElement === 'container' ? container : window,
63
+ onScroll: window.scrollFn,
64
+ onResize: window.resizeFn
65
+ }, function () {
66
+ return createElement('div', {
67
+ style: {
68
+ width: 2000,
69
+ height: 3000
70
+ }
71
+ });
72
+ }), container);
73
+ };
74
+ var delay = function delay(time) {
75
+ return new Promise(function (resolve) {
76
+ return setTimeout(resolve, time);
77
+ });
78
+ };
79
+ test('save position after resize and then scroll in window', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
80
+ var page, scrollFn, resizeFn;
81
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
82
+ while (1) switch (_context2.prev = _context2.next) {
83
+ case 0:
84
+ _context2.next = 2;
85
+ return bootstrap();
86
+ case 2:
87
+ page = _context2.sent;
88
+ scrollFn = jest.fn();
89
+ resizeFn = jest.fn();
90
+ _context2.next = 7;
91
+ return page.exposeFunction('scrollFn', scrollFn);
92
+ case 7:
93
+ _context2.next = 9;
94
+ return page.exposeFunction('resizeFn', resizeFn);
95
+ case 9:
96
+ _context2.next = 11;
97
+ return page.setViewport({
98
+ width: 400,
99
+ height: 600
100
+ });
101
+ case 11:
102
+ _context2.next = 13;
103
+ return page.evaluate(renderWindowScroller, {
104
+ scrollElement: 'window'
105
+ });
106
+ case 13:
107
+ _context2.next = 15;
108
+ return page.evaluate(function () {
109
+ return window.scrollTo(610, 830);
110
+ });
111
+ case 15:
112
+ _context2.next = 17;
113
+ return delay(100);
114
+ case 17:
115
+ _context2.next = 19;
116
+ return page.setViewport({
117
+ width: 300,
118
+ height: 500
119
+ });
120
+ case 19:
121
+ _context2.next = 21;
122
+ return delay(100);
123
+ case 21:
124
+ _context2.next = 23;
125
+ return page.evaluate(function () {
126
+ return window.scrollTo(620, 840);
127
+ });
128
+ case 23:
129
+ _context2.next = 25;
130
+ return delay(100);
131
+ case 25:
132
+ _context2.next = 27;
133
+ return page.close();
134
+ case 27:
135
+ expect(scrollFn.mock.calls).toEqual([[{
136
+ scrollLeft: 610 - 150,
137
+ scrollTop: 830 - 150
138
+ }], [{
139
+ scrollLeft: 620 - 150,
140
+ scrollTop: 840 - 150
141
+ }]]);
142
+ expect(resizeFn.mock.calls).toEqual([[{
143
+ width: 300,
144
+ height: 500
145
+ }]]);
146
+ case 29:
147
+ case "end":
148
+ return _context2.stop();
149
+ }
150
+ }, _callee2);
151
+ })));
152
+ test('save position after resize and then scroll in container', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
153
+ var page, scrollFn, resizeFn;
154
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
155
+ while (1) switch (_context3.prev = _context3.next) {
156
+ case 0:
157
+ _context3.next = 2;
158
+ return bootstrap();
159
+ case 2:
160
+ page = _context3.sent;
161
+ scrollFn = jest.fn();
162
+ resizeFn = jest.fn();
163
+ _context3.next = 7;
164
+ return page.exposeFunction('scrollFn', scrollFn);
165
+ case 7:
166
+ _context3.next = 9;
167
+ return page.exposeFunction('resizeFn', resizeFn);
168
+ case 9:
169
+ _context3.next = 11;
170
+ return page.setViewport({
171
+ width: 400,
172
+ height: 600
173
+ });
174
+ case 11:
175
+ _context3.next = 13;
176
+ return page.evaluate(renderWindowScroller, {
177
+ scrollElement: 'container'
178
+ });
179
+ case 13:
180
+ _context3.next = 15;
181
+ return page.$eval('#container', function (el) {
182
+ return el.scrollTo(610, 830);
183
+ });
184
+ case 15:
185
+ _context3.next = 17;
186
+ return delay(100);
187
+ case 17:
188
+ _context3.next = 19;
189
+ return page.setViewport({
190
+ width: 300,
191
+ height: 500
192
+ });
193
+ case 19:
194
+ _context3.next = 21;
195
+ return delay(100);
196
+ case 21:
197
+ _context3.next = 23;
198
+ return page.$eval('#container', function (el) {
199
+ return el.scrollTo(620, 840);
200
+ });
201
+ case 23:
202
+ _context3.next = 25;
203
+ return delay(100);
204
+ case 25:
205
+ _context3.next = 27;
206
+ return page.close();
207
+ case 27:
208
+ expect(scrollFn.mock.calls).toEqual([[{
209
+ scrollLeft: 610 - 50,
210
+ scrollTop: 830 - 50
211
+ }], [{
212
+ scrollLeft: 620 - 50,
213
+ scrollTop: 840 - 50
214
+ }]]);
215
+ expect(resizeFn.mock.calls).toEqual([[{
216
+ width: 500,
217
+ height: 700
218
+ }], [{
219
+ width: 400,
220
+ height: 600
221
+ }]]);
222
+ case 29:
223
+ case "end":
224
+ return _context3.stop();
225
+ }
226
+ }, _callee3);
227
+ })));
228
+ test('react on container resize without window changing', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
229
+ var page, resizeFn;
230
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
231
+ while (1) switch (_context4.prev = _context4.next) {
232
+ case 0:
233
+ _context4.next = 2;
234
+ return bootstrap();
235
+ case 2:
236
+ page = _context4.sent;
237
+ resizeFn = jest.fn();
238
+ _context4.next = 6;
239
+ return page.exposeFunction('resizeFn', resizeFn);
240
+ case 6:
241
+ _context4.next = 8;
242
+ return page.evaluate(function () {
243
+ var render = window.ReactDOM.render;
244
+ var createElement = window.React.createElement;
245
+ var WindowScroller = window.ReactVirtualized.WindowScroller;
246
+ var wrapper = document.createElement('div');
247
+ wrapper.id = 'wrapper';
248
+ Object.assign(wrapper.style, {
249
+ width: '1000px',
250
+ height: '800px',
251
+ display: 'flex'
252
+ });
253
+ var container = document.createElement('div');
254
+ Object.assign(container.style, {
255
+ flex: '1'
256
+ });
257
+ wrapper.appendChild(container);
258
+ document.body.style.margin = 0;
259
+ document.body.appendChild(wrapper);
260
+ render(createElement(WindowScroller, {
261
+ scrollElement: container,
262
+ onResize: window.resizeFn
263
+ }, function () {
264
+ return null;
265
+ }), container);
266
+ });
267
+ case 8:
268
+ _context4.next = 10;
269
+ return delay(100);
270
+ case 10:
271
+ _context4.next = 12;
272
+ return page.$eval('#wrapper', function (el) {
273
+ el.style.width = '500px';
274
+ el.style.height = '700px';
275
+ });
276
+ case 12:
277
+ _context4.next = 14;
278
+ return delay(100);
279
+ case 14:
280
+ _context4.next = 16;
281
+ return page.close();
282
+ case 16:
283
+ expect(resizeFn.mock.calls).toEqual([[{
284
+ width: 1000,
285
+ height: 800
286
+ }], [{
287
+ width: 500,
288
+ height: 700
289
+ }]]);
290
+ case 17:
291
+ case "end":
292
+ return _context4.stop();
293
+ }
294
+ }, _callee4);
295
+ })));
@@ -0,0 +1,158 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/createClass";
3
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
4
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
5
+ import _inherits from "@babel/runtime/helpers/inherits";
6
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
7
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
8
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
9
+ import clsx from 'clsx';
10
+ import Immutable from 'immutable';
11
+ import PropTypes from 'prop-types';
12
+ import * as React from 'react';
13
+ import { ContentBox, ContentBoxHeader, ContentBoxParagraph } from '../demo/ContentBox';
14
+ import { LabeledInput, InputRow } from '../demo/LabeledInput';
15
+ import WindowScroller from './WindowScroller';
16
+ import List from '../List';
17
+ import AutoSizer from '../AutoSizer';
18
+ import styles from './WindowScroller.example.css';
19
+ /*:: type State = {
20
+ scrollToIndex: number,
21
+ showHeaderText: boolean,
22
+ };*/
23
+ var WindowScrollerExample = /*#__PURE__*/function (_React$PureComponent) {
24
+ function WindowScrollerExample() {
25
+ var _this;
26
+ _classCallCheck(this, WindowScrollerExample);
27
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
28
+ args[_key] = arguments[_key];
29
+ }
30
+ _this = _callSuper(this, WindowScrollerExample, [].concat(args));
31
+ _defineProperty(_this, "state", {
32
+ scrollToIndex: -1,
33
+ showHeaderText: true
34
+ });
35
+ _defineProperty(_this, "_windowScroller", void 0);
36
+ _defineProperty(_this, "_hideHeader", function () {
37
+ var showHeaderText = _this.state.showHeaderText;
38
+ _this.setState({
39
+ showHeaderText: !showHeaderText
40
+ }, function () {
41
+ if (_this._windowScroller) {
42
+ _this._windowScroller.updatePosition();
43
+ }
44
+ });
45
+ });
46
+ _defineProperty(_this, "_rowRenderer", function (_ref) {
47
+ var index = _ref.index,
48
+ isScrolling = _ref.isScrolling,
49
+ isVisible = _ref.isVisible,
50
+ key = _ref.key,
51
+ style = _ref.style;
52
+ var list = _this.context.list;
53
+ var row = list.get(index);
54
+ var className = clsx(styles.row, _defineProperty(_defineProperty({}, styles.rowScrolling, isScrolling), "isVisible", isVisible));
55
+ return /*#__PURE__*/React.createElement("div", {
56
+ key: key,
57
+ className: className,
58
+ style: style
59
+ }, row.name);
60
+ });
61
+ _defineProperty(_this, "_setRef", function (windowScroller) {
62
+ _this._windowScroller = windowScroller;
63
+ });
64
+ _defineProperty(_this, "_onCheckboxChange", function (event) {
65
+ _this.context.setScrollingCustomElement(event.target.checked);
66
+ });
67
+ _defineProperty(_this, "_onScrollToRowChange", function (event) {
68
+ var list = _this.context.list;
69
+ var scrollToIndex = Math.min(list.size - 1, parseInt(event.target.value, 10));
70
+ if (isNaN(scrollToIndex)) {
71
+ scrollToIndex = undefined;
72
+ }
73
+ setTimeout(function () {
74
+ _this.setState({
75
+ scrollToIndex: scrollToIndex
76
+ });
77
+ }, 0);
78
+ });
79
+ return _this;
80
+ }
81
+ _inherits(WindowScrollerExample, _React$PureComponent);
82
+ return _createClass(WindowScrollerExample, [{
83
+ key: "render",
84
+ value: function render() {
85
+ var _this2 = this;
86
+ var _this$context = this.context,
87
+ customElement = _this$context.customElement,
88
+ isScrollingCustomElement = _this$context.isScrollingCustomElement,
89
+ list = _this$context.list;
90
+ var _this$state = this.state,
91
+ scrollToIndex = _this$state.scrollToIndex,
92
+ showHeaderText = _this$state.showHeaderText;
93
+ return /*#__PURE__*/React.createElement(ContentBox, null, /*#__PURE__*/React.createElement(ContentBoxHeader, {
94
+ text: "WindowScroller",
95
+ sourceLink: "https://github.com/bvaughn/react-virtualized/blob/master/source/WindowScroller/WindowScroller.example.js",
96
+ docsLink: "https://github.com/bvaughn/react-virtualized/blob/master/docs/WindowScroller.md"
97
+ }), showHeaderText && /*#__PURE__*/React.createElement(ContentBoxParagraph, null, "This component decorates ", /*#__PURE__*/React.createElement("code", null, "List"), ", ", /*#__PURE__*/React.createElement("code", null, "Table"), ", or any other component and manages the window scroll to scroll through the list"), showHeaderText && /*#__PURE__*/React.createElement(ContentBoxParagraph, null, /*#__PURE__*/React.createElement("button", {
98
+ onClick: this._hideHeader
99
+ }, "Hide header text")), /*#__PURE__*/React.createElement(ContentBoxParagraph, null, /*#__PURE__*/React.createElement("label", {
100
+ className: styles.checkboxLabel
101
+ }, /*#__PURE__*/React.createElement("input", {
102
+ "aria-label": "Use custom element for scrolling",
103
+ className: styles.checkbox,
104
+ type: "checkbox",
105
+ checked: isScrollingCustomElement,
106
+ onChange: this._onCheckboxChange
107
+ }), "Use custom element for scrolling")), /*#__PURE__*/React.createElement(InputRow, null, /*#__PURE__*/React.createElement(LabeledInput, {
108
+ label: "Scroll to",
109
+ name: "onScrollToRow",
110
+ placeholder: "Index...",
111
+ onChange: this._onScrollToRowChange,
112
+ value: scrollToIndex || ''
113
+ })), /*#__PURE__*/React.createElement(WindowScroller, {
114
+ ref: this._setRef,
115
+ scrollElement: isScrollingCustomElement ? customElement : window
116
+ }, function (_ref2) {
117
+ var height = _ref2.height,
118
+ isScrolling = _ref2.isScrolling,
119
+ registerChild = _ref2.registerChild,
120
+ onChildScroll = _ref2.onChildScroll,
121
+ scrollTop = _ref2.scrollTop;
122
+ return /*#__PURE__*/React.createElement("div", {
123
+ className: styles.WindowScrollerWrapper
124
+ }, /*#__PURE__*/React.createElement(AutoSizer, {
125
+ disableHeight: true
126
+ }, function (_ref3) {
127
+ var width = _ref3.width;
128
+ return /*#__PURE__*/React.createElement("div", {
129
+ ref: registerChild
130
+ }, /*#__PURE__*/React.createElement(List, {
131
+ ref: function ref(el) {
132
+ window.listEl = el;
133
+ },
134
+ autoHeight: true,
135
+ className: styles.List,
136
+ height: height,
137
+ isScrolling: isScrolling,
138
+ onScroll: onChildScroll,
139
+ overscanRowCount: 2,
140
+ rowCount: list.size,
141
+ rowHeight: 30,
142
+ rowRenderer: _this2._rowRenderer,
143
+ scrollToIndex: scrollToIndex,
144
+ scrollTop: scrollTop,
145
+ width: width
146
+ }));
147
+ }));
148
+ }));
149
+ }
150
+ }]);
151
+ }(React.PureComponent);
152
+ _defineProperty(WindowScrollerExample, "contextTypes", {
153
+ customElement: PropTypes.any,
154
+ isScrollingCustomElement: PropTypes.bool.isRequired,
155
+ list: PropTypes.instanceOf(Immutable.List).isRequired,
156
+ setScrollingCustomElement: PropTypes.func
157
+ });
158
+ export { WindowScrollerExample as default };