@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,735 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/createClass";
4
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
5
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
6
+ import _inherits from "@babel/runtime/helpers/inherits";
7
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
+ 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; }
9
+ 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) { _defineProperty(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; }
10
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
11
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
12
+ /*:: import type {CellPosition} from '../Grid';*/
13
+ import clsx from 'clsx';
14
+ import Column from './Column';
15
+ import PropTypes from 'prop-types';
16
+ import * as React from 'react';
17
+ import Grid, { accessibilityOverscanIndicesGetter } from '../Grid';
18
+ import defaultRowRenderer from './defaultRowRenderer';
19
+ import defaultHeaderRowRenderer from './defaultHeaderRowRenderer';
20
+ import SortDirection from './SortDirection';
21
+
22
+ /**
23
+ * Table component with fixed headers and virtualized rows for improved performance with large data sets.
24
+ * This component expects explicit width, height, and padding parameters.
25
+ */
26
+ var Table = /*#__PURE__*/function (_React$PureComponent) {
27
+ function Table(props) {
28
+ var _this;
29
+ _classCallCheck(this, Table);
30
+ _this = _callSuper(this, Table, [props]);
31
+ _this.state = {
32
+ scrollbarWidth: 0
33
+ };
34
+ _this._createColumn = _this._createColumn.bind(_this);
35
+ _this._createRow = _this._createRow.bind(_this);
36
+ _this._onScroll = _this._onScroll.bind(_this);
37
+ _this._onSectionRendered = _this._onSectionRendered.bind(_this);
38
+ _this._setRef = _this._setRef.bind(_this);
39
+ _this._setGridElementRef = _this._setGridElementRef.bind(_this);
40
+ return _this;
41
+ }
42
+ _inherits(Table, _React$PureComponent);
43
+ return _createClass(Table, [{
44
+ key: "forceUpdateGrid",
45
+ value: function forceUpdateGrid() {
46
+ if (this.Grid) {
47
+ this.Grid.forceUpdate();
48
+ }
49
+ }
50
+
51
+ /** See Grid#getOffsetForCell */
52
+ }, {
53
+ key: "getOffsetForRow",
54
+ value: function getOffsetForRow(_ref) {
55
+ var alignment = _ref.alignment,
56
+ index = _ref.index;
57
+ if (this.Grid) {
58
+ var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({
59
+ alignment: alignment,
60
+ rowIndex: index
61
+ }),
62
+ scrollTop = _this$Grid$getOffsetF.scrollTop;
63
+ return scrollTop;
64
+ }
65
+ return 0;
66
+ }
67
+
68
+ /** CellMeasurer compatibility */
69
+ }, {
70
+ key: "invalidateCellSizeAfterRender",
71
+ value: function invalidateCellSizeAfterRender(_ref2 /*:: */) {
72
+ var columnIndex = _ref2 /*:: */.columnIndex,
73
+ rowIndex = _ref2 /*:: */.rowIndex;
74
+ if (this.Grid) {
75
+ this.Grid.invalidateCellSizeAfterRender({
76
+ rowIndex: rowIndex,
77
+ columnIndex: columnIndex
78
+ });
79
+ }
80
+ }
81
+
82
+ /** See Grid#measureAllCells */
83
+ }, {
84
+ key: "measureAllRows",
85
+ value: function measureAllRows() {
86
+ if (this.Grid) {
87
+ this.Grid.measureAllCells();
88
+ }
89
+ }
90
+
91
+ /** CellMeasurer compatibility */
92
+ }, {
93
+ key: "recomputeGridSize",
94
+ value: function recomputeGridSize() {
95
+ var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
96
+ _ref3$columnIndex = _ref3.columnIndex,
97
+ columnIndex = _ref3$columnIndex === void 0 ? 0 : _ref3$columnIndex,
98
+ _ref3$rowIndex = _ref3.rowIndex,
99
+ rowIndex = _ref3$rowIndex === void 0 ? 0 : _ref3$rowIndex;
100
+ if (this.Grid) {
101
+ this.Grid.recomputeGridSize({
102
+ rowIndex: rowIndex,
103
+ columnIndex: columnIndex
104
+ });
105
+ }
106
+ }
107
+
108
+ /** See Grid#recomputeGridSize */
109
+ }, {
110
+ key: "recomputeRowHeights",
111
+ value: function recomputeRowHeights() {
112
+ var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
113
+ if (this.Grid) {
114
+ this.Grid.recomputeGridSize({
115
+ rowIndex: index
116
+ });
117
+ }
118
+ }
119
+
120
+ /** See Grid#scrollToPosition */
121
+ }, {
122
+ key: "scrollToPosition",
123
+ value: function scrollToPosition() {
124
+ var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
125
+ if (this.Grid) {
126
+ this.Grid.scrollToPosition({
127
+ scrollTop: scrollTop
128
+ });
129
+ }
130
+ }
131
+
132
+ /** See Grid#scrollToCell */
133
+ }, {
134
+ key: "scrollToRow",
135
+ value: function scrollToRow() {
136
+ var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
137
+ if (this.Grid) {
138
+ this.Grid.scrollToCell({
139
+ columnIndex: 0,
140
+ rowIndex: index
141
+ });
142
+ }
143
+ }
144
+ }, {
145
+ key: "getScrollbarWidth",
146
+ value: function getScrollbarWidth() {
147
+ if (this.GridElement) {
148
+ var _Grid = this.GridElement;
149
+ var clientWidth = _Grid.clientWidth || 0;
150
+ var offsetWidth = _Grid.offsetWidth || 0;
151
+ return offsetWidth - clientWidth;
152
+ }
153
+ return 0;
154
+ }
155
+ }, {
156
+ key: "componentDidMount",
157
+ value: function componentDidMount() {
158
+ this._setScrollbarWidth();
159
+ }
160
+ }, {
161
+ key: "componentDidUpdate",
162
+ value: function componentDidUpdate() {
163
+ this._setScrollbarWidth();
164
+ }
165
+ }, {
166
+ key: "render",
167
+ value: function render() {
168
+ var _this2 = this;
169
+ var _this$props = this.props,
170
+ children = _this$props.children,
171
+ className = _this$props.className,
172
+ disableHeader = _this$props.disableHeader,
173
+ gridClassName = _this$props.gridClassName,
174
+ gridStyle = _this$props.gridStyle,
175
+ headerHeight = _this$props.headerHeight,
176
+ headerRowRenderer = _this$props.headerRowRenderer,
177
+ height = _this$props.height,
178
+ id = _this$props.id,
179
+ noRowsRenderer = _this$props.noRowsRenderer,
180
+ rowClassName = _this$props.rowClassName,
181
+ rowStyle = _this$props.rowStyle,
182
+ scrollToIndex = _this$props.scrollToIndex,
183
+ style = _this$props.style,
184
+ width = _this$props.width;
185
+ var scrollbarWidth = this.state.scrollbarWidth;
186
+ var availableRowsHeight = disableHeader ? height : height - headerHeight;
187
+ var rowClass = typeof rowClassName === 'function' ? rowClassName({
188
+ index: -1
189
+ }) : rowClassName;
190
+ var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({
191
+ index: -1
192
+ }) : rowStyle;
193
+
194
+ // Precompute and cache column styles before rendering rows and columns to speed things up
195
+ this._cachedColumnStyles = [];
196
+ React.Children.toArray(children).forEach(function (column, index) {
197
+ var flexStyles = _this2._getFlexStyleForColumn(column, column.props.style || Column.defaultProps.style);
198
+ _this2._cachedColumnStyles[index] = _objectSpread({
199
+ overflow: 'hidden'
200
+ }, flexStyles);
201
+ });
202
+
203
+ // Note that we specify :rowCount, :scrollbarWidth, :sortBy, and :sortDirection as properties on Grid even though these have nothing to do with Grid.
204
+ // This is done because Grid is a pure component and won't update unless its properties or state has changed.
205
+ // Any property that should trigger a re-render of Grid then is specified here to avoid a stale display.
206
+ return /*#__PURE__*/React.createElement("div", {
207
+ "aria-label": this.props['aria-label'],
208
+ "aria-labelledby": this.props['aria-labelledby'],
209
+ "aria-colcount": React.Children.toArray(children).length,
210
+ "aria-rowcount": this.props.rowCount,
211
+ className: clsx('ReactVirtualized__Table', className),
212
+ id: id,
213
+ role: "grid",
214
+ style: style
215
+ }, !disableHeader && headerRowRenderer({
216
+ className: clsx('ReactVirtualized__Table__headerRow', rowClass),
217
+ columns: this._getHeaderColumns(),
218
+ style: _objectSpread({
219
+ height: headerHeight,
220
+ overflow: 'hidden',
221
+ paddingRight: scrollbarWidth,
222
+ width: width
223
+ }, rowStyleObject)
224
+ }), /*#__PURE__*/React.createElement(Grid, _extends({}, this.props, {
225
+ elementRef: this._setGridElementRef,
226
+ "aria-readonly": null,
227
+ autoContainerWidth: true,
228
+ className: clsx('ReactVirtualized__Table__Grid', gridClassName),
229
+ cellRenderer: this._createRow,
230
+ columnWidth: width,
231
+ columnCount: 1,
232
+ height: availableRowsHeight,
233
+ id: undefined,
234
+ noContentRenderer: noRowsRenderer,
235
+ onScroll: this._onScroll,
236
+ onSectionRendered: this._onSectionRendered,
237
+ ref: this._setRef,
238
+ role: "rowgroup",
239
+ scrollbarWidth: scrollbarWidth,
240
+ scrollToRow: scrollToIndex,
241
+ style: _objectSpread(_objectSpread({}, gridStyle), {}, {
242
+ overflowX: 'hidden'
243
+ })
244
+ })));
245
+ }
246
+ }, {
247
+ key: "_createColumn",
248
+ value: function _createColumn(_ref4) {
249
+ var column = _ref4.column,
250
+ columnIndex = _ref4.columnIndex,
251
+ isScrolling = _ref4.isScrolling,
252
+ parent = _ref4.parent,
253
+ rowData = _ref4.rowData,
254
+ rowIndex = _ref4.rowIndex;
255
+ var onColumnClick = this.props.onColumnClick;
256
+ var _column$props = column.props,
257
+ cellDataGetter = _column$props.cellDataGetter,
258
+ cellRenderer = _column$props.cellRenderer,
259
+ className = _column$props.className,
260
+ columnData = _column$props.columnData,
261
+ dataKey = _column$props.dataKey,
262
+ id = _column$props.id;
263
+ var cellData = cellDataGetter({
264
+ columnData: columnData,
265
+ dataKey: dataKey,
266
+ rowData: rowData
267
+ });
268
+ var renderedCell = cellRenderer({
269
+ cellData: cellData,
270
+ columnData: columnData,
271
+ columnIndex: columnIndex,
272
+ dataKey: dataKey,
273
+ isScrolling: isScrolling,
274
+ parent: parent,
275
+ rowData: rowData,
276
+ rowIndex: rowIndex
277
+ });
278
+ var onClick = function onClick(event) {
279
+ onColumnClick && onColumnClick({
280
+ columnData: columnData,
281
+ dataKey: dataKey,
282
+ event: event
283
+ });
284
+ };
285
+ var style = this._cachedColumnStyles[columnIndex];
286
+ var title = typeof renderedCell === 'string' ? renderedCell : null;
287
+
288
+ // Avoid using object-spread syntax with multiple objects here,
289
+ // Since it results in an extra method call to 'babel-runtime/helpers/extends'
290
+ // See PR https://github.com/bvaughn/react-virtualized/pull/942
291
+ return /*#__PURE__*/React.createElement("div", {
292
+ "aria-colindex": columnIndex + 1,
293
+ "aria-describedby": id,
294
+ className: clsx('ReactVirtualized__Table__rowColumn', className),
295
+ key: 'Row' + rowIndex + '-' + 'Col' + columnIndex,
296
+ onClick: onClick,
297
+ role: "gridcell",
298
+ style: style,
299
+ title: title
300
+ }, renderedCell);
301
+ }
302
+ }, {
303
+ key: "_createHeader",
304
+ value: function _createHeader(_ref5) {
305
+ var column = _ref5.column,
306
+ index = _ref5.index;
307
+ var _this$props2 = this.props,
308
+ headerClassName = _this$props2.headerClassName,
309
+ headerStyle = _this$props2.headerStyle,
310
+ onHeaderClick = _this$props2.onHeaderClick,
311
+ sort = _this$props2.sort,
312
+ sortBy = _this$props2.sortBy,
313
+ sortDirection = _this$props2.sortDirection;
314
+ var _column$props2 = column.props,
315
+ columnData = _column$props2.columnData,
316
+ dataKey = _column$props2.dataKey,
317
+ defaultSortDirection = _column$props2.defaultSortDirection,
318
+ disableSort = _column$props2.disableSort,
319
+ headerRenderer = _column$props2.headerRenderer,
320
+ id = _column$props2.id,
321
+ label = _column$props2.label;
322
+ var sortEnabled = !disableSort && sort;
323
+ var classNames = clsx('ReactVirtualized__Table__headerColumn', headerClassName, column.props.headerClassName, {
324
+ ReactVirtualized__Table__sortableHeaderColumn: sortEnabled
325
+ });
326
+ var style = this._getFlexStyleForColumn(column, _objectSpread(_objectSpread({}, headerStyle), column.props.headerStyle));
327
+ var renderedHeader = headerRenderer({
328
+ columnData: columnData,
329
+ dataKey: dataKey,
330
+ disableSort: disableSort,
331
+ label: label,
332
+ sortBy: sortBy,
333
+ sortDirection: sortDirection
334
+ });
335
+ var headerOnClick, headerOnKeyDown, headerTabIndex, headerAriaSort, headerAriaLabel;
336
+ if (sortEnabled || onHeaderClick) {
337
+ // If this is a sortable header, clicking it should update the table data's sorting.
338
+ var isFirstTimeSort = sortBy !== dataKey;
339
+
340
+ // If this is the firstTime sort of this column, use the column default sort order.
341
+ // Otherwise, invert the direction of the sort.
342
+ var newSortDirection = isFirstTimeSort ? defaultSortDirection : sortDirection === SortDirection.DESC ? SortDirection.ASC : SortDirection.DESC;
343
+ var onClick = function onClick(event) {
344
+ sortEnabled && sort({
345
+ defaultSortDirection: defaultSortDirection,
346
+ event: event,
347
+ sortBy: dataKey,
348
+ sortDirection: newSortDirection
349
+ });
350
+ onHeaderClick && onHeaderClick({
351
+ columnData: columnData,
352
+ dataKey: dataKey,
353
+ event: event
354
+ });
355
+ };
356
+ var onKeyDown = function onKeyDown(event) {
357
+ if (event.key === 'Enter' || event.key === ' ') {
358
+ onClick(event);
359
+ }
360
+ };
361
+ headerAriaLabel = column.props['aria-label'] || label || dataKey;
362
+ headerAriaSort = 'none';
363
+ headerTabIndex = 0;
364
+ headerOnClick = onClick;
365
+ headerOnKeyDown = onKeyDown;
366
+ }
367
+ if (sortBy === dataKey) {
368
+ headerAriaSort = sortDirection === SortDirection.ASC ? 'ascending' : 'descending';
369
+ }
370
+
371
+ // Avoid using object-spread syntax with multiple objects here,
372
+ // Since it results in an extra method call to 'babel-runtime/helpers/extends'
373
+ // See PR https://github.com/bvaughn/react-virtualized/pull/942
374
+ return /*#__PURE__*/React.createElement("div", {
375
+ "aria-label": headerAriaLabel,
376
+ "aria-sort": headerAriaSort,
377
+ className: classNames,
378
+ id: id,
379
+ key: 'Header-Col' + index,
380
+ onClick: headerOnClick,
381
+ onKeyDown: headerOnKeyDown,
382
+ role: "columnheader",
383
+ style: style,
384
+ tabIndex: headerTabIndex
385
+ }, renderedHeader);
386
+ }
387
+ }, {
388
+ key: "_createRow",
389
+ value: function _createRow(_ref6) {
390
+ var _this3 = this;
391
+ var index = _ref6.rowIndex,
392
+ isScrolling = _ref6.isScrolling,
393
+ key = _ref6.key,
394
+ parent = _ref6.parent,
395
+ style = _ref6.style;
396
+ var _this$props3 = this.props,
397
+ children = _this$props3.children,
398
+ onRowClick = _this$props3.onRowClick,
399
+ onRowDoubleClick = _this$props3.onRowDoubleClick,
400
+ onRowRightClick = _this$props3.onRowRightClick,
401
+ onRowMouseOver = _this$props3.onRowMouseOver,
402
+ onRowMouseOut = _this$props3.onRowMouseOut,
403
+ rowClassName = _this$props3.rowClassName,
404
+ rowGetter = _this$props3.rowGetter,
405
+ rowRenderer = _this$props3.rowRenderer,
406
+ rowStyle = _this$props3.rowStyle;
407
+ var scrollbarWidth = this.state.scrollbarWidth;
408
+ var rowClass = typeof rowClassName === 'function' ? rowClassName({
409
+ index: index
410
+ }) : rowClassName;
411
+ var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({
412
+ index: index
413
+ }) : rowStyle;
414
+ var rowData = rowGetter({
415
+ index: index
416
+ });
417
+ var columns = React.Children.toArray(children).map(function (column, columnIndex) {
418
+ return _this3._createColumn({
419
+ column: column,
420
+ columnIndex: columnIndex,
421
+ isScrolling: isScrolling,
422
+ parent: parent,
423
+ rowData: rowData,
424
+ rowIndex: index,
425
+ scrollbarWidth: scrollbarWidth
426
+ });
427
+ });
428
+ var className = clsx('ReactVirtualized__Table__row', rowClass);
429
+ var flattenedStyle = _objectSpread(_objectSpread({}, style), {}, {
430
+ height: this._getRowHeight(index),
431
+ overflow: 'hidden',
432
+ paddingRight: scrollbarWidth
433
+ }, rowStyleObject);
434
+ return rowRenderer({
435
+ className: className,
436
+ columns: columns,
437
+ index: index,
438
+ isScrolling: isScrolling,
439
+ key: key,
440
+ onRowClick: onRowClick,
441
+ onRowDoubleClick: onRowDoubleClick,
442
+ onRowRightClick: onRowRightClick,
443
+ onRowMouseOver: onRowMouseOver,
444
+ onRowMouseOut: onRowMouseOut,
445
+ rowData: rowData,
446
+ style: flattenedStyle
447
+ });
448
+ }
449
+
450
+ /**
451
+ * Determines the flex-shrink, flex-grow, and width values for a cell (header or column).
452
+ */
453
+ }, {
454
+ key: "_getFlexStyleForColumn",
455
+ value: function _getFlexStyleForColumn(column) {
456
+ var customStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
457
+ var flexValue = "".concat(column.props.flexGrow, " ").concat(column.props.flexShrink, " ").concat(column.props.width, "px");
458
+ var style = _objectSpread(_objectSpread({}, customStyle), {}, {
459
+ flex: flexValue,
460
+ msFlex: flexValue,
461
+ WebkitFlex: flexValue
462
+ });
463
+ if (column.props.maxWidth) {
464
+ style.maxWidth = column.props.maxWidth;
465
+ }
466
+ if (column.props.minWidth) {
467
+ style.minWidth = column.props.minWidth;
468
+ }
469
+ return style;
470
+ }
471
+ }, {
472
+ key: "_getHeaderColumns",
473
+ value: function _getHeaderColumns() {
474
+ var _this4 = this;
475
+ var _this$props4 = this.props,
476
+ children = _this$props4.children,
477
+ disableHeader = _this$props4.disableHeader;
478
+ var items = disableHeader ? [] : React.Children.toArray(children);
479
+ return items.map(function (column, index) {
480
+ return _this4._createHeader({
481
+ column: column,
482
+ index: index
483
+ });
484
+ });
485
+ }
486
+ }, {
487
+ key: "_getRowHeight",
488
+ value: function _getRowHeight(rowIndex) {
489
+ var rowHeight = this.props.rowHeight;
490
+ return typeof rowHeight === 'function' ? rowHeight({
491
+ index: rowIndex
492
+ }) : rowHeight;
493
+ }
494
+ }, {
495
+ key: "_onScroll",
496
+ value: function _onScroll(_ref7) {
497
+ var clientHeight = _ref7.clientHeight,
498
+ scrollHeight = _ref7.scrollHeight,
499
+ scrollTop = _ref7.scrollTop;
500
+ var onScroll = this.props.onScroll;
501
+ onScroll({
502
+ clientHeight: clientHeight,
503
+ scrollHeight: scrollHeight,
504
+ scrollTop: scrollTop
505
+ });
506
+ }
507
+ }, {
508
+ key: "_onSectionRendered",
509
+ value: function _onSectionRendered(_ref8) {
510
+ var rowOverscanStartIndex = _ref8.rowOverscanStartIndex,
511
+ rowOverscanStopIndex = _ref8.rowOverscanStopIndex,
512
+ rowStartIndex = _ref8.rowStartIndex,
513
+ rowStopIndex = _ref8.rowStopIndex;
514
+ var onRowsRendered = this.props.onRowsRendered;
515
+ onRowsRendered({
516
+ overscanStartIndex: rowOverscanStartIndex,
517
+ overscanStopIndex: rowOverscanStopIndex,
518
+ startIndex: rowStartIndex,
519
+ stopIndex: rowStopIndex
520
+ });
521
+ }
522
+ }, {
523
+ key: "_setRef",
524
+ value: function _setRef(ref) {
525
+ this.Grid = ref;
526
+ }
527
+ }, {
528
+ key: "_setGridElementRef",
529
+ value: function _setGridElementRef(ref) {
530
+ this.GridElement = ref;
531
+ }
532
+ }, {
533
+ key: "_setScrollbarWidth",
534
+ value: function _setScrollbarWidth() {
535
+ var scrollbarWidth = this.getScrollbarWidth();
536
+ this.setState({
537
+ scrollbarWidth: scrollbarWidth
538
+ });
539
+ }
540
+ }]);
541
+ }(React.PureComponent);
542
+ _defineProperty(Table, "defaultProps", {
543
+ disableHeader: false,
544
+ estimatedRowSize: 30,
545
+ headerHeight: 0,
546
+ headerStyle: {},
547
+ noRowsRenderer: function noRowsRenderer() {
548
+ return null;
549
+ },
550
+ onRowsRendered: function onRowsRendered() {
551
+ return null;
552
+ },
553
+ onScroll: function onScroll() {
554
+ return null;
555
+ },
556
+ overscanIndicesGetter: accessibilityOverscanIndicesGetter,
557
+ overscanRowCount: 10,
558
+ rowRenderer: defaultRowRenderer,
559
+ headerRowRenderer: defaultHeaderRowRenderer,
560
+ rowStyle: {},
561
+ scrollToAlignment: 'auto',
562
+ scrollToIndex: -1,
563
+ style: {}
564
+ });
565
+ export { Table as default };
566
+ Table.propTypes = process.env.NODE_ENV !== "production" ? {
567
+ /** This is just set on the grid top element. */
568
+ 'aria-label': PropTypes.string,
569
+ /** This is just set on the grid top element. */
570
+ 'aria-labelledby': PropTypes.string,
571
+ /**
572
+ * Removes fixed height from the scrollingContainer so that the total height
573
+ * of rows can stretch the window. Intended for use with WindowScroller
574
+ */
575
+ autoHeight: PropTypes.bool,
576
+ /** One or more Columns describing the data displayed in this row */
577
+ children: function children(props) {
578
+ var children = React.Children.toArray(props.children);
579
+ for (var i = 0; i < children.length; i++) {
580
+ var childType = children[i].type;
581
+ if (childType !== Column && !(childType.prototype instanceof Column)) {
582
+ return new Error('Table only accepts children of type Column');
583
+ }
584
+ }
585
+ },
586
+ /** Optional CSS class name */
587
+ className: PropTypes.string,
588
+ /** Disable rendering the header at all */
589
+ disableHeader: PropTypes.bool,
590
+ /**
591
+ * Used to estimate the total height of a Table before all of its rows have actually been measured.
592
+ * The estimated total height is adjusted as rows are rendered.
593
+ */
594
+ estimatedRowSize: PropTypes.number.isRequired,
595
+ /** Optional custom CSS class name to attach to inner Grid element. */
596
+ gridClassName: PropTypes.string,
597
+ /** Optional inline style to attach to inner Grid element. */
598
+ gridStyle: PropTypes.object,
599
+ /** Optional CSS class to apply to all column headers */
600
+ headerClassName: PropTypes.string,
601
+ /** Fixed height of header row */
602
+ headerHeight: PropTypes.number.isRequired,
603
+ /**
604
+ * Responsible for rendering a table row given an array of columns:
605
+ * Should implement the following interface: ({
606
+ * className: string,
607
+ * columns: any[],
608
+ * style: any
609
+ * }): PropTypes.node
610
+ */
611
+ headerRowRenderer: PropTypes.func,
612
+ /** Optional custom inline style to attach to table header columns. */
613
+ headerStyle: PropTypes.object,
614
+ /** Fixed/available height for out DOM element */
615
+ height: PropTypes.number.isRequired,
616
+ /** Optional id */
617
+ id: PropTypes.string,
618
+ /** Optional renderer to be used in place of table body rows when rowCount is 0 */
619
+ noRowsRenderer: PropTypes.func,
620
+ /**
621
+ * Optional callback when a column is clicked.
622
+ * ({ columnData: any, dataKey: string }): void
623
+ */
624
+ onColumnClick: PropTypes.func,
625
+ /**
626
+ * Optional callback when a column's header is clicked.
627
+ * ({ columnData: any, dataKey: string }): void
628
+ */
629
+ onHeaderClick: PropTypes.func,
630
+ /**
631
+ * Callback invoked when a user clicks on a table row.
632
+ * ({ index: number }): void
633
+ */
634
+ onRowClick: PropTypes.func,
635
+ /**
636
+ * Callback invoked when a user double-clicks on a table row.
637
+ * ({ index: number }): void
638
+ */
639
+ onRowDoubleClick: PropTypes.func,
640
+ /**
641
+ * Callback invoked when the mouse leaves a table row.
642
+ * ({ index: number }): void
643
+ */
644
+ onRowMouseOut: PropTypes.func,
645
+ /**
646
+ * Callback invoked when a user moves the mouse over a table row.
647
+ * ({ index: number }): void
648
+ */
649
+ onRowMouseOver: PropTypes.func,
650
+ /**
651
+ * Callback invoked when a user right-clicks on a table row.
652
+ * ({ index: number }): void
653
+ */
654
+ onRowRightClick: PropTypes.func,
655
+ /**
656
+ * Callback invoked with information about the slice of rows that were just rendered.
657
+ * ({ startIndex, stopIndex }): void
658
+ */
659
+ onRowsRendered: PropTypes.func,
660
+ /**
661
+ * Callback invoked whenever the scroll offset changes within the inner scrollable region.
662
+ * This callback can be used to sync scrolling between lists, tables, or grids.
663
+ * ({ clientHeight, scrollHeight, scrollTop }): void
664
+ */
665
+ onScroll: PropTypes.func.isRequired,
666
+ /** See Grid#overscanIndicesGetter */
667
+ overscanIndicesGetter: PropTypes.func.isRequired,
668
+ /**
669
+ * Number of rows to render above/below the visible bounds of the list.
670
+ * These rows can help for smoother scrolling on touch devices.
671
+ */
672
+ overscanRowCount: PropTypes.number.isRequired,
673
+ /**
674
+ * Optional CSS class to apply to all table rows (including the header row).
675
+ * This property can be a CSS class name (string) or a function that returns a class name.
676
+ * If a function is provided its signature should be: ({ index: number }): string
677
+ */
678
+ rowClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
679
+ /**
680
+ * Callback responsible for returning a data row given an index.
681
+ * ({ index: number }): any
682
+ */
683
+ rowGetter: PropTypes.func.isRequired,
684
+ /**
685
+ * Either a fixed row height (number) or a function that returns the height of a row given its index.
686
+ * ({ index: number }): number
687
+ */
688
+ rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]).isRequired,
689
+ /** Number of rows in table. */
690
+ rowCount: PropTypes.number.isRequired,
691
+ /**
692
+ * Responsible for rendering a table row given an array of columns:
693
+ * Should implement the following interface: ({
694
+ * className: string,
695
+ * columns: Array,
696
+ * index: number,
697
+ * isScrolling: boolean,
698
+ * onRowClick: ?Function,
699
+ * onRowDoubleClick: ?Function,
700
+ * onRowMouseOver: ?Function,
701
+ * onRowMouseOut: ?Function,
702
+ * rowData: any,
703
+ * style: any
704
+ * }): PropTypes.node
705
+ */
706
+ rowRenderer: PropTypes.func,
707
+ /** Optional custom inline style to attach to table rows. */
708
+ rowStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired,
709
+ /** See Grid#scrollToAlignment */
710
+ scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,
711
+ /** Row index to ensure visible (by forcefully scrolling if necessary) */
712
+ scrollToIndex: PropTypes.number.isRequired,
713
+ /** Vertical offset. */
714
+ scrollTop: PropTypes.number,
715
+ /**
716
+ * Sort function to be called if a sortable header is clicked.
717
+ * Should implement the following interface: ({
718
+ * defaultSortDirection: 'ASC' | 'DESC',
719
+ * event: MouseEvent,
720
+ * sortBy: string,
721
+ * sortDirection: SortDirection
722
+ * }): void
723
+ */
724
+ sort: PropTypes.func,
725
+ /** Table data is currently sorted by this :dataKey (if it is sorted at all) */
726
+ sortBy: PropTypes.string,
727
+ /** Table data is currently sorted in this direction (if it is sorted at all) */
728
+ sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),
729
+ /** Optional inline style */
730
+ style: PropTypes.object,
731
+ /** Tab index for focus */
732
+ tabIndex: PropTypes.number,
733
+ /** Width of list */
734
+ width: PropTypes.number.isRequired
735
+ } : {};