@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,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getCellMetadata = getCellMetadata;
|
|
8
|
+
var _initCellMetadata = _interopRequireDefault(require("./initCellMetadata"));
|
|
9
|
+
// Default cell sizes and offsets for use in below tests
|
|
10
|
+
function getCellMetadata() {
|
|
11
|
+
var cellSizes = [10,
|
|
12
|
+
// 0: 0..0 (min)
|
|
13
|
+
20,
|
|
14
|
+
// 1: 0..10
|
|
15
|
+
15,
|
|
16
|
+
// 2: 0..30
|
|
17
|
+
10,
|
|
18
|
+
// 3: 5..45
|
|
19
|
+
15,
|
|
20
|
+
// 4: 20..55
|
|
21
|
+
30,
|
|
22
|
+
// 5: 50..70
|
|
23
|
+
20,
|
|
24
|
+
// 6: 70..100
|
|
25
|
+
10,
|
|
26
|
+
// 7: 80..110
|
|
27
|
+
30 // 8: 110..110 (max)
|
|
28
|
+
];
|
|
29
|
+
return (0, _initCellMetadata["default"])({
|
|
30
|
+
cellCount: cellSizes.length,
|
|
31
|
+
size: function size(_ref) {
|
|
32
|
+
var index = _ref.index;
|
|
33
|
+
return cellSizes[index];
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.raf = exports.caf = void 0;
|
|
7
|
+
/*:: type Callback = (timestamp: number) => void;*/
|
|
8
|
+
/*:: type CancelAnimationFrame = (requestId: number) => void;*/
|
|
9
|
+
/*:: type RequestAnimationFrame = (callback: Callback) => number;*/
|
|
10
|
+
// Properly handle server-side rendering.
|
|
11
|
+
var win;
|
|
12
|
+
if (typeof window !== 'undefined') {
|
|
13
|
+
win = window;
|
|
14
|
+
} else if (typeof self !== 'undefined') {
|
|
15
|
+
win = self;
|
|
16
|
+
} else {
|
|
17
|
+
win = {};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// requestAnimationFrame() shim by Paul Irish
|
|
21
|
+
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
|
|
22
|
+
var request = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.oRequestAnimationFrame || win.msRequestAnimationFrame || function (callback /*: Callback*/) /*: RequestAnimationFrame*/{
|
|
23
|
+
return (win /*: any*/).setTimeout(callback, 1000 / 60);
|
|
24
|
+
};
|
|
25
|
+
var cancel = win.cancelAnimationFrame || win.webkitCancelAnimationFrame || win.mozCancelAnimationFrame || win.oCancelAnimationFrame || win.msCancelAnimationFrame || function (id /*: number*/) {
|
|
26
|
+
(win /*: any*/).clearTimeout(id);
|
|
27
|
+
};
|
|
28
|
+
var raf /*: RequestAnimationFrame*/ = exports.raf = (request /*: any*/);
|
|
29
|
+
var caf /*: CancelAnimationFrame*/ = exports.caf = (cancel /*: any*/);
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _createCallbackMemoizer = _interopRequireDefault(require("./createCallbackMemoizer"));
|
|
5
|
+
describe('createCallbackMemoizer', function () {
|
|
6
|
+
function OnRowsRendered() {
|
|
7
|
+
var _numCalls = 0;
|
|
8
|
+
var _overscanStartIndex;
|
|
9
|
+
var _overscanStopIndex;
|
|
10
|
+
var _startIndex;
|
|
11
|
+
var _stopIndex;
|
|
12
|
+
return {
|
|
13
|
+
numCalls: function numCalls() {
|
|
14
|
+
return _numCalls;
|
|
15
|
+
},
|
|
16
|
+
overscanStartIndex: function overscanStartIndex() {
|
|
17
|
+
return _overscanStartIndex;
|
|
18
|
+
},
|
|
19
|
+
overscanStopIndex: function overscanStopIndex() {
|
|
20
|
+
return _overscanStopIndex;
|
|
21
|
+
},
|
|
22
|
+
startIndex: function startIndex() {
|
|
23
|
+
return _startIndex;
|
|
24
|
+
},
|
|
25
|
+
stopIndex: function stopIndex() {
|
|
26
|
+
return _stopIndex;
|
|
27
|
+
},
|
|
28
|
+
update: function update(params) {
|
|
29
|
+
_overscanStartIndex = params.overscanStartIndex;
|
|
30
|
+
_overscanStopIndex = params.overscanStopIndex;
|
|
31
|
+
_startIndex = params.startIndex;
|
|
32
|
+
_stopIndex = params.stopIndex;
|
|
33
|
+
_numCalls++;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
it('should not call onRowsRendered if startIndex or stopIndex are invalid', function () {
|
|
38
|
+
var util = new OnRowsRendered();
|
|
39
|
+
var helper = (0, _createCallbackMemoizer["default"])();
|
|
40
|
+
helper({
|
|
41
|
+
callback: util.update,
|
|
42
|
+
indices: {
|
|
43
|
+
startIndex: 0,
|
|
44
|
+
stopIndex: undefined
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
expect(util.numCalls()).toEqual(0);
|
|
48
|
+
helper({
|
|
49
|
+
callback: util.update,
|
|
50
|
+
indices: {
|
|
51
|
+
startIndex: undefined,
|
|
52
|
+
stopIndex: 0
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
expect(util.numCalls()).toEqual(0);
|
|
56
|
+
});
|
|
57
|
+
it('should call onRowsRendered if startIndex and stopIndex are valid', function () {
|
|
58
|
+
var util = new OnRowsRendered();
|
|
59
|
+
var helper = (0, _createCallbackMemoizer["default"])();
|
|
60
|
+
helper({
|
|
61
|
+
callback: util.update,
|
|
62
|
+
indices: {
|
|
63
|
+
startIndex: 0,
|
|
64
|
+
stopIndex: 1
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
expect(util.numCalls()).toEqual(1);
|
|
68
|
+
expect(util.startIndex()).toEqual(0);
|
|
69
|
+
expect(util.stopIndex()).toEqual(1);
|
|
70
|
+
});
|
|
71
|
+
it('should call onRowsRendered if startIndex and stopIndex are invalid but :requireAllKeys is false', function () {
|
|
72
|
+
var util = new OnRowsRendered();
|
|
73
|
+
var helper = (0, _createCallbackMemoizer["default"])(false);
|
|
74
|
+
helper({
|
|
75
|
+
callback: util.update,
|
|
76
|
+
indices: {
|
|
77
|
+
startIndex: undefined,
|
|
78
|
+
stopIndex: 1
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
expect(util.numCalls()).toEqual(1);
|
|
82
|
+
expect(util.startIndex()).toEqual(undefined);
|
|
83
|
+
expect(util.stopIndex()).toEqual(1);
|
|
84
|
+
});
|
|
85
|
+
it('should not call onRowsRendered if startIndex or stopIndex have not changed', function () {
|
|
86
|
+
var util = new OnRowsRendered();
|
|
87
|
+
var helper = (0, _createCallbackMemoizer["default"])();
|
|
88
|
+
helper({
|
|
89
|
+
callback: util.update,
|
|
90
|
+
indices: {
|
|
91
|
+
startIndex: 0,
|
|
92
|
+
stopIndex: 1
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
expect(util.numCalls()).toEqual(1);
|
|
96
|
+
expect(util.startIndex()).toEqual(0);
|
|
97
|
+
expect(util.stopIndex()).toEqual(1);
|
|
98
|
+
helper({
|
|
99
|
+
callback: util.update,
|
|
100
|
+
indices: {
|
|
101
|
+
startIndex: 0,
|
|
102
|
+
stopIndex: 1
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
expect(util.numCalls()).toEqual(1);
|
|
106
|
+
});
|
|
107
|
+
it('should not call onRowsRendered if startIndex or stopIndex have changed', function () {
|
|
108
|
+
var util = new OnRowsRendered();
|
|
109
|
+
var helper = (0, _createCallbackMemoizer["default"])();
|
|
110
|
+
helper({
|
|
111
|
+
callback: util.update,
|
|
112
|
+
indices: {
|
|
113
|
+
startIndex: 0,
|
|
114
|
+
stopIndex: 1
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
expect(util.numCalls()).toEqual(1);
|
|
118
|
+
expect(util.startIndex()).toEqual(0);
|
|
119
|
+
expect(util.stopIndex()).toEqual(1);
|
|
120
|
+
helper({
|
|
121
|
+
callback: util.update,
|
|
122
|
+
indices: {
|
|
123
|
+
startIndex: 1,
|
|
124
|
+
stopIndex: 1
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
expect(util.numCalls()).toEqual(2);
|
|
128
|
+
expect(util.startIndex()).toEqual(1);
|
|
129
|
+
expect(util.stopIndex()).toEqual(1);
|
|
130
|
+
helper({
|
|
131
|
+
callback: util.update,
|
|
132
|
+
indices: {
|
|
133
|
+
startIndex: 1,
|
|
134
|
+
stopIndex: 2
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
expect(util.numCalls()).toEqual(3);
|
|
138
|
+
expect(util.startIndex()).toEqual(1);
|
|
139
|
+
expect(util.stopIndex()).toEqual(2);
|
|
140
|
+
});
|
|
141
|
+
it('should call onRowsRendered if :overscanCellsCount changes', function () {
|
|
142
|
+
var util = new OnRowsRendered();
|
|
143
|
+
var helper = (0, _createCallbackMemoizer["default"])();
|
|
144
|
+
helper({
|
|
145
|
+
callback: util.update,
|
|
146
|
+
indices: {
|
|
147
|
+
overscanStartIndex: 0,
|
|
148
|
+
overscanStopIndex: 2,
|
|
149
|
+
startIndex: 0,
|
|
150
|
+
stopIndex: 1
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
expect(util.numCalls()).toEqual(1);
|
|
154
|
+
expect(util.startIndex()).toEqual(0);
|
|
155
|
+
expect(util.stopIndex()).toEqual(1);
|
|
156
|
+
expect(util.overscanStartIndex()).toEqual(0);
|
|
157
|
+
expect(util.overscanStopIndex()).toEqual(2);
|
|
158
|
+
helper({
|
|
159
|
+
callback: util.update,
|
|
160
|
+
indices: {
|
|
161
|
+
overscanStartIndex: 0,
|
|
162
|
+
overscanStopIndex: 3,
|
|
163
|
+
startIndex: 0,
|
|
164
|
+
stopIndex: 1
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
expect(util.numCalls()).toEqual(2);
|
|
168
|
+
expect(util.startIndex()).toEqual(0);
|
|
169
|
+
expect(util.stopIndex()).toEqual(1);
|
|
170
|
+
expect(util.overscanStartIndex()).toEqual(0);
|
|
171
|
+
expect(util.overscanStopIndex()).toEqual(3);
|
|
172
|
+
});
|
|
173
|
+
it('should support an array of indices', function () {
|
|
174
|
+
var numCalls = 0;
|
|
175
|
+
var indices;
|
|
176
|
+
var callback = function callback(params) {
|
|
177
|
+
indices = params;
|
|
178
|
+
numCalls++;
|
|
179
|
+
};
|
|
180
|
+
var helper = (0, _createCallbackMemoizer["default"])();
|
|
181
|
+
helper({
|
|
182
|
+
callback: callback,
|
|
183
|
+
indices: [0, 1, 2]
|
|
184
|
+
});
|
|
185
|
+
expect(numCalls).toEqual(1);
|
|
186
|
+
expect(indices).toEqual([0, 1, 2]);
|
|
187
|
+
helper({
|
|
188
|
+
callback: callback,
|
|
189
|
+
indices: [0, 1]
|
|
190
|
+
});
|
|
191
|
+
expect(numCalls).toEqual(2);
|
|
192
|
+
expect(indices).toEqual([0, 1]);
|
|
193
|
+
});
|
|
194
|
+
it('should support an attribute containing an array of indices', function () {
|
|
195
|
+
var numCalls = 0;
|
|
196
|
+
var indices;
|
|
197
|
+
var callback = function callback(params) {
|
|
198
|
+
indices = params.indices;
|
|
199
|
+
numCalls++;
|
|
200
|
+
};
|
|
201
|
+
var helper = (0, _createCallbackMemoizer["default"])();
|
|
202
|
+
helper({
|
|
203
|
+
callback: callback,
|
|
204
|
+
indices: {
|
|
205
|
+
indices: [0, 1, 2]
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
expect(numCalls).toEqual(1);
|
|
209
|
+
expect(indices).toEqual([0, 1, 2]);
|
|
210
|
+
helper({
|
|
211
|
+
callback: callback,
|
|
212
|
+
indices: {
|
|
213
|
+
indices: [0, 1]
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
expect(numCalls).toEqual(2);
|
|
217
|
+
expect(indices).toEqual([0, 1]);
|
|
218
|
+
});
|
|
219
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = createCallbackMemoizer;
|
|
7
|
+
/**
|
|
8
|
+
* Helper utility that updates the specified callback whenever any of the specified indices have changed.
|
|
9
|
+
*/
|
|
10
|
+
function createCallbackMemoizer() {
|
|
11
|
+
var requireAllKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
12
|
+
var cachedIndices = {};
|
|
13
|
+
return function (_ref) {
|
|
14
|
+
var callback = _ref.callback,
|
|
15
|
+
indices = _ref.indices;
|
|
16
|
+
var keys = Object.keys(indices);
|
|
17
|
+
var allInitialized = !requireAllKeys || keys.every(function (key) {
|
|
18
|
+
var value = indices[key];
|
|
19
|
+
return Array.isArray(value) ? value.length > 0 : value >= 0;
|
|
20
|
+
});
|
|
21
|
+
var indexChanged = keys.length !== Object.keys(cachedIndices).length || keys.some(function (key) {
|
|
22
|
+
var cachedValue = cachedIndices[key];
|
|
23
|
+
var value = indices[key];
|
|
24
|
+
return Array.isArray(value) ? cachedValue.join(',') !== value.join(',') : cachedValue !== value;
|
|
25
|
+
});
|
|
26
|
+
cachedIndices = indices;
|
|
27
|
+
if (allInitialized && indexChanged) {
|
|
28
|
+
callback(indices);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _getUpdatedOffsetForIndex = _interopRequireDefault(require("./getUpdatedOffsetForIndex"));
|
|
5
|
+
var _TestHelper = require("./TestHelper");
|
|
6
|
+
describe('getUpdatedOffsetForIndex', function () {
|
|
7
|
+
function testHelper(targetIndex, currentOffset) {
|
|
8
|
+
var cellMetadata = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : (0, _TestHelper.getCellMetadata)();
|
|
9
|
+
return (0, _getUpdatedOffsetForIndex["default"])({
|
|
10
|
+
cellOffset: cellMetadata[targetIndex].offset,
|
|
11
|
+
cellSize: cellMetadata[targetIndex].size,
|
|
12
|
+
containerSize: 50,
|
|
13
|
+
currentOffset: currentOffset
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
it('should scroll to the beginning', function () {
|
|
17
|
+
expect(testHelper(0, 100)).toEqual(0);
|
|
18
|
+
});
|
|
19
|
+
it('should scroll forward to the middle', function () {
|
|
20
|
+
expect(testHelper(4, 0)).toEqual(20);
|
|
21
|
+
});
|
|
22
|
+
it('should scroll backward to the middle', function () {
|
|
23
|
+
expect(testHelper(2, 100)).toEqual(30);
|
|
24
|
+
});
|
|
25
|
+
it('should not scroll if an item is already visible', function () {
|
|
26
|
+
expect(testHelper(2, 20)).toEqual(20);
|
|
27
|
+
});
|
|
28
|
+
it('should scroll to the end', function () {
|
|
29
|
+
expect(testHelper(8, 0)).toEqual(110);
|
|
30
|
+
});
|
|
31
|
+
it('should honor specified :align values', function () {
|
|
32
|
+
expect((0, _getUpdatedOffsetForIndex["default"])({
|
|
33
|
+
align: 'auto',
|
|
34
|
+
cellOffset: 50,
|
|
35
|
+
cellSize: 10,
|
|
36
|
+
containerSize: 50,
|
|
37
|
+
currentOffset: 0
|
|
38
|
+
})).toEqual(10);
|
|
39
|
+
expect((0, _getUpdatedOffsetForIndex["default"])({
|
|
40
|
+
align: 'start',
|
|
41
|
+
cellOffset: 50,
|
|
42
|
+
cellSize: 10,
|
|
43
|
+
containerSize: 50,
|
|
44
|
+
currentOffset: 0
|
|
45
|
+
})).toEqual(50);
|
|
46
|
+
expect((0, _getUpdatedOffsetForIndex["default"])({
|
|
47
|
+
align: 'auto',
|
|
48
|
+
cellOffset: 50,
|
|
49
|
+
cellSize: 10,
|
|
50
|
+
containerSize: 50,
|
|
51
|
+
currentOffset: 100
|
|
52
|
+
})).toEqual(50);
|
|
53
|
+
expect((0, _getUpdatedOffsetForIndex["default"])({
|
|
54
|
+
align: 'end',
|
|
55
|
+
cellOffset: 50,
|
|
56
|
+
cellSize: 10,
|
|
57
|
+
containerSize: 50,
|
|
58
|
+
currentOffset: 100
|
|
59
|
+
})).toEqual(10);
|
|
60
|
+
expect((0, _getUpdatedOffsetForIndex["default"])({
|
|
61
|
+
align: 'center',
|
|
62
|
+
cellOffset: 50,
|
|
63
|
+
cellSize: 10,
|
|
64
|
+
containerSize: 50,
|
|
65
|
+
currentOffset: 100
|
|
66
|
+
})).toEqual(30);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = getUpdatedOffsetForIndex;
|
|
7
|
+
/**
|
|
8
|
+
* Determines a new offset that ensures a certain cell is visible, given the current offset.
|
|
9
|
+
* If the cell is already visible then the current offset will be returned.
|
|
10
|
+
* If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.
|
|
11
|
+
*
|
|
12
|
+
* @param align Desired alignment within container; one of "auto" (default), "start", or "end"
|
|
13
|
+
* @param cellOffset Offset (x or y) position for cell
|
|
14
|
+
* @param cellSize Size (width or height) of cell
|
|
15
|
+
* @param containerSize Total size (width or height) of the container
|
|
16
|
+
* @param currentOffset Container's current (x or y) offset
|
|
17
|
+
* @return Offset to use to ensure the specified cell is visible
|
|
18
|
+
*/
|
|
19
|
+
function getUpdatedOffsetForIndex(_ref) {
|
|
20
|
+
var _ref$align = _ref.align,
|
|
21
|
+
align = _ref$align === void 0 ? 'auto' : _ref$align,
|
|
22
|
+
cellOffset = _ref.cellOffset,
|
|
23
|
+
cellSize = _ref.cellSize,
|
|
24
|
+
containerSize = _ref.containerSize,
|
|
25
|
+
currentOffset = _ref.currentOffset;
|
|
26
|
+
var maxOffset = cellOffset;
|
|
27
|
+
var minOffset = maxOffset - containerSize + cellSize;
|
|
28
|
+
switch (align) {
|
|
29
|
+
case 'start':
|
|
30
|
+
return maxOffset;
|
|
31
|
+
case 'end':
|
|
32
|
+
return minOffset;
|
|
33
|
+
case 'center':
|
|
34
|
+
return maxOffset - (containerSize - cellSize) / 2;
|
|
35
|
+
default:
|
|
36
|
+
return Math.max(minOffset, Math.min(maxOffset, currentOffset));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = initCellMetadata;
|
|
7
|
+
/**
|
|
8
|
+
* Initializes metadata for an axis and its cells.
|
|
9
|
+
* This data is used to determine which cells are visible given a container size and scroll position.
|
|
10
|
+
*
|
|
11
|
+
* @param cellCount Total number of cells.
|
|
12
|
+
* @param size Either a fixed size or a function that returns the size for a given given an index.
|
|
13
|
+
* @return Object mapping cell index to cell metadata (size, offset)
|
|
14
|
+
*/
|
|
15
|
+
function initCellMetadata(_ref) {
|
|
16
|
+
var cellCount = _ref.cellCount,
|
|
17
|
+
size = _ref.size;
|
|
18
|
+
var sizeGetter = typeof size === 'function' ? size : function () {
|
|
19
|
+
return size;
|
|
20
|
+
};
|
|
21
|
+
var cellMetadata = [];
|
|
22
|
+
var offset = 0;
|
|
23
|
+
for (var i = 0; i < cellCount; i++) {
|
|
24
|
+
var _size = sizeGetter({
|
|
25
|
+
index: i
|
|
26
|
+
});
|
|
27
|
+
if (_size == null || isNaN(_size)) {
|
|
28
|
+
throw Error("Invalid size returned for cell ".concat(i, " of value ").concat(_size));
|
|
29
|
+
}
|
|
30
|
+
cellMetadata[i] = {
|
|
31
|
+
size: _size,
|
|
32
|
+
offset: offset
|
|
33
|
+
};
|
|
34
|
+
offset += _size;
|
|
35
|
+
}
|
|
36
|
+
return cellMetadata;
|
|
37
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.requestAnimationTimeout = exports.cancelAnimationTimeout = void 0;
|
|
7
|
+
var _animationFrame = require("./animationFrame");
|
|
8
|
+
/*:: export type AnimationTimeoutId = {
|
|
9
|
+
id: number,
|
|
10
|
+
};*/
|
|
11
|
+
var cancelAnimationTimeout = exports.cancelAnimationTimeout = function cancelAnimationTimeout(frame /*: AnimationTimeoutId*/) {
|
|
12
|
+
return (0, _animationFrame.caf)(frame.id);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Recursively calls requestAnimationFrame until a specified delay has been met or exceeded.
|
|
17
|
+
* When the delay time has been reached the function you're timing out will be called.
|
|
18
|
+
*
|
|
19
|
+
* Credit: Joe Lambert (https://gist.github.com/joelambert/1002116#file-requesttimeout-js)
|
|
20
|
+
*/
|
|
21
|
+
var requestAnimationTimeout = exports.requestAnimationTimeout = function requestAnimationTimeout(callback /*: Function*/, delay /*: number*/) /*: AnimationTimeoutId*/{
|
|
22
|
+
var start;
|
|
23
|
+
// wait for end of processing current event handler, because event handler may be long
|
|
24
|
+
Promise.resolve().then(function () {
|
|
25
|
+
start = Date.now();
|
|
26
|
+
});
|
|
27
|
+
var _timeout = function timeout() {
|
|
28
|
+
if (Date.now() - start >= delay) {
|
|
29
|
+
callback.call();
|
|
30
|
+
} else {
|
|
31
|
+
frame.id = (0, _animationFrame.raf)(_timeout);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
var frame /*: AnimationTimeoutId*/ = {
|
|
35
|
+
id: (0, _animationFrame.raf)(_timeout)
|
|
36
|
+
};
|
|
37
|
+
return frame;
|
|
38
|
+
};
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Binary Search Bounds
|
|
9
|
+
* https://github.com/mikolalysenko/binary-search-bounds
|
|
10
|
+
* Mikola Lysenko
|
|
11
|
+
*
|
|
12
|
+
* Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax.
|
|
13
|
+
* Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5
|
|
14
|
+
**/
|
|
15
|
+
|
|
16
|
+
function _GEA(a, l, h, y) {
|
|
17
|
+
var i = h + 1;
|
|
18
|
+
while (l <= h) {
|
|
19
|
+
var m = l + h >>> 1,
|
|
20
|
+
x = a[m];
|
|
21
|
+
if (x >= y) {
|
|
22
|
+
i = m;
|
|
23
|
+
h = m - 1;
|
|
24
|
+
} else {
|
|
25
|
+
l = m + 1;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return i;
|
|
29
|
+
}
|
|
30
|
+
function _GEP(a, l, h, y, c) {
|
|
31
|
+
var i = h + 1;
|
|
32
|
+
while (l <= h) {
|
|
33
|
+
var m = l + h >>> 1,
|
|
34
|
+
x = a[m];
|
|
35
|
+
if (c(x, y) >= 0) {
|
|
36
|
+
i = m;
|
|
37
|
+
h = m - 1;
|
|
38
|
+
} else {
|
|
39
|
+
l = m + 1;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return i;
|
|
43
|
+
}
|
|
44
|
+
function dispatchBsearchGE(a, y, c, l, h) {
|
|
45
|
+
if (typeof c === 'function') {
|
|
46
|
+
return _GEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);
|
|
47
|
+
} else {
|
|
48
|
+
return _GEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function _GTA(a, l, h, y) {
|
|
52
|
+
var i = h + 1;
|
|
53
|
+
while (l <= h) {
|
|
54
|
+
var m = l + h >>> 1,
|
|
55
|
+
x = a[m];
|
|
56
|
+
if (x > y) {
|
|
57
|
+
i = m;
|
|
58
|
+
h = m - 1;
|
|
59
|
+
} else {
|
|
60
|
+
l = m + 1;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return i;
|
|
64
|
+
}
|
|
65
|
+
function _GTP(a, l, h, y, c) {
|
|
66
|
+
var i = h + 1;
|
|
67
|
+
while (l <= h) {
|
|
68
|
+
var m = l + h >>> 1,
|
|
69
|
+
x = a[m];
|
|
70
|
+
if (c(x, y) > 0) {
|
|
71
|
+
i = m;
|
|
72
|
+
h = m - 1;
|
|
73
|
+
} else {
|
|
74
|
+
l = m + 1;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return i;
|
|
78
|
+
}
|
|
79
|
+
function dispatchBsearchGT(a, y, c, l, h) {
|
|
80
|
+
if (typeof c === 'function') {
|
|
81
|
+
return _GTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);
|
|
82
|
+
} else {
|
|
83
|
+
return _GTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function _LTA(a, l, h, y) {
|
|
87
|
+
var i = l - 1;
|
|
88
|
+
while (l <= h) {
|
|
89
|
+
var m = l + h >>> 1,
|
|
90
|
+
x = a[m];
|
|
91
|
+
if (x < y) {
|
|
92
|
+
i = m;
|
|
93
|
+
l = m + 1;
|
|
94
|
+
} else {
|
|
95
|
+
h = m - 1;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return i;
|
|
99
|
+
}
|
|
100
|
+
function _LTP(a, l, h, y, c) {
|
|
101
|
+
var i = l - 1;
|
|
102
|
+
while (l <= h) {
|
|
103
|
+
var m = l + h >>> 1,
|
|
104
|
+
x = a[m];
|
|
105
|
+
if (c(x, y) < 0) {
|
|
106
|
+
i = m;
|
|
107
|
+
l = m + 1;
|
|
108
|
+
} else {
|
|
109
|
+
h = m - 1;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return i;
|
|
113
|
+
}
|
|
114
|
+
function dispatchBsearchLT(a, y, c, l, h) {
|
|
115
|
+
if (typeof c === 'function') {
|
|
116
|
+
return _LTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);
|
|
117
|
+
} else {
|
|
118
|
+
return _LTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function _LEA(a, l, h, y) {
|
|
122
|
+
var i = l - 1;
|
|
123
|
+
while (l <= h) {
|
|
124
|
+
var m = l + h >>> 1,
|
|
125
|
+
x = a[m];
|
|
126
|
+
if (x <= y) {
|
|
127
|
+
i = m;
|
|
128
|
+
l = m + 1;
|
|
129
|
+
} else {
|
|
130
|
+
h = m - 1;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return i;
|
|
134
|
+
}
|
|
135
|
+
function _LEP(a, l, h, y, c) {
|
|
136
|
+
var i = l - 1;
|
|
137
|
+
while (l <= h) {
|
|
138
|
+
var m = l + h >>> 1,
|
|
139
|
+
x = a[m];
|
|
140
|
+
if (c(x, y) <= 0) {
|
|
141
|
+
i = m;
|
|
142
|
+
l = m + 1;
|
|
143
|
+
} else {
|
|
144
|
+
h = m - 1;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return i;
|
|
148
|
+
}
|
|
149
|
+
function dispatchBsearchLE(a, y, c, l, h) {
|
|
150
|
+
if (typeof c === 'function') {
|
|
151
|
+
return _LEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);
|
|
152
|
+
} else {
|
|
153
|
+
return _LEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function _EQA(a, l, h, y) {
|
|
157
|
+
l - 1;
|
|
158
|
+
while (l <= h) {
|
|
159
|
+
var m = l + h >>> 1,
|
|
160
|
+
x = a[m];
|
|
161
|
+
if (x === y) {
|
|
162
|
+
return m;
|
|
163
|
+
} else if (x <= y) {
|
|
164
|
+
l = m + 1;
|
|
165
|
+
} else {
|
|
166
|
+
h = m - 1;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return -1;
|
|
170
|
+
}
|
|
171
|
+
function _EQP(a, l, h, y, c) {
|
|
172
|
+
l - 1;
|
|
173
|
+
while (l <= h) {
|
|
174
|
+
var m = l + h >>> 1,
|
|
175
|
+
x = a[m];
|
|
176
|
+
var p = c(x, y);
|
|
177
|
+
if (p === 0) {
|
|
178
|
+
return m;
|
|
179
|
+
} else if (p <= 0) {
|
|
180
|
+
l = m + 1;
|
|
181
|
+
} else {
|
|
182
|
+
h = m - 1;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return -1;
|
|
186
|
+
}
|
|
187
|
+
function dispatchBsearchEQ(a, y, c, l, h) {
|
|
188
|
+
if (typeof c === 'function') {
|
|
189
|
+
return _EQP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);
|
|
190
|
+
} else {
|
|
191
|
+
return _EQA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
var _default = exports["default"] = {
|
|
195
|
+
ge: dispatchBsearchGE,
|
|
196
|
+
gt: dispatchBsearchGT,
|
|
197
|
+
lt: dispatchBsearchLT,
|
|
198
|
+
le: dispatchBsearchLE,
|
|
199
|
+
eq: dispatchBsearchEQ
|
|
200
|
+
};
|