(
initialItems: T[] | null = [],
map: Map<Key, TreeNode<T>>,
parentKey?: Key | null
)
| 164 | let [selectedKeys, setSelectedKeys] = useState(new Set<Key>(initialSelectedKeys || [])); |
| 165 | |
| 166 | function buildTree( |
| 167 | initialItems: T[] | null = [], |
| 168 | map: Map<Key, TreeNode<T>>, |
| 169 | parentKey?: Key | null |
| 170 | ) { |
| 171 | if (initialItems == null) { |
| 172 | initialItems = []; |
| 173 | } |
| 174 | return { |
| 175 | items: initialItems.map(item => { |
| 176 | let node: TreeNode<T> = { |
| 177 | key: getKey(item), |
| 178 | parentKey: parentKey ?? null, |
| 179 | value: item, |
| 180 | children: null |
| 181 | }; |
| 182 | |
| 183 | node.children = buildTree(getChildren(item), map, node.key).items; |
| 184 | map.set(node.key, node); |
| 185 | return node; |
| 186 | }), |
| 187 | nodeMap: map |
| 188 | }; |
| 189 | } |
| 190 | |
| 191 | function updateTree( |
| 192 | items: TreeNode<T>[], |
no test coverage detected