@@ -13,7 +13,7 @@ import type {DOMTopLevelEventType} from 'events/TopLevelEventTypes';
1313
1414import { batchedUpdates , interactiveUpdates } from 'events/ReactGenericBatching' ;
1515import { runExtractedPluginEventsInBatch } from 'events/EventPluginHub' ;
16- import { runResponderEventsInBatch } from '../events/DOMEventResponderSystem' ;
16+ import { dispatchEventForResponderEventSystem } from '../events/DOMEventResponderSystem' ;
1717import { isFiberMounted } from 'react-reconciler/reflection' ;
1818import { HostRoot } from 'shared/ReactWorkTags' ;
1919import {
@@ -48,7 +48,6 @@ type BookKeepingInstance = {
4848 nativeEvent : AnyNativeEvent | null ,
4949 targetInst : Fiber | null ,
5050 ancestors : Array < Fiber | null > ,
51- eventSystemFlags : EventSystemFlags ,
5251} ;
5352
5453/**
@@ -75,22 +74,19 @@ function getTopLevelCallbackBookKeeping(
7574 topLevelType : DOMTopLevelEventType ,
7675 nativeEvent : AnyNativeEvent ,
7776 targetInst : Fiber | null ,
78- eventSystemFlags : EventSystemFlags ,
7977) : BookKeepingInstance {
8078 if ( callbackBookkeepingPool . length ) {
8179 const instance = callbackBookkeepingPool . pop ( ) ;
8280 instance . topLevelType = topLevelType ;
8381 instance . nativeEvent = nativeEvent ;
8482 instance . targetInst = targetInst ;
85- instance . eventSystemFlags = eventSystemFlags ;
8683 return instance ;
8784 }
8885 return {
8986 topLevelType,
9087 nativeEvent,
9188 targetInst,
9289 ancestors : [ ] ,
93- eventSystemFlags,
9490 } ;
9591}
9692
@@ -101,7 +97,6 @@ function releaseTopLevelCallbackBookKeeping(
10197 instance . nativeEvent = null ;
10298 instance . targetInst = null ;
10399 instance . ancestors . length = 0 ;
104- instance . eventSystemFlags = 0 ;
105100 if ( callbackBookkeepingPool . length < CALLBACK_BOOKKEEPING_POOL_SIZE ) {
106101 callbackBookkeepingPool . push ( instance ) ;
107102 }
@@ -131,28 +126,16 @@ function handleTopLevel(bookKeeping: BookKeepingInstance) {
131126
132127 for ( let i = 0 ; i < bookKeeping . ancestors . length ; i ++ ) {
133128 targetInst = bookKeeping . ancestors [ i ] ;
134- const eventSystemFlags = bookKeeping . eventSystemFlags ;
135129 const eventTarget = getEventTarget ( bookKeeping . nativeEvent ) ;
136130 const topLevelType = ( ( bookKeeping . topLevelType : any ) : DOMTopLevelEventType ) ;
137131 const nativeEvent = ( ( bookKeeping . nativeEvent : any ) : AnyNativeEvent ) ;
138132
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+ ) ;
156139 }
157140}
158141
@@ -242,6 +225,27 @@ function dispatchInteractiveEvent(topLevelType, eventSystemFlags, nativeEvent) {
242225 ) ;
243226}
244227
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+
245249export function dispatchEvent (
246250 topLevelType : DOMTopLevelEventType ,
247251 eventSystemFlags : EventSystemFlags ,
@@ -250,9 +254,9 @@ export function dispatchEvent(
250254 if ( ! _enabled ) {
251255 return ;
252256 }
253-
254257 const nativeEventTarget = getEventTarget ( nativeEvent ) ;
255258 let targetInst = getClosestInstanceFromNode ( nativeEventTarget ) ;
259+
256260 if (
257261 targetInst !== null &&
258262 typeof targetInst . tag === 'number' &&
@@ -265,18 +269,30 @@ export function dispatchEvent(
265269 targetInst = null ;
266270 }
267271
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+ ) ;
281297 }
282298}
0 commit comments