|
import React from "react"; |
|
import useGraph from "src/store/useGraph"; |
|
|
|
const useToggleHide = () => { |
|
const getCollapsedNodeIds = useGraph(state => state.getCollapsedNodeIds); |
|
const getCollapsedEdgeIds = useGraph(state => state.getCollapsedEdgeIds); |
|
|
|
React.useEffect(() => { |
|
validateHiddenNodes(getCollapsedNodeIds(), getCollapsedEdgeIds()); |
|
}, [getCollapsedEdgeIds, getCollapsedNodeIds]); |
|
|
|
return { |
|
validateHiddenNodes: () => validateHiddenNodes(getCollapsedNodeIds(), getCollapsedEdgeIds()), |
|
}; |
|
}; |
|
|
|
function validateHiddenNodes(collapsedNodeIs: string[], collapsedEdgeIds: string[]) { |
|
const nodeList = collapsedNodeIs.map(id => `[id$="node-${id}"]`); |
|
const edgeList = collapsedEdgeIds.map(id => `[class$="edge-${id}"]`); |
|
const hiddenItems = document.body.querySelectorAll(".hide"); |
|
|
|
hiddenItems.forEach(item => item.classList.remove("hide")); |
|
|
|
if (nodeList.length) { |
|
const selectedNodes = document.body.querySelectorAll(nodeList.join(",")); |
|
|
|
selectedNodes.forEach(node => node.classList.add("hide")); |
|
} |
|
|
|
if (edgeList.length) { |
|
const selectedEdges = document.body.querySelectorAll(edgeList.join(",")); |
|
|
|
selectedEdges.forEach(edge => edge.classList.add("hide")); |
|
} |
|
} |
|
|
|
export default useToggleHide; |
|
|