TypeScript · 854 bytes Raw Blame History
1 import { useCallback } from 'react';
2 import { TreeNode } from '@/lib/api';
3
4 export const useTreeUtils = () => {
5 const updateTreeDataToShowMole = useCallback((treeData: TreeNode, molePath: string): TreeNode => {
6 if (treeData.path === molePath) {
7 return { ...treeData, has_mole: true };
8 }
9 if (treeData.children) {
10 return {
11 ...treeData,
12 children: treeData.children.map((child) =>
13 updateTreeDataToShowMole(child, molePath)
14 ),
15 };
16 }
17 return treeData;
18 }, []);
19
20 const removeMoleFromTree = useCallback((treeData: TreeNode): TreeNode => {
21 return {
22 ...treeData,
23 has_mole: false,
24 children: treeData.children ? treeData.children.map((child) => removeMoleFromTree(child)) : [],
25 };
26 }, []);
27
28 return {
29 updateTreeDataToShowMole,
30 removeMoleFromTree,
31 };
32 };