27
common/resources/client/ui/tree/render-tree.ts
Executable file
27
common/resources/client/ui/tree/render-tree.ts
Executable file
@@ -0,0 +1,27 @@
|
||||
import {TreeItemRenderer} from './tree-item';
|
||||
import {cloneElement} from 'react';
|
||||
import {TreeNode} from './tree';
|
||||
|
||||
interface RenderTreeProps<T extends TreeNode> {
|
||||
nodes: T[];
|
||||
parentNode?: T;
|
||||
itemRenderer: TreeItemRenderer<T>;
|
||||
level?: number;
|
||||
}
|
||||
export function renderTree<T extends TreeNode>({
|
||||
nodes,
|
||||
itemRenderer,
|
||||
parentNode,
|
||||
level,
|
||||
}: RenderTreeProps<T>) {
|
||||
return nodes.map((node, index) => {
|
||||
return cloneElement(itemRenderer(node), {
|
||||
level: level == undefined ? 0 : level + 1,
|
||||
index,
|
||||
node,
|
||||
parentNode,
|
||||
key: node.id,
|
||||
itemRenderer,
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user