"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = getUpdatedOffsetForIndex; /** * Determines a new offset that ensures a certain cell is visible, given the current offset. * If the cell is already visible then the current offset will be returned. * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible. * * @param align Desired alignment within container; one of "auto" (default), "start", or "end" * @param cellOffset Offset (x or y) position for cell * @param cellSize Size (width or height) of cell * @param containerSize Total size (width or height) of the container * @param currentOffset Container's current (x or y) offset * @return Offset to use to ensure the specified cell is visible */ function getUpdatedOffsetForIndex(_ref) { var _ref$align = _ref.align, align = _ref$align === void 0 ? 'auto' : _ref$align, cellOffset = _ref.cellOffset, cellSize = _ref.cellSize, containerSize = _ref.containerSize, currentOffset = _ref.currentOffset; var maxOffset = cellOffset; var minOffset = maxOffset - containerSize + cellSize; switch (align) { case 'start': return maxOffset; case 'end': return minOffset; case 'center': return maxOffset - (containerSize - cellSize) / 2; default: return Math.max(minOffset, Math.min(maxOffset, currentOffset)); } }