export function handleTree(data, id, parentId, children) {
							 | 
						|
								  let config = {
							 | 
						|
								    id: id || 'id',
							 | 
						|
								    parentId: parentId || 'parentId',
							 | 
						|
								    childrenList: children || 'children'
							 | 
						|
								  };
							 | 
						|
								
							 | 
						|
								  var childrenListMap = {};
							 | 
						|
								  var nodeIds = {};
							 | 
						|
								  var tree = [];
							 | 
						|
								
							 | 
						|
								  for (let d of data) {
							 | 
						|
								    let parentId = d[config.parentId];
							 | 
						|
								    if (childrenListMap[parentId] == null) {
							 | 
						|
								      childrenListMap[parentId] = [];
							 | 
						|
								    }
							 | 
						|
								    nodeIds[d[config.id]] = d;
							 | 
						|
								    childrenListMap[parentId].push(d);
							 | 
						|
								  }
							 | 
						|
								
							 | 
						|
								  for (let d of data) {
							 | 
						|
								    let parentId = d[config.parentId];
							 | 
						|
								    if (nodeIds[parentId] == null) {
							 | 
						|
								      tree.push(d);
							 | 
						|
								    }
							 | 
						|
								  }
							 | 
						|
								
							 | 
						|
								  for (let t of tree) {
							 | 
						|
								    adaptToChildrenList(t);
							 | 
						|
								  }
							 | 
						|
								
							 | 
						|
								  function adaptToChildrenList(o) {
							 | 
						|
								    if (childrenListMap[o[config.id]] !== null) {
							 | 
						|
								      o[config.childrenList] = childrenListMap[o[config.id]];
							 | 
						|
								    }
							 | 
						|
								    if (o[config.childrenList]) {
							 | 
						|
								      for (let c of o[config.childrenList]) {
							 | 
						|
								        adaptToChildrenList(c);
							 | 
						|
								      }
							 | 
						|
								    }
							 | 
						|
								  }
							 | 
						|
								  return tree;
							 | 
						|
								}
							 |