@samitouri / QOS-React-2 / commits / 689beef6f5

[Flare] Move unstable_createEventComponent to ReactDOM (#15890)

Dominic Gannaway committed Jun 18, 2019 at 23:41 UTC 689beef6f5d0adab166f5eb0aac59eba6100677a
20 files changed +318 -290
packages/react-dom/src/client/ReactDOM.js
+9 -1
@@ -42,6 +42,7 @@ import {
42 } from 'react-reconciler/inline.dom';
43 import {createPortal as createPortalImpl} from 'shared/ReactPortal';
44 import {canUseDOM} from 'shared/ExecutionEnvironment';
45 +import createEventComponent from 'shared/createEventComponent';
46 import {setBatchingImplementation} from 'events/ReactGenericBatching';
47 import {
48 setRestoreImplementation,
@@ -63,7 +64,10 @@ import getComponentName from 'shared/getComponentName';
64 import invariant from 'shared/invariant';
65 import lowPriorityWarning from 'shared/lowPriorityWarning';
66 import warningWithoutStack from 'shared/warningWithoutStack';
66 -import {enableStableConcurrentModeAPIs} from 'shared/ReactFeatureFlags';
67 +import {
68 + enableStableConcurrentModeAPIs,
69 + enableEventAPI,
70 +} from 'shared/ReactFeatureFlags';
71
72 import {
73 getInstanceFromNode,
@@ -877,6 +881,10 @@ if (enableStableConcurrentModeAPIs) {
881 ReactDOM.createSyncRoot = createSyncRoot;
882 }
883
884 +if (enableEventAPI) {
885 + ReactDOM.unstable_createEventComponent = createEventComponent;
886 +}
887 +
888 const foundDevTools = injectIntoDevTools({
889 findFiberByHostInstance: getClosestInstanceFromNode,
890 bundleType: __DEV__ ? 1 : 0,
packages/react-dom/src/client/ReactDOMComponent.js
+2 -2
@@ -13,7 +13,7 @@ import {registrationNameModules} from 'events/EventPluginRegistry';
13 import warning from 'shared/warning';
14 import {canUseDOM} from 'shared/ExecutionEnvironment';
15 import warningWithoutStack from 'shared/warningWithoutStack';
16 -import type {ReactEventResponderEventType} from 'shared/ReactTypes';
16 +import type {ReactDOMEventResponderEventType} from 'shared/ReactDOMTypes';
17 import type {DOMTopLevelEventType} from 'events/TopLevelEventTypes';
18 import {
19 setListenToResponderEventTypes,
@@ -1287,7 +1287,7 @@ export function restoreControlledState(
1287 }
1288
1289 export function listenToEventResponderEventTypes(
1290 - eventTypes: Array<ReactEventResponderEventType>,
1290 + eventTypes: Array<ReactDOMEventResponderEventType>,
1291 element: Element | Document,
1292 ): void {
1293 if (enableEventAPI) {
packages/react-dom/src/client/ReactDOMHostConfig.js
+6 -1
@@ -46,6 +46,7 @@ import dangerousStyleValue from '../shared/dangerousStyleValue';
46
47 import type {DOMContainer} from './ReactDOM';
48 import type {ReactEventComponentInstance} from 'shared/ReactTypes';
49 +import type {ReactDOMEventResponder} from 'shared/ReactDOMTypes';
50 import {
51 mountEventResponder,
52 unmountEventResponder,
@@ -101,6 +102,7 @@ export type UpdatePayload = Array<mixed>;
102 export type ChildSet = void; // Unused
103 export type TimeoutHandle = TimeoutID;
104 export type NoTimeout = -1;
105 +export type EventResponder = ReactDOMEventResponder;
106
107 import {
108 enableSuspenseServerRenderer,
@@ -905,7 +907,10 @@ export function mountEventComponent(
907 const doc = rootContainerInstance.ownerDocument;
908 const documentBody = doc.body || doc;
909 const responder = eventComponentInstance.responder;
908 - const {rootEventTypes, targetEventTypes} = responder;
910 + const {
911 + rootEventTypes,
912 + targetEventTypes,
913 + } = ((responder: any): ReactDOMEventResponder);
914 if (targetEventTypes !== undefined) {
915 listenToEventResponderEventTypes(targetEventTypes, documentBody);
916 }
packages/react-dom/src/events/DOMEventResponderSystem.js
+30 -28
@@ -18,13 +18,15 @@ import {
18 HostComponent,
19 } from 'shared/ReactWorkTags';
20 import type {
21 - ReactEventResponder,
22 - ReactEventResponderEventType,
21 ReactEventComponentInstance,
24 - ReactResponderContext,
25 - ReactResponderEvent,
22 EventPriority,
23 } from 'shared/ReactTypes';
24 +import type {
25 + ReactDOMEventResponder,
26 + ReactDOMEventResponderEventType,
27 + ReactDOMResponderContext,
28 + ReactDOMResponderEvent,
29 +} from 'shared/ReactDOMTypes';
30 import type {DOMTopLevelEventType} from 'events/TopLevelEventTypes';
31 import {
32 batchedEventUpdates,
@@ -95,7 +97,7 @@ const rootEventTypesToEventComponentInstances: Map<
97 Set<ReactEventComponentInstance>,
98 > = new Map();
99 const targetEventTypeCached: Map<
98 - Array<ReactEventResponderEventType>,
100 + Array<ReactDOMEventResponderEventType>,
101 Set<string>,
102 > = new Map();
103 const ownershipChangeListeners: Set<ReactEventComponentInstance> = new Set();
@@ -116,7 +118,7 @@ let currentInstance: null | ReactEventComponentInstance = null;
118 let currentEventQueue: null | EventQueue = null;
119 let currentTimerIDCounter = 0;
120
119 -const eventResponderContext: ReactResponderContext = {
121 +const eventResponderContext: ReactDOMResponderContext = {
122 dispatchEvent(
123 possibleEventObject: Object,
124 listener: ($Shape<PartialEventObject>) => void,
@@ -186,7 +188,7 @@ const eventResponderContext: ReactResponderContext = {
188 eventListeners.set(eventObject, listener);
189 eventQueue.events.push(eventObject);
190 },
189 - isEventWithinTouchHitTarget(event: ReactResponderEvent): boolean {
191 + isEventWithinTouchHitTarget(event: ReactDOMResponderEvent): boolean {
192 validateResponderContext();
193 const target = event.target;
194 const nativeEvent = event.nativeEvent;
@@ -254,7 +256,9 @@ const eventResponderContext: ReactResponderContext = {
256 }
257 return false;
258 },
257 - addRootEventTypes(rootEventTypes: Array<ReactEventResponderEventType>): void {
259 + addRootEventTypes(
260 + rootEventTypes: Array<ReactDOMEventResponderEventType>,
261 + ): void {
262 validateResponderContext();
263 const activeDocument = getActiveDocument();
264 listenToResponderEventTypesImpl(rootEventTypes, activeDocument);
@@ -265,7 +269,7 @@ const eventResponderContext: ReactResponderContext = {
269 }
270 },
271 removeRootEventTypes(
268 - rootEventTypes: Array<ReactEventResponderEventType>,
272 + rootEventTypes: Array<ReactDOMEventResponderEventType>,
273 ): void {
274 validateResponderContext();
275 for (let i = 0; i < rootEventTypes.length; i++) {
@@ -375,7 +379,7 @@ const eventResponderContext: ReactResponderContext = {
379 },
380 getActiveDocument,
381 objectAssign: Object.assign,
378 - getEventCurrentTarget(event: ReactResponderEvent): Element {
382 + getEventCurrentTarget(event: ReactDOMResponderEvent): Element {
383 validateResponderContext();
384 const target = event.target;
385 let fiber = getClosestInstanceFromNode(target);
@@ -531,13 +535,13 @@ function processTimers(
535 }
536 }
537
534 -function createResponderEvent(
538 +function createDOMResponderEvent(
539 topLevelType: string,
540 nativeEvent: AnyNativeEvent,
541 nativeEventTarget: Element | Document,
542 passive: boolean,
543 passiveSupported: boolean,
540 -): ReactResponderEvent {
544 +): ReactDOMResponderEvent {
545 const {pointerType} = (nativeEvent: any);
546 let eventPointerType = '';
547 let pointerId = null;
@@ -589,7 +593,7 @@ function processEvents(events: Array<EventObjectType>): void {
593 }
594 }
595
592 -export function processEventQueue(): void {
596 +function processEventQueue(): void {
597 const {events, eventPriority} = ((currentEventQueue: any): EventQueue);
598
599 if (events.length === 0) {
@@ -622,8 +626,8 @@ export function processEventQueue(): void {
626 }
627 }
628
625 -function getTargetEventTypesSet(
626 - eventTypes: Array<ReactEventResponderEventType>,
629 +function getDOMTargetEventTypesSet(
630 + eventTypes: Array<ReactDOMEventResponderEventType>,
631 ): Set<string> {
632 let cachedSet = targetEventTypeCached.get(eventTypes);
633
@@ -669,7 +673,7 @@ function getTargetEventResponderInstances(
673 const targetEventTypes = responder.targetEventTypes;
674 // Validate the target event type exists on the responder
675 if (targetEventTypes !== undefined) {
672 - const targetEventTypesSet = getTargetEventTypesSet(targetEventTypes);
676 + const targetEventTypesSet = getDOMTargetEventTypesSet(targetEventTypes);
677 if (targetEventTypesSet.has(listeningName)) {
678 eventResponderInstances.push(eventComponentInstance);
679 }
@@ -700,8 +704,8 @@ function getRootEventResponderInstances(
704
705 function shouldSkipEventComponent(
706 eventResponderInstance: ReactEventComponentInstance,
703 - responder: ReactEventResponder,
704 - propagatedEventResponders: null | Set<ReactEventResponder>,
707 + responder: ReactDOMEventResponder,
708 + propagatedEventResponders: null | Set<ReactDOMEventResponder>,
709 ): boolean {
710 if (propagatedEventResponders !== null) {
711 if (propagatedEventResponders.has(responder)) {
@@ -716,9 +720,9 @@ function shouldSkipEventComponent(
720 }
721
722 function checkForLocalPropagationContinuation(
719 - responder: ReactEventResponder,
720 - propagatedEventResponders: Set<ReactEventResponder>,
721 -) {
723 + responder: ReactDOMEventResponder,
724 + propagatedEventResponders: Set<ReactDOMEventResponder>,
725 +): void {
726 if (continueLocalPropagation === true) {
727 propagatedEventResponders.delete(responder);
728 continueLocalPropagation = false;
@@ -748,14 +752,14 @@ function traverseAndHandleEventResponderInstances(
752 listeningName,
753 targetFiber,
754 );
751 - const responderEvent = createResponderEvent(
755 + const responderEvent = createDOMResponderEvent(
756 ((topLevelType: any): string),
757 nativeEvent,
758 ((nativeEventTarget: any): Element | Document),
759 isPassiveEvent,
760 isPassiveSupported,
761 );
758 - const propagatedEventResponders: Set<ReactEventResponder> = new Set();
762 + const propagatedEventResponders: Set<ReactDOMEventResponder> = new Set();
763 let length = targetEventResponderInstances.length;
764 let i;
765
@@ -964,7 +968,7 @@ export function dispatchEventForResponderEventSystem(
968
969 export function addRootEventTypesForComponentInstance(
970 eventComponentInstance: ReactEventComponentInstance,
967 - rootEventTypes: Array<ReactEventResponderEventType>,
971 + rootEventTypes: Array<ReactDOMEventResponderEventType>,
972 ): void {
973 for (let i = 0; i < rootEventTypes.length; i++) {
974 const rootEventType = rootEventTypes[i];
@@ -973,7 +977,7 @@ export function addRootEventTypesForComponentInstance(
977 }
978
979 function registerRootEventType(
976 - rootEventType: ReactEventResponderEventType,
980 + rootEventType: ReactDOMEventResponderEventType,
981 eventComponentInstance: ReactEventComponentInstance,
982 ): void {
983 let name = rootEventType;
@@ -1013,9 +1017,7 @@ function registerRootEventType(
1017 name,
1018 );
1019 rootEventTypesSet.add(listeningName);
1016 - rootEventComponentInstances.add(
1017 - ((eventComponentInstance: any): ReactEventComponentInstance),
1018 - );
1020 + rootEventComponentInstances.add(eventComponentInstance);
1021 }
1022
1023 export function generateListeningKey(
packages/react-events/src/Drag.js
+12 -12
@@ -8,12 +8,12 @@
8 */
9
10 import type {
11 - ReactResponderEvent,
12 - ReactResponderContext,
13 - EventPriority,
14 -} from 'shared/ReactTypes';
11 + ReactDOMResponderEvent,
12 + ReactDOMResponderContext,
13 +} from 'shared/ReactDOMTypes';
14 +import type {EventPriority} from 'shared/ReactTypes';
15
16 -import React from 'react';
16 +import ReactDOM from 'react-dom';
17 import {DiscreteEvent, UserBlockingEvent} from 'shared/ReactTypes';
18
19 const targetEventTypes = ['pointerdown'];
@@ -58,7 +58,7 @@ type DragEvent = {|
58 |};
59
60 function createDragEvent(
61 - context: ReactResponderContext,
61 + context: ReactDOMResponderContext,
62 type: DragEventType,
63 target: Element | Document,
64 eventData?: EventData,
@@ -72,7 +72,7 @@ function createDragEvent(
72 }
73
74 function dispatchDragEvent(
75 - context: ReactResponderContext,
75 + context: ReactDOMResponderContext,
76 name: DragEventType,
77 listener: DragEvent => void,
78 state: DragState,
@@ -99,8 +99,8 @@ const DragResponder = {
99 },
100 allowMultipleHostChildren: false,
101 onEvent(
102 - event: ReactResponderEvent,
103 - context: ReactResponderContext,
102 + event: ReactDOMResponderEvent,
103 + context: ReactDOMResponderContext,
104 props: Object,
105 state: DragState,
106 ): void {
@@ -142,8 +142,8 @@ const DragResponder = {
142 }
143 },
144 onRootEvent(
145 - event: ReactResponderEvent,
146 - context: ReactResponderContext,
145 + event: ReactDOMResponderEvent,
146 + context: ReactDOMResponderContext,
147 props: Object,
148 state: DragState,
149 ): void {
@@ -259,4 +259,4 @@ const DragResponder = {
259 },
260 };
261
262 -export default React.unstable_createEventComponent(DragResponder, 'Drag');
262 +export default ReactDOM.unstable_createEventComponent(DragResponder, 'Drag');
packages/react-events/src/Focus.js
+18 -18
@@ -8,12 +8,12 @@
8 */
9
10 import type {
11 + ReactDOMResponderEvent,
12 + ReactDOMResponderContext,
13 PointerType,
12 - ReactResponderEvent,
13 - ReactResponderContext,
14 -} from 'shared/ReactTypes';
14 +} from 'shared/ReactDOMTypes';
15
16 -import React from 'react';
16 +import ReactDOM from 'react-dom';
17 import {DiscreteEvent} from 'shared/ReactTypes';
18
19 type FocusProps = {
@@ -71,7 +71,7 @@ if (typeof window !== 'undefined' && window.PointerEvent === undefined) {
71 }
72
73 function createFocusEvent(
74 - context: ReactResponderContext,
74 + context: ReactDOMResponderContext,
75 type: FocusEventType,
76 target: Element | Document,
77 pointerType: PointerType,
@@ -85,7 +85,7 @@ function createFocusEvent(
85 }
86
87 function dispatchFocusInEvents(
88 - context: ReactResponderContext,
88 + context: ReactDOMResponderContext,
89 props: FocusProps,
90 state: FocusState,
91 ) {
@@ -127,7 +127,7 @@ function dispatchFocusInEvents(
127 }
128
129 function dispatchFocusOutEvents(
130 - context: ReactResponderContext,
130 + context: ReactDOMResponderContext,
131 props: FocusProps,
132 state: FocusState,
133 ) {
@@ -158,7 +158,7 @@ function dispatchFocusOutEvents(
158 }
159
160 function dispatchFocusVisibleOutEvent(
161 - context: ReactResponderContext,
161 + context: ReactDOMResponderContext,
162 props: FocusProps,
163 state: FocusState,
164 ) {
@@ -180,7 +180,7 @@ function dispatchFocusVisibleOutEvent(
180 }
181
182 function unmountResponder(
183 - context: ReactResponderContext,
183 + context: ReactDOMResponderContext,
184 props: FocusProps,
185 state: FocusState,
186 ): void {
@@ -190,8 +190,8 @@ function unmountResponder(
190 }
191
192 function handleRootPointerEvent(
193 - event: ReactResponderEvent,
194 - context: ReactResponderContext,
193 + event: ReactDOMResponderEvent,
194 + context: ReactDOMResponderContext,
195 props: FocusProps,
196 state: FocusState,
197 ): void {
@@ -229,8 +229,8 @@ const FocusResponder = {
229 },
230 allowMultipleHostChildren: false,
231 onEvent(
232 - event: ReactResponderEvent,
233 - context: ReactResponderContext,
232 + event: ReactDOMResponderEvent,
233 + context: ReactDOMResponderContext,
234 props: FocusProps,
235 state: FocusState,
236 ): void {
@@ -270,8 +270,8 @@ const FocusResponder = {
270 }
271 },
272 onRootEvent(
273 - event: ReactResponderEvent,
274 - context: ReactResponderContext,
273 + event: ReactDOMResponderEvent,
274 + context: ReactDOMResponderContext,
275 props: FocusProps,
276 state: FocusState,
277 ): void {
@@ -321,14 +321,14 @@ const FocusResponder = {
321 }
322 },
323 onUnmount(
324 - context: ReactResponderContext,
324 + context: ReactDOMResponderContext,
325 props: FocusProps,
326 state: FocusState,
327 ) {
328 unmountResponder(context, props, state);
329 },
330 onOwnershipChange(
331 - context: ReactResponderContext,
331 + context: ReactDOMResponderContext,
332 props: FocusProps,
333 state: FocusState,
334 ) {
@@ -336,4 +336,4 @@ const FocusResponder = {
336 },
337 };
338
339 -export default React.unstable_createEventComponent(FocusResponder, 'Focus');
339 +export default ReactDOM.unstable_createEventComponent(FocusResponder, 'Focus');
packages/react-events/src/FocusScope.js
+13 -12
@@ -7,10 +7,11 @@
7 * @flow
8 */
9 import type {
10 - ReactResponderEvent,
11 - ReactResponderContext,
12 -} from 'shared/ReactTypes';
13 -import React from 'react';
10 + ReactDOMResponderEvent,
11 + ReactDOMResponderContext,
12 +} from 'shared/ReactDOMTypes';
13 +
14 +import ReactDOM from 'react-dom';
15
16 type FocusScopeProps = {
17 autoFocus: Boolean,
@@ -35,7 +36,7 @@ function focusElement(element: ?HTMLElement) {
36 }
37
38 function getFirstFocusableElement(
38 - context: ReactResponderContext,
39 + context: ReactDOMResponderContext,
40 state: FocusScopeState,
41 ): ?HTMLElement {
42 const elements = context.getFocusableElementsInScope();
@@ -55,8 +56,8 @@ const FocusScopeResponder = {
56 },
57 allowMultipleHostChildren: true,
58 onEvent(
58 - event: ReactResponderEvent,
59 - context: ReactResponderContext,
59 + event: ReactDOMResponderEvent,
60 + context: ReactDOMResponderContext,
61 props: FocusScopeProps,
62 state: FocusScopeState,
63 ) {
@@ -112,8 +113,8 @@ const FocusScopeResponder = {
113 }
114 },
115 onRootEvent(
115 - event: ReactResponderEvent,
116 - context: ReactResponderContext,
116 + event: ReactDOMResponderEvent,
117 + context: ReactDOMResponderContext,
118 props: FocusScopeProps,
119 state: FocusScopeState,
120 ) {
@@ -133,7 +134,7 @@ const FocusScopeResponder = {
134 }
135 },
136 onMount(
136 - context: ReactResponderContext,
137 + context: ReactDOMResponderContext,
138 props: FocusScopeProps,
139 state: FocusScopeState,
140 ): void {
@@ -146,7 +147,7 @@ const FocusScopeResponder = {
147 }
148 },
149 onUnmount(
149 - context: ReactResponderContext,
150 + context: ReactDOMResponderContext,
151 props: FocusScopeProps,
152 state: FocusScopeState,
153 ): void {
@@ -156,7 +157,7 @@ const FocusScopeResponder = {
157 },
158 };
159
159 -export default React.unstable_createEventComponent(
160 +export default ReactDOM.unstable_createEventComponent(
161 FocusScopeResponder,
162 'FocusScope',
163 );
packages/react-events/src/Hover.js
+18 -18
@@ -8,11 +8,11 @@
8 */
9
10 import type {
11 - ReactResponderEvent,
12 - ReactResponderContext,
13 -} from 'shared/ReactTypes';
11 + ReactDOMResponderEvent,
12 + ReactDOMResponderContext,
13 +} from 'shared/ReactDOMTypes';
14
15 -import React from 'react';
15 +import ReactDOM from 'react-dom';
16 import {UserBlockingEvent} from 'shared/ReactTypes';
17
18 type HoverProps = {
@@ -69,8 +69,8 @@ if (typeof window !== 'undefined' && window.PointerEvent === undefined) {
69 }
70
71 function createHoverEvent(
72 - event: ?ReactResponderEvent,
73 - context: ReactResponderContext,
72 + event: ?ReactDOMResponderEvent,
73 + context: ReactDOMResponderContext,
74 type: HoverEventType,
75 target: Element | Document,
76 ): HoverEvent {
@@ -102,8 +102,8 @@ function createHoverEvent(
102 }
103
104 function dispatchHoverChangeEvent(
105 - event: null | ReactResponderEvent,
106 - context: ReactResponderContext,
105 + event: null | ReactDOMResponderEvent,
106 + context: ReactDOMResponderContext,
107 props: HoverProps,
108 state: HoverState,
109 ): void {
@@ -121,8 +121,8 @@ function dispatchHoverChangeEvent(
121 }
122
123 function dispatchHoverStartEvents(
124 - event: ReactResponderEvent,
125 - context: ReactResponderContext,
124 + event: ReactDOMResponderEvent,
125 + context: ReactDOMResponderContext,
126 props: HoverProps,
127 state: HoverState,
128 ): void {
@@ -184,8 +184,8 @@ function dispatchHoverStartEvents(
184 }
185
186 function dispatchHoverEndEvents(
187 - event: null | ReactResponderEvent,
188 - context: ReactResponderContext,
187 + event: null | ReactDOMResponderEvent,
188 + context: ReactDOMResponderContext,
189 props: HoverProps,
190 state: HoverState,
191 ) {
@@ -256,7 +256,7 @@ function calculateDelayMS(delay: ?number, min = 0, fallback = 0) {
256 }
257
258 function unmountResponder(
259 - context: ReactResponderContext,
259 + context: ReactDOMResponderContext,
260 props: HoverProps,
261 state: HoverState,
262 ): void {
@@ -288,8 +288,8 @@ const HoverResponder = {
288 },
289 allowMultipleHostChildren: false,
290 onEvent(
291 - event: ReactResponderEvent,
292 - context: ReactResponderContext,
291 + event: ReactDOMResponderEvent,
292 + context: ReactDOMResponderContext,
293 props: HoverProps,
294 state: HoverState,
295 ): void {
@@ -391,14 +391,14 @@ const HoverResponder = {
391 }
392 },
393 onUnmount(
394 - context: ReactResponderContext,
394 + context: ReactDOMResponderContext,
395 props: HoverProps,
396 state: HoverState,
397 ) {
398 unmountResponder(context, props, state);
399 },
400 onOwnershipChange(
401 - context: ReactResponderContext,
401 + context: ReactDOMResponderContext,
402 props: HoverProps,
403 state: HoverState,
404 ) {
@@ -406,4 +406,4 @@ const HoverResponder = {
406 },
407 };
408
409 -export default React.unstable_createEventComponent(HoverResponder, 'Hover');
409 +export default ReactDOM.unstable_createEventComponent(HoverResponder, 'Hover');
packages/react-events/src/Press.js
+33 -33
@@ -8,13 +8,13 @@
8 */
9
10 import type {
11 + ReactDOMResponderEvent,
12 + ReactDOMResponderContext,
13 PointerType,
12 - ReactResponderEvent,
13 - ReactResponderContext,
14 -} from 'shared/ReactTypes';
14 +} from 'shared/ReactDOMTypes';
15 import type {EventPriority} from 'shared/ReactTypes';
16
17 -import React from 'react';
17 +import ReactDOM from 'react-dom';
18 import {DiscreteEvent, UserBlockingEvent} from 'shared/ReactTypes';
19
20 type PressProps = {
@@ -150,11 +150,11 @@ if (typeof window !== 'undefined' && window.PointerEvent === undefined) {
150 }
151
152 function createPressEvent(
153 - context: ReactResponderContext,
153 + context: ReactDOMResponderContext,
154 type: PressEventType,
155 target: Element | Document,
156 pointerType: PointerType,
157 - event: ?ReactResponderEvent,
157 + event: ?ReactDOMResponderEvent,
158 ): PressEvent {
159 const timeStamp = context.getTimeStamp();
160 let clientX = null;
@@ -204,8 +204,8 @@ function createPressEvent(
204 }
205
206 function dispatchEvent(
207 - event: ?ReactResponderEvent,
208 - context: ReactResponderContext,
207 + event: ?ReactDOMResponderEvent,
208 + context: ReactDOMResponderContext,
209 state: PressState,
210 name: PressEventType,
211 listener: (e: Object) => void,
@@ -224,8 +224,8 @@ function dispatchEvent(
224 }
225
226 function dispatchPressChangeEvent(
227 - event: ?ReactResponderEvent,
228 - context: ReactResponderContext,
227 + event: ?ReactDOMResponderEvent,
228 + context: ReactDOMResponderContext,
229 props: PressProps,
230 state: PressState,
231 ): void {
@@ -237,8 +237,8 @@ function dispatchPressChangeEvent(
237 }
238
239 function dispatchLongPressChangeEvent(
240 - event: ?ReactResponderEvent,
241 - context: ReactResponderContext,
240 + event: ?ReactDOMResponderEvent,
241 + context: ReactDOMResponderContext,
242 props: PressProps,
243 state: PressState,
244 ): void {
@@ -256,7 +256,7 @@ function dispatchLongPressChangeEvent(
256 );
257 }
258
259 -function activate(event: ReactResponderEvent, context, props, state) {
259 +function activate(event: ReactDOMResponderEvent, context, props, state) {
260 const nativeEvent: any = event.nativeEvent;
261 const {x, y} = getEventViewportCoords(nativeEvent);
262 const wasActivePressed = state.isActivePressed;
@@ -280,7 +280,7 @@ function activate(event: ReactResponderEvent, context, props, state) {
280 }
281 }
282
283 -function deactivate(event: ?ReactResponderEvent, context, props, state) {
283 +function deactivate(event: ?ReactDOMResponderEvent, context, props, state) {
284 const wasLongPressed = state.isLongPressed;
285 state.isActivePressed = false;
286 state.isLongPressed = false;
@@ -304,8 +304,8 @@ function deactivate(event: ?ReactResponderEvent, context, props, state) {
304 }
305
306 function dispatchPressStartEvents(
307 - event: ReactResponderEvent,
308 - context: ReactResponderContext,
307 + event: ReactDOMResponderEvent,
308 + context: ReactDOMResponderContext,
309 props: PressProps,
310 state: PressState,
311 ): void {
@@ -367,8 +367,8 @@ function dispatchPressStartEvents(
367 }
368
369 function dispatchPressEndEvents(
370 - event: ?ReactResponderEvent,
371 - context: ReactResponderContext,
370 + event: ?ReactDOMResponderEvent,
371 + context: ReactDOMResponderContext,
372 props: PressProps,
373 state: PressState,
374 ): void {
@@ -415,8 +415,8 @@ function dispatchPressEndEvents(
415 }
416
417 function dispatchCancel(
418 - event: ReactResponderEvent,
419 - context: ReactResponderContext,
418 + event: ReactDOMResponderEvent,
419 + context: ReactDOMResponderContext,
420 props: PressProps,
421 state: PressState,
422 ): void {
@@ -447,7 +447,7 @@ function calculateDelayMS(delay: ?number, min = 0, fallback = 0) {
447
448 // TODO: account for touch hit slop
449 function calculateResponderRegion(
450 - context: ReactResponderContext,
450 + context: ReactDOMResponderContext,
451 target: Element,
452 props: PressProps,
453 ) {
@@ -512,7 +512,7 @@ function getEventViewportCoords(
512 }
513
514 function unmountResponder(
515 - context: ReactResponderContext,
515 + context: ReactDOMResponderContext,
516 props: PressProps,
517 state: PressState,
518 ): void {
@@ -523,7 +523,7 @@ function unmountResponder(
523 }
524
525 function addRootEventTypes(
526 - context: ReactResponderContext,
526 + context: ReactDOMResponderContext,
527 state: PressState,
528 ): void {
529 if (!state.addedRootEvents) {
@@ -533,7 +533,7 @@ function addRootEventTypes(
533 }
534
535 function removeRootEventTypes(
536 - context: ReactResponderContext,
536 + context: ReactDOMResponderContext,
537 state: PressState,
538 ): void {
539 if (state.addedRootEvents) {
@@ -556,7 +556,7 @@ function getTouchById(
556 return null;
557 }
558
559 -function getTouchTarget(context: ReactResponderContext, touchEvent: Touch) {
559 +function getTouchTarget(context: ReactDOMResponderContext, touchEvent: Touch) {
560 const doc = context.getActiveDocument();
561 return doc.elementFromPoint(touchEvent.clientX, touchEvent.clientY);
562 }
@@ -564,7 +564,7 @@ function getTouchTarget(context: ReactResponderContext, touchEvent: Touch) {
564 function updateIsPressWithinResponderRegion(
565 target: Element | Document,
566 nativeEventOrTouchEvent: Event | Touch,
567 - context: ReactResponderContext,
567 + context: ReactDOMResponderContext,
568 props: PressProps,
569 state: PressState,
570 ): void {
@@ -635,8 +635,8 @@ const PressResponder = {
635 },
636 allowMultipleHostChildren: false,
637 onEvent(
638 - event: ReactResponderEvent,
639 - context: ReactResponderContext,
638 + event: ReactDOMResponderEvent,
639 + context: ReactDOMResponderContext,
640 props: PressProps,
641 state: PressState,
642 ): void {
@@ -760,8 +760,8 @@ const PressResponder = {
760 }
761 },
762 onRootEvent(
763 - event: ReactResponderEvent,
764 - context: ReactResponderContext,
763 + event: ReactDOMResponderEvent,
764 + context: ReactDOMResponderContext,
765 props: PressProps,
766 state: PressState,
767 ): void {
@@ -941,14 +941,14 @@ const PressResponder = {
941 }
942 },
943 onUnmount(
944 - context: ReactResponderContext,
944 + context: ReactDOMResponderContext,
945 props: PressProps,
946 state: PressState,
947 ) {
948 unmountResponder(context, props, state);
949 },
950 onOwnershipChange(
951 - context: ReactResponderContext,
951 + context: ReactDOMResponderContext,
952 props: PressProps,
953 state: PressState,
954 ) {
@@ -956,4 +956,4 @@ const PressResponder = {
956 },
957 };
958
959 -export default React.unstable_createEventComponent(PressResponder, 'Press');
959 +export default ReactDOM.unstable_createEventComponent(PressResponder, 'Press');
packages/react-events/src/Scroll.js
+18 -15
@@ -8,14 +8,14 @@
8 */
9
10 import type {
11 + ReactDOMResponderEvent,
12 + ReactDOMResponderContext,
13 PointerType,
12 - ReactResponderEvent,
13 - ReactResponderContext,
14 -} from 'shared/ReactTypes';
14 +} from 'shared/ReactDOMTypes';
15 import {UserBlockingEvent} from 'shared/ReactTypes';
16 import type {EventPriority} from 'shared/ReactTypes';
17
18 -import React from 'react';
18 +import ReactDOM from 'react-dom';
19
20 type ScrollProps = {
21 disabled: boolean,
@@ -61,8 +61,8 @@ const targetEventTypes = ['scroll', 'pointerdown', 'keyup'];
61 const rootEventTypes = ['pointermove', 'pointerup', 'pointercancel'];
62
63 function createScrollEvent(
64 - event: ?ReactResponderEvent,
65 - context: ReactResponderContext,
64 + event: ?ReactDOMResponderEvent,
65 + context: ReactDOMResponderContext,
66 type: ScrollEventType,
67 target: Element | Document,
68 pointerType: PointerType,
@@ -97,8 +97,8 @@ function createScrollEvent(
97 }
98
99 function dispatchEvent(
100 - event: ?ReactResponderEvent,
101 - context: ReactResponderContext,
100 + event: ?ReactDOMResponderEvent,
101 + context: ReactDOMResponderContext,
102 state: ScrollState,
103 name: ScrollEventType,
104 listener: (e: Object) => void,
@@ -127,8 +127,8 @@ const ScrollResponder = {
127 },
128 allowMultipleHostChildren: true,
129 onEvent(
130 - event: ReactResponderEvent,
131 - context: ReactResponderContext,
130 + event: ReactDOMResponderEvent,
131 + context: ReactDOMResponderContext,
132 props: ScrollProps,
133 state: ScrollState,
134 ): void {
@@ -173,8 +173,8 @@ const ScrollResponder = {
173 }
174 },
175 onRootEvent(
176 - event: ReactResponderEvent,
177 - context: ReactResponderContext,
176 + event: ReactDOMResponderEvent,
177 + context: ReactDOMResponderContext,
178 props: ScrollProps,
179 state: ScrollState,
180 ) {
@@ -196,14 +196,14 @@ const ScrollResponder = {
196 }
197 },
198 onUnmount(
199 - context: ReactResponderContext,
199 + context: ReactDOMResponderContext,
200 props: ScrollProps,
201 state: ScrollState,
202 ) {
203 // TODO
204 },
205 onOwnershipChange(
206 - context: ReactResponderContext,
206 + context: ReactDOMResponderContext,
207 props: ScrollProps,
208 state: ScrollState,
209 ) {
@@ -211,4 +211,7 @@ const ScrollResponder = {
211 },
212 };
213
214 -export default React.unstable_createEventComponent(ScrollResponder, 'Scroll');
214 +export default ReactDOM.unstable_createEventComponent(
215 + ScrollResponder,
216 + 'Scroll',
217 +);
packages/react-events/src/Swipe.js
+11 -11
@@ -8,12 +8,12 @@
8 */
9
10 import type {
11 - ReactResponderEvent,
12 - ReactResponderContext,
13 -} from 'shared/ReactTypes';
11 + ReactDOMResponderEvent,
12 + ReactDOMResponderContext,
13 +} from 'shared/ReactDOMTypes';
14 import type {EventPriority} from 'shared/ReactTypes';
15
16 -import React from 'react';
16 +import ReactDOM from 'react-dom';
17 import {UserBlockingEvent, DiscreteEvent} from 'shared/ReactTypes';
18
19 const targetEventTypes = ['pointerdown'];
@@ -48,7 +48,7 @@ type SwipeEvent = {|
48 |};
49
50 function createSwipeEvent(
51 - context: ReactResponderContext,
51 + context: ReactDOMResponderContext,
52 type: SwipeEventType,
53 target: Element | Document,
54 eventData?: EventData,
@@ -64,7 +64,7 @@ function createSwipeEvent(
64 }
65
66 function dispatchSwipeEvent(
67 - context: ReactResponderContext,
67 + context: ReactDOMResponderContext,
68 name: SwipeEventType,
69 listener: SwipeEvent => void,
70 state: SwipeState,
@@ -105,8 +105,8 @@ const SwipeResponder = {
105 },
106 allowMultipleHostChildren: false,
107 onEvent(
108 - event: ReactResponderEvent,
109 - context: ReactResponderContext,
108 + event: ReactDOMResponderEvent,
109 + context: ReactDOMResponderContext,
110 props: Object,
111 state: SwipeState,
112 ): void {
@@ -147,8 +147,8 @@ const SwipeResponder = {
147 }
148 },
149 onRootEvent(
150 - event: ReactResponderEvent,
151 - context: ReactResponderContext,
150 + event: ReactDOMResponderEvent,
151 + context: ReactDOMResponderContext,
152 props: Object,
153 state: SwipeState,
154 ): void {
@@ -262,4 +262,4 @@ const SwipeResponder = {
262 },
263 };
264
265 -export default React.unstable_createEventComponent(SwipeResponder, 'Swipe');
265 +export default ReactDOM.unstable_createEventComponent(SwipeResponder, 'Swipe');
packages/react-native-renderer/src/ReactFabricHostConfig.js
+1
@@ -76,6 +76,7 @@ export type UpdatePayload = Object;
76
77 export type TimeoutHandle = TimeoutID;
78 export type NoTimeout = -1;
79 +export type EventResponder = any;
80
81 // TODO: Remove this conditional once all changes have propagated.
82 if (registerEventHandler) {
packages/react-native-renderer/src/ReactNativeHostConfig.js
+1
@@ -48,6 +48,7 @@ export type ChildSet = void; // Unused
48
49 export type TimeoutHandle = TimeoutID;
50 export type NoTimeout = -1;
51 +export type EventResponder = any;
52
53 const UPDATE_SIGNAL = {};
54 if (__DEV__) {
packages/react-reconciler/src/forks/ReactFiberHostConfig.custom.js
+1
@@ -37,6 +37,7 @@ export opaque type UpdatePayload = mixed; // eslint-disable-line no-undef
37 export opaque type ChildSet = mixed; // eslint-disable-line no-undef
38 export opaque type TimeoutHandle = mixed; // eslint-disable-line no-undef
39 export opaque type NoTimeout = mixed; // eslint-disable-line no-undef
40 +export type EventResponder = any;
41
42 export const getPublicInstance = $$$hostConfig.getPublicInstance;
43 export const getRootHostContext = $$$hostConfig.getRootHostContext;
packages/react-test-renderer/src/ReactTestHostConfig.js
+1
@@ -53,6 +53,7 @@ export type UpdatePayload = Object;
53 export type ChildSet = void; // Unused
54 export type TimeoutHandle = TimeoutID;
55 export type NoTimeout = -1;
56 +export type EventResponder = any;
57
58 export * from 'shared/HostConfigWithNoPersistence';
59 export * from 'shared/HostConfigWithNoHydration';
packages/react/src/React.js
+1 -6
@@ -14,7 +14,6 @@ import {
14 } from 'shared/ReactSymbols';
15
16 import {Component, PureComponent} from './ReactBaseClasses';
17 -import {createEventComponent} from './ReactCreateEventComponent';
17 import {createRef} from './ReactCreateRef';
18 import {forEach, map, count, toArray, only} from './ReactChildren';
19 import {
@@ -51,7 +50,7 @@ import {
50 } from './ReactElementValidator';
51 import ReactSharedInternals from './ReactSharedInternals';
52 import {error, warn} from './withComponentStack';
54 -import {enableEventAPI, enableJSXTransformAPI} from 'shared/ReactFeatureFlags';
53 +import {enableJSXTransformAPI} from 'shared/ReactFeatureFlags';
54 const React = {
55 Children: {
56 map,
@@ -106,10 +105,6 @@ const React = {
105 // don't modify the React object to avoid deopts.
106 // Also let's not expose their names in stable builds.
107
109 -if (enableEventAPI) {
110 - React.unstable_createEventComponent = createEventComponent;
111 -}
112 -
108 if (enableJSXTransformAPI) {
109 if (__DEV__) {
110 React.jsxDEV = jsxWithValidation;
packages/shared/ReactDOMTypes.js new
+112
@@ -0,0 +1,112 @@
1 +/**
2 + * Copyright (c) Facebook, Inc. and its affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +import type {EventPriority} from 'shared/ReactTypes';
11 +
12 +type AnyNativeEvent = Event | KeyboardEvent | MouseEvent | Touch;
13 +
14 +export type ReactDOMEventResponderEventType =
15 + | string
16 + | {name: string, passive?: boolean};
17 +
18 +export type PointerType =
19 + | ''
20 + | 'mouse'
21 + | 'keyboard'
22 + | 'pen'
23 + | 'touch'
24 + | 'trackpad';
25 +
26 +export type ReactDOMResponderEvent = {
27 + nativeEvent: AnyNativeEvent,
28 + passive: boolean,
29 + passiveSupported: boolean,
30 + pointerId: null | number,
31 + pointerType: PointerType,
32 + target: Element | Document,
33 + type: string,
34 +};
35 +
36 +export type ReactDOMEventResponder = {
37 + targetEventTypes?: Array<ReactDOMEventResponderEventType>,
38 + rootEventTypes?: Array<ReactDOMEventResponderEventType>,
39 + createInitialState?: (props: null | Object) => Object,
40 + allowMultipleHostChildren: boolean,
41 + stopLocalPropagation: boolean,
42 + onEvent?: (
43 + event: ReactDOMResponderEvent,
44 + context: ReactDOMResponderContext,
45 + props: null | Object,
46 + state: null | Object,
47 + ) => void,
48 + onEventCapture?: (
49 + event: ReactDOMResponderEvent,
50 + context: ReactDOMResponderContext,
51 + props: null | Object,
52 + state: null | Object,
53 + ) => void,
54 + onRootEvent?: (
55 + event: ReactDOMResponderEvent,
56 + context: ReactDOMResponderContext,
57 + props: null | Object,
58 + state: null | Object,
59 + ) => void,
60 + onMount?: (
61 + context: ReactDOMResponderContext,
62 + props: null | Object,
63 + state: null | Object,
64 + ) => void,
65 + onUnmount?: (
66 + context: ReactDOMResponderContext,
67 + props: null | Object,
68 + state: null | Object,
69 + ) => void,
70 + onOwnershipChange?: (
71 + context: ReactDOMResponderContext,
72 + props: null | Object,
73 + state: null | Object,
74 + ) => void,
75 +};
76 +
77 +export type ReactDOMResponderContext = {
78 + dispatchEvent: (
79 + eventObject: Object,
80 + listener: (Object) => void,
81 + eventPriority: EventPriority,
82 + ) => void,
83 + isTargetWithinElement: (
84 + childTarget: Element | Document,
85 + parentTarget: Element | Document,
86 + ) => boolean,
87 + isTargetWithinEventComponent: (Element | Document) => boolean,
88 + isTargetWithinEventResponderScope: (Element | Document) => boolean,
89 + isEventWithinTouchHitTarget: (event: ReactDOMResponderEvent) => boolean,
90 + addRootEventTypes: (
91 + rootEventTypes: Array<ReactDOMEventResponderEventType>,
92 + ) => void,
93 + removeRootEventTypes: (
94 + rootEventTypes: Array<ReactDOMEventResponderEventType>,
95 + ) => void,
96 + hasOwnership: () => boolean,
97 + requestGlobalOwnership: () => boolean,
98 + releaseOwnership: () => boolean,
99 + setTimeout: (func: () => void, timeout: number) => number,
100 + clearTimeout: (timerId: number) => void,
101 + getFocusableElementsInScope(): Array<HTMLElement>,
102 + getActiveDocument(): Document,
103 + objectAssign: Function,
104 + getEventCurrentTarget(event: ReactDOMResponderEvent): Element,
105 + getTimeStamp: () => number,
106 + isTargetWithinHostComponent: (
107 + target: Element | Document,
108 + elementType: string,
109 + deep: boolean,
110 + ) => boolean,
111 + continueLocalPropagation(): void,
112 +};
packages/shared/ReactTypes.js
+4 -103
@@ -7,6 +7,8 @@
7 * @flow
8 */
9
10 +import type {EventResponder} from 'react-reconciler/src/ReactFiberHostConfig';
11 +
12 export type ReactNode =
13 | React$Element<any>
14 | ReactPortal
@@ -81,54 +83,10 @@ export type RefObject = {|
83 current: any,
84 |};
85
84 -export type ReactEventResponderEventType =
85 - | string
86 - | {name: string, passive?: boolean};
87 -
88 -export type ReactEventResponder = {
89 - targetEventTypes?: Array<ReactEventResponderEventType>,
90 - rootEventTypes?: Array<ReactEventResponderEventType>,
91 - createInitialState?: (props: null | Object) => Object,
92 - allowMultipleHostChildren: boolean,
93 - onEvent?: (
94 - event: ReactResponderEvent,
95 - context: ReactResponderContext,
96 - props: null | Object,
97 - state: null | Object,
98 - ) => void,
99 - onEventCapture?: (
100 - event: ReactResponderEvent,
101 - context: ReactResponderContext,
102 - props: null | Object,
103 - state: null | Object,
104 - ) => void,
105 - onRootEvent?: (
106 - event: ReactResponderEvent,
107 - context: ReactResponderContext,
108 - props: null | Object,
109 - state: null | Object,
110 - ) => void,
111 - onMount?: (
112 - context: ReactResponderContext,
113 - props: null | Object,
114 - state: null | Object,
115 - ) => void,
116 - onUnmount?: (
117 - context: ReactResponderContext,
118 - props: null | Object,
119 - state: null | Object,
120 - ) => void,
121 - onOwnershipChange?: (
122 - context: ReactResponderContext,
123 - props: null | Object,
124 - state: null | Object,
125 - ) => void,
126 -};
127 -
86 export type ReactEventComponentInstance = {|
87 currentFiber: mixed,
88 props: null | Object,
131 - responder: ReactEventResponder,
89 + responder: EventResponder,
90 rootEventTypes: null | Set<string>,
91 rootInstance: mixed,
92 state: null | Object,
@@ -138,7 +96,7 @@ export type ReactEventComponent = {|
96 $$typeof: Symbol | number,
97 displayName: string,
98 props: null | Object,
141 - responder: ReactEventResponder,
99 + responder: EventResponder,
100 |};
101
102 export type ReactEventTarget = {|
@@ -147,65 +105,8 @@ export type ReactEventTarget = {|
105 type: Symbol | number,
106 |};
107
150 -type AnyNativeEvent = Event | KeyboardEvent | MouseEvent | Touch;
151 -
152 -export type PointerType =
153 - | ''
154 - | 'mouse'
155 - | 'keyboard'
156 - | 'pen'
157 - | 'touch'
158 - | 'trackpad';
159 -
160 -export type ReactResponderEvent = {
161 - nativeEvent: AnyNativeEvent,
162 - passive: boolean,
163 - passiveSupported: boolean,
164 - pointerId: null | number,
165 - pointerType: PointerType,
166 - target: Element | Document,
167 - type: string,
168 -};
169 -
108 export opaque type EventPriority = 0 | 1 | 2;
109
110 export const DiscreteEvent: EventPriority = 0;
111 export const UserBlockingEvent: EventPriority = 1;
112 export const ContinuousEvent: EventPriority = 2;
175 -
176 -export type ReactResponderContext = {
177 - dispatchEvent: (
178 - eventObject: Object,
179 - listener: (Object) => void,
180 - eventPriority: EventPriority,
181 - ) => void,
182 - isTargetWithinElement: (
183 - childTarget: Element | Document,
184 - parentTarget: Element | Document,
185 - ) => boolean,
186 - isTargetWithinEventComponent: (Element | Document) => boolean,
187 - isTargetWithinEventResponderScope: (Element | Document) => boolean,
188 - isEventWithinTouchHitTarget: (event: ReactResponderEvent) => boolean,
189 - addRootEventTypes: (
190 - rootEventTypes: Array<ReactEventResponderEventType>,
191 - ) => void,
192 - removeRootEventTypes: (
193 - rootEventTypes: Array<ReactEventResponderEventType>,
194 - ) => void,
195 - hasOwnership: () => boolean,
196 - requestGlobalOwnership: () => boolean,
197 - releaseOwnership: () => boolean,
198 - setTimeout: (func: () => void, timeout: number) => number,
199 - clearTimeout: (timerId: number) => void,
200 - getFocusableElementsInScope(): Array<HTMLElement>,
201 - getActiveDocument(): Document,
202 - objectAssign: Function,
203 - getEventCurrentTarget(event: ReactResponderEvent): Element,
204 - getTimeStamp: () => number,
205 - isTargetWithinHostComponent: (
206 - target: Element | Document,
207 - elementType: string,
208 - deep: boolean,
209 - ) => boolean,
210 - continueLocalPropagation(): void,
211 -};
packages/shared/createEventComponent.js renamed
+20 -23
@@ -6,9 +6,8 @@
6 * @flow
7 */
8
9 -import type {ReactEventComponent, ReactEventResponder} from 'shared/ReactTypes';
10 -import {enableEventAPI} from 'shared/ReactFeatureFlags';
11 -
9 +import type {EventResponder} from 'react-reconciler/src/ReactFiberHostConfig';
10 +import type {ReactEventComponent} from 'shared/ReactTypes';
11 import {REACT_EVENT_COMPONENT_TYPE} from 'shared/ReactSymbols';
12
13 let hasBadMapPolyfill;
@@ -30,26 +29,24 @@ if (__DEV__) {
29 }
30 }
31
33 -export function createEventComponent(
34 - responder: ReactEventResponder,
32 +export default function createEventComponent(
33 + responder: EventResponder,
34 displayName: string,
36 -): ?ReactEventComponent {
37 - if (enableEventAPI) {
38 - // We use responder as a Map key later on. When we have a bad
39 - // polyfill, then we can't use it as a key as the polyfill tries
40 - // to add a property to the object.
41 - if (__DEV__ && !hasBadMapPolyfill) {
42 - Object.freeze(responder);
43 - }
44 - const eventComponent = {
45 - $$typeof: REACT_EVENT_COMPONENT_TYPE,
46 - displayName: displayName,
47 - props: null,
48 - responder: responder,
49 - };
50 - if (__DEV__) {
51 - Object.freeze(eventComponent);
52 - }
53 - return eventComponent;
35 +): ReactEventComponent {
36 + // We use responder as a Map key later on. When we have a bad
37 + // polyfill, then we can't use it as a key as the polyfill tries
38 + // to add a property to the object.
39 + if (__DEV__ && !hasBadMapPolyfill) {
40 + Object.freeze(responder);
41 + }
42 + const eventComponent = {
43 + $$typeof: REACT_EVENT_COMPONENT_TYPE,
44 + displayName: displayName,
45 + props: null,
46 + responder: responder,
47 + };
48 + if (__DEV__) {
49 + Object.freeze(eventComponent);
50 }
51 + return eventComponent;
52 }
scripts/rollup/bundles.js
+7 -7
@@ -465,7 +465,7 @@ const bundles = [
465 moduleType: NON_FIBER_RENDERER,
466 entry: 'react-events/press',
467 global: 'ReactEventsPress',
468 - externals: ['react'],
468 + externals: ['react-dom'],
469 },
470
471 {
@@ -480,7 +480,7 @@ const bundles = [
480 moduleType: NON_FIBER_RENDERER,
481 entry: 'react-events/hover',
482 global: 'ReactEventsHover',
483 - externals: ['react'],
483 + externals: ['react-dom'],
484 },
485
486 {
@@ -495,7 +495,7 @@ const bundles = [
495 moduleType: NON_FIBER_RENDERER,
496 entry: 'react-events/focus',
497 global: 'ReactEventsFocus',
498 - externals: ['react'],
498 + externals: ['react-dom'],
499 },
500
501 {
@@ -510,7 +510,7 @@ const bundles = [
510 moduleType: NON_FIBER_RENDERER,
511 entry: 'react-events/focus-scope',
512 global: 'ReactEventsFocusScope',
513 - externals: ['react'],
513 + externals: ['react-dom'],
514 },
515
516 {
@@ -525,7 +525,7 @@ const bundles = [
525 moduleType: NON_FIBER_RENDERER,
526 entry: 'react-events/swipe',
527 global: 'ReactEventsSwipe',
528 - externals: ['react'],
528 + externals: ['react-dom'],
529 },
530
531 {
@@ -540,7 +540,7 @@ const bundles = [
540 moduleType: NON_FIBER_RENDERER,
541 entry: 'react-events/drag',
542 global: 'ReactEventsDrag',
543 - externals: ['react'],
543 + externals: ['react-dom'],
544 },
545
546 {
@@ -555,7 +555,7 @@ const bundles = [
555 moduleType: NON_FIBER_RENDERER,
556 entry: 'react-events/scroll',
557 global: 'ReactEventsScroll',
558 - externals: ['react'],
558 + externals: ['react-dom'],
559 },
560 ];
561