@platform/ui.datagrid
Version:
Isolated tabular DataGrid.
40 lines (39 loc) • 1.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.toSelectionValues = void 0;
var tslib_1 = require("tslib");
var libs_1 = require("./libs");
function toSelectionValues(args) {
var cells = args.cells, selection = args.selection;
if (selection.all) {
return cells;
}
var res = {};
if (selection.cell) {
res[selection.cell] = cells[selection.cell];
}
var filterAxisRange = function (field, start, end, coords) {
return coords
.filter(function (cell) { return cell[field] >= start && cell[field] <= end; })
.map(function (cell) { return cell.key; });
};
var keys = [];
var all = Object.keys(cells).map(function (key) { return libs_1.coord.cell.toCell(key); });
libs_1.coord.range.union(selection.ranges).ranges.forEach(function (range) {
if (libs_1.coord.cell.isColumnRangeKey(range.key)) {
keys = (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], keys, true), filterAxisRange('column', range.left.column, range.right.column, all), true);
}
else if (libs_1.coord.cell.isRowRangeKey(range.key)) {
keys = (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], keys, true), filterAxisRange('row', range.left.row, range.right.row, all), true);
}
else {
keys = (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], keys, true), range.keys, true);
}
});
return libs_1.R.uniq(keys).reduce(function (acc, key) {
var value = cells[key] || { value: undefined };
acc[key] = value;
return acc;
}, res);
}
exports.toSelectionValues = toSelectionValues;