react-virtualized
Version:
React components for efficiently rendering large, scrollable lists and tabular data
38 lines (37 loc) • 1.61 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = calculateSizeAndPositionData;
var _SectionManager = _interopRequireDefault(require("../SectionManager"));
function calculateSizeAndPositionData(_ref) {
var cellCount = _ref.cellCount,
cellSizeAndPositionGetter = _ref.cellSizeAndPositionGetter,
sectionSize = _ref.sectionSize;
var cellMetadata = [];
var sectionManager = new _SectionManager["default"](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
};
}
;