Skip to content

Commit bc3a1d0

Browse files
ModestFunjiangchu
and
jiangchu
authored
🐛 fix: edge click error (#89)
Co-authored-by: jiangchu <[email protected]>
1 parent 6caeacf commit bc3a1d0

File tree

2 files changed

+66
-62
lines changed

2 files changed

+66
-62
lines changed

src/FlowEditor/store/slices/edgesSlice.ts

+33-31
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,6 @@ export interface EdgesSlice extends PublicEdgesAction {
2525
handleEdgesChange: (changes: EdgeChange[]) => void;
2626
updateEdgesOnConnection: (connection: Connection) => Edge | undefined;
2727
updateEdgesOnEdgeChange: (changes: EdgeChange[]) => void;
28-
edgesChangeLifecycle: (
29-
changes: EdgeChange[],
30-
doSomething?: (...args: any) => void,
31-
doSomethingParams?: any,
32-
) => void;
3328
}
3429

3530
export const edgesSlice: StateCreator<
@@ -46,14 +41,25 @@ export const edgesSlice: StateCreator<
4641
dispatchEdges: (payload, { recordHistory = true } = { recordHistory: true }) => {
4742
const { type, ...res } = payload;
4843

49-
const { edgesChangeLifecycle, internalUpdateEdges, yjsDoc } = get();
44+
const { beforeEdgesChange, onEdgesChange, afterEdgesChange, internalUpdateEdges, yjsDoc } =
45+
get();
5046

5147
const changes = convertEdgeChange(payload);
5248

5349
const flattenEdges = edgesReducer(get().flattenEdges, payload);
5450
if (isEqual(flattenEdges, get().flattenEdges)) return;
5551

56-
edgesChangeLifecycle(changes);
52+
if (beforeEdgesChange && !beforeEdgesChange(changes)) {
53+
return;
54+
}
55+
56+
if (onEdgesChange) {
57+
onEdgesChange(changes);
58+
}
59+
60+
if (afterEdgesChange) {
61+
afterEdgesChange(changes);
62+
}
5763

5864
internalUpdateEdges(flattenEdges, {
5965
type: `dispatchFlattenEdges/${type}`,
@@ -137,7 +143,14 @@ export const edgesSlice: StateCreator<
137143
},
138144

139145
handleEdgesChange: (changes) => {
140-
const { dispatchEdges, onElementSelectChange, edgesChangeLifecycle, deselectElement } = get();
146+
const {
147+
dispatchEdges,
148+
onElementSelectChange,
149+
beforeEdgesChange,
150+
onEdgesChange,
151+
afterEdgesChange,
152+
deselectElement,
153+
} = get();
141154

142155
changes.forEach((c) => {
143156
switch (c.type) {
@@ -152,31 +165,20 @@ export const edgesSlice: StateCreator<
152165
dispatchEdges({ type: 'deleteEdge', id: c.id });
153166
break;
154167
case 'select':
155-
edgesChangeLifecycle(changes, onElementSelectChange, {
156-
id: c.id,
157-
selected: c.selected,
158-
});
159-
}
160-
});
161-
},
162-
163-
edgesChangeLifecycle: (changes, doSomething, doSomethingParams) => {
164-
const { beforeEdgesChange, onEdgesChange, afterEdgesChange } = get();
168+
if (beforeEdgesChange && !beforeEdgesChange(changes)) {
169+
return;
170+
}
165171

166-
if (beforeEdgesChange && !beforeEdgesChange(changes)) {
167-
return;
168-
}
172+
if (onEdgesChange) {
173+
onEdgesChange(changes);
174+
}
169175

170-
if (onEdgesChange) {
171-
onEdgesChange(changes);
172-
}
176+
onElementSelectChange(c.id, c.selected);
173177

174-
if (doSomething) {
175-
doSomething(...doSomethingParams);
176-
}
177-
178-
if (afterEdgesChange) {
179-
afterEdgesChange(changes);
180-
}
178+
if (afterEdgesChange) {
179+
afterEdgesChange(changes);
180+
}
181+
}
182+
});
181183
},
182184
});

src/FlowEditor/store/slices/nodesSlice.ts

+33-31
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,6 @@ export interface PublicNodesAction {
8888
export interface NodesSlice extends PublicNodesAction {
8989
internalUpdateNodes: (flattenNodes: FlattenNodes, payload: ActionPayload) => void;
9090
handleNodesChange: (changes: NodeChange[]) => void;
91-
nodesChangeLifecycle: (
92-
changes: NodeChange[],
93-
doSomething?: (...args: any) => void,
94-
doSomethingParams?: any,
95-
) => void;
9691
}
9792

9893
export const nodesSlice: StateCreator<
@@ -110,14 +105,25 @@ export const nodesSlice: StateCreator<
110105
},
111106

112107
dispatchNodes: (payload, { recordHistory = true } = { recordHistory: true }) => {
113-
const { nodesChangeLifecycle, internalUpdateNodes, yjsDoc } = get();
108+
const { beforeNodesChange, onNodesChange, afterNodesChange, internalUpdateNodes, yjsDoc } =
109+
get();
114110
const { type, ...res } = payload;
115111
const changes = convertNodeChange(payload);
116112

117113
const flattenNodes = nodeReducer(get().flattenNodes, payload);
118114
if (isEqual(flattenNodes, get().flattenNodes)) return;
119115

120-
nodesChangeLifecycle(changes);
116+
if (beforeNodesChange && !beforeNodesChange(changes)) {
117+
return;
118+
}
119+
120+
if (onNodesChange) {
121+
onNodesChange(changes);
122+
}
123+
124+
if (afterNodesChange) {
125+
afterNodesChange(changes);
126+
}
121127

122128
internalUpdateNodes(flattenNodes, {
123129
type: `dispatchFlattenNodes/${type}`,
@@ -186,7 +192,14 @@ export const nodesSlice: StateCreator<
186192
},
187193

188194
handleNodesChange: (changes) => {
189-
const { dispatchNodes, onElementSelectChange, deselectElement, nodesChangeLifecycle } = get();
195+
const {
196+
dispatchNodes,
197+
onElementSelectChange,
198+
deselectElement,
199+
beforeNodesChange,
200+
onNodesChange,
201+
afterNodesChange,
202+
} = get();
190203

191204
changes.forEach((c) => {
192205
switch (c.type) {
@@ -207,31 +220,20 @@ export const nodesSlice: StateCreator<
207220
dispatchNodes({ type: 'deleteNode', id: c.id });
208221
break;
209222
case 'select':
210-
nodesChangeLifecycle(changes, onElementSelectChange, {
211-
id: c.id,
212-
selected: true,
213-
});
214-
}
215-
});
216-
},
217-
218-
nodesChangeLifecycle: (changes, doSomething, doSomethingParams) => {
219-
const { beforeNodesChange, onNodesChange, afterNodesChange } = get();
223+
if (beforeNodesChange && !beforeNodesChange(changes)) {
224+
return;
225+
}
220226

221-
if (beforeNodesChange && !beforeNodesChange(changes)) {
222-
return;
223-
}
227+
if (onNodesChange) {
228+
onNodesChange(changes);
229+
}
224230

225-
if (onNodesChange) {
226-
onNodesChange(changes);
227-
}
231+
onElementSelectChange(c.id, c.selected);
228232

229-
if (doSomething) {
230-
doSomething(...doSomethingParams);
231-
}
232-
233-
if (afterNodesChange) {
234-
afterNodesChange(changes);
235-
}
233+
if (afterNodesChange) {
234+
afterNodesChange(changes);
235+
}
236+
}
237+
});
236238
},
237239
});

0 commit comments

Comments
 (0)