JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr{ gilour

File "render-tree.ts"

Full Path: /home/markqprx/iniasli.pro/client/ui/tree/render-tree.ts
File size: 607 bytes
MIME-type: text/plain
Charset: utf-8

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,
    });
  });
}