@nodeject/ui-components
Version:
UI library for non-trivial components
30 lines (29 loc) • 1.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deleteNodeLocal = void 0;
var immer_1 = require("immer");
var deleteNodeLocal = function (args) {
var cytoGraph = args.cytoGraph, nodeId = args.nodeId, setCytoGraph = args.setCytoGraph;
// Gets the list of descendants node to delete
var deleteNodeList = { nodes: [] };
deleteNodeList.nodes.push(cytoGraph.nodes.find(function (n) { return n.data.id === nodeId; }));
var listSelfAndDescendants = function (id) {
var children = cytoGraph.nodes.filter(function (n) {
if (n.data.parent === id) {
deleteNodeList.nodes.push(n);
return true;
}
});
children.map(function (c) {
listSelfAndDescendants(c.data.id);
});
};
listSelfAndDescendants(nodeId);
var nextCytoGraph = immer_1.default(cytoGraph, function (draftState) {
deleteNodeList.nodes.map(function (deleteNode) {
draftState.nodes.splice(draftState.nodes.findIndex(function (n) { return n.data.id === deleteNode.data.id; }), 1);
});
});
setCytoGraph(nextCytoGraph);
};
exports.deleteNodeLocal = deleteNodeLocal;