es-grid-template
Version:
es-grid-template
29 lines (28 loc) • 771 B
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = layeredSort;
var _isLeafNode = _interopRequireDefault(require("./isLeafNode"));
/** Sort data with tree structure.
* layeredSort is a recursive process: for each parent node in the tree,
* this function will sort its children array.
*/
function layeredSort(array, compare) {
return dfs(array);
function dfs(rows) {
if (!Array.isArray(array)) {
return array;
}
return rows.map(row => {
if ((0, _isLeafNode.default)(row)) {
return row;
}
return {
...row,
children: dfs(row.children)
};
}).sort(compare);
}
}