@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,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _ScalingCellSizeAndPositionManager = _interopRequireDefault(require("./ScalingCellSizeAndPositionManager"));
|
|
5
|
+
describe('ScalingCellSizeAndPositionManager', function () {
|
|
6
|
+
function init() {
|
|
7
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
8
|
+
_ref$cellCount = _ref.cellCount,
|
|
9
|
+
cellCount = _ref$cellCount === void 0 ? 10 : _ref$cellCount,
|
|
10
|
+
_ref$cellSize = _ref.cellSize,
|
|
11
|
+
cellSize = _ref$cellSize === void 0 ? 10 : _ref$cellSize,
|
|
12
|
+
_ref$estimatedCellSiz = _ref.estimatedCellSize,
|
|
13
|
+
estimatedCellSize = _ref$estimatedCellSiz === void 0 ? 10 : _ref$estimatedCellSiz,
|
|
14
|
+
_ref$maxScrollSize = _ref.maxScrollSize,
|
|
15
|
+
maxScrollSize = _ref$maxScrollSize === void 0 ? 50 : _ref$maxScrollSize;
|
|
16
|
+
var cellSizeAndPositionManager = new _ScalingCellSizeAndPositionManager["default"]({
|
|
17
|
+
cellCount: cellCount,
|
|
18
|
+
cellSizeGetter: function cellSizeGetter() {
|
|
19
|
+
return cellSize;
|
|
20
|
+
},
|
|
21
|
+
estimatedCellSize: estimatedCellSize,
|
|
22
|
+
maxScrollSize: maxScrollSize
|
|
23
|
+
});
|
|
24
|
+
return cellSizeAndPositionManager;
|
|
25
|
+
}
|
|
26
|
+
describe('_getOffsetPercentage', function () {
|
|
27
|
+
it('should return the correct offset fraction', function () {
|
|
28
|
+
var expectations = [{
|
|
29
|
+
offset: 0,
|
|
30
|
+
expectedOffsetPercentage: 0
|
|
31
|
+
}, {
|
|
32
|
+
offset: 35,
|
|
33
|
+
expectedOffsetPercentage: 0.5
|
|
34
|
+
}, {
|
|
35
|
+
offset: 70,
|
|
36
|
+
expectedOffsetPercentage: 1
|
|
37
|
+
}];
|
|
38
|
+
var instance = init();
|
|
39
|
+
expectations.forEach(function (expectation) {
|
|
40
|
+
expect(instance._getOffsetPercentage({
|
|
41
|
+
containerSize: 30,
|
|
42
|
+
offset: expectation.offset,
|
|
43
|
+
totalSize: 100
|
|
44
|
+
})).toBe(expectation.expectedOffsetPercentage);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('getOffsetAdjustment', function () {
|
|
49
|
+
it('should always return 0 as the adjustment for unscaled lists', function () {
|
|
50
|
+
var maxScrollSizes = [100, 150];
|
|
51
|
+
maxScrollSizes.forEach(function (maxScrollSize) {
|
|
52
|
+
var instance = init({
|
|
53
|
+
cellCount: 10,
|
|
54
|
+
maxScrollSize: maxScrollSize
|
|
55
|
+
});
|
|
56
|
+
var offsets = [0, 35, 70];
|
|
57
|
+
offsets.forEach(function (offset) {
|
|
58
|
+
expect(instance.getOffsetAdjustment({
|
|
59
|
+
containerSize: 30,
|
|
60
|
+
offset: offset
|
|
61
|
+
})).toBe(0);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
it('should properly scale an offset at the beginning, middle, and end of the list', function () {
|
|
66
|
+
var offsetsAndExpectedAdjustements = [{
|
|
67
|
+
offset: 0,
|
|
68
|
+
expectedAdjustment: -0
|
|
69
|
+
}, {
|
|
70
|
+
offset: 10,
|
|
71
|
+
expectedAdjustment: -25
|
|
72
|
+
}, {
|
|
73
|
+
offset: 20,
|
|
74
|
+
expectedAdjustment: -50
|
|
75
|
+
}];
|
|
76
|
+
var instance = init();
|
|
77
|
+
offsetsAndExpectedAdjustements.forEach(function (offsetAndExpectedAdjustement) {
|
|
78
|
+
expect(instance.getOffsetAdjustment({
|
|
79
|
+
containerSize: 30,
|
|
80
|
+
offset: offsetAndExpectedAdjustement.offset
|
|
81
|
+
})).toBe(offsetAndExpectedAdjustement.expectedAdjustment);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
describe('getTotalSize', function () {
|
|
86
|
+
it('should return :totalSize if it is not greater than :maxScrollSize', function () {
|
|
87
|
+
var maxScrollSizes = [500, 750];
|
|
88
|
+
maxScrollSizes.forEach(function (maxScrollSize) {
|
|
89
|
+
var instance = init({
|
|
90
|
+
cellCount: 50,
|
|
91
|
+
maxScrollSize: maxScrollSize
|
|
92
|
+
});
|
|
93
|
+
expect(instance.getTotalSize()).toEqual(500);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
it('should return :maxScrollSize if :totalSize is greater', function () {
|
|
97
|
+
var instance = init({
|
|
98
|
+
cellCount: 100,
|
|
99
|
+
maxScrollSize: 100
|
|
100
|
+
});
|
|
101
|
+
expect(instance.getTotalSize()).toEqual(100);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
describe('getUpdatedOffsetForIndex', function () {
|
|
105
|
+
it('should scroll to a cell before the current range', function () {
|
|
106
|
+
var data = [{
|
|
107
|
+
targetIndex: 0,
|
|
108
|
+
expectedOffset: 0
|
|
109
|
+
}, {
|
|
110
|
+
targetIndex: 1,
|
|
111
|
+
expectedOffset: 3
|
|
112
|
+
},
|
|
113
|
+
// (unsafe: 10)
|
|
114
|
+
{
|
|
115
|
+
targetIndex: 2,
|
|
116
|
+
expectedOffset: 6
|
|
117
|
+
} // (unsafe: 20)
|
|
118
|
+
];
|
|
119
|
+
var instance = init();
|
|
120
|
+
data.forEach(function (datum) {
|
|
121
|
+
expect(instance.getUpdatedOffsetForIndex({
|
|
122
|
+
containerSize: 30,
|
|
123
|
+
currentOffset: 10,
|
|
124
|
+
// (unsafe: 35)
|
|
125
|
+
targetIndex: datum.targetIndex
|
|
126
|
+
})).toBe(datum.expectedOffset);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
it('should scroll to a cell after the current range', function () {
|
|
130
|
+
var data = [{
|
|
131
|
+
targetIndex: 7,
|
|
132
|
+
expectedOffset: 14
|
|
133
|
+
},
|
|
134
|
+
// (unsafe: 50)
|
|
135
|
+
{
|
|
136
|
+
targetIndex: 9,
|
|
137
|
+
expectedOffset: 20
|
|
138
|
+
} // (unsafe: 70)
|
|
139
|
+
];
|
|
140
|
+
var instance = init();
|
|
141
|
+
data.forEach(function (datum) {
|
|
142
|
+
expect(instance.getUpdatedOffsetForIndex({
|
|
143
|
+
containerSize: 30,
|
|
144
|
+
currentOffset: 0,
|
|
145
|
+
targetIndex: datum.targetIndex
|
|
146
|
+
})).toBe(datum.expectedOffset);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
it('should not scroll to a cell already visible within the current range', function () {
|
|
150
|
+
var instance = init();
|
|
151
|
+
expect(instance.getUpdatedOffsetForIndex({
|
|
152
|
+
containerSize: 30,
|
|
153
|
+
currentOffset: 10,
|
|
154
|
+
// (unsafe: 35)
|
|
155
|
+
targetIndex: 4
|
|
156
|
+
})).toBe(10);
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
describe('getVisibleCellRange', function () {
|
|
160
|
+
it('should correct identify the first set of cells', function () {
|
|
161
|
+
var instance = init();
|
|
162
|
+
expect(instance.getVisibleCellRange({
|
|
163
|
+
containerSize: 30,
|
|
164
|
+
offset: 0
|
|
165
|
+
})).toEqual({
|
|
166
|
+
start: 0,
|
|
167
|
+
stop: 2
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
it('should correct identify cells in the middle', function () {
|
|
171
|
+
var instance = init();
|
|
172
|
+
expect(instance.getVisibleCellRange({
|
|
173
|
+
containerSize: 30,
|
|
174
|
+
offset: 2.85 // (unsafe: 10)
|
|
175
|
+
})).toEqual({
|
|
176
|
+
start: 1,
|
|
177
|
+
stop: 3
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
it('should correct identify partially visible cells', function () {
|
|
181
|
+
var instance = init();
|
|
182
|
+
expect(instance.getVisibleCellRange({
|
|
183
|
+
containerSize: 30,
|
|
184
|
+
offset: 10 // (unsafe: 35)
|
|
185
|
+
})).toEqual({
|
|
186
|
+
start: 3,
|
|
187
|
+
stop: 6
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
it('should correct identify the last set of cells', function () {
|
|
191
|
+
var instance = init();
|
|
192
|
+
expect(instance.getVisibleCellRange({
|
|
193
|
+
containerSize: 30,
|
|
194
|
+
offset: 20
|
|
195
|
+
})).toEqual({
|
|
196
|
+
start: 7,
|
|
197
|
+
stop: 9
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
});
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
var _CellSizeAndPositionManager = _interopRequireDefault(require("./CellSizeAndPositionManager"));
|
|
13
|
+
var _maxElementSize = require("./maxElementSize.js");
|
|
14
|
+
var _excluded = ["maxScrollSize"];
|
|
15
|
+
/*:: import type {Alignment, CellSizeGetter, VisibleCellRange} from '../types';*/
|
|
16
|
+
/*:: type ContainerSizeAndOffset = {
|
|
17
|
+
containerSize: number,
|
|
18
|
+
offset: number,
|
|
19
|
+
};*/
|
|
20
|
+
/*:: type Params = {
|
|
21
|
+
maxScrollSize?: number,
|
|
22
|
+
cellCount: number,
|
|
23
|
+
cellSizeGetter: CellSizeGetter,
|
|
24
|
+
estimatedCellSize: number,
|
|
25
|
+
};*/
|
|
26
|
+
/**
|
|
27
|
+
* Browsers have scroll offset limitations (eg Chrome stops scrolling at ~33.5M pixels where as Edge tops out at ~1.5M pixels).
|
|
28
|
+
* After a certain position, the browser won't allow the user to scroll further (even via JavaScript scroll offset adjustments).
|
|
29
|
+
* This util picks a lower ceiling for max size and artificially adjusts positions within to make it transparent for users.
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* Extends CellSizeAndPositionManager and adds scaling behavior for lists that are too large to fit within a browser's native limits.
|
|
33
|
+
*/
|
|
34
|
+
var ScalingCellSizeAndPositionManager = exports["default"] = /*#__PURE__*/function () {
|
|
35
|
+
function ScalingCellSizeAndPositionManager(_ref /*:: */) {
|
|
36
|
+
var _ref$maxScrollSize = _ref /*:: */.maxScrollSize,
|
|
37
|
+
maxScrollSize = _ref$maxScrollSize === void 0 ? (0, _maxElementSize.getMaxElementSize)() : _ref$maxScrollSize,
|
|
38
|
+
params = (0, _objectWithoutProperties2["default"])(_ref /*:: */, _excluded);
|
|
39
|
+
(0, _classCallCheck2["default"])(this, ScalingCellSizeAndPositionManager);
|
|
40
|
+
(0, _defineProperty2["default"])(this, "_cellSizeAndPositionManager", void 0);
|
|
41
|
+
(0, _defineProperty2["default"])(this, "_maxScrollSize", void 0);
|
|
42
|
+
// Favor composition over inheritance to simplify IE10 support
|
|
43
|
+
this._cellSizeAndPositionManager = new _CellSizeAndPositionManager["default"](params);
|
|
44
|
+
this._maxScrollSize = maxScrollSize;
|
|
45
|
+
}
|
|
46
|
+
return (0, _createClass2["default"])(ScalingCellSizeAndPositionManager, [{
|
|
47
|
+
key: "areOffsetsAdjusted",
|
|
48
|
+
value: function areOffsetsAdjusted() /*: boolean*/{
|
|
49
|
+
return this._cellSizeAndPositionManager.getTotalSize() > this._maxScrollSize;
|
|
50
|
+
}
|
|
51
|
+
}, {
|
|
52
|
+
key: "configure",
|
|
53
|
+
value: function configure(params
|
|
54
|
+
/*: {
|
|
55
|
+
cellCount: number,
|
|
56
|
+
estimatedCellSize: number,
|
|
57
|
+
cellSizeGetter: CellSizeGetter,
|
|
58
|
+
}*/
|
|
59
|
+
) {
|
|
60
|
+
this._cellSizeAndPositionManager.configure(params);
|
|
61
|
+
}
|
|
62
|
+
}, {
|
|
63
|
+
key: "getCellCount",
|
|
64
|
+
value: function getCellCount() /*: number*/{
|
|
65
|
+
return this._cellSizeAndPositionManager.getCellCount();
|
|
66
|
+
}
|
|
67
|
+
}, {
|
|
68
|
+
key: "getEstimatedCellSize",
|
|
69
|
+
value: function getEstimatedCellSize() /*: number*/{
|
|
70
|
+
return this._cellSizeAndPositionManager.getEstimatedCellSize();
|
|
71
|
+
}
|
|
72
|
+
}, {
|
|
73
|
+
key: "getLastMeasuredIndex",
|
|
74
|
+
value: function getLastMeasuredIndex() /*: number*/{
|
|
75
|
+
return this._cellSizeAndPositionManager.getLastMeasuredIndex();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Number of pixels a cell at the given position (offset) should be shifted in order to fit within the scaled container.
|
|
80
|
+
* The offset passed to this function is scaled (safe) as well.
|
|
81
|
+
*/
|
|
82
|
+
}, {
|
|
83
|
+
key: "getOffsetAdjustment",
|
|
84
|
+
value: function getOffsetAdjustment(_ref2 /*:: */) /*: number*/{
|
|
85
|
+
var containerSize = _ref2 /*:: */.containerSize,
|
|
86
|
+
offset = _ref2 /*:: */.offset;
|
|
87
|
+
var totalSize = this._cellSizeAndPositionManager.getTotalSize();
|
|
88
|
+
var safeTotalSize = this.getTotalSize();
|
|
89
|
+
var offsetPercentage = this._getOffsetPercentage({
|
|
90
|
+
containerSize: containerSize,
|
|
91
|
+
offset: offset,
|
|
92
|
+
totalSize: safeTotalSize
|
|
93
|
+
});
|
|
94
|
+
return Math.round(offsetPercentage * (safeTotalSize - totalSize));
|
|
95
|
+
}
|
|
96
|
+
}, {
|
|
97
|
+
key: "getSizeAndPositionOfCell",
|
|
98
|
+
value: function getSizeAndPositionOfCell(index /*: number*/) {
|
|
99
|
+
return this._cellSizeAndPositionManager.getSizeAndPositionOfCell(index);
|
|
100
|
+
}
|
|
101
|
+
}, {
|
|
102
|
+
key: "getSizeAndPositionOfLastMeasuredCell",
|
|
103
|
+
value: function getSizeAndPositionOfLastMeasuredCell() {
|
|
104
|
+
return this._cellSizeAndPositionManager.getSizeAndPositionOfLastMeasuredCell();
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/** See CellSizeAndPositionManager#getTotalSize */
|
|
108
|
+
}, {
|
|
109
|
+
key: "getTotalSize",
|
|
110
|
+
value: function getTotalSize() /*: number*/{
|
|
111
|
+
return Math.min(this._maxScrollSize, this._cellSizeAndPositionManager.getTotalSize());
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** See CellSizeAndPositionManager#getUpdatedOffsetForIndex */
|
|
115
|
+
}, {
|
|
116
|
+
key: "getUpdatedOffsetForIndex",
|
|
117
|
+
value: function getUpdatedOffsetForIndex(_ref3 /*:: */) {
|
|
118
|
+
var _ref3$align = _ref3 /*:: */.align,
|
|
119
|
+
align = _ref3$align === void 0 ? 'auto' : _ref3$align,
|
|
120
|
+
containerSize = _ref3 /*:: */.containerSize,
|
|
121
|
+
currentOffset = _ref3 /*:: */.currentOffset,
|
|
122
|
+
targetIndex = _ref3 /*:: */.targetIndex;
|
|
123
|
+
currentOffset = this._safeOffsetToOffset({
|
|
124
|
+
containerSize: containerSize,
|
|
125
|
+
offset: currentOffset
|
|
126
|
+
});
|
|
127
|
+
var offset = this._cellSizeAndPositionManager.getUpdatedOffsetForIndex({
|
|
128
|
+
align: align,
|
|
129
|
+
containerSize: containerSize,
|
|
130
|
+
currentOffset: currentOffset,
|
|
131
|
+
targetIndex: targetIndex
|
|
132
|
+
});
|
|
133
|
+
return this._offsetToSafeOffset({
|
|
134
|
+
containerSize: containerSize,
|
|
135
|
+
offset: offset
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** See CellSizeAndPositionManager#getVisibleCellRange */
|
|
140
|
+
}, {
|
|
141
|
+
key: "getVisibleCellRange",
|
|
142
|
+
value: function getVisibleCellRange(_ref4 /*:: */) /*: VisibleCellRange*/{
|
|
143
|
+
var containerSize = _ref4 /*:: */.containerSize,
|
|
144
|
+
offset = _ref4 /*:: */.offset;
|
|
145
|
+
offset = this._safeOffsetToOffset({
|
|
146
|
+
containerSize: containerSize,
|
|
147
|
+
offset: offset
|
|
148
|
+
});
|
|
149
|
+
return this._cellSizeAndPositionManager.getVisibleCellRange({
|
|
150
|
+
containerSize: containerSize,
|
|
151
|
+
offset: offset
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}, {
|
|
155
|
+
key: "resetCell",
|
|
156
|
+
value: function resetCell(index /*: number*/) /*: void*/{
|
|
157
|
+
this._cellSizeAndPositionManager.resetCell(index);
|
|
158
|
+
}
|
|
159
|
+
}, {
|
|
160
|
+
key: "_getOffsetPercentage",
|
|
161
|
+
value: function _getOffsetPercentage(_ref5 /*:: */) {
|
|
162
|
+
var containerSize = _ref5 /*:: */.containerSize,
|
|
163
|
+
offset = _ref5 /*:: */.offset,
|
|
164
|
+
totalSize = _ref5 /*:: */.totalSize;
|
|
165
|
+
return totalSize <= containerSize ? 0 : offset / (totalSize - containerSize);
|
|
166
|
+
}
|
|
167
|
+
}, {
|
|
168
|
+
key: "_offsetToSafeOffset",
|
|
169
|
+
value: function _offsetToSafeOffset(_ref6 /*:: */) /*: number*/{
|
|
170
|
+
var containerSize = _ref6 /*:: */.containerSize,
|
|
171
|
+
offset = _ref6 /*:: */.offset;
|
|
172
|
+
var totalSize = this._cellSizeAndPositionManager.getTotalSize();
|
|
173
|
+
var safeTotalSize = this.getTotalSize();
|
|
174
|
+
if (totalSize === safeTotalSize) {
|
|
175
|
+
return offset;
|
|
176
|
+
} else {
|
|
177
|
+
var offsetPercentage = this._getOffsetPercentage({
|
|
178
|
+
containerSize: containerSize,
|
|
179
|
+
offset: offset,
|
|
180
|
+
totalSize: totalSize
|
|
181
|
+
});
|
|
182
|
+
return Math.round(offsetPercentage * (safeTotalSize - containerSize));
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}, {
|
|
186
|
+
key: "_safeOffsetToOffset",
|
|
187
|
+
value: function _safeOffsetToOffset(_ref7 /*:: */) /*: number*/{
|
|
188
|
+
var containerSize = _ref7 /*:: */.containerSize,
|
|
189
|
+
offset = _ref7 /*:: */.offset;
|
|
190
|
+
var totalSize = this._cellSizeAndPositionManager.getTotalSize();
|
|
191
|
+
var safeTotalSize = this.getTotalSize();
|
|
192
|
+
if (totalSize === safeTotalSize) {
|
|
193
|
+
return offset;
|
|
194
|
+
} else {
|
|
195
|
+
var offsetPercentage = this._getOffsetPercentage({
|
|
196
|
+
containerSize: containerSize,
|
|
197
|
+
offset: offset,
|
|
198
|
+
totalSize: safeTotalSize
|
|
199
|
+
});
|
|
200
|
+
return Math.round(offsetPercentage * (totalSize - containerSize));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}]);
|
|
204
|
+
}();
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _calculateSizeAndPositionDataAndUpdateScrollOffset = _interopRequireDefault(require("./calculateSizeAndPositionDataAndUpdateScrollOffset"));
|
|
5
|
+
describe('calculateSizeAndPositionDataAndUpdateScrollOffset', function () {
|
|
6
|
+
function helper() {
|
|
7
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
8
|
+
_ref$cellCount = _ref.cellCount,
|
|
9
|
+
cellCount = _ref$cellCount === void 0 ? 100 : _ref$cellCount,
|
|
10
|
+
_ref$cellSize = _ref.cellSize,
|
|
11
|
+
cellSize = _ref$cellSize === void 0 ? 10 : _ref$cellSize,
|
|
12
|
+
_ref$computeMetadataC = _ref.computeMetadataCallbackProps,
|
|
13
|
+
computeMetadataCallbackProps = _ref$computeMetadataC === void 0 ? {} : _ref$computeMetadataC,
|
|
14
|
+
_ref$nextCellsCount = _ref.nextCellsCount,
|
|
15
|
+
nextCellsCount = _ref$nextCellsCount === void 0 ? 100 : _ref$nextCellsCount,
|
|
16
|
+
_ref$nextCellSize = _ref.nextCellSize,
|
|
17
|
+
nextCellSize = _ref$nextCellSize === void 0 ? 10 : _ref$nextCellSize,
|
|
18
|
+
nextScrollToIndex = _ref.nextScrollToIndex,
|
|
19
|
+
scrollToIndex = _ref.scrollToIndex;
|
|
20
|
+
var computeMetadataCallbackCalls = [];
|
|
21
|
+
var updateScrollOffsetForScrollToIndexCalls = [];
|
|
22
|
+
(0, _calculateSizeAndPositionDataAndUpdateScrollOffset["default"])({
|
|
23
|
+
cellCount: cellCount,
|
|
24
|
+
cellSize: cellSize,
|
|
25
|
+
computeMetadataCallback: function computeMetadataCallback(params) {
|
|
26
|
+
return computeMetadataCallbackCalls.push(params);
|
|
27
|
+
},
|
|
28
|
+
computeMetadataCallbackProps: computeMetadataCallbackProps,
|
|
29
|
+
nextCellsCount: nextCellsCount,
|
|
30
|
+
nextCellSize: nextCellSize,
|
|
31
|
+
nextScrollToIndex: nextScrollToIndex,
|
|
32
|
+
scrollToIndex: scrollToIndex,
|
|
33
|
+
updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex(params) {
|
|
34
|
+
return updateScrollOffsetForScrollToIndexCalls.push(params);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
computeMetadataCallbackCalls: computeMetadataCallbackCalls,
|
|
39
|
+
updateScrollOffsetForScrollToIndexCalls: updateScrollOffsetForScrollToIndexCalls
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
it('should call :computeMetadataCallback if :cellCount has changed', function () {
|
|
43
|
+
var _helper = helper({
|
|
44
|
+
cellCount: 100,
|
|
45
|
+
nextCellsCount: 200
|
|
46
|
+
}),
|
|
47
|
+
computeMetadataCallbackCalls = _helper.computeMetadataCallbackCalls;
|
|
48
|
+
expect(computeMetadataCallbackCalls.length).toEqual(1);
|
|
49
|
+
});
|
|
50
|
+
it('should call :computeMetadataCallback if numeric :cellSize has changed', function () {
|
|
51
|
+
var _helper2 = helper({
|
|
52
|
+
cellSize: 10,
|
|
53
|
+
nextCellSize: 20
|
|
54
|
+
}),
|
|
55
|
+
computeMetadataCallbackCalls = _helper2.computeMetadataCallbackCalls;
|
|
56
|
+
expect(computeMetadataCallbackCalls.length).toEqual(1);
|
|
57
|
+
});
|
|
58
|
+
it('should not call :computeMetadataCallback if :cellSize callback has changed', function () {
|
|
59
|
+
var _helper3 = helper({
|
|
60
|
+
cellSize: function cellSize() {},
|
|
61
|
+
nextCellSize: function nextCellSize() {}
|
|
62
|
+
}),
|
|
63
|
+
computeMetadataCallbackCalls = _helper3.computeMetadataCallbackCalls;
|
|
64
|
+
expect(computeMetadataCallbackCalls.length).toEqual(0);
|
|
65
|
+
});
|
|
66
|
+
it('should not call :updateScrollOffsetForScrollToIndex if :scrollToIndex is not specified', function () {
|
|
67
|
+
var _helper4 = helper(),
|
|
68
|
+
updateScrollOffsetForScrollToIndexCalls = _helper4.updateScrollOffsetForScrollToIndexCalls;
|
|
69
|
+
expect(updateScrollOffsetForScrollToIndexCalls.length).toEqual(0);
|
|
70
|
+
});
|
|
71
|
+
it('should not call :updateScrollOffsetForScrollToIndex if :scrollToIndex has also changed', function () {
|
|
72
|
+
var _helper5 = helper({
|
|
73
|
+
scrollToIndex: 10,
|
|
74
|
+
nextScrollToIndex: 20
|
|
75
|
+
}),
|
|
76
|
+
updateScrollOffsetForScrollToIndexCalls = _helper5.updateScrollOffsetForScrollToIndexCalls;
|
|
77
|
+
expect(updateScrollOffsetForScrollToIndexCalls.length).toEqual(0);
|
|
78
|
+
});
|
|
79
|
+
it('should not call :computeMetadataCallback if the above conditions are not true', function () {
|
|
80
|
+
var _helper6 = helper(),
|
|
81
|
+
computeMetadataCallbackCalls = _helper6.computeMetadataCallbackCalls;
|
|
82
|
+
expect(computeMetadataCallbackCalls.length).toEqual(0);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = calculateSizeAndPositionDataAndUpdateScrollOffset;
|
|
7
|
+
/**
|
|
8
|
+
* Helper method that determines when to recalculate row or column metadata.
|
|
9
|
+
*/
|
|
10
|
+
/*:: type Params<T> = {
|
|
11
|
+
// Number of rows or columns in the current axis
|
|
12
|
+
cellCount: number,
|
|
13
|
+
|
|
14
|
+
// Width or height of cells for the current axis
|
|
15
|
+
cellSize: ?number,
|
|
16
|
+
|
|
17
|
+
// Method to invoke if cell metadata should be recalculated
|
|
18
|
+
computeMetadataCallback: (props: T) => void,
|
|
19
|
+
|
|
20
|
+
// Parameters to pass to :computeMetadataCallback
|
|
21
|
+
computeMetadataCallbackProps: T,
|
|
22
|
+
|
|
23
|
+
// Newly updated number of rows or columns in the current axis
|
|
24
|
+
nextCellsCount: number,
|
|
25
|
+
|
|
26
|
+
// Newly updated width or height of cells for the current axis
|
|
27
|
+
nextCellSize: ?number,
|
|
28
|
+
|
|
29
|
+
// Newly updated scroll-to-index
|
|
30
|
+
nextScrollToIndex: number,
|
|
31
|
+
|
|
32
|
+
// Scroll-to-index
|
|
33
|
+
scrollToIndex: number,
|
|
34
|
+
|
|
35
|
+
// Callback to invoke if the scroll position should be recalculated
|
|
36
|
+
updateScrollOffsetForScrollToIndex: () => void,
|
|
37
|
+
};*/
|
|
38
|
+
function calculateSizeAndPositionDataAndUpdateScrollOffset(_ref /*:: */) {
|
|
39
|
+
var cellCount = _ref /*:: */.cellCount,
|
|
40
|
+
cellSize = _ref /*:: */.cellSize,
|
|
41
|
+
computeMetadataCallback = _ref /*:: */.computeMetadataCallback,
|
|
42
|
+
computeMetadataCallbackProps = _ref /*:: */.computeMetadataCallbackProps,
|
|
43
|
+
nextCellsCount = _ref /*:: */.nextCellsCount,
|
|
44
|
+
nextCellSize = _ref /*:: */.nextCellSize,
|
|
45
|
+
nextScrollToIndex = _ref /*:: */.nextScrollToIndex,
|
|
46
|
+
scrollToIndex = _ref /*:: */.scrollToIndex,
|
|
47
|
+
updateScrollOffsetForScrollToIndex = _ref /*:: */.updateScrollOffsetForScrollToIndex;
|
|
48
|
+
// Don't compare cell sizes if they are functions because inline functions would cause infinite loops.
|
|
49
|
+
// In that event users should use the manual recompute methods to inform of changes.
|
|
50
|
+
if (cellCount !== nextCellsCount || (typeof cellSize === 'number' || typeof nextCellSize === 'number') && cellSize !== nextCellSize) {
|
|
51
|
+
computeMetadataCallback(computeMetadataCallbackProps);
|
|
52
|
+
|
|
53
|
+
// Updated cell metadata may have hidden the previous scrolled-to item.
|
|
54
|
+
// In this case we should also update the scrollTop to ensure it stays visible.
|
|
55
|
+
if (scrollToIndex >= 0 && scrollToIndex === nextScrollToIndex) {
|
|
56
|
+
updateScrollOffsetForScrollToIndex();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getMaxElementSize = void 0;
|
|
7
|
+
var DEFAULT_MAX_ELEMENT_SIZE = 1500000;
|
|
8
|
+
var CHROME_MAX_ELEMENT_SIZE = 1.67771e7;
|
|
9
|
+
var isBrowser = function isBrowser() {
|
|
10
|
+
return typeof window !== 'undefined';
|
|
11
|
+
};
|
|
12
|
+
var isChrome = function isChrome() {
|
|
13
|
+
return !!window.chrome;
|
|
14
|
+
};
|
|
15
|
+
var getMaxElementSize = exports.getMaxElementSize = function getMaxElementSize() /*: number*/{
|
|
16
|
+
if (isBrowser()) {
|
|
17
|
+
if (isChrome()) {
|
|
18
|
+
return CHROME_MAX_ELEMENT_SIZE;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return DEFAULT_MAX_ELEMENT_SIZE;
|
|
22
|
+
};
|