Skip to content

Commit b31e83b

Browse files
update id to ids
1 parent 3606fcc commit b31e83b

File tree

4 files changed

+17
-16
lines changed

4 files changed

+17
-16
lines changed

src/store.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ export interface GraphState {
3434
selections?: string[];
3535
// The node that is currently hovered, used to disable cluster dragging
3636
hoveredNodeId?: string;
37-
// The edge that is currently hovered over, required for cases when animation is disabled
38-
hoveredEdgeId?: string;
37+
// The edges that are currently hovered over, required for cases when animation is disabled
38+
hoveredEdgeIds?: string[];
3939
edgeContextMenus?: Set<string>;
4040
setEdgeContextMenus: (edges: Set<string>) => void;
4141
edgeMeshes: Array<Mesh<BufferGeometry>>;
@@ -53,7 +53,7 @@ export interface GraphState {
5353
setActives: (actives: string[]) => void;
5454
setSelections: (selections: string[]) => void;
5555
setHoveredNodeId: (hoveredNodeId: string | null) => void;
56-
setHoveredEdgeId: (hoveredEdgeId: string | null) => void;
56+
setHoveredEdgeIds: (hoveredEdgeIds: string[] | null) => void;
5757
setNodes: (nodes: InternalGraphNode[]) => void;
5858
setEdges: (edges: InternalGraphEdge[]) => void;
5959
setNodePosition: (id: string, position: InternalGraphPosition) => void;
@@ -86,7 +86,7 @@ export const createStore = ({
8686
panning: false,
8787
draggingIds: [],
8888
actives,
89-
hoveredEdgeId: null,
89+
hoveredEdgeIds: null,
9090
edgeContextMenus: new Set(),
9191
edgeMeshes: [],
9292
selections,
@@ -114,8 +114,8 @@ export const createStore = ({
114114
setSelections: selections => set(state => ({ ...state, selections })),
115115
setHoveredNodeId: hoveredNodeId =>
116116
set(state => ({ ...state, hoveredNodeId })),
117-
setHoveredEdgeId: hoveredEdgeId =>
118-
set(state => ({ ...state, hoveredEdgeId })),
117+
setHoveredEdgeIds: hoveredEdgeIds =>
118+
set(state => ({ ...state, hoveredEdgeIds })),
119119
setNodes: nodes =>
120120
set(state => ({
121121
...state,

src/symbols/edges/Edges.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ export const Edges: FC<EdgesProps> = ({
106106
const setEdgeMeshes = useStore(state => state.setEdgeMeshes);
107107
const actives = useStore(state => state.actives || []);
108108
const selections = useStore(state => state.selections || []);
109-
const hoveredEdgeId = useStore(state => state.hoveredEdgeId);
109+
const hoveredEdgeIds = useStore(state => state.hoveredEdgeIds || []);
110110

111111
const [active, inactive, draggingActive, draggingInactive] = useMemo(() => {
112112
const active: Array<InternalGraphEdge> = [];
@@ -121,7 +121,7 @@ export const Edges: FC<EdgesProps> = ({
121121
if (
122122
selections.includes(edge.id) ||
123123
actives.includes(edge.id) ||
124-
edge.id === hoveredEdgeId
124+
hoveredEdgeIds.includes(edge.id)
125125
) {
126126
draggingActive.push(edge);
127127
} else {
@@ -133,15 +133,15 @@ export const Edges: FC<EdgesProps> = ({
133133
if (
134134
selections.includes(edge.id) ||
135135
actives.includes(edge.id) ||
136-
edge.id === hoveredEdgeId
136+
hoveredEdgeIds.includes(edge.id)
137137
) {
138138
active.push(edge);
139139
} else {
140140
inactive.push(edge);
141141
}
142142
});
143143
return [active, inactive, draggingActive, draggingInactive];
144-
}, [edges, actives, selections, draggingIds, hoveredEdgeId]);
144+
}, [edges, actives, selections, draggingIds, hoveredEdgeIds]);
145145

146146
const hasSelections = !!selections.length;
147147

src/symbols/edges/useEdgeEvents.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ export function useEdgeEvents(
2424
const setEdgeContextMenus = useStore(
2525
useCallback(state => state.setEdgeContextMenus, [])
2626
);
27-
const setHoveredEdgeId = useStore(
28-
useCallback(state => state.setHoveredEdgeId, [])
27+
const setHoveredEdgeIds = useStore(
28+
useCallback(state => state.setHoveredEdgeIds, [])
2929
);
3030

3131
const clickRef = useRef(false);
@@ -75,9 +75,9 @@ export function useEdgeEvents(
7575
}
7676
}
7777

78-
// Update hover state in store - use first intersected edge
79-
const hoveredId = intersected.length > 0 ? intersected[0].id : null;
80-
setHoveredEdgeId(hoveredId);
78+
const hoveredIds =
79+
intersected.length > 0 ? intersected.map(edge => edge.id) : [];
80+
setHoveredEdgeIds(hoveredIds);
8181

8282
if (onPointerOver) {
8383
const over = intersected.filter(index => !previous.includes(index));
@@ -98,7 +98,7 @@ export function useEdgeEvents(
9898
disabled,
9999
edgeContextMenus,
100100
setEdgeContextMenus,
101-
setHoveredEdgeId
101+
setHoveredEdgeIds
102102
]
103103
);
104104

stories/demos/HoverHighlightTypes.story.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export const Outwards = () => {
6666
return (
6767
<GraphCanvas
6868
ref={graphRef}
69+
animated={false}
6970
nodes={complexNodes}
7071
edges={complexEdges}
7172
selections={selections}

0 commit comments

Comments
 (0)