Skip to content

Commit 85babc1

Browse files
committed
Add dispatchEvent to fragment instances (facebook#32813)
`fragmentInstance.dispatchEvent(evt)` calls `element.dispatchEvent(evt)` on the fragment's host parent. This mimics bubbling if the `fragmentInstance` could receive an event itself. If the parent is disconnected, there is a dev warning and no event is dispatched. DiffTrain build for [8a8df5d](facebook@8a8df5d)
1 parent 044700b commit 85babc1

26 files changed

+689
-521
lines changed

compiled-rn/VERSION_NATIVE_FB

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
19.2.0-native-fb-e5a8de81-20250506
1+
19.2.0-native-fb-8a8df5db-20250507

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-dev.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<499336b510771eac34cdb1f2efd2783c>>
10+
* @generated SignedSource<<9d240c29e08645f5a04f9d256f09aa47>>
1111
*/
1212

1313
"use strict";
@@ -404,5 +404,5 @@ __DEV__ &&
404404
exports.useFormStatus = function () {
405405
return resolveDispatcher().useHostTransitionStatus();
406406
};
407-
exports.version = "19.2.0-native-fb-e5a8de81-20250506";
407+
exports.version = "19.2.0-native-fb-8a8df5db-20250507";
408408
})();

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-prod.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<e0055236c23545f61906397ccc9a19f8>>
10+
* @generated SignedSource<<8b326785d8d215b82fc28a027099cd6a>>
1111
*/
1212

1313
"use strict";
@@ -203,4 +203,4 @@ exports.useFormState = function (action, initialState, permalink) {
203203
exports.useFormStatus = function () {
204204
return ReactSharedInternals.H.useHostTransitionStatus();
205205
};
206-
exports.version = "19.2.0-native-fb-e5a8de81-20250506";
206+
exports.version = "19.2.0-native-fb-8a8df5db-20250507";

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-profiling.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<e0055236c23545f61906397ccc9a19f8>>
10+
* @generated SignedSource<<8b326785d8d215b82fc28a027099cd6a>>
1111
*/
1212

1313
"use strict";
@@ -203,4 +203,4 @@ exports.useFormState = function (action, initialState, permalink) {
203203
exports.useFormStatus = function () {
204204
return ReactSharedInternals.H.useHostTransitionStatus();
205205
};
206-
exports.version = "19.2.0-native-fb-e5a8de81-20250506";
206+
exports.version = "19.2.0-native-fb-8a8df5db-20250507";

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-dev.js

Lines changed: 62 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<5aabad7dd74ffabe114d71475e5da8aa>>
10+
* @generated SignedSource<<708dc32190b9e0d6194fdf6c7feb6fc7>>
1111
*/
1212

1313
/*
@@ -253,30 +253,18 @@ __DEV__ &&
253253
c
254254
) {
255255
for (; null !== child; ) {
256-
if (5 === child.tag) {
257-
if (
258-
fn(child, a, b, c) ||
259-
(searchWithinHosts &&
260-
traverseVisibleHostChildren(
261-
child.child,
262-
searchWithinHosts,
263-
fn,
264-
a,
265-
b,
266-
c
267-
))
268-
)
269-
return !0;
270-
} else if (
271-
(22 !== child.tag || null === child.memoizedState) &&
272-
traverseVisibleHostChildren(
273-
child.child,
274-
searchWithinHosts,
275-
fn,
276-
a,
277-
b,
278-
c
279-
)
256+
if (
257+
(5 === child.tag && fn(child, a, b, c)) ||
258+
((22 !== child.tag || null === child.memoizedState) &&
259+
(searchWithinHosts || 5 !== child.tag) &&
260+
traverseVisibleHostChildren(
261+
child.child,
262+
searchWithinHosts,
263+
fn,
264+
a,
265+
b,
266+
c
267+
))
280268
)
281269
return !0;
282270
child = child.sibling;
@@ -13207,11 +13195,11 @@ __DEV__ &&
1320713195
eventListeners = parent.stateNode._eventListeners;
1320813196
if (null !== eventListeners)
1320913197
for (var i = 0; i < eventListeners.length; i++) {
13210-
var _eventListeners$i2 = eventListeners[i];
13198+
var _eventListeners$i3 = eventListeners[i];
1321113199
childElement.removeEventListener(
13212-
_eventListeners$i2.type,
13213-
_eventListeners$i2.listener,
13214-
_eventListeners$i2.optionsOrUseCapture
13200+
_eventListeners$i3.type,
13201+
_eventListeners$i3.listener,
13202+
_eventListeners$i3.optionsOrUseCapture
1321513203
);
1321613204
}
1321713205
}
@@ -21264,11 +21252,11 @@ __DEV__ &&
2126421252
var eventListeners = fragmentInstance._eventListeners;
2126521253
if (null !== eventListeners)
2126621254
for (var i = 0; i < eventListeners.length; i++) {
21267-
var _eventListeners$i = eventListeners[i];
21255+
var _eventListeners$i2 = eventListeners[i];
2126821256
childElement.addEventListener(
21269-
_eventListeners$i.type,
21270-
_eventListeners$i.listener,
21271-
_eventListeners$i.optionsOrUseCapture
21257+
_eventListeners$i2.type,
21258+
_eventListeners$i2.listener,
21259+
_eventListeners$i2.optionsOrUseCapture
2127221260
);
2127321261
}
2127421262
null !== fragmentInstance._observers &&
@@ -26392,10 +26380,44 @@ __DEV__ &&
2639226380
)),
2639326381
null !== this._eventListeners && this._eventListeners.splice(type, 1));
2639426382
};
26383+
FragmentInstance.prototype.dispatchEvent = function (event) {
26384+
var parentHostFiber = getFragmentParentHostFiber(this._fragmentFiber);
26385+
if (null === parentHostFiber) return !0;
26386+
parentHostFiber = getInstanceFromHostFiber(parentHostFiber);
26387+
var eventListeners = this._eventListeners;
26388+
if (
26389+
(null !== eventListeners && 0 < eventListeners.length) ||
26390+
!event.bubbles
26391+
) {
26392+
var temp = document.createTextNode("");
26393+
if (eventListeners)
26394+
for (var i = 0; i < eventListeners.length; i++) {
26395+
var _eventListeners$i = eventListeners[i];
26396+
temp.addEventListener(
26397+
_eventListeners$i.type,
26398+
_eventListeners$i.listener,
26399+
_eventListeners$i.optionsOrUseCapture
26400+
);
26401+
}
26402+
parentHostFiber.appendChild(temp);
26403+
event = temp.dispatchEvent(event);
26404+
if (eventListeners)
26405+
for (i = 0; i < eventListeners.length; i++)
26406+
(_eventListeners$i = eventListeners[i]),
26407+
temp.removeEventListener(
26408+
_eventListeners$i.type,
26409+
_eventListeners$i.listener,
26410+
_eventListeners$i.optionsOrUseCapture
26411+
);
26412+
parentHostFiber.removeChild(temp);
26413+
return event;
26414+
}
26415+
return parentHostFiber.dispatchEvent(event);
26416+
};
2639526417
FragmentInstance.prototype.focus = function (focusOptions) {
2639626418
traverseVisibleHostChildren(
2639726419
this._fragmentFiber.child,
26398-
!1,
26420+
!0,
2639926421
setFocusOnFiberIfFocusable,
2640026422
focusOptions,
2640126423
void 0,
@@ -26406,7 +26428,7 @@ __DEV__ &&
2640626428
var children = [];
2640726429
traverseVisibleHostChildren(
2640826430
this._fragmentFiber.child,
26409-
!1,
26431+
!0,
2641026432
collectChildren,
2641126433
children,
2641226434
void 0,
@@ -26951,11 +26973,11 @@ __DEV__ &&
2695126973
};
2695226974
(function () {
2695326975
var isomorphicReactPackageVersion = React.version;
26954-
if ("19.2.0-native-fb-e5a8de81-20250506" !== isomorphicReactPackageVersion)
26976+
if ("19.2.0-native-fb-8a8df5db-20250507" !== isomorphicReactPackageVersion)
2695526977
throw Error(
2695626978
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
2695726979
(isomorphicReactPackageVersion +
26958-
"\n - react-dom: 19.2.0-native-fb-e5a8de81-20250506\nLearn more: https://react.dev/warnings/version-mismatch")
26980+
"\n - react-dom: 19.2.0-native-fb-8a8df5db-20250507\nLearn more: https://react.dev/warnings/version-mismatch")
2695926981
);
2696026982
})();
2696126983
("function" === typeof Map &&
@@ -26992,10 +27014,10 @@ __DEV__ &&
2699227014
!(function () {
2699327015
var internals = {
2699427016
bundleType: 1,
26995-
version: "19.2.0-native-fb-e5a8de81-20250506",
27017+
version: "19.2.0-native-fb-8a8df5db-20250507",
2699627018
rendererPackageName: "react-dom",
2699727019
currentDispatcherRef: ReactSharedInternals,
26998-
reconcilerVersion: "19.2.0-native-fb-e5a8de81-20250506"
27020+
reconcilerVersion: "19.2.0-native-fb-8a8df5db-20250507"
2699927021
};
2700027022
internals.overrideHookState = overrideHookState;
2700127023
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
@@ -27139,5 +27161,5 @@ __DEV__ &&
2713927161
listenToAllSupportedEvents(container);
2714027162
return new ReactDOMHydrationRoot(initialChildren);
2714127163
};
27142-
exports.version = "19.2.0-native-fb-e5a8de81-20250506";
27164+
exports.version = "19.2.0-native-fb-8a8df5db-20250507";
2714327165
})();

0 commit comments

Comments
 (0)