eolas-app/src/components/GraphEvents.tsx

35 lines
992 B
TypeScript
Raw Normal View History

import { useEffect } from "react"
import { useNavigate } from "react-router"
import { useRegisterEvents, useSigma } from "@react-sigma/core"
const GraphEvents = () => {
const registerEvents = useRegisterEvents()
const sigma = useSigma()
const navigate = useNavigate()
useEffect(() => {
registerEvents({
enterNode: (event) => {
const graph = sigma.getGraph()
const edges = graph.edges(event.node)
edges.forEach((edgeId) => {
graph.setEdgeAttribute(edgeId, "size", 3)
graph.setEdgeAttribute(edgeId, "color", "#0a0a0a")
})
},
leaveNode: () => {
const graph = sigma.getGraph()
graph.forEachEdge((edgeId) => {
graph.removeEdgeAttribute(edgeId, "size")
})
},
clickNode: (event) => navigate(`/entries/${event.node}`),
})
}, [registerEvents, sigma])
return null
}
export default GraphEvents