UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

33 lines (32 loc) 1.21 kB
"use client"; //#region packages/@mantine/core/src/components/Tree/flatten-tree-data/flatten-tree-data.ts function flattenTreeDataTo(acc, data, expandedState, parent, level, ancestorIsLast) { for (let i = 0; i < data.length; i++) { const node = data[i]; const isLast = i === data.length - 1; const hasLoadedChildren = Array.isArray(node.children); const hasAsyncChildren = !!node.hasChildren && !hasLoadedChildren; const hasChildren = hasLoadedChildren || hasAsyncChildren; const expanded = expandedState[node.value] || false; const linesPath = []; for (let l = 2; l <= level; l++) if (l === level) linesPath.push(isLast ? "closing" : "continuing"); else linesPath.push(ancestorIsLast[l - 1] ? "none" : "continuing"); acc.push({ node, level, parent, hasChildren, expanded, linesPath }); if (expanded && hasLoadedChildren) flattenTreeDataTo(acc, node.children, expandedState, node.value, level + 1, [...ancestorIsLast, isLast]); } } function flattenTreeData(data, expandedState) { const result = []; flattenTreeDataTo(result, data, expandedState, null, 1, []); return result; } //#endregion export { flattenTreeData }; //# sourceMappingURL=flatten-tree-data.mjs.map