@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.
- package/LICENSE +22 -0
- package/README.md +34 -0
- package/changes.json +22 -0
- package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.example.js +184 -0
- package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.jest.js +338 -0
- package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.js +204 -0
- package/dist/commonjs/ArrowKeyStepper/index.js +19 -0
- package/dist/commonjs/ArrowKeyStepper/types.js +5 -0
- package/dist/commonjs/AutoSizer/AutoSizer.example.js +104 -0
- package/dist/commonjs/AutoSizer/AutoSizer.jest.js +341 -0
- package/dist/commonjs/AutoSizer/AutoSizer.js +199 -0
- package/dist/commonjs/AutoSizer/AutoSizer.ssr.js +25 -0
- package/dist/commonjs/AutoSizer/index.js +19 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightGrid.example.js +100 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightList.example.js +99 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightTableColumn.example.js +107 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicWidthGrid.example.js +102 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicWidthMultiGrid.example.js +107 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.example.js +129 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.jest.js +345 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.js +195 -0
- package/dist/commonjs/CellMeasurer/CellMeasurerCache.jest.js +298 -0
- package/dist/commonjs/CellMeasurer/CellMeasurerCache.js +202 -0
- package/dist/commonjs/CellMeasurer/index.js +22 -0
- package/dist/commonjs/CellMeasurer/types.js +14 -0
- package/dist/commonjs/Collection/Collection.example.js +231 -0
- package/dist/commonjs/Collection/Collection.jest.js +829 -0
- package/dist/commonjs/Collection/Collection.js +266 -0
- package/dist/commonjs/Collection/CollectionView.js +553 -0
- package/dist/commonjs/Collection/Section.jest.js +63 -0
- package/dist/commonjs/Collection/Section.js +57 -0
- package/dist/commonjs/Collection/SectionManager.jest.js +121 -0
- package/dist/commonjs/Collection/SectionManager.js +134 -0
- package/dist/commonjs/Collection/TestData.js +77 -0
- package/dist/commonjs/Collection/index.js +15 -0
- package/dist/commonjs/Collection/types.js +22 -0
- package/dist/commonjs/Collection/utils/calculateSizeAndPositionData.jest.js +34 -0
- package/dist/commonjs/Collection/utils/calculateSizeAndPositionData.js +38 -0
- package/dist/commonjs/ColumnSizer/ColumnSizer.example.js +159 -0
- package/dist/commonjs/ColumnSizer/ColumnSizer.jest.js +129 -0
- package/dist/commonjs/ColumnSizer/ColumnSizer.js +103 -0
- package/dist/commonjs/ColumnSizer/index.js +15 -0
- package/dist/commonjs/Grid/Grid.example.js +330 -0
- package/dist/commonjs/Grid/Grid.jest.js +2561 -0
- package/dist/commonjs/Grid/Grid.js +1432 -0
- package/dist/commonjs/Grid/Grid.ssr.js +62 -0
- package/dist/commonjs/Grid/accessibilityOverscanIndicesGetter.jest.js +92 -0
- package/dist/commonjs/Grid/accessibilityOverscanIndicesGetter.js +40 -0
- package/dist/commonjs/Grid/defaultCellRangeRenderer.js +139 -0
- package/dist/commonjs/Grid/defaultOverscanIndicesGetter.jest.js +92 -0
- package/dist/commonjs/Grid/defaultOverscanIndicesGetter.js +36 -0
- package/dist/commonjs/Grid/index.js +40 -0
- package/dist/commonjs/Grid/types.js +8 -0
- package/dist/commonjs/Grid/utils/CellSizeAndPositionManager.jest.js +375 -0
- package/dist/commonjs/Grid/utils/CellSizeAndPositionManager.js +296 -0
- package/dist/commonjs/Grid/utils/ScalingCellSizeAndPositionManager.jest.js +201 -0
- package/dist/commonjs/Grid/utils/ScalingCellSizeAndPositionManager.js +204 -0
- package/dist/commonjs/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.jest.js +84 -0
- package/dist/commonjs/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js +59 -0
- package/dist/commonjs/Grid/utils/maxElementSize.js +22 -0
- package/dist/commonjs/Grid/utils/updateScrollIndexHelper.jest.js +180 -0
- package/dist/commonjs/Grid/utils/updateScrollIndexHelper.js +85 -0
- package/dist/commonjs/InfiniteLoader/InfiniteLoader.example.js +179 -0
- package/dist/commonjs/InfiniteLoader/InfiniteLoader.jest.js +571 -0
- package/dist/commonjs/InfiniteLoader/InfiniteLoader.js +274 -0
- package/dist/commonjs/InfiniteLoader/index.js +15 -0
- package/dist/commonjs/List/List.example.js +236 -0
- package/dist/commonjs/List/List.jest.js +517 -0
- package/dist/commonjs/List/List.js +318 -0
- package/dist/commonjs/List/index.js +19 -0
- package/dist/commonjs/List/types.js +6 -0
- package/dist/commonjs/Masonry/Masonry.example.js +287 -0
- package/dist/commonjs/Masonry/Masonry.jest.js +450 -0
- package/dist/commonjs/Masonry/Masonry.js +431 -0
- package/dist/commonjs/Masonry/PositionCache.js +88 -0
- package/dist/commonjs/Masonry/createCellPositioner.js +59 -0
- package/dist/commonjs/Masonry/index.js +22 -0
- package/dist/commonjs/MultiGrid/CellMeasurerCacheDecorator.js +106 -0
- package/dist/commonjs/MultiGrid/MultiGrid.example.js +131 -0
- package/dist/commonjs/MultiGrid/MultiGrid.jest.js +584 -0
- package/dist/commonjs/MultiGrid/MultiGrid.js +743 -0
- package/dist/commonjs/MultiGrid/index.js +15 -0
- package/dist/commonjs/ScrollSync/ScrollSync.example.js +257 -0
- package/dist/commonjs/ScrollSync/ScrollSync.jest.js +66 -0
- package/dist/commonjs/ScrollSync/ScrollSync.js +88 -0
- package/dist/commonjs/ScrollSync/index.js +15 -0
- package/dist/commonjs/Table/Column.jest.js +90 -0
- package/dist/commonjs/Table/Column.js +93 -0
- package/dist/commonjs/Table/SortDirection.js +19 -0
- package/dist/commonjs/Table/SortIndicator.js +40 -0
- package/dist/commonjs/Table/Table.example.js +325 -0
- package/dist/commonjs/Table/Table.jest.js +1257 -0
- package/dist/commonjs/Table/Table.js +742 -0
- package/dist/commonjs/Table/createMultiSort.jest.js +165 -0
- package/dist/commonjs/Table/createMultiSort.js +99 -0
- package/dist/commonjs/Table/defaultCellDataGetter.js +21 -0
- package/dist/commonjs/Table/defaultCellRenderer.js +19 -0
- package/dist/commonjs/Table/defaultHeaderRenderer.js +35 -0
- package/dist/commonjs/Table/defaultHeaderRowRenderer.js +21 -0
- package/dist/commonjs/Table/defaultRowRenderer.js +87 -0
- package/dist/commonjs/Table/index.js +78 -0
- package/dist/commonjs/Table/types.js +39 -0
- package/dist/commonjs/WindowScroller/WindowScroller.e2e.js +298 -0
- package/dist/commonjs/WindowScroller/WindowScroller.example.js +167 -0
- package/dist/commonjs/WindowScroller/WindowScroller.header-resize.e2e.js +359 -0
- package/dist/commonjs/WindowScroller/WindowScroller.jest.js +536 -0
- package/dist/commonjs/WindowScroller/WindowScroller.js +268 -0
- package/dist/commonjs/WindowScroller/WindowScroller.ssr.js +25 -0
- package/dist/commonjs/WindowScroller/index.js +23 -0
- package/dist/commonjs/WindowScroller/utils/dimensions.js +89 -0
- package/dist/commonjs/WindowScroller/utils/onScroll.js +70 -0
- package/dist/commonjs/index.js +180 -0
- package/dist/commonjs/jest-setup.js +7 -0
- package/dist/commonjs/utils/TestHelper.js +36 -0
- package/dist/commonjs/utils/animationFrame.js +29 -0
- package/dist/commonjs/utils/createCallbackMemoizer.jest.js +219 -0
- package/dist/commonjs/utils/createCallbackMemoizer.js +31 -0
- package/dist/commonjs/utils/getUpdatedOffsetForIndex.jest.js +68 -0
- package/dist/commonjs/utils/getUpdatedOffsetForIndex.js +38 -0
- package/dist/commonjs/utils/initCellMetadata.js +37 -0
- package/dist/commonjs/utils/requestAnimationTimeout.js +38 -0
- package/dist/commonjs/vendor/binarySearchBounds.js +200 -0
- package/dist/commonjs/vendor/detectElementResize.js +192 -0
- package/dist/commonjs/vendor/intervalTree.js +361 -0
- package/dist/es/ArrowKeyStepper/ArrowKeyStepper.example.js +176 -0
- package/dist/es/ArrowKeyStepper/ArrowKeyStepper.jest.js +332 -0
- package/dist/es/ArrowKeyStepper/ArrowKeyStepper.js +197 -0
- package/dist/es/ArrowKeyStepper/index.js +3 -0
- package/dist/es/ArrowKeyStepper/types.js +4 -0
- package/dist/es/AutoSizer/AutoSizer.example.js +96 -0
- package/dist/es/AutoSizer/AutoSizer.jest.js +335 -0
- package/dist/es/AutoSizer/AutoSizer.js +190 -0
- package/dist/es/AutoSizer/AutoSizer.js.flow +200 -0
- package/dist/es/AutoSizer/AutoSizer.ssr.js +19 -0
- package/dist/es/AutoSizer/index.js +2 -0
- package/dist/es/AutoSizer/index.js.flow +4 -0
- package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightGrid.example.js +91 -0
- package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightList.example.js +90 -0
- package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightTableColumn.example.js +98 -0
- package/dist/es/CellMeasurer/CellMeasurer.DynamicWidthGrid.example.js +93 -0
- package/dist/es/CellMeasurer/CellMeasurer.DynamicWidthMultiGrid.example.js +98 -0
- package/dist/es/CellMeasurer/CellMeasurer.example.js +120 -0
- package/dist/es/CellMeasurer/CellMeasurer.jest.js +340 -0
- package/dist/es/CellMeasurer/CellMeasurer.js +187 -0
- package/dist/es/CellMeasurer/CellMeasurerCache.jest.js +293 -0
- package/dist/es/CellMeasurer/CellMeasurerCache.js +196 -0
- package/dist/es/CellMeasurer/index.js +4 -0
- package/dist/es/CellMeasurer/types.js +13 -0
- package/dist/es/Collection/Collection.example.js +223 -0
- package/dist/es/Collection/Collection.jest.js +824 -0
- package/dist/es/Collection/Collection.js +257 -0
- package/dist/es/Collection/CollectionView.js +544 -0
- package/dist/es/Collection/Section.jest.js +60 -0
- package/dist/es/Collection/Section.js +51 -0
- package/dist/es/Collection/SectionManager.jest.js +118 -0
- package/dist/es/Collection/SectionManager.js +128 -0
- package/dist/es/Collection/TestData.js +71 -0
- package/dist/es/Collection/index.js +3 -0
- package/dist/es/Collection/types.js +21 -0
- package/dist/es/Collection/utils/calculateSizeAndPositionData.jest.js +31 -0
- package/dist/es/Collection/utils/calculateSizeAndPositionData.js +31 -0
- package/dist/es/ColumnSizer/ColumnSizer.example.js +150 -0
- package/dist/es/ColumnSizer/ColumnSizer.jest.js +123 -0
- package/dist/es/ColumnSizer/ColumnSizer.js +95 -0
- package/dist/es/ColumnSizer/index.js +3 -0
- package/dist/es/Grid/Grid.example.js +321 -0
- package/dist/es/Grid/Grid.jest.js +2555 -0
- package/dist/es/Grid/Grid.js +1425 -0
- package/dist/es/Grid/Grid.ssr.js +57 -0
- package/dist/es/Grid/accessibilityOverscanIndicesGetter.jest.js +87 -0
- package/dist/es/Grid/accessibilityOverscanIndicesGetter.js +33 -0
- package/dist/es/Grid/defaultCellRangeRenderer.js +134 -0
- package/dist/es/Grid/defaultOverscanIndicesGetter.jest.js +87 -0
- package/dist/es/Grid/defaultOverscanIndicesGetter.js +29 -0
- package/dist/es/Grid/index.js +15 -0
- package/dist/es/Grid/types.js +96 -0
- package/dist/es/Grid/utils/CellSizeAndPositionManager.jest.js +372 -0
- package/dist/es/Grid/utils/CellSizeAndPositionManager.js +290 -0
- package/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.jest.js +198 -0
- package/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.js +198 -0
- package/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.jest.js +81 -0
- package/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js +53 -0
- package/dist/es/Grid/utils/maxElementSize.js +16 -0
- package/dist/es/Grid/utils/updateScrollIndexHelper.jest.js +174 -0
- package/dist/es/Grid/utils/updateScrollIndexHelper.js +79 -0
- package/dist/es/InfiniteLoader/InfiniteLoader.example.js +170 -0
- package/dist/es/InfiniteLoader/InfiniteLoader.jest.js +565 -0
- package/dist/es/InfiniteLoader/InfiniteLoader.js +263 -0
- package/dist/es/InfiniteLoader/index.js +3 -0
- package/dist/es/List/List.example.js +227 -0
- package/dist/es/List/List.jest.js +511 -0
- package/dist/es/List/List.js +312 -0
- package/dist/es/List/index.js +3 -0
- package/dist/es/List/types.js +21 -0
- package/dist/es/Masonry/Masonry.example.js +278 -0
- package/dist/es/Masonry/Masonry.jest.js +444 -0
- package/dist/es/Masonry/Masonry.js +421 -0
- package/dist/es/Masonry/PositionCache.js +82 -0
- package/dist/es/Masonry/createCellPositioner.js +53 -0
- package/dist/es/Masonry/index.js +4 -0
- package/dist/es/MultiGrid/CellMeasurerCacheDecorator.js +100 -0
- package/dist/es/MultiGrid/MultiGrid.example.js +122 -0
- package/dist/es/MultiGrid/MultiGrid.jest.js +579 -0
- package/dist/es/MultiGrid/MultiGrid.js +733 -0
- package/dist/es/MultiGrid/index.js +3 -0
- package/dist/es/ScrollSync/ScrollSync.example.js +248 -0
- package/dist/es/ScrollSync/ScrollSync.jest.js +60 -0
- package/dist/es/ScrollSync/ScrollSync.js +80 -0
- package/dist/es/ScrollSync/index.js +3 -0
- package/dist/es/Table/Column.jest.js +84 -0
- package/dist/es/Table/Column.js +85 -0
- package/dist/es/Table/SortDirection.js +13 -0
- package/dist/es/Table/SortIndicator.js +31 -0
- package/dist/es/Table/Table.example.js +316 -0
- package/dist/es/Table/Table.jest.js +1251 -0
- package/dist/es/Table/Table.js +735 -0
- package/dist/es/Table/createMultiSort.jest.js +162 -0
- package/dist/es/Table/createMultiSort.js +93 -0
- package/dist/es/Table/defaultCellDataGetter.js +15 -0
- package/dist/es/Table/defaultCellRenderer.js +13 -0
- package/dist/es/Table/defaultHeaderRenderer.js +25 -0
- package/dist/es/Table/defaultHeaderRowRenderer.js +12 -0
- package/dist/es/Table/defaultRowRenderer.js +77 -0
- package/dist/es/Table/index.js +12 -0
- package/dist/es/Table/types.js +38 -0
- package/dist/es/WindowScroller/WindowScroller.e2e.js +295 -0
- package/dist/es/WindowScroller/WindowScroller.example.js +158 -0
- package/dist/es/WindowScroller/WindowScroller.header-resize.e2e.js +356 -0
- package/dist/es/WindowScroller/WindowScroller.jest.js +530 -0
- package/dist/es/WindowScroller/WindowScroller.js +259 -0
- package/dist/es/WindowScroller/WindowScroller.js.flow +277 -0
- package/dist/es/WindowScroller/WindowScroller.ssr.js +19 -0
- package/dist/es/WindowScroller/index.js +3 -0
- package/dist/es/WindowScroller/index.js.flow +6 -0
- package/dist/es/WindowScroller/utils/dimensions.js +81 -0
- package/dist/es/WindowScroller/utils/dimensions.js.flow +91 -0
- package/dist/es/WindowScroller/utils/onScroll.js +64 -0
- package/dist/es/WindowScroller/utils/onScroll.js.flow +94 -0
- package/dist/es/index.js +13 -0
- package/dist/es/jest-setup.js +5 -0
- package/dist/es/utils/TestHelper.js +30 -0
- package/dist/es/utils/animationFrame.js +23 -0
- package/dist/es/utils/createCallbackMemoizer.jest.js +216 -0
- package/dist/es/utils/createCallbackMemoizer.js +25 -0
- package/dist/es/utils/getUpdatedOffsetForIndex.jest.js +65 -0
- package/dist/es/utils/getUpdatedOffsetForIndex.js +32 -0
- package/dist/es/utils/initCellMetadata.js +31 -0
- package/dist/es/utils/requestAnimationTimeout.js +32 -0
- package/dist/es/vendor/binarySearchBounds.js +194 -0
- package/dist/es/vendor/detectElementResize.js +186 -0
- package/dist/es/vendor/intervalTree.js +354 -0
- package/dist/umd/react-virtualized.js +4638 -0
- package/package.json +188 -0
- 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
|
+
}
|