@@ -11,18 +11,14 @@ import type {AnyNativeEvent} from '../events/PluginModuleType';
1111import type { FiberRoot } from 'react-reconciler/src/ReactInternalTypes' ;
1212import type { Container , SuspenseInstance } from '../client/ReactDOMHostConfig' ;
1313import type { DOMEventName } from '../events/DOMEventNames' ;
14+ import { enableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay } from 'shared/ReactFeatureFlags' ;
1415import {
15- enableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay ,
16- enableSelectiveHydration ,
17- } from 'shared/ReactFeatureFlags' ;
18- import {
19- isReplayableDiscreteEvent ,
16+ isDiscreteEventThatRequiresHydration ,
2017 queueDiscreteEvent ,
2118 hasQueuedDiscreteEvents ,
2219 clearIfContinuousEvent ,
2320 queueIfContinuousEvent ,
2421 attemptSynchronousHydration ,
25- isCapturePhaseSynchronouslyHydratableEvent ,
2622} from './ReactDOMEventReplaying' ;
2723import {
2824 getNearestMountedFiber ,
@@ -169,7 +165,7 @@ export function dispatchEvent(
169165 if (
170166 allowReplay &&
171167 hasQueuedDiscreteEvents ( ) &&
172- isReplayableDiscreteEvent ( domEventName )
168+ isDiscreteEventThatRequiresHydration ( domEventName )
173169 ) {
174170 // If we already have a queue of discrete events, and this is another discrete
175171 // event, then we can't dispatch it regardless of its target, since they
@@ -202,7 +198,7 @@ export function dispatchEvent(
202198 if ( allowReplay ) {
203199 if (
204200 ! enableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay &&
205- isReplayableDiscreteEvent ( domEventName )
201+ isDiscreteEventThatRequiresHydration ( domEventName )
206202 ) {
207203 // This this to be replayed later once the target is available.
208204 queueDiscreteEvent (
@@ -232,8 +228,8 @@ export function dispatchEvent(
232228
233229 if (
234230 enableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay &&
235- enableSelectiveHydration &&
236- isCapturePhaseSynchronouslyHydratableEvent ( domEventName )
231+ eventSystemFlags & IS_CAPTURE_PHASE &&
232+ isDiscreteEventThatRequiresHydration ( domEventName )
237233 ) {
238234 while ( blockedOn !== null ) {
239235 const fiber = getInstanceFromNode ( blockedOn ) ;
@@ -251,6 +247,10 @@ export function dispatchEvent(
251247 }
252248 blockedOn = nextBlockedOn ;
253249 }
250+ if ( blockedOn ) {
251+ nativeEvent . stopPropagation ( ) ;
252+ return ;
253+ }
254254 }
255255
256256 // This is not replayable so we'll invoke it but without a target,
0 commit comments