'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = defaultOverscanIndicesGetter; var SCROLL_DIRECTION_BACKWARD = exports.SCROLL_DIRECTION_BACKWARD = -1; var SCROLL_DIRECTION_FORWARD = exports.SCROLL_DIRECTION_FORWARD = 1; var SCROLL_DIRECTION_HORIZONTAL = exports.SCROLL_DIRECTION_HORIZONTAL = 'horizontal'; var SCROLL_DIRECTION_VERTICAL = exports.SCROLL_DIRECTION_VERTICAL = 'vertical'; /** * Calculates the number of cells to overscan before and after a specified range. * This function ensures that overscanning doesn't exceed the available cells. * * @param direction One of SCROLL_DIRECTION_HORIZONTAL or SCROLL_DIRECTION_VERTICAL * @param cellCount Number of rows or columns in the current axis * @param scrollDirection One of SCROLL_DIRECTION_BACKWARD or SCROLL_DIRECTION_FORWARD * @param overscanCellsCount Maximum number of cells to over-render in either direction * @param startIndex Begin of range of visible cells * @param stopIndex End of range of visible cells */ function defaultOverscanIndicesGetter(_ref) { var direction = _ref.direction, cellCount = _ref.cellCount, overscanCellsCount = _ref.overscanCellsCount, scrollDirection = _ref.scrollDirection, startIndex = _ref.startIndex, stopIndex = _ref.stopIndex; var overscanStartIndex = void 0; var overscanStopIndex = void 0; switch (scrollDirection) { case SCROLL_DIRECTION_FORWARD: overscanStartIndex = startIndex; overscanStopIndex = stopIndex + overscanCellsCount; break; case SCROLL_DIRECTION_BACKWARD: overscanStartIndex = startIndex - overscanCellsCount; overscanStopIndex = stopIndex; break; } return { overscanStartIndex: Math.max(0, overscanStartIndex), overscanStopIndex: Math.min(cellCount - 1, overscanStopIndex) }; }