@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,195 @@
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 React = _react;
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _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; }
19
+ 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)); }
20
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /*:: import type {CellMeasureCache} from './types';*/
21
+ /*:: type Children = (params: {measure: () => void}) => React.Element<*>;*/
22
+ /*:: type Cell = {
23
+ columnIndex: number,
24
+ rowIndex: number,
25
+ };*/
26
+ /*:: type Props = {
27
+ cache: CellMeasureCache,
28
+ children: Children | React.Element<*>,
29
+ columnIndex?: number,
30
+ index?: number,
31
+ parent: {
32
+ invalidateCellSizeAfterRender?: (cell: Cell) => void,
33
+ recomputeGridSize?: (cell: Cell) => void,
34
+ },
35
+ rowIndex?: number,
36
+ };*/
37
+ /**
38
+ * Wraps a cell and measures its rendered content.
39
+ * Measurements are stored in a per-cell cache.
40
+ * Cached-content is not be re-measured.
41
+ */
42
+ var CellMeasurer = exports["default"] = /*#__PURE__*/function (_React$PureComponent) {
43
+ function CellMeasurer() {
44
+ var _this;
45
+ (0, _classCallCheck2["default"])(this, CellMeasurer);
46
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
47
+ args[_key] = arguments[_key];
48
+ }
49
+ _this = _callSuper(this, CellMeasurer, [].concat(args));
50
+ (0, _defineProperty2["default"])(_this, "_child", /*#__PURE__*/React.createRef());
51
+ (0, _defineProperty2["default"])(_this, "_measure", function () {
52
+ var _this$props = _this.props,
53
+ cache = _this$props.cache,
54
+ _this$props$columnInd = _this$props.columnIndex,
55
+ columnIndex = _this$props$columnInd === void 0 ? 0 : _this$props$columnInd,
56
+ parent = _this$props.parent,
57
+ _this$props$rowIndex = _this$props.rowIndex,
58
+ rowIndex = _this$props$rowIndex === void 0 ? _this.props.index || 0 : _this$props$rowIndex;
59
+ var _this$_getCellMeasure = _this._getCellMeasurements(),
60
+ height = _this$_getCellMeasure.height,
61
+ width = _this$_getCellMeasure.width;
62
+ if (height !== cache.getHeight(rowIndex, columnIndex) || width !== cache.getWidth(rowIndex, columnIndex)) {
63
+ cache.set(rowIndex, columnIndex, width, height);
64
+ if (parent && typeof parent.recomputeGridSize === 'function') {
65
+ parent.recomputeGridSize({
66
+ columnIndex: columnIndex,
67
+ rowIndex: rowIndex
68
+ });
69
+ }
70
+ }
71
+ });
72
+ (0, _defineProperty2["default"])(_this, "_registerChild", function (element) {
73
+ if (element && !(element instanceof Element)) {
74
+ console.warn('CellMeasurer registerChild expects to be passed Element or null');
75
+ }
76
+ _this._child.current = element;
77
+ if (element) {
78
+ _this._maybeMeasureCell();
79
+ }
80
+ });
81
+ return _this;
82
+ }
83
+ (0, _inherits2["default"])(CellMeasurer, _React$PureComponent);
84
+ return (0, _createClass2["default"])(CellMeasurer, [{
85
+ key: "componentDidMount",
86
+ value: function componentDidMount() {
87
+ this._maybeMeasureCell();
88
+ }
89
+ }, {
90
+ key: "componentDidUpdate",
91
+ value: function componentDidUpdate() {
92
+ this._maybeMeasureCell();
93
+ }
94
+ }, {
95
+ key: "render",
96
+ value: function render() {
97
+ var _this2 = this;
98
+ var children = this.props.children;
99
+ var resolvedChildren = typeof children === 'function' ? children({
100
+ measure: this._measure,
101
+ registerChild: this._registerChild
102
+ }) : children;
103
+ if (resolvedChildren === null) {
104
+ return resolvedChildren;
105
+ }
106
+ return /*#__PURE__*/(0, _react.cloneElement)(resolvedChildren, {
107
+ ref: function ref(node) {
108
+ if (typeof resolvedChildren.ref === 'function') {
109
+ resolvedChildren.ref(node);
110
+ } else if (resolvedChildren.ref) {
111
+ resolvedChildren.ref.current = node;
112
+ }
113
+ _this2._child.current = node;
114
+ }
115
+ });
116
+ }
117
+ }, {
118
+ key: "_getCellMeasurements",
119
+ value: function _getCellMeasurements() {
120
+ var cache = this.props.cache;
121
+ var node = this._child.current;
122
+
123
+ // TODO Check for a bad combination of fixedWidth and missing numeric width or vice versa with height
124
+
125
+ if (node && node.ownerDocument && node.ownerDocument.defaultView && node instanceof node.ownerDocument.defaultView.HTMLElement) {
126
+ var styleWidth = node.style.width;
127
+ var styleHeight = node.style.height;
128
+
129
+ // If we are re-measuring a cell that has already been measured,
130
+ // It will have a hard-coded width/height from the previous measurement.
131
+ // The fact that we are measuring indicates this measurement is probably stale,
132
+ // So explicitly clear it out (eg set to "auto") so we can recalculate.
133
+ // See issue #593 for more info.
134
+ // Even if we are measuring initially- if we're inside of a MultiGrid component,
135
+ // Explicitly clear width/height before measuring to avoid being tainted by another Grid.
136
+ // eg top/left Grid renders before bottom/right Grid
137
+ // Since the CellMeasurerCache is shared between them this taints derived cell size values.
138
+ if (!cache.hasFixedWidth()) {
139
+ node.style.width = 'auto';
140
+ }
141
+ if (!cache.hasFixedHeight()) {
142
+ node.style.height = 'auto';
143
+ }
144
+ var height = Math.ceil(node.offsetHeight);
145
+ var width = Math.ceil(node.offsetWidth);
146
+
147
+ // Reset after measuring to avoid breaking styles; see #660
148
+ if (styleWidth) {
149
+ node.style.width = styleWidth;
150
+ }
151
+ if (styleHeight) {
152
+ node.style.height = styleHeight;
153
+ }
154
+ return {
155
+ height: height,
156
+ width: width
157
+ };
158
+ } else {
159
+ return {
160
+ height: 0,
161
+ width: 0
162
+ };
163
+ }
164
+ }
165
+ }, {
166
+ key: "_maybeMeasureCell",
167
+ value: function _maybeMeasureCell() {
168
+ var _this$props2 = this.props,
169
+ cache = _this$props2.cache,
170
+ _this$props2$columnIn = _this$props2.columnIndex,
171
+ columnIndex = _this$props2$columnIn === void 0 ? 0 : _this$props2$columnIn,
172
+ parent = _this$props2.parent,
173
+ _this$props2$rowIndex = _this$props2.rowIndex,
174
+ rowIndex = _this$props2$rowIndex === void 0 ? this.props.index || 0 : _this$props2$rowIndex;
175
+ if (!cache.has(rowIndex, columnIndex)) {
176
+ var _this$_getCellMeasure2 = this._getCellMeasurements(),
177
+ height = _this$_getCellMeasure2.height,
178
+ width = _this$_getCellMeasure2.width;
179
+ cache.set(rowIndex, columnIndex, width, height);
180
+
181
+ // If size has changed, let Grid know to re-render.
182
+ if (parent && typeof parent.invalidateCellSizeAfterRender === 'function') {
183
+ parent.invalidateCellSizeAfterRender({
184
+ columnIndex: columnIndex,
185
+ rowIndex: rowIndex
186
+ });
187
+ }
188
+ }
189
+ }
190
+ }]);
191
+ }(React.PureComponent); // Used for DEV mode warning check
192
+ (0, _defineProperty2["default"])(CellMeasurer, "__internalCellMeasurerFlag", false);
193
+ if (process.env.NODE_ENV !== 'production') {
194
+ CellMeasurer.__internalCellMeasurerFlag = true;
195
+ }
@@ -0,0 +1,298 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ var _CellMeasurerCache = _interopRequireWildcard(require("./CellMeasurerCache"));
5
+ 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); }
6
+ 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; }
7
+ describe('CellMeasurerCache', function () {
8
+ it('should override defaultHeight/defaultWidth if minHeight/minWidth are greater', function () {
9
+ var cache = new _CellMeasurerCache["default"]({
10
+ defaultHeight: 20,
11
+ defaultWidth: 100,
12
+ fixedHeight: true,
13
+ fixedWidth: true,
14
+ minHeight: 30,
15
+ minWidth: 150
16
+ });
17
+ cache.set(0, 0, 50, 10);
18
+ expect(cache.getHeight(0, 0)).toBe(30);
19
+ expect(cache.getWidth(0, 0)).toBe(150);
20
+ expect(cache.rowHeight({
21
+ index: 0
22
+ })).toBe(30);
23
+ expect(cache.columnWidth({
24
+ index: 0
25
+ })).toBe(150);
26
+ });
27
+ it('should correctly report cache status', function () {
28
+ var cache = new _CellMeasurerCache["default"]({
29
+ fixedHeight: true,
30
+ fixedWidth: true
31
+ });
32
+ expect(cache.has(0, 0)).toBe(false);
33
+ });
34
+ it('should cache cells', function () {
35
+ var cache = new _CellMeasurerCache["default"]({
36
+ fixedHeight: true,
37
+ fixedWidth: true
38
+ });
39
+ cache.set(0, 0, 100, 20);
40
+ expect(cache.has(0, 0)).toBe(true);
41
+ });
42
+ it('should return the correct default sizes for uncached cells if specified', function () {
43
+ spyOn(console, 'warn'); // Ignore warning about variable width and height
44
+
45
+ var cache = new _CellMeasurerCache["default"]({
46
+ defaultHeight: 20,
47
+ defaultWidth: 100,
48
+ minHeight: 15,
49
+ minWidth: 80
50
+ });
51
+ expect(cache.getWidth(0, 0)).toBe(100);
52
+ expect(cache.getHeight(0, 0)).toBe(20);
53
+ cache.set(0, 0, 70, 10);
54
+ expect(cache.getWidth(0, 0)).toBe(80);
55
+ expect(cache.getHeight(0, 0)).toBe(15);
56
+ });
57
+ it('should clear a single cached cell', function () {
58
+ var cache = new _CellMeasurerCache["default"]({
59
+ fixedHeight: true,
60
+ fixedWidth: true
61
+ });
62
+ cache.set(0, 0, 100, 20);
63
+ cache.set(1, 0, 100, 20);
64
+ expect(cache.has(0, 0)).toBe(true);
65
+ expect(cache.has(1, 0)).toBe(true);
66
+ cache.clear(0, 0);
67
+ expect(cache.has(0, 0)).toBe(false);
68
+ expect(cache.has(1, 0)).toBe(true);
69
+ });
70
+ it('should clear a single cached row cell in column 0 when columnIndex param is absent', function () {
71
+ var cache = new _CellMeasurerCache["default"]({
72
+ fixedHeight: true,
73
+ fixedWidth: true
74
+ });
75
+ cache.set(0, 0, 100, 20);
76
+ cache.set(1, 0, 100, 20);
77
+ expect(cache.has(0, 0)).toBe(true);
78
+ expect(cache.has(1, 0)).toBe(true);
79
+ cache.clear(0);
80
+ expect(cache.has(0, 0)).toBe(false);
81
+ expect(cache.has(1, 0)).toBe(true);
82
+ });
83
+ it('should clear all cached cells', function () {
84
+ var cache = new _CellMeasurerCache["default"]({
85
+ fixedHeight: true,
86
+ fixedWidth: true
87
+ });
88
+ cache.set(0, 0, 100, 20);
89
+ cache.set(1, 0, 100, 20);
90
+ expect(cache.has(0, 0)).toBe(true);
91
+ expect(cache.has(1, 0)).toBe(true);
92
+ cache.clearAll();
93
+ expect(cache.has(0, 0)).toBe(false);
94
+ expect(cache.has(1, 0)).toBe(false);
95
+ });
96
+ it('should clear row and column counts when clearing all cells', function () {
97
+ var cache = new _CellMeasurerCache["default"]({
98
+ fixedHeight: true,
99
+ fixedWidth: true
100
+ });
101
+ cache.set(0, 0, 100, 20);
102
+ cache.set(1, 0, 100, 20);
103
+ expect(cache._rowCount).toBe(2);
104
+ expect(cache._columnCount).toBe(1);
105
+ cache.clearAll();
106
+ expect(cache._rowCount).toBe(0);
107
+ expect(cache._columnCount).toBe(0);
108
+ });
109
+ it('should support a custom :keyMapper', function () {
110
+ var keyMapper = jest.fn();
111
+ keyMapper.mockReturnValue('a');
112
+ spyOn(console, 'warn'); // Ignore warning about variable width and height
113
+
114
+ var cache = new _CellMeasurerCache["default"]({
115
+ defaultHeight: 30,
116
+ defaultWidth: 50,
117
+ keyMapper: keyMapper
118
+ });
119
+ cache.set(0, 0, 100, 20);
120
+ expect(cache.has(0, 0)).toBe(true);
121
+
122
+ // Changing the returned key should cause cache misses
123
+ keyMapper.mockReset();
124
+ keyMapper.mockReturnValue('b');
125
+ expect(cache.has(0, 0)).toBe(false);
126
+ expect(cache.columnWidth(0)).toBe(50);
127
+ expect(cache.rowHeight(0)).toBe(30);
128
+ expect(keyMapper.mock.calls).toHaveLength(3);
129
+
130
+ // Restoring it should fix
131
+ keyMapper.mockReset();
132
+ keyMapper.mockReturnValue('a');
133
+ expect(cache.has(0, 0)).toBe(true);
134
+ expect(cache.columnWidth(0)).toBe(100);
135
+ expect(cache.rowHeight(0)).toBe(20);
136
+ expect(keyMapper.mock.calls).toHaveLength(3);
137
+ });
138
+ it('should provide a Grid-compatible :columnWidth method', function () {
139
+ var cache = new _CellMeasurerCache["default"]({
140
+ fixedHeight: true
141
+ });
142
+ expect(cache.columnWidth({
143
+ index: 0
144
+ })).toBe(_CellMeasurerCache.DEFAULT_WIDTH);
145
+ cache.set(0, 0, 100, 50);
146
+ expect(cache.columnWidth({
147
+ index: 0
148
+ })).toBe(100);
149
+ expect(cache.columnWidth({
150
+ index: 1
151
+ })).toBe(_CellMeasurerCache.DEFAULT_WIDTH);
152
+ cache.set(1, 0, 75, 50);
153
+ expect(cache.columnWidth({
154
+ index: 0
155
+ })).toBe(100);
156
+ cache.set(2, 0, 125, 50);
157
+ expect(cache.columnWidth({
158
+ index: 0
159
+ })).toBe(125);
160
+ });
161
+ it('should provide a Grid-compatible :rowHeight method', function () {
162
+ var cache = new _CellMeasurerCache["default"]({
163
+ fixedWidth: true
164
+ });
165
+ expect(cache.rowHeight({
166
+ index: 0
167
+ })).toBe(_CellMeasurerCache.DEFAULT_HEIGHT);
168
+ cache.set(0, 0, 100, 50);
169
+ expect(cache.rowHeight({
170
+ index: 0
171
+ })).toBe(50);
172
+ expect(cache.rowHeight({
173
+ index: 1
174
+ })).toBe(_CellMeasurerCache.DEFAULT_HEIGHT);
175
+ cache.set(0, 1, 100, 25);
176
+ expect(cache.rowHeight({
177
+ index: 0
178
+ })).toBe(50);
179
+ cache.set(0, 2, 100, 75);
180
+ expect(cache.rowHeight({
181
+ index: 0
182
+ })).toBe(75);
183
+ });
184
+ it('should return the :defaultWidth for :columnWidth if not measured', function () {
185
+ var cache = new _CellMeasurerCache["default"]({
186
+ defaultWidth: 25,
187
+ fixedHeight: true,
188
+ fixedWidth: true
189
+ });
190
+ expect(cache.columnWidth({
191
+ index: 0
192
+ })).toBe(25);
193
+ });
194
+ it('should return the :defaultHeight for :rowHeight if not measured', function () {
195
+ var cache = new _CellMeasurerCache["default"]({
196
+ defaultHeight: 25,
197
+ fixedHeight: true,
198
+ fixedWidth: true
199
+ });
200
+ expect(cache.rowHeight({
201
+ index: 0
202
+ })).toBe(25);
203
+ });
204
+ it('should recalculate cached :columnWidth when cells are cleared', function () {
205
+ var cache = new _CellMeasurerCache["default"]({
206
+ fixedHeight: true
207
+ });
208
+ expect(cache.columnWidth({
209
+ index: 0
210
+ })).toBe(_CellMeasurerCache.DEFAULT_WIDTH);
211
+ cache.set(0, 0, 125, 50);
212
+ expect(cache.columnWidth({
213
+ index: 0
214
+ })).toBe(125);
215
+ cache.set(1, 0, 150, 50);
216
+ expect(cache.columnWidth({
217
+ index: 0
218
+ })).toBe(150);
219
+ cache.clear(1, 0);
220
+ expect(cache.columnWidth({
221
+ index: 0
222
+ })).toBe(125);
223
+ cache.clear(0, 0);
224
+ expect(cache.columnWidth({
225
+ index: 0
226
+ })).toBe(_CellMeasurerCache.DEFAULT_WIDTH);
227
+ cache.set(0, 0, 125, 50);
228
+ expect(cache.columnWidth({
229
+ index: 0
230
+ })).toBe(125);
231
+ cache.clearAll();
232
+ expect(cache.columnWidth({
233
+ index: 0
234
+ })).toBe(_CellMeasurerCache.DEFAULT_WIDTH);
235
+ });
236
+ it('should recalculate cached :rowHeight when cells are cleared', function () {
237
+ var cache = new _CellMeasurerCache["default"]({
238
+ fixedWidth: true
239
+ });
240
+ expect(cache.rowHeight({
241
+ index: 0
242
+ })).toBe(_CellMeasurerCache.DEFAULT_HEIGHT);
243
+ cache.set(0, 0, 125, 50);
244
+ expect(cache.rowHeight({
245
+ index: 0
246
+ })).toBe(50);
247
+ cache.set(0, 1, 150, 75);
248
+ expect(cache.rowHeight({
249
+ index: 0
250
+ })).toBe(75);
251
+ cache.clear(0, 1);
252
+ expect(cache.rowHeight({
253
+ index: 0
254
+ })).toBe(50);
255
+ cache.clear(0, 0);
256
+ expect(cache.rowHeight({
257
+ index: 0
258
+ })).toBe(_CellMeasurerCache.DEFAULT_HEIGHT);
259
+ cache.set(0, 0, 125, 50);
260
+ expect(cache.rowHeight({
261
+ index: 0
262
+ })).toBe(50);
263
+ cache.clearAll();
264
+ expect(cache.rowHeight({
265
+ index: 0
266
+ })).toBe(_CellMeasurerCache.DEFAULT_HEIGHT);
267
+ });
268
+ describe('DEV mode', function () {
269
+ it('should warn about dynamic width and height configurations', function () {
270
+ spyOn(console, 'warn');
271
+ var cache = new _CellMeasurerCache["default"]({
272
+ fixedHeight: false,
273
+ fixedWidth: false
274
+ });
275
+ expect(cache.hasFixedHeight()).toBe(false);
276
+ expect(cache.hasFixedWidth()).toBe(false);
277
+ expect(console.warn).toHaveBeenCalledWith("CellMeasurerCache should only measure a cell's width or height. " + 'You have configured CellMeasurerCache to measure both. ' + 'This will result in poor performance.');
278
+ });
279
+ it('should warn about dynamic width with a defaultWidth of 0', function () {
280
+ spyOn(console, 'warn');
281
+ var cache = new _CellMeasurerCache["default"]({
282
+ defaultWidth: 0,
283
+ fixedHeight: true
284
+ });
285
+ expect(cache.getWidth(0, 0)).toBe(0);
286
+ expect(console.warn).toHaveBeenCalledWith('Fixed width CellMeasurerCache should specify a :defaultWidth greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');
287
+ });
288
+ it('should warn about dynamic height with a defaultHeight of 0', function () {
289
+ spyOn(console, 'warn');
290
+ var cache = new _CellMeasurerCache["default"]({
291
+ defaultHeight: 0,
292
+ fixedWidth: true
293
+ });
294
+ expect(cache.getHeight(0, 0)).toBe(0);
295
+ expect(console.warn).toHaveBeenCalledWith('Fixed height CellMeasurerCache should specify a :defaultHeight greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');
296
+ });
297
+ });
298
+ });
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = exports.DEFAULT_WIDTH = exports.DEFAULT_HEIGHT = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ /*:: import type {CellMeasureCache} from './types';*/
12
+ var DEFAULT_HEIGHT = exports.DEFAULT_HEIGHT = 30;
13
+ var DEFAULT_WIDTH = exports.DEFAULT_WIDTH = 100;
14
+
15
+ // Enables more intelligent mapping of a given column and row index to an item ID.
16
+ // This prevents a cell cache from being invalidated when its parent collection is modified.
17
+ /*:: type KeyMapper = (rowIndex: number, columnIndex: number) => any;*/
18
+ /*:: type CellMeasurerCacheParams = {
19
+ defaultHeight?: number,
20
+ defaultWidth?: number,
21
+ fixedHeight?: boolean,
22
+ fixedWidth?: boolean,
23
+ minHeight?: number,
24
+ minWidth?: number,
25
+ keyMapper?: KeyMapper,
26
+ };*/
27
+ /*:: type Cache = {
28
+ [key: any]: number,
29
+ };*/
30
+ /*:: type IndexParam = {
31
+ index: number,
32
+ };*/
33
+ /**
34
+ * Caches measurements for a given cell.
35
+ */
36
+ var CellMeasurerCache = exports["default"] = /*#__PURE__*/function () {
37
+ function CellMeasurerCache() {
38
+ var _this = this;
39
+ var params /*: CellMeasurerCacheParams*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
40
+ (0, _classCallCheck2["default"])(this, CellMeasurerCache);
41
+ (0, _defineProperty2["default"])(this, "_cellHeightCache", {});
42
+ (0, _defineProperty2["default"])(this, "_cellWidthCache", {});
43
+ (0, _defineProperty2["default"])(this, "_columnWidthCache", {});
44
+ (0, _defineProperty2["default"])(this, "_rowHeightCache", {});
45
+ (0, _defineProperty2["default"])(this, "_defaultHeight", void 0);
46
+ (0, _defineProperty2["default"])(this, "_defaultWidth", void 0);
47
+ (0, _defineProperty2["default"])(this, "_minHeight", void 0);
48
+ (0, _defineProperty2["default"])(this, "_minWidth", void 0);
49
+ (0, _defineProperty2["default"])(this, "_keyMapper", void 0);
50
+ (0, _defineProperty2["default"])(this, "_hasFixedHeight", void 0);
51
+ (0, _defineProperty2["default"])(this, "_hasFixedWidth", void 0);
52
+ (0, _defineProperty2["default"])(this, "_columnCount", 0);
53
+ (0, _defineProperty2["default"])(this, "_rowCount", 0);
54
+ (0, _defineProperty2["default"])(this, "columnWidth", function (_ref /*:: */) {
55
+ var index = _ref /*:: */.index;
56
+ var key = _this._keyMapper(0, index);
57
+ return _this._columnWidthCache[key] !== undefined ? _this._columnWidthCache[key] : _this._defaultWidth;
58
+ });
59
+ (0, _defineProperty2["default"])(this, "rowHeight", function (_ref2 /*:: */) {
60
+ var index = _ref2 /*:: */.index;
61
+ var key = _this._keyMapper(index, 0);
62
+ return _this._rowHeightCache[key] !== undefined ? _this._rowHeightCache[key] : _this._defaultHeight;
63
+ });
64
+ var defaultHeight = params.defaultHeight,
65
+ defaultWidth = params.defaultWidth,
66
+ fixedHeight = params.fixedHeight,
67
+ fixedWidth = params.fixedWidth,
68
+ keyMapper = params.keyMapper,
69
+ minHeight = params.minHeight,
70
+ minWidth = params.minWidth;
71
+ this._hasFixedHeight = fixedHeight === true;
72
+ this._hasFixedWidth = fixedWidth === true;
73
+ this._minHeight = minHeight || 0;
74
+ this._minWidth = minWidth || 0;
75
+ this._keyMapper = keyMapper || defaultKeyMapper;
76
+ this._defaultHeight = Math.max(this._minHeight, typeof defaultHeight === 'number' ? defaultHeight : DEFAULT_HEIGHT);
77
+ this._defaultWidth = Math.max(this._minWidth, typeof defaultWidth === 'number' ? defaultWidth : DEFAULT_WIDTH);
78
+ if (process.env.NODE_ENV !== 'production') {
79
+ if (this._hasFixedHeight === false && this._hasFixedWidth === false) {
80
+ console.warn("CellMeasurerCache should only measure a cell's width or height. " + 'You have configured CellMeasurerCache to measure both. ' + 'This will result in poor performance.');
81
+ }
82
+ if (this._hasFixedHeight === false && this._defaultHeight === 0) {
83
+ console.warn('Fixed height CellMeasurerCache should specify a :defaultHeight greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');
84
+ }
85
+ if (this._hasFixedWidth === false && this._defaultWidth === 0) {
86
+ console.warn('Fixed width CellMeasurerCache should specify a :defaultWidth greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');
87
+ }
88
+ }
89
+ }
90
+ return (0, _createClass2["default"])(CellMeasurerCache, [{
91
+ key: "clear",
92
+ value: function clear(rowIndex /*: number*/) {
93
+ var columnIndex /*: number*/ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
94
+ var key = this._keyMapper(rowIndex, columnIndex);
95
+ delete this._cellHeightCache[key];
96
+ delete this._cellWidthCache[key];
97
+ this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);
98
+ }
99
+ }, {
100
+ key: "clearAll",
101
+ value: function clearAll() {
102
+ this._cellHeightCache = {};
103
+ this._cellWidthCache = {};
104
+ this._columnWidthCache = {};
105
+ this._rowHeightCache = {};
106
+ this._rowCount = 0;
107
+ this._columnCount = 0;
108
+ }
109
+ }, {
110
+ key: "defaultHeight",
111
+ get: function get() /*: number*/{
112
+ return this._defaultHeight;
113
+ }
114
+ }, {
115
+ key: "defaultWidth",
116
+ get: function get() /*: number*/{
117
+ return this._defaultWidth;
118
+ }
119
+ }, {
120
+ key: "hasFixedHeight",
121
+ value: function hasFixedHeight() /*: boolean*/{
122
+ return this._hasFixedHeight;
123
+ }
124
+ }, {
125
+ key: "hasFixedWidth",
126
+ value: function hasFixedWidth() /*: boolean*/{
127
+ return this._hasFixedWidth;
128
+ }
129
+ }, {
130
+ key: "getHeight",
131
+ value: function getHeight(rowIndex /*: number*/) /*: number*/{
132
+ var columnIndex /*: number*/ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
133
+ if (this._hasFixedHeight) {
134
+ return this._defaultHeight;
135
+ } else {
136
+ var _key = this._keyMapper(rowIndex, columnIndex);
137
+ return this._cellHeightCache[_key] !== undefined ? Math.max(this._minHeight, this._cellHeightCache[_key]) : this._defaultHeight;
138
+ }
139
+ }
140
+ }, {
141
+ key: "getWidth",
142
+ value: function getWidth(rowIndex /*: number*/) /*: number*/{
143
+ var columnIndex /*: number*/ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
144
+ if (this._hasFixedWidth) {
145
+ return this._defaultWidth;
146
+ } else {
147
+ var _key2 = this._keyMapper(rowIndex, columnIndex);
148
+ return this._cellWidthCache[_key2] !== undefined ? Math.max(this._minWidth, this._cellWidthCache[_key2]) : this._defaultWidth;
149
+ }
150
+ }
151
+ }, {
152
+ key: "has",
153
+ value: function has(rowIndex /*: number*/) /*: boolean*/{
154
+ var columnIndex /*: number*/ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
155
+ var key = this._keyMapper(rowIndex, columnIndex);
156
+ return this._cellHeightCache[key] !== undefined;
157
+ }
158
+ }, {
159
+ key: "set",
160
+ value: function set(rowIndex /*: number*/, columnIndex /*: number*/, width /*: number*/, height /*: number*/) /*: void*/{
161
+ var key = this._keyMapper(rowIndex, columnIndex);
162
+ if (columnIndex >= this._columnCount) {
163
+ this._columnCount = columnIndex + 1;
164
+ }
165
+ if (rowIndex >= this._rowCount) {
166
+ this._rowCount = rowIndex + 1;
167
+ }
168
+
169
+ // Size is cached per cell so we don't have to re-measure if cells are re-ordered.
170
+ this._cellHeightCache[key] = height;
171
+ this._cellWidthCache[key] = width;
172
+ this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);
173
+ }
174
+ }, {
175
+ key: "_updateCachedColumnAndRowSizes",
176
+ value: function _updateCachedColumnAndRowSizes(rowIndex /*: number*/, columnIndex /*: number*/) {
177
+ // :columnWidth and :rowHeight are derived based on all cells in a column/row.
178
+ // Pre-cache these derived values for faster lookup later.
179
+ // Reads are expected to occur more frequently than writes in this case.
180
+ // Only update non-fixed dimensions though to avoid doing unnecessary work.
181
+ if (!this._hasFixedWidth) {
182
+ var columnWidth = 0;
183
+ for (var i = 0; i < this._rowCount; i++) {
184
+ columnWidth = Math.max(columnWidth, this.getWidth(i, columnIndex));
185
+ }
186
+ var columnKey = this._keyMapper(0, columnIndex);
187
+ this._columnWidthCache[columnKey] = columnWidth;
188
+ }
189
+ if (!this._hasFixedHeight) {
190
+ var rowHeight = 0;
191
+ for (var _i = 0; _i < this._columnCount; _i++) {
192
+ rowHeight = Math.max(rowHeight, this.getHeight(rowIndex, _i));
193
+ }
194
+ var rowKey = this._keyMapper(rowIndex, 0);
195
+ this._rowHeightCache[rowKey] = rowHeight;
196
+ }
197
+ }
198
+ }]);
199
+ }();
200
+ function defaultKeyMapper(rowIndex /*: number*/, columnIndex /*: number*/) {
201
+ return "".concat(rowIndex, "-").concat(columnIndex);
202
+ }