import { KanvasoObjekto, KanvasojKanvasoObjekto, Edge, } from './../../types/stores/kanvaso.d'; //@ts-nocheck export const a = { Boards: [ { id: 1, BoardName: 'HeaderBoard', }, ], Columns: [ { id: 1, ColumnName: 'HeaderColumn', }, ], }; export { a as kanvaso } from './kanvaso.js'; import { a as objekto } from './objekto.js'; import { TreeNode } from './../../types/stores/kanvaso.d'; function convertToTree(flatArray: TreeNode[]): TreeNode[] { let arr = objekto.data.kanvasojKanvasoObjekto.edges; //@ts-ignore arr = arr.map((item) => item.node); // Создаем копию исходного массива, чтобы не изменять его. Глубокая копия, так как в некоторых браузерах проблемы с добавлением children const nodes = JSON.parse(JSON.stringify(arr)); // const nodes = copy(arr); // Создаем объект для быстрого доступа к каждому узлу по его UUID. const nodeMap: Record = {}; // Инициализируем nodeMap и добавляем каждому узлу пустой массив children. nodes.forEach((node) => { node.children = []; nodeMap[node.uuid] = node; }); // Фильтруем узлы, чтобы сохранить только корневые узлы в результирующем массиве. const tree: TreeNode[] = nodes.filter((node) => { // Если у узла есть posedantoUuid, добавляем его в children его родителя. if (node.kanvasojKanvasoobjektoligiloLigilo) { const parent = nodeMap[node.kanvasojKanvasoobjektoligiloLigilo.posedanto.uuid]; if (parent) { parent.children!.push(node); } // Узел не является корневым, поэтому исключаем его из результирующего массива. return false; } // Узел является корневым. return true; }); return tree; } //@ts-ignore const result = convertToTree(objekto); export { result as objekto };