|
import { useCamera, useSigma } from '@react-sigma/core' |
|
import { useEffect } from 'react' |
|
import { useGraphStore } from '@/stores/graph' |
|
|
|
|
|
|
|
|
|
const FocusOnNode = ({ node, move }: { node: string | null; move?: boolean }) => { |
|
const sigma = useSigma() |
|
const { gotoNode } = useCamera() |
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
if (!node) return |
|
sigma.getGraph().setNodeAttribute(node, 'highlighted', true) |
|
if (move) { |
|
gotoNode(node) |
|
useGraphStore.getState().setMoveToSelectedNode(false) |
|
} |
|
|
|
return () => { |
|
sigma.getGraph().setNodeAttribute(node, 'highlighted', false) |
|
} |
|
}, [node, move, sigma, gotoNode]) |
|
|
|
return null |
|
} |
|
|
|
export default FocusOnNode |
|
|