UNPKG

react-virtualized

Version:

React components for efficiently rendering large, scrollable lists and tabular data

36 lines (29 loc) 1.34 kB
import SectionManager from '../SectionManager'; export default function calculateSizeAndPositionData(_ref) { var cellCount = _ref.cellCount, cellSizeAndPositionGetter = _ref.cellSizeAndPositionGetter, sectionSize = _ref.sectionSize; var cellMetadata = []; var sectionManager = new SectionManager(sectionSize); var height = 0; var width = 0; for (var index = 0; index < cellCount; index++) { var cellMetadatum = cellSizeAndPositionGetter({ index: index }); if (cellMetadatum.height == null || isNaN(cellMetadatum.height) || cellMetadatum.width == null || isNaN(cellMetadatum.width) || cellMetadatum.x == null || isNaN(cellMetadatum.x) || cellMetadatum.y == null || isNaN(cellMetadatum.y)) { throw Error('Invalid metadata returned for cell ' + index + ':\n x:' + cellMetadatum.x + ', y:' + cellMetadatum.y + ', width:' + cellMetadatum.width + ', height:' + cellMetadatum.height); } height = Math.max(height, cellMetadatum.y + cellMetadatum.height); width = Math.max(width, cellMetadatum.x + cellMetadatum.width); cellMetadata[index] = cellMetadatum; sectionManager.registerCell({ cellMetadatum: cellMetadatum, index: index }); } return { cellMetadata: cellMetadata, height: height, sectionManager: sectionManager, width: width }; }