@@ -88,11 +88,6 @@ export interface PublicNodesAction {
88
88
export interface NodesSlice extends PublicNodesAction {
89
89
internalUpdateNodes : ( flattenNodes : FlattenNodes , payload : ActionPayload ) => void ;
90
90
handleNodesChange : ( changes : NodeChange [ ] ) => void ;
91
- nodesChangeLifecycle : (
92
- changes : NodeChange [ ] ,
93
- doSomething ?: ( ...args : any ) => void ,
94
- doSomethingParams ?: any ,
95
- ) => void ;
96
91
}
97
92
98
93
export const nodesSlice : StateCreator <
@@ -110,14 +105,25 @@ export const nodesSlice: StateCreator<
110
105
} ,
111
106
112
107
dispatchNodes : ( payload , { recordHistory = true } = { recordHistory : true } ) => {
113
- const { nodesChangeLifecycle, internalUpdateNodes, yjsDoc } = get ( ) ;
108
+ const { beforeNodesChange, onNodesChange, afterNodesChange, internalUpdateNodes, yjsDoc } =
109
+ get ( ) ;
114
110
const { type, ...res } = payload ;
115
111
const changes = convertNodeChange ( payload ) ;
116
112
117
113
const flattenNodes = nodeReducer ( get ( ) . flattenNodes , payload ) ;
118
114
if ( isEqual ( flattenNodes , get ( ) . flattenNodes ) ) return ;
119
115
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
+ }
121
127
122
128
internalUpdateNodes ( flattenNodes , {
123
129
type : `dispatchFlattenNodes/${ type } ` ,
@@ -186,7 +192,14 @@ export const nodesSlice: StateCreator<
186
192
} ,
187
193
188
194
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 ( ) ;
190
203
191
204
changes . forEach ( ( c ) => {
192
205
switch ( c . type ) {
@@ -207,31 +220,20 @@ export const nodesSlice: StateCreator<
207
220
dispatchNodes ( { type : 'deleteNode' , id : c . id } ) ;
208
221
break ;
209
222
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
+ }
220
226
221
- if ( beforeNodesChange && ! beforeNodesChange ( changes ) ) {
222
- return ;
223
- }
227
+ if ( onNodesChange ) {
228
+ onNodesChange ( changes ) ;
229
+ }
224
230
225
- if ( onNodesChange ) {
226
- onNodesChange ( changes ) ;
227
- }
231
+ onElementSelectChange ( c . id , c . selected ) ;
228
232
229
- if ( doSomething ) {
230
- doSomething ( ...doSomethingParams ) ;
231
- }
232
-
233
- if ( afterNodesChange ) {
234
- afterNodesChange ( changes ) ;
235
- }
233
+ if ( afterNodesChange ) {
234
+ afterNodesChange ( changes ) ;
235
+ }
236
+ }
237
+ } ) ;
236
238
} ,
237
239
} ) ;
0 commit comments