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