@mui/x-data-grid
Version:
The community edition of the data grid component (MUI X).
82 lines (80 loc) • 2.67 kB
JavaScript
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _extends from "@babel/runtime/helpers/esm/extends";
import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../core/strategyProcessing';
import { buildRootGroup, GRID_ROOT_GROUP_ID } from './gridRowsUtils';
var createFlatRowTree = function createFlatRowTree(rows) {
var tree = _defineProperty({}, GRID_ROOT_GROUP_ID, _extends({}, buildRootGroup(), {
children: rows
}));
for (var i = 0; i < rows.length; i += 1) {
var rowId = rows[i];
tree[rowId] = {
id: rowId,
depth: 0,
parent: GRID_ROOT_GROUP_ID,
type: 'leaf',
groupingKey: null
};
}
return {
groupingName: GRID_DEFAULT_STRATEGY,
tree: tree,
treeDepths: {
0: rows.length
},
dataRowIds: rows
};
};
var updateFlatRowTree = function updateFlatRowTree(_ref) {
var previousTree = _ref.previousTree,
actions = _ref.actions;
var tree = _extends({}, previousTree);
var idsToRemoveFromRootGroup = {};
for (var i = 0; i < actions.remove.length; i += 1) {
var idToDelete = actions.remove[i];
idsToRemoveFromRootGroup[idToDelete] = true;
delete tree[idToDelete];
}
for (var _i = 0; _i < actions.insert.length; _i += 1) {
var idToInsert = actions.insert[_i];
tree[idToInsert] = {
id: idToInsert,
depth: 0,
parent: GRID_ROOT_GROUP_ID,
type: 'leaf',
groupingKey: null
};
}
// TODO rows v6: Support row unpinning
var rootGroup = tree[GRID_ROOT_GROUP_ID];
var rootGroupChildren = [].concat(_toConsumableArray(rootGroup.children), _toConsumableArray(actions.insert));
if (Object.values(idsToRemoveFromRootGroup).length) {
rootGroupChildren = rootGroupChildren.filter(function (id) {
return !idsToRemoveFromRootGroup[id];
});
}
tree[GRID_ROOT_GROUP_ID] = _extends({}, rootGroup, {
children: rootGroupChildren
});
return {
groupingName: GRID_DEFAULT_STRATEGY,
tree: tree,
treeDepths: {
0: rootGroupChildren.length
},
dataRowIds: rootGroupChildren
};
};
var flatRowTreeCreationMethod = function flatRowTreeCreationMethod(params) {
if (params.updates.type === 'full') {
return createFlatRowTree(params.updates.rows);
}
return updateFlatRowTree({
previousTree: params.previousTree,
actions: params.updates.actions
});
};
export var useGridRowsPreProcessors = function useGridRowsPreProcessors(apiRef) {
useGridRegisterStrategyProcessor(apiRef, GRID_DEFAULT_STRATEGY, 'rowTreeCreation', flatRowTreeCreationMethod);
};