Move EventTypes to ReactTypes (#15364)
Dominic Gannaway committed
Apr 10, 2019 at 09:55 UTC
c64b330032cef887ac5f787ac4a50bb4eeca4e1d
8 files changed
+109
-103
packages/events/EventTypes.js
deleted
-53
@@ -1,53 +0,0 @@
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 {AnyNativeEvent} from 'events/PluginModuleType';
11
-import type {ReactEventResponderEventType} from 'shared/ReactTypes';
12
-
13
-export type ResponderEvent = {
14
- nativeEvent: AnyNativeEvent,
15
- target: Element | Document,
16
- type: string,
17
- passive: boolean,
18
- passiveSupported: boolean,
19
-};
20
-
21
-export type ResponderDispatchEventOptions = {
22
- capture?: boolean,
23
- discrete?: boolean,
24
- stopPropagation?: boolean,
25
-};
26
-
27
-export type ResponderContext = {
28
- dispatchEvent: (
29
- eventObject: Object,
30
- otpions: ResponderDispatchEventOptions,
31
- ) => void,
32
- isTargetWithinElement: (
33
- childTarget: Element | Document,
34
- parentTarget: Element | Document,
35
- ) => boolean,
36
- isTargetWithinEventComponent: (Element | Document) => boolean,
37
- isPositionWithinTouchHitTarget: (
38
- doc: Document,
39
- x: number,
40
- y: number,
41
- ) => boolean,
42
- addRootEventTypes: (
43
- document: Document,
44
- rootEventTypes: Array<ReactEventResponderEventType>,
45
- ) => void,
46
- removeRootEventTypes: (
47
- rootEventTypes: Array<ReactEventResponderEventType>,
48
- ) => void,
49
- hasOwnership: () => boolean,
50
- requestOwnership: () => boolean,
51
- releaseOwnership: () => boolean,
52
- setTimeout: (func: () => void, timeout: number) => TimeoutID,
53
-};
packages/react-dom/src/events/DOMEventResponderSystem.js
+7
-9
@@ -6,11 +6,6 @@
6
* @flow
7
*/
8
9
-import type {
10
- ResponderContext,
11
- ResponderEvent,
12
- ResponderDispatchEventOptions,
13
-} from 'events/EventTypes';
9
import {
10
type EventSystemFlags,
11
IS_PASSIVE,
@@ -24,6 +19,9 @@ import {
19
import type {
20
ReactEventResponderEventType,
21
ReactEventComponentInstance,
22
+ ReactResponderContext,
23
+ ReactResponderEvent,
24
+ ReactResponderDispatchEventOptions,
25
} from 'shared/ReactTypes';
26
import type {DOMTopLevelEventType} from 'events/TopLevelEventTypes';
27
import {batchedUpdates, interactiveUpdates} from 'events/ReactGenericBatching';
@@ -58,10 +56,10 @@ let currentOwner = null;
56
let currentInstance: ReactEventComponentInstance;
57
let currentEventQueue: EventQueue;
58
61
-const eventResponderContext: ResponderContext = {
59
+const eventResponderContext: ReactResponderContext = {
60
dispatchEvent(
61
possibleEventObject: Object,
64
- {capture, discrete, stopPropagation}: ResponderDispatchEventOptions,
62
+ {capture, discrete, stopPropagation}: ReactResponderDispatchEventOptions,
63
): void {
64
const eventQueue = currentEventQueue;
65
const {listener, target, type} = possibleEventObject;
@@ -260,7 +258,7 @@ function createResponderEvent(
258
nativeEvent: AnyNativeEvent,
259
nativeEventTarget: Element | Document,
260
eventSystemFlags: EventSystemFlags,
263
-): ResponderEvent {
261
+): ReactResponderEvent {
262
return {
263
nativeEvent: nativeEvent,
264
target: nativeEventTarget,
@@ -342,7 +340,7 @@ function getTargetEventTypes(
340
341
function handleTopLevelType(
342
topLevelType: DOMTopLevelEventType,
345
- responderEvent: ResponderEvent,
343
+ responderEvent: ReactResponderEvent,
344
eventComponentInstance: ReactEventComponentInstance,
345
isRootLevelEvent: boolean,
346
): void {
packages/react-events/src/Drag.js
+7
-4
@@ -7,7 +7,10 @@
7
* @flow
8
*/
9
10
-import type {ResponderEvent, ResponderContext} from 'events/EventTypes';
10
+import type {
11
+ ReactResponderEvent,
12
+ ReactResponderContext,
13
+} from 'shared/ReactTypes';
14
import {REACT_EVENT_COMPONENT_TYPE} from 'shared/ReactSymbols';
15
16
const targetEventTypes = ['pointerdown', 'pointercancel'];
@@ -62,7 +65,7 @@ function createDragEvent(
65
}
66
67
function dispatchDragEvent(
65
- context: ResponderContext,
68
+ context: ReactResponderContext,
69
name: DragEventType,
70
listener: DragEvent => void,
71
state: DragState,
@@ -88,8 +91,8 @@ const DragResponder = {
91
};
92
},
93
onEvent(
91
- event: ResponderEvent,
92
- context: ResponderContext,
94
+ event: ReactResponderEvent,
95
+ context: ReactResponderContext,
96
props: Object,
97
state: DragState,
98
): void {
packages/react-events/src/Focus.js
+10
-7
@@ -7,7 +7,10 @@
7
* @flow
8
*/
9
10
-import type {ResponderEvent, ResponderContext} from 'events/EventTypes';
10
+import type {
11
+ ReactResponderEvent,
12
+ ReactResponderContext,
13
+} from 'shared/ReactTypes';
14
import {REACT_EVENT_COMPONENT_TYPE} from 'shared/ReactSymbols';
15
16
type FocusProps = {
@@ -47,8 +50,8 @@ function createFocusEvent(
50
}
51
52
function dispatchFocusInEvents(
50
- event: ResponderEvent,
51
- context: ResponderContext,
53
+ event: ReactResponderEvent,
54
+ context: ReactResponderContext,
55
props: FocusProps,
56
) {
57
const {nativeEvent, target} = event;
@@ -69,8 +72,8 @@ function dispatchFocusInEvents(
72
}
73
74
function dispatchFocusOutEvents(
72
- event: ResponderEvent,
73
- context: ResponderContext,
75
+ event: ReactResponderEvent,
76
+ context: ReactResponderContext,
77
props: FocusProps,
78
) {
79
const {nativeEvent, target} = event;
@@ -98,8 +101,8 @@ const FocusResponder = {
101
};
102
},
103
onEvent(
101
- event: ResponderEvent,
102
- context: ResponderContext,
104
+ event: ReactResponderEvent,
105
+ context: ReactResponderContext,
106
props: Object,
107
state: FocusState,
108
): void {
packages/react-events/src/Hover.js
+12
-9
@@ -7,7 +7,10 @@
7
* @flow
8
*/
9
10
-import type {ResponderEvent, ResponderContext} from 'events/EventTypes';
10
+import type {
11
+ ReactResponderEvent,
12
+ ReactResponderContext,
13
+} from 'shared/ReactTypes';
14
import {REACT_EVENT_COMPONENT_TYPE} from 'shared/ReactSymbols';
15
16
type HoverProps = {
@@ -64,8 +67,8 @@ function createHoverEvent(
67
}
68
69
function dispatchHoverChangeEvent(
67
- event: ResponderEvent,
68
- context: ResponderContext,
70
+ event: ReactResponderEvent,
71
+ context: ReactResponderContext,
72
props: HoverProps,
73
state: HoverState,
74
): void {
@@ -81,8 +84,8 @@ function dispatchHoverChangeEvent(
84
}
85
86
function dispatchHoverStartEvents(
84
- event: ResponderEvent,
85
- context: ResponderContext,
87
+ event: ReactResponderEvent,
88
+ context: ReactResponderContext,
89
props: HoverProps,
90
state: HoverState,
91
): void {
@@ -132,8 +135,8 @@ function dispatchHoverStartEvents(
135
}
136
137
function dispatchHoverEndEvents(
135
- event: ResponderEvent,
136
- context: ResponderContext,
138
+ event: ReactResponderEvent,
139
+ context: ReactResponderContext,
140
props: HoverProps,
141
state: HoverState,
142
) {
@@ -199,8 +202,8 @@ const HoverResponder = {
202
};
203
},
204
onEvent(
202
- event: ResponderEvent,
203
- context: ResponderContext,
205
+ event: ReactResponderEvent,
206
+ context: ReactResponderContext,
207
props: HoverProps,
208
state: HoverState,
209
): void {
packages/react-events/src/Press.js
+18
-11
@@ -7,7 +7,10 @@
7
* @flow
8
*/
9
10
-import type {ResponderEvent, ResponderContext} from 'events/EventTypes';
10
+import type {
11
+ ReactResponderEvent,
12
+ ReactResponderContext,
13
+} from 'shared/ReactTypes';
14
import {REACT_EVENT_COMPONENT_TYPE} from 'shared/ReactSymbols';
15
16
type PressProps = {
@@ -89,7 +92,7 @@ function createPressEvent(
92
}
93
94
function dispatchEvent(
92
- context: ResponderContext,
95
+ context: ReactResponderContext,
96
state: PressState,
97
name: PressEventType,
98
listener: (e: Object) => void,
@@ -100,7 +103,7 @@ function dispatchEvent(
103
}
104
105
function dispatchPressChangeEvent(
103
- context: ResponderContext,
106
+ context: ReactResponderContext,
107
props: PressProps,
108
state: PressState,
109
): void {
@@ -111,7 +114,7 @@ function dispatchPressChangeEvent(
114
}
115
116
function dispatchLongPressChangeEvent(
114
- context: ResponderContext,
117
+ context: ReactResponderContext,
118
props: PressProps,
119
state: PressState,
120
): void {
@@ -150,7 +153,7 @@ function deactivate(context, props, state) {
153
}
154
155
function dispatchPressStartEvents(
153
- context: ResponderContext,
156
+ context: ReactResponderContext,
157
props: PressProps,
158
state: PressState,
159
): void {
@@ -212,7 +215,7 @@ function dispatchPressStartEvents(
215
}
216
217
function dispatchPressEndEvents(
215
- context: ResponderContext,
218
+ context: ReactResponderContext,
219
props: PressProps,
220
state: PressState,
221
): void {
@@ -265,7 +268,7 @@ function calculateDelayMS(delay: ?number, min = 0, fallback = 0) {
268
}
269
270
function unmountResponder(
268
- context: ResponderContext,
271
+ context: ReactResponderContext,
272
props: PressProps,
273
state: PressState,
274
): void {
@@ -293,8 +296,8 @@ const PressResponder = {
296
};
297
},
298
onEvent(
296
- event: ResponderEvent,
297
- context: ResponderContext,
299
+ event: ReactResponderEvent,
300
+ context: ReactResponderContext,
301
props: PressProps,
302
state: PressState,
303
): void {
@@ -491,12 +494,16 @@ const PressResponder = {
494
}
495
}
496
},
494
- onUnmount(context: ResponderContext, props: PressProps, state: PressState) {
497
+ onUnmount(
498
+ context: ReactResponderContext,
499
+ props: PressProps,
500
+ state: PressState,
501
+ ) {
502
unmountResponder(context, props, state);
503
},
504
// TODO This method doesn't work as of yet
505
onOwnershipChange(
499
- context: ResponderContext,
506
+ context: ReactResponderContext,
507
props: PressProps,
508
state: PressState,
509
) {
packages/react-events/src/Swipe.js
+7
-4
@@ -7,7 +7,10 @@
7
* @flow
8
*/
9
10
-import type {ResponderEvent, ResponderContext} from 'events/EventTypes';
10
+import type {
11
+ ReactResponderEvent,
12
+ ReactResponderContext,
13
+} from 'shared/ReactTypes';
14
import {REACT_EVENT_COMPONENT_TYPE} from 'shared/ReactSymbols';
15
16
const targetEventTypes = ['pointerdown', 'pointercancel'];
@@ -52,7 +55,7 @@ function createSwipeEvent(
55
}
56
57
function dispatchSwipeEvent(
55
- context: ResponderContext,
58
+ context: ReactResponderContext,
59
name: SwipeEventType,
60
listener: SwipeEvent => void,
61
state: SwipeState,
@@ -92,8 +95,8 @@ const SwipeResponder = {
95
};
96
},
97
onEvent(
95
- event: ResponderEvent,
96
- context: ResponderContext,
98
+ event: ReactResponderEvent,
99
+ context: ReactResponderContext,
100
props: Object,
101
state: SwipeState,
102
): void {
packages/shared/ReactTypes.js
+48
-6
@@ -7,8 +7,6 @@
7
* @flow
8
*/
9
10
-import type {ResponderEvent, ResponderContext} from 'events/EventTypes';
11
-
10
export type ReactNode =
11
| React$Element<any>
12
| ReactPortal
@@ -91,18 +89,18 @@ export type ReactEventResponder = {
89
targetEventTypes: Array<ReactEventResponderEventType>,
90
createInitialState?: (props: null | Object) => Object,
91
onEvent: (
94
- event: ResponderEvent,
95
- context: ResponderContext,
92
+ event: ReactResponderEvent,
93
+ context: ReactResponderContext,
94
props: null | Object,
95
state: null | Object,
96
) => void,
97
onUnmount: (
100
- context: ResponderContext,
98
+ context: ReactResponderContext,
99
props: null | Object,
100
state: null | Object,
101
) => void,
102
onOwnershipChange: (
105
- context: ResponderContext,
103
+ context: ReactResponderContext,
104
props: null | Object,
105
state: null | Object,
106
) => void,
@@ -128,3 +126,47 @@ export type ReactEventTarget = {|
126
displayName?: string,
127
type: Symbol | number,
128
|};
129
+
130
+type AnyNativeEvent = Event | KeyboardEvent | MouseEvent | Touch;
131
+
132
+export type ReactResponderEvent = {
133
+ nativeEvent: AnyNativeEvent,
134
+ target: Element | Document,
135
+ type: string,
136
+ passive: boolean,
137
+ passiveSupported: boolean,
138
+};
139
+
140
+export type ReactResponderDispatchEventOptions = {
141
+ capture?: boolean,
142
+ discrete?: boolean,
143
+ stopPropagation?: boolean,
144
+};
145
+
146
+export type ReactResponderContext = {
147
+ dispatchEvent: (
148
+ eventObject: Object,
149
+ otpions: ReactResponderDispatchEventOptions,
150
+ ) => void,
151
+ isTargetWithinElement: (
152
+ childTarget: Element | Document,
153
+ parentTarget: Element | Document,
154
+ ) => boolean,
155
+ isTargetWithinEventComponent: (Element | Document) => boolean,
156
+ isPositionWithinTouchHitTarget: (
157
+ doc: Document,
158
+ x: number,
159
+ y: number,
160
+ ) => boolean,
161
+ addRootEventTypes: (
162
+ document: Document,
163
+ rootEventTypes: Array<ReactEventResponderEventType>,
164
+ ) => void,
165
+ removeRootEventTypes: (
166
+ rootEventTypes: Array<ReactEventResponderEventType>,
167
+ ) => void,
168
+ hasOwnership: () => boolean,
169
+ requestOwnership: () => boolean,
170
+ releaseOwnership: () => boolean,
171
+ setTimeout: (func: () => void, timeout: number) => TimeoutID,
172
+};