12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import {
- forEach
- } from 'min-dash';
- export function getTopLevel(elements) {
- var topLevel = {},
- parents = [],
- result = [],
- clearedParents = [];
- forEach(elements, function(element) {
- var parent = element.parent;
- if (!topLevel[parent.id]) {
- topLevel[parent.id] = [];
- }
- if (parents.indexOf(parent.id) === -1) {
- parents.push(parent.id);
- }
- topLevel[parent.id].push(element);
- });
- forEach(parents, function(parent) {
- forEach(topLevel[parent], function(element) {
- if (topLevel[element.id]) {
- clearedParents.push(element.id);
- }
- });
- });
- forEach(parents, function(parent) {
- var idx = clearedParents.indexOf(parent);
- if (idx === -1) {
- result = result.concat(topLevel[parent]);
- }
- });
- return result;
- }
|