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