react-virtualized-draggable
Version:
React components for efficiently rendering large, scrollable lists and tabular data
35 lines (31 loc) • 1.37 kB
JavaScript
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 ".concat(index, ":\n x:").concat(cellMetadatum.x, ", y:").concat(cellMetadatum.y, ", width:").concat(cellMetadatum.width, ", height:").concat(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
};
}