@nodeject/ui-components
Version:
UI library for non-trivial components
39 lines (38 loc) • 1.5 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertTreeDataToDataSource = void 0;
var immer_1 = require("immer");
var arrayToTree_1 = require("../arrayToTree");
/**
* Transform a flat array of nodes into a hierarchy structure
* Also, as all nodes' props are into a data object, spreads it.
* @param treeNodes
*/
var convertTreeDataToDataSource = function (treeNodes) {
// step 1: add keys to props, and spreads the data into each node
var treeDataWithkeys = treeNodes === null || treeNodes === void 0 ? void 0 : treeNodes.map(function (n) {
var newNode = immer_1.produce(n, function (nodeDraft) {
return __assign(__assign({}, n), { id: n.data.id, key: n.data.id });
});
return newNode;
});
// step 2: returns the tree hierarchy
return arrayToTree_1.arrayToTree(treeDataWithkeys, {
id: 'id',
parentId: 'data.parent',
dataField: null,
throwChildrenFieldIfEmpty: true,
});
};
exports.convertTreeDataToDataSource = convertTreeDataToDataSource;