devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
84 lines (82 loc) • 2.84 kB
JavaScript
/**
* DevExtreme (ui/grid_core/ui.grid_core.export_mixin.js)
* Version: 18.2.18
* Build date: Tue Oct 18 2022
*
* Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
var _extend = require("../../core/utils/extend");
module.exports = {
_getEmptyCell: function() {
return {
text: "",
value: void 0,
colspan: 1,
rowspan: 1
}
},
_defaultSetter: function(value) {
return !value ? 1 : value
},
_cloneItem: function(item) {
return (0, _extend.extend)({}, item, this._getEmptyCell())
},
_prepareItems: function(items) {
var that = this,
resultItems = [];
var cols = (items[0] || []).reduce(function(sum, item) {
return sum + that._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 = that._defaultSetter(item.colspan);
item.rowspan = that._defaultSetter(item.rowspan)
}
return item
}
}(items);
function addItem(rowIndex, cellIndex, item) {
var row = resultItems[rowIndex] = resultItems[rowIndex] || [];
row[cellIndex] = item;
if (item.colspan > 1 || item.rowspan > 1) {
var clone = that._cloneItem(item);
for (var c = 1; c < item.colspan; c++) {
addItem(rowIndex, cellIndex + c, clone)
}
for (var r = 1; r < item.rowspan; r++) {
for (var _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
}
};