@@ -13,7 +13,7 @@ import type {DOMTopLevelEventType} from 'events/TopLevelEventTypes';
13
13
14
14
import { batchedUpdates , interactiveUpdates } from 'events/ReactGenericBatching' ;
15
15
import { runExtractedPluginEventsInBatch } from 'events/EventPluginHub' ;
16
- import { runResponderEventsInBatch } from '../events/DOMEventResponderSystem' ;
16
+ import { dispatchEventForResponderEventSystem } from '../events/DOMEventResponderSystem' ;
17
17
import { isFiberMounted } from 'react-reconciler/reflection' ;
18
18
import { HostRoot } from 'shared/ReactWorkTags' ;
19
19
import {
@@ -48,7 +48,6 @@ type BookKeepingInstance = {
48
48
nativeEvent : AnyNativeEvent | null ,
49
49
targetInst : Fiber | null ,
50
50
ancestors : Array < Fiber | null > ,
51
- eventSystemFlags : EventSystemFlags ,
52
51
} ;
53
52
54
53
/**
@@ -75,22 +74,19 @@ function getTopLevelCallbackBookKeeping(
75
74
topLevelType : DOMTopLevelEventType ,
76
75
nativeEvent : AnyNativeEvent ,
77
76
targetInst : Fiber | null ,
78
- eventSystemFlags : EventSystemFlags ,
79
77
) : BookKeepingInstance {
80
78
if ( callbackBookkeepingPool . length ) {
81
79
const instance = callbackBookkeepingPool . pop ( ) ;
82
80
instance . topLevelType = topLevelType ;
83
81
instance . nativeEvent = nativeEvent ;
84
82
instance . targetInst = targetInst ;
85
- instance . eventSystemFlags = eventSystemFlags ;
86
83
return instance ;
87
84
}
88
85
return {
89
86
topLevelType,
90
87
nativeEvent,
91
88
targetInst,
92
89
ancestors : [ ] ,
93
- eventSystemFlags,
94
90
} ;
95
91
}
96
92
@@ -101,7 +97,6 @@ function releaseTopLevelCallbackBookKeeping(
101
97
instance . nativeEvent = null ;
102
98
instance . targetInst = null ;
103
99
instance . ancestors . length = 0 ;
104
- instance . eventSystemFlags = 0 ;
105
100
if ( callbackBookkeepingPool . length < CALLBACK_BOOKKEEPING_POOL_SIZE ) {
106
101
callbackBookkeepingPool . push ( instance ) ;
107
102
}
@@ -131,28 +126,16 @@ function handleTopLevel(bookKeeping: BookKeepingInstance) {
131
126
132
127
for ( let i = 0 ; i < bookKeeping . ancestors . length ; i ++ ) {
133
128
targetInst = bookKeeping . ancestors [ i ] ;
134
- const eventSystemFlags = bookKeeping . eventSystemFlags ;
135
129
const eventTarget = getEventTarget ( bookKeeping . nativeEvent ) ;
136
130
const topLevelType = ( ( bookKeeping . topLevelType : any ) : DOMTopLevelEventType ) ;
137
131
const nativeEvent = ( ( bookKeeping . nativeEvent : any ) : AnyNativeEvent ) ;
138
132
139
- if ( eventSystemFlags === PLUGIN_EVENT_SYSTEM ) {
140
- runExtractedPluginEventsInBatch (
141
- topLevelType ,
142
- targetInst ,
143
- nativeEvent ,
144
- eventTarget ,
145
- ) ;
146
- } else if ( enableEventAPI ) {
147
- // Responder event system (experimental event API)
148
- runResponderEventsInBatch (
149
- topLevelType ,
150
- targetInst ,
151
- nativeEvent ,
152
- eventTarget ,
153
- eventSystemFlags ,
154
- ) ;
155
- }
133
+ runExtractedPluginEventsInBatch (
134
+ topLevelType ,
135
+ targetInst ,
136
+ nativeEvent ,
137
+ eventTarget ,
138
+ ) ;
156
139
}
157
140
}
158
141
@@ -242,6 +225,27 @@ function dispatchInteractiveEvent(topLevelType, eventSystemFlags, nativeEvent) {
242
225
) ;
243
226
}
244
227
228
+ function dispatchEventForPluginEventSystem (
229
+ topLevelType : DOMTopLevelEventType ,
230
+ eventSystemFlags : EventSystemFlags ,
231
+ nativeEvent : AnyNativeEvent ,
232
+ targetInst : null | Fiber ,
233
+ ) : void {
234
+ const bookKeeping = getTopLevelCallbackBookKeeping (
235
+ topLevelType ,
236
+ nativeEvent ,
237
+ targetInst ,
238
+ ) ;
239
+
240
+ try {
241
+ // Event queue being processed in the same cycle allows
242
+ // `preventDefault`.
243
+ batchedUpdates ( handleTopLevel , bookKeeping ) ;
244
+ } finally {
245
+ releaseTopLevelCallbackBookKeeping ( bookKeeping ) ;
246
+ }
247
+ }
248
+
245
249
export function dispatchEvent (
246
250
topLevelType : DOMTopLevelEventType ,
247
251
eventSystemFlags : EventSystemFlags ,
@@ -250,9 +254,9 @@ export function dispatchEvent(
250
254
if ( ! _enabled ) {
251
255
return ;
252
256
}
253
-
254
257
const nativeEventTarget = getEventTarget ( nativeEvent ) ;
255
258
let targetInst = getClosestInstanceFromNode ( nativeEventTarget ) ;
259
+
256
260
if (
257
261
targetInst !== null &&
258
262
typeof targetInst . tag === 'number' &&
@@ -265,18 +269,30 @@ export function dispatchEvent(
265
269
targetInst = null ;
266
270
}
267
271
268
- const bookKeeping = getTopLevelCallbackBookKeeping (
269
- topLevelType ,
270
- nativeEvent ,
271
- targetInst ,
272
- eventSystemFlags ,
273
- ) ;
274
-
275
- try {
276
- // Event queue being processed in the same cycle allows
277
- // `preventDefault`.
278
- batchedUpdates ( handleTopLevel , bookKeeping ) ;
279
- } finally {
280
- releaseTopLevelCallbackBookKeeping ( bookKeeping ) ;
272
+ if ( enableEventAPI ) {
273
+ if ( eventSystemFlags === PLUGIN_EVENT_SYSTEM ) {
274
+ dispatchEventForPluginEventSystem (
275
+ topLevelType ,
276
+ eventSystemFlags ,
277
+ nativeEvent ,
278
+ targetInst ,
279
+ ) ;
280
+ } else {
281
+ // Responder event system (experimental event API)
282
+ dispatchEventForResponderEventSystem (
283
+ topLevelType ,
284
+ targetInst ,
285
+ nativeEvent ,
286
+ nativeEventTarget ,
287
+ eventSystemFlags ,
288
+ ) ;
289
+ }
290
+ } else {
291
+ dispatchEventForPluginEventSystem (
292
+ topLevelType ,
293
+ eventSystemFlags ,
294
+ nativeEvent ,
295
+ targetInst ,
296
+ ) ;
281
297
}
282
298
}
0 commit comments