Try another approach at fixing Windows Flow issues
Dan Abramov committed
May 15, 2018 at 15:20 UTC
025d867dceccfa54cfa12122a982ad3c3eff995a
4 files changed
+122
-156
packages/events/TopLevelEventTypes.js
+14
-2
@@ -7,8 +7,6 @@
7
* @flow
8
*/
9
10
-import type {DOMTopLevelEventType} from 'react-dom/src/events/DOMTopLevelEventTypes';
11
-
10
type RNTopLevelEventType =
11
| 'topMouseDown'
12
| 'topMouseMove'
@@ -20,4 +18,18 @@ type RNTopLevelEventType =
18
| 'topTouchMove'
19
| 'topTouchStart';
20
21
+export opaque type DOMTopLevelEventType = string;
22
+
23
+export function unsafeCastStringToDOMTopLevelType(
24
+ topLevelType: string,
25
+): DOMTopLevelEventType {
26
+ return topLevelType;
27
+}
28
+
29
+export function unsafeCastDOMTopLevelTypeToString(
30
+ topLevelType: DOMTopLevelEventType,
31
+): string {
32
+ return topLevelType;
33
+}
34
+
35
export type TopLevelType = DOMTopLevelEventType | RNTopLevelEventType;
packages/react-dom/src/events/DOMTopLevelEventTypes.js
+103
-151
@@ -7,6 +7,12 @@
7
* @flow
8
*/
9
10
+import type {DOMTopLevelEventType} from 'events/TopLevelEventTypes';
11
+
12
+import {
13
+ unsafeCastStringToDOMTopLevelType,
14
+ unsafeCastDOMTopLevelTypeToString,
15
+} from 'events/TopLevelEventTypes';
16
import getVendorPrefixedEventName from './getVendorPrefixedEventName';
17
18
/**
@@ -19,161 +25,107 @@ import getVendorPrefixedEventName from './getVendorPrefixedEventName';
25
* of a constant in this module.
26
*/
27
22
-// eslint-disable-next-line no-undef
23
-export opaque type DOMTopLevelEventType =
24
- | 'abort'
25
- | 'animationend'
26
- | 'animationiteration'
27
- | 'animationstart'
28
- | 'blur'
29
- | 'canplay'
30
- | 'canplaythrough'
31
- | 'cancel'
32
- | 'change'
33
- | 'click'
34
- | 'close'
35
- | 'compositionend'
36
- | 'compositionstart'
37
- | 'compositionupdate'
38
- | 'contextmenu'
39
- | 'copy'
40
- | 'cut'
41
- | 'dblclick'
42
- | 'drag'
43
- | 'dragend'
44
- | 'dragenter'
45
- | 'dragexit'
46
- | 'dragleave'
47
- | 'dragover'
48
- | 'dragstart'
49
- | 'drop'
50
- | 'durationchange'
51
- | 'emptied'
52
- | 'encrypted'
53
- | 'ended'
54
- | 'error'
55
- | 'focus'
56
- | 'input'
57
- | 'invalid'
58
- | 'keydown'
59
- | 'keypress'
60
- | 'keyup'
61
- | 'load'
62
- | 'loadstart'
63
- | 'loadeddata'
64
- | 'loadedmetadata'
65
- | 'mousedown'
66
- | 'mousemove'
67
- | 'mouseout'
68
- | 'mouseover'
69
- | 'mouseup'
70
- | 'paste'
71
- | 'pause'
72
- | 'play'
73
- | 'playing'
74
- | 'progress'
75
- | 'ratechange'
76
- | 'reset'
77
- | 'scroll'
78
- | 'seeked'
79
- | 'seeking'
80
- | 'selectionchange'
81
- | 'stalled'
82
- | 'submit'
83
- | 'suspend'
84
- | 'textInput'
85
- | 'timeupdate'
86
- | 'toggle'
87
- | 'touchcancel'
88
- | 'touchend'
89
- | 'touchmove'
90
- | 'touchstart'
91
- | 'transitionend'
92
- | 'volumechange'
93
- | 'waiting'
94
- | 'wheel';
95
-
96
-export const TOP_ABORT: DOMTopLevelEventType = 'abort';
97
-export const TOP_ANIMATION_END: DOMTopLevelEventType = getVendorPrefixedEventName(
98
- 'animationend',
28
+export const TOP_ABORT = unsafeCastStringToDOMTopLevelType('abort');
29
+export const TOP_ANIMATION_END = unsafeCastStringToDOMTopLevelType(
30
+ getVendorPrefixedEventName('animationend'),
31
+);
32
+export const TOP_ANIMATION_ITERATION = unsafeCastStringToDOMTopLevelType(
33
+ getVendorPrefixedEventName('animationiteration'),
34
+);
35
+export const TOP_ANIMATION_START = unsafeCastStringToDOMTopLevelType(
36
+ getVendorPrefixedEventName('animationstart'),
37
+);
38
+export const TOP_BLUR = unsafeCastStringToDOMTopLevelType('blur');
39
+export const TOP_CAN_PLAY = unsafeCastStringToDOMTopLevelType('canplay');
40
+export const TOP_CAN_PLAY_THROUGH = unsafeCastStringToDOMTopLevelType(
41
+ 'canplaythrough',
42
+);
43
+export const TOP_CANCEL = unsafeCastStringToDOMTopLevelType('cancel');
44
+export const TOP_CHANGE = unsafeCastStringToDOMTopLevelType('change');
45
+export const TOP_CLICK = unsafeCastStringToDOMTopLevelType('click');
46
+export const TOP_CLOSE = unsafeCastStringToDOMTopLevelType('close');
47
+export const TOP_COMPOSITION_END = unsafeCastStringToDOMTopLevelType(
48
+ 'compositionend',
49
+);
50
+export const TOP_COMPOSITION_START = unsafeCastStringToDOMTopLevelType(
51
+ 'compositionstart',
52
+);
53
+export const TOP_COMPOSITION_UPDATE = unsafeCastStringToDOMTopLevelType(
54
+ 'compositionupdate',
55
+);
56
+export const TOP_CONTEXT_MENU = unsafeCastStringToDOMTopLevelType(
57
+ 'contextmenu',
58
+);
59
+export const TOP_COPY = unsafeCastStringToDOMTopLevelType('copy');
60
+export const TOP_CUT = unsafeCastStringToDOMTopLevelType('cut');
61
+export const TOP_DOUBLE_CLICK = unsafeCastStringToDOMTopLevelType('dblclick');
62
+export const TOP_DRAG = unsafeCastStringToDOMTopLevelType('drag');
63
+export const TOP_DRAG_END = unsafeCastStringToDOMTopLevelType('dragend');
64
+export const TOP_DRAG_ENTER = unsafeCastStringToDOMTopLevelType('dragenter');
65
+export const TOP_DRAG_EXIT = unsafeCastStringToDOMTopLevelType('dragexit');
66
+export const TOP_DRAG_LEAVE = unsafeCastStringToDOMTopLevelType('dragleave');
67
+export const TOP_DRAG_OVER = unsafeCastStringToDOMTopLevelType('dragover');
68
+export const TOP_DRAG_START = unsafeCastStringToDOMTopLevelType('dragstart');
69
+export const TOP_DROP = unsafeCastStringToDOMTopLevelType('drop');
70
+export const TOP_DURATION_CHANGE = unsafeCastStringToDOMTopLevelType(
71
+ 'durationchange',
72
+);
73
+export const TOP_EMPTIED = unsafeCastStringToDOMTopLevelType('emptied');
74
+export const TOP_ENCRYPTED = unsafeCastStringToDOMTopLevelType('encrypted');
75
+export const TOP_ENDED = unsafeCastStringToDOMTopLevelType('ended');
76
+export const TOP_ERROR = unsafeCastStringToDOMTopLevelType('error');
77
+export const TOP_FOCUS = unsafeCastStringToDOMTopLevelType('focus');
78
+export const TOP_INPUT = unsafeCastStringToDOMTopLevelType('input');
79
+export const TOP_INVALID = unsafeCastStringToDOMTopLevelType('invalid');
80
+export const TOP_KEY_DOWN = unsafeCastStringToDOMTopLevelType('keydown');
81
+export const TOP_KEY_PRESS = unsafeCastStringToDOMTopLevelType('keypress');
82
+export const TOP_KEY_UP = unsafeCastStringToDOMTopLevelType('keyup');
83
+export const TOP_LOAD = unsafeCastStringToDOMTopLevelType('load');
84
+export const TOP_LOAD_START = unsafeCastStringToDOMTopLevelType('loadstart');
85
+export const TOP_LOADED_DATA = unsafeCastStringToDOMTopLevelType('loadeddata');
86
+export const TOP_LOADED_METADATA = unsafeCastStringToDOMTopLevelType(
87
+ 'loadedmetadata',
88
+);
89
+export const TOP_MOUSE_DOWN = unsafeCastStringToDOMTopLevelType('mousedown');
90
+export const TOP_MOUSE_MOVE = unsafeCastStringToDOMTopLevelType('mousemove');
91
+export const TOP_MOUSE_OUT = unsafeCastStringToDOMTopLevelType('mouseout');
92
+export const TOP_MOUSE_OVER = unsafeCastStringToDOMTopLevelType('mouseover');
93
+export const TOP_MOUSE_UP = unsafeCastStringToDOMTopLevelType('mouseup');
94
+export const TOP_PASTE = unsafeCastStringToDOMTopLevelType('paste');
95
+export const TOP_PAUSE = unsafeCastStringToDOMTopLevelType('pause');
96
+export const TOP_PLAY = unsafeCastStringToDOMTopLevelType('play');
97
+export const TOP_PLAYING = unsafeCastStringToDOMTopLevelType('playing');
98
+export const TOP_PROGRESS = unsafeCastStringToDOMTopLevelType('progress');
99
+export const TOP_RATE_CHANGE = unsafeCastStringToDOMTopLevelType('ratechange');
100
+export const TOP_RESET = unsafeCastStringToDOMTopLevelType('reset');
101
+export const TOP_SCROLL = unsafeCastStringToDOMTopLevelType('scroll');
102
+export const TOP_SEEKED = unsafeCastStringToDOMTopLevelType('seeked');
103
+export const TOP_SEEKING = unsafeCastStringToDOMTopLevelType('seeking');
104
+export const TOP_SELECTION_CHANGE = unsafeCastStringToDOMTopLevelType(
105
+ 'selectionchange',
106
);
100
-export const TOP_ANIMATION_ITERATION: DOMTopLevelEventType = getVendorPrefixedEventName(
101
- 'animationiteration',
107
+export const TOP_STALLED = unsafeCastStringToDOMTopLevelType('stalled');
108
+export const TOP_SUBMIT = unsafeCastStringToDOMTopLevelType('submit');
109
+export const TOP_SUSPEND = unsafeCastStringToDOMTopLevelType('suspend');
110
+export const TOP_TEXT_INPUT = unsafeCastStringToDOMTopLevelType('textInput');
111
+export const TOP_TIME_UPDATE = unsafeCastStringToDOMTopLevelType('timeupdate');
112
+export const TOP_TOGGLE = unsafeCastStringToDOMTopLevelType('toggle');
113
+export const TOP_TOUCH_CANCEL = unsafeCastStringToDOMTopLevelType(
114
+ 'touchcancel',
115
);
103
-export const TOP_ANIMATION_START: DOMTopLevelEventType = getVendorPrefixedEventName(
104
- 'animationstart',
116
+export const TOP_TOUCH_END = unsafeCastStringToDOMTopLevelType('touchend');
117
+export const TOP_TOUCH_MOVE = unsafeCastStringToDOMTopLevelType('touchmove');
118
+export const TOP_TOUCH_START = unsafeCastStringToDOMTopLevelType('touchstart');
119
+export const TOP_TRANSITION_END = unsafeCastStringToDOMTopLevelType(
120
+ getVendorPrefixedEventName('transitionend'),
121
);
106
-export const TOP_BLUR: DOMTopLevelEventType = 'blur';
107
-export const TOP_CAN_PLAY: DOMTopLevelEventType = 'canplay';
108
-export const TOP_CAN_PLAY_THROUGH: DOMTopLevelEventType = 'canplaythrough';
109
-export const TOP_CANCEL: DOMTopLevelEventType = 'cancel';
110
-export const TOP_CHANGE: DOMTopLevelEventType = 'change';
111
-export const TOP_CLICK: DOMTopLevelEventType = 'click';
112
-export const TOP_CLOSE: DOMTopLevelEventType = 'close';
113
-export const TOP_COMPOSITION_END: DOMTopLevelEventType = 'compositionend';
114
-export const TOP_COMPOSITION_START: DOMTopLevelEventType = 'compositionstart';
115
-export const TOP_COMPOSITION_UPDATE: DOMTopLevelEventType = 'compositionupdate';
116
-export const TOP_CONTEXT_MENU: DOMTopLevelEventType = 'contextmenu';
117
-export const TOP_COPY: DOMTopLevelEventType = 'copy';
118
-export const TOP_CUT: DOMTopLevelEventType = 'cut';
119
-export const TOP_DOUBLE_CLICK: DOMTopLevelEventType = 'dblclick';
120
-export const TOP_DRAG: DOMTopLevelEventType = 'drag';
121
-export const TOP_DRAG_END: DOMTopLevelEventType = 'dragend';
122
-export const TOP_DRAG_ENTER: DOMTopLevelEventType = 'dragenter';
123
-export const TOP_DRAG_EXIT: DOMTopLevelEventType = 'dragexit';
124
-export const TOP_DRAG_LEAVE: DOMTopLevelEventType = 'dragleave';
125
-export const TOP_DRAG_OVER: DOMTopLevelEventType = 'dragover';
126
-export const TOP_DRAG_START: DOMTopLevelEventType = 'dragstart';
127
-export const TOP_DROP: DOMTopLevelEventType = 'drop';
128
-export const TOP_DURATION_CHANGE: DOMTopLevelEventType = 'durationchange';
129
-export const TOP_EMPTIED: DOMTopLevelEventType = 'emptied';
130
-export const TOP_ENCRYPTED: DOMTopLevelEventType = 'encrypted';
131
-export const TOP_ENDED: DOMTopLevelEventType = 'ended';
132
-export const TOP_ERROR: DOMTopLevelEventType = 'error';
133
-export const TOP_FOCUS: DOMTopLevelEventType = 'focus';
134
-export const TOP_INPUT: DOMTopLevelEventType = 'input';
135
-export const TOP_INVALID: DOMTopLevelEventType = 'invalid';
136
-export const TOP_KEY_DOWN: DOMTopLevelEventType = 'keydown';
137
-export const TOP_KEY_PRESS: DOMTopLevelEventType = 'keypress';
138
-export const TOP_KEY_UP: DOMTopLevelEventType = 'keyup';
139
-export const TOP_LOAD: DOMTopLevelEventType = 'load';
140
-export const TOP_LOAD_START: DOMTopLevelEventType = 'loadstart';
141
-export const TOP_LOADED_DATA: DOMTopLevelEventType = 'loadeddata';
142
-export const TOP_LOADED_METADATA: DOMTopLevelEventType = 'loadedmetadata';
143
-export const TOP_MOUSE_DOWN: DOMTopLevelEventType = 'mousedown';
144
-export const TOP_MOUSE_MOVE: DOMTopLevelEventType = 'mousemove';
145
-export const TOP_MOUSE_OUT: DOMTopLevelEventType = 'mouseout';
146
-export const TOP_MOUSE_OVER: DOMTopLevelEventType = 'mouseover';
147
-export const TOP_MOUSE_UP: DOMTopLevelEventType = 'mouseup';
148
-export const TOP_PASTE: DOMTopLevelEventType = 'paste';
149
-export const TOP_PAUSE: DOMTopLevelEventType = 'pause';
150
-export const TOP_PLAY: DOMTopLevelEventType = 'play';
151
-export const TOP_PLAYING: DOMTopLevelEventType = 'playing';
152
-export const TOP_PROGRESS: DOMTopLevelEventType = 'progress';
153
-export const TOP_RATE_CHANGE: DOMTopLevelEventType = 'ratechange';
154
-export const TOP_RESET: DOMTopLevelEventType = 'reset';
155
-export const TOP_SCROLL: DOMTopLevelEventType = 'scroll';
156
-export const TOP_SEEKED: DOMTopLevelEventType = 'seeked';
157
-export const TOP_SEEKING: DOMTopLevelEventType = 'seeking';
158
-export const TOP_SELECTION_CHANGE: DOMTopLevelEventType = 'selectionchange';
159
-export const TOP_STALLED: DOMTopLevelEventType = 'stalled';
160
-export const TOP_SUBMIT: DOMTopLevelEventType = 'submit';
161
-export const TOP_SUSPEND: DOMTopLevelEventType = 'suspend';
162
-export const TOP_TEXT_INPUT: DOMTopLevelEventType = 'textInput';
163
-export const TOP_TIME_UPDATE: DOMTopLevelEventType = 'timeupdate';
164
-export const TOP_TOGGLE: DOMTopLevelEventType = 'toggle';
165
-export const TOP_TOUCH_CANCEL: DOMTopLevelEventType = 'touchcancel';
166
-export const TOP_TOUCH_END: DOMTopLevelEventType = 'touchend';
167
-export const TOP_TOUCH_MOVE: DOMTopLevelEventType = 'touchmove';
168
-export const TOP_TOUCH_START: DOMTopLevelEventType = 'touchstart';
169
-export const TOP_TRANSITION_END: DOMTopLevelEventType = getVendorPrefixedEventName(
170
- 'transitionend',
122
+export const TOP_VOLUME_CHANGE = unsafeCastStringToDOMTopLevelType(
123
+ 'volumechange',
124
);
172
-export const TOP_VOLUME_CHANGE: DOMTopLevelEventType = 'volumechange';
173
-export const TOP_WAITING: DOMTopLevelEventType = 'waiting';
174
-export const TOP_WHEEL: DOMTopLevelEventType = 'wheel';
125
+export const TOP_WAITING = unsafeCastStringToDOMTopLevelType('waiting');
126
+export const TOP_WHEEL = unsafeCastStringToDOMTopLevelType('wheel');
127
176
-export const mediaEventTypes: Array<DOMTopLevelEventType> = [
128
+export const mediaEventTypes = [
129
TOP_ABORT,
130
TOP_CAN_PLAY,
131
TOP_CAN_PLAY_THROUGH,
@@ -200,5 +152,5 @@ export const mediaEventTypes: Array<DOMTopLevelEventType> = [
152
];
153
154
export function getRawEventName(topLevelType: DOMTopLevelEventType): string {
203
- return topLevelType;
155
+ return unsafeCastDOMTopLevelTypeToString(topLevelType);
156
}
packages/react-dom/src/events/ReactDOMEventListener.js
+1
-1
@@ -9,7 +9,7 @@
9
10
import type {AnyNativeEvent} from 'events/PluginModuleType';
11
import type {Fiber} from 'react-reconciler/src/ReactFiber';
12
-import type {DOMTopLevelEventType} from './DOMTopLevelEventTypes';
12
+import type {DOMTopLevelEventType} from 'events/TopLevelEventTypes';
13
14
import {batchedUpdates, interactiveUpdates} from 'events/ReactGenericBatching';
15
import {runExtractedEventsInBatch} from 'events/EventPluginHub';
packages/react-dom/src/events/SimpleEventPlugin.js
+4
-2
@@ -7,8 +7,10 @@
7
* @flow
8
*/
9
10
-import type {TopLevelType} from 'events/TopLevelEventTypes';
11
-import type {DOMTopLevelEventType} from './DOMTopLevelEventTypes';
10
+import type {
11
+ TopLevelType,
12
+ DOMTopLevelEventType,
13
+} from 'events/TopLevelEventTypes';
14
import type {
15
DispatchConfig,
16
ReactSyntheticEvent,