devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
77 lines (75 loc) • 2.52 kB
JavaScript
/**
* DevExtreme (cjs/__internal/grids/grid_core/module_export.js)
* Version: 22.1.9
* Build date: Tue Apr 18 2023
*
* Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.prepareItems = void 0;
var extend_1 = require("../../../core/utils/extend");
function prepareItems(items, emptyCell) {
var defaultSetter = function(value) {
return !value ? 1 : value
};
var resultItems = [];
var cols = (items[0] || []).reduce((function(sum, item) {
return sum + defaultSetter(item.colspan)
}), 0);
var getItem = function(items) {
var rowIndex = 0;
var cellIndex = 0;
return function() {
var row = items[rowIndex] || [];
var item = row[cellIndex++];
if (cellIndex >= row.length) {
rowIndex++;
cellIndex = 0
}
if (item) {
item.colspan = defaultSetter(item.colspan);
item.rowspan = defaultSetter(item.rowspan)
}
return item
}
}(items);
var addItem = function(rowIndex, cellIndex, item) {
var row = resultItems[rowIndex] = resultItems[rowIndex] || [];
row[cellIndex] = item;
if (item.colspan > 1 || item.rowspan > 1) {
var clone = function(item) {
return extend_1.extend({}, item, emptyCell)
}(item);
for (var c = 1; c < item.colspan; c++) {
addItem(rowIndex, cellIndex + c, clone)
}
for (var r = 1; r < item.rowspan; r++) {
for (c = 0; c < item.colspan; c++) {
addItem(rowIndex + r, cellIndex + c, clone)
}
}
}
};
var item = getItem();
var rowIndex = 0;
while (item) {
for (var cellIndex = 0; cellIndex < cols; cellIndex++) {
if (!item) {
break
}
if (resultItems[rowIndex] && resultItems[rowIndex][cellIndex]) {
continue
}
addItem(rowIndex, cellIndex, item);
cellIndex += item.colspan - 1;
item = getItem()
}
rowIndex++
}
return resultItems
}
exports.prepareItems = prepareItems;