@samitouri / QOS-React / commits / 81e30c7ff6

Remove unused modules from legacy event responders (#17907)

Nicolas Gallagher committed Jan 24, 2020 at 10:50 UTC 81e30c7ff67d4c5d6e9b9f2bb3d9af44bd40c621
10 files changed -1353
packages/react-interactions/events/drag.js deleted
-12
@@ -1,12 +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 -'use strict';
11 -
12 -module.exports = require('./src/dom/Drag');
packages/react-interactions/events/scroll.js deleted
-12
@@ -1,12 +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 -'use strict';
11 -
12 -module.exports = require('./src/dom/Scroll');
packages/react-interactions/events/src/dom/Drag.js deleted
-253
@@ -1,253 +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 {
11 - ReactDOMResponderEvent,
12 - ReactDOMResponderContext,
13 -} from 'shared/ReactDOMTypes';
14 -import type {
15 - EventPriority,
16 - ReactEventResponderListener,
17 -} from 'shared/ReactTypes';
18 -
19 -import React from 'react';
20 -import {DiscreteEvent, UserBlockingEvent} from 'shared/ReactTypes';
21 -
22 -const targetEventTypes = ['pointerdown'];
23 -const rootEventTypes = ['pointerup', 'pointercancel', 'pointermove_active'];
24 -
25 -type DragProps = {
26 - disabled: boolean,
27 - shouldClaimOwnership: () => boolean,
28 - onDragStart: (e: DragEvent) => void,
29 - onDragMove: (e: DragEvent) => void,
30 - onDragEnd: (e: DragEvent) => void,
31 - onDragChange: boolean => void,
32 - ...
33 -};
34 -
35 -type DragState = {|
36 - dragTarget: null | Element | Document,
37 - isPointerDown: boolean,
38 - isDragging: boolean,
39 - startX: number,
40 - startY: number,
41 - x: number,
42 - y: number,
43 -|};
44 -
45 -// In the case we don't have PointerEvents (Safari), we listen to touch events
46 -// too
47 -if (typeof window !== 'undefined' && window.PointerEvent === undefined) {
48 - targetEventTypes.push('touchstart', 'mousedown');
49 - rootEventTypes.push(
50 - 'mouseup',
51 - 'mousemove',
52 - 'touchend',
53 - 'touchcancel',
54 - 'touchmove_active',
55 - );
56 -}
57 -
58 -type EventData = {
59 - diffX: number,
60 - diffY: number,
61 - ...
62 -};
63 -type DragEventType = 'dragstart' | 'dragend' | 'dragchange' | 'dragmove';
64 -
65 -type DragEvent = {|
66 - target: Element | Document,
67 - type: DragEventType,
68 - timeStamp: number,
69 - diffX?: number,
70 - diffY?: number,
71 -|};
72 -
73 -function createDragEvent(
74 - context: ReactDOMResponderContext,
75 - type: DragEventType,
76 - target: Element | Document,
77 - eventData?: EventData,
78 -): DragEvent {
79 - return {
80 - target,
81 - type,
82 - timeStamp: context.getTimeStamp(),
83 - ...eventData,
84 - };
85 -}
86 -
87 -function isFunction(obj): boolean {
88 - return typeof obj === 'function';
89 -}
90 -
91 -function dispatchDragEvent(
92 - context: ReactDOMResponderContext,
93 - listener: DragEvent => void,
94 - name: DragEventType,
95 - state: DragState,
96 - eventPriority: EventPriority,
97 - eventData?: EventData,
98 -): void {
99 - const target = ((state.dragTarget: any): Element | Document);
100 - const syntheticEvent = createDragEvent(context, name, target, eventData);
101 - context.dispatchEvent(syntheticEvent, listener, eventPriority);
102 -}
103 -
104 -const dragResponderImpl = {
105 - targetEventTypes,
106 - getInitialState(): DragState {
107 - return {
108 - dragTarget: null,
109 - isPointerDown: false,
110 - isDragging: false,
111 - startX: 0,
112 - startY: 0,
113 - x: 0,
114 - y: 0,
115 - };
116 - },
117 - onEvent(
118 - event: ReactDOMResponderEvent,
119 - context: ReactDOMResponderContext,
120 - props: DragProps,
121 - state: DragState,
122 - ): void {
123 - const {target, type, nativeEvent} = event;
124 -
125 - switch (type) {
126 - case 'touchstart':
127 - case 'mousedown':
128 - case 'pointerdown': {
129 - if (!state.isDragging) {
130 - const obj =
131 - type === 'touchstart'
132 - ? (nativeEvent: any).changedTouches[0]
133 - : nativeEvent;
134 - const x = (state.startX = (obj: any).screenX);
135 - const y = (state.startY = (obj: any).screenY);
136 - state.x = x;
137 - state.y = y;
138 - state.dragTarget = target;
139 - state.isPointerDown = true;
140 - const onDragStart = props.onDragStart;
141 -
142 - if (isFunction(onDragStart)) {
143 - dispatchDragEvent(
144 - context,
145 - onDragStart,
146 - 'dragstart',
147 - state,
148 - DiscreteEvent,
149 - );
150 - }
151 - context.addRootEventTypes(rootEventTypes);
152 - }
153 - break;
154 - }
155 - }
156 - },
157 - onRootEvent(
158 - event: ReactDOMResponderEvent,
159 - context: ReactDOMResponderContext,
160 - props: DragProps,
161 - state: DragState,
162 - ): void {
163 - const {type, nativeEvent} = event;
164 -
165 - switch (type) {
166 - case 'touchmove':
167 - case 'mousemove':
168 - case 'pointermove': {
169 - if (event.passive) {
170 - return;
171 - }
172 - if (state.isPointerDown) {
173 - const obj =
174 - type === 'touchmove'
175 - ? (nativeEvent: any).changedTouches[0]
176 - : nativeEvent;
177 - const x = (obj: any).screenX;
178 - const y = (obj: any).screenY;
179 - state.x = x;
180 - state.y = y;
181 - if (x === state.startX && y === state.startY) {
182 - return;
183 - }
184 - if (!state.isDragging) {
185 - state.isDragging = true;
186 - const onDragChange = props.onDragChange;
187 - if (isFunction(onDragChange)) {
188 - context.dispatchEvent(true, onDragChange, UserBlockingEvent);
189 - }
190 - } else {
191 - const onDragMove = props.onDragMove;
192 - if (isFunction(onDragMove)) {
193 - const eventData = {
194 - diffX: x - state.startX,
195 - diffY: y - state.startY,
196 - };
197 - dispatchDragEvent(
198 - context,
199 - onDragMove,
200 - 'dragmove',
201 - state,
202 - UserBlockingEvent,
203 - eventData,
204 - );
205 - }
206 - (nativeEvent: any).preventDefault();
207 - }
208 - }
209 - break;
210 - }
211 - case 'pointercancel':
212 - case 'touchcancel':
213 - case 'touchend':
214 - case 'mouseup':
215 - case 'pointerup': {
216 - if (state.isDragging) {
217 - const onDragEnd = props.onDragEnd;
218 - if (isFunction(onDragEnd)) {
219 - dispatchDragEvent(
220 - context,
221 - onDragEnd,
222 - 'dragend',
223 - state,
224 - DiscreteEvent,
225 - );
226 - }
227 - const onDragChange = props.onDragChange;
228 - if (isFunction(onDragChange)) {
229 - context.dispatchEvent(false, onDragChange, UserBlockingEvent);
230 - }
231 - state.isDragging = false;
232 - }
233 - if (state.isPointerDown) {
234 - state.dragTarget = null;
235 - state.isPointerDown = false;
236 - context.removeRootEventTypes(rootEventTypes);
237 - }
238 - break;
239 - }
240 - }
241 - },
242 -};
243 -
244 -export const DragResponder = React.DEPRECATED_createResponder(
245 - 'Drag',
246 - dragResponderImpl,
247 -);
248 -
249 -export function useDrag(
250 - props: DragProps,
251 -): ReactEventResponderListener<any, any> {
252 - return React.DEPRECATED_useResponder(DragResponder, props);
253 -}
packages/react-interactions/events/src/dom/Scroll.js deleted
-319
@@ -1,319 +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 {
11 - ReactDOMResponderEvent,
12 - ReactDOMResponderContext,
13 - PointerType,
14 -} from 'shared/ReactDOMTypes';
15 -import {UserBlockingEvent} from 'shared/ReactTypes';
16 -import type {
17 - EventPriority,
18 - ReactEventResponderListener,
19 -} from 'shared/ReactTypes';
20 -
21 -import React from 'react';
22 -
23 -type ScrollProps = {
24 - disabled: boolean,
25 - onScroll: ScrollEvent => void,
26 - onScrollDragStart: ScrollEvent => void,
27 - onScrollDragEnd: ScrollEvent => void,
28 - ...
29 -};
30 -
31 -type ScrollState = {
32 - direction: ScrollDirection,
33 - pointerType: PointerType,
34 - scrollTarget: null | Element | Document,
35 - isDragging: boolean,
36 - isTouching: boolean,
37 - scrollLeft: number,
38 - scrollTop: number,
39 - ...
40 -};
41 -
42 -type ScrollEventType =
43 - | 'scroll'
44 - | 'scrolldragstart'
45 - | 'scrolldragend'
46 - | 'scrollmomentumstart'
47 - | 'scrollmomentumend';
48 -
49 -type ScrollDirection = '' | 'up' | 'down' | 'left' | 'right';
50 -
51 -type ScrollEvent = {|
52 - direction: ScrollDirection,
53 - target: Element | Document,
54 - type: ScrollEventType,
55 - pointerType: PointerType,
56 - timeStamp: number,
57 - clientX: null | number,
58 - clientY: null | number,
59 - pageX: null | number,
60 - pageY: null | number,
61 - screenX: null | number,
62 - screenY: null | number,
63 - x: null | number,
64 - y: null | number,
65 -|};
66 -
67 -const hasPointerEvents =
68 - typeof window !== 'undefined' && window.PointerEvent !== undefined;
69 -
70 -const targetEventTypes = hasPointerEvents
71 - ? ['scroll', 'pointerdown', 'keyup', 'wheel']
72 - : ['scroll', 'mousedown', 'touchstart', 'keyup', 'wheel'];
73 -
74 -const rootEventTypes = hasPointerEvents
75 - ? ['pointercancel', 'pointerup']
76 - : ['touchcancel', 'touchend'];
77 -
78 -function isFunction(obj): boolean {
79 - return typeof obj === 'function';
80 -}
81 -
82 -function createScrollEvent(
83 - event: ?ReactDOMResponderEvent,
84 - context: ReactDOMResponderContext,
85 - type: ScrollEventType,
86 - target: Element | Document,
87 - pointerType: PointerType,
88 - direction: ScrollDirection,
89 -): ScrollEvent {
90 - let clientX = null;
91 - let clientY = null;
92 - let pageX = null;
93 - let pageY = null;
94 - let screenX = null;
95 - let screenY = null;
96 -
97 - if (event) {
98 - const nativeEvent = (event.nativeEvent: any);
99 - ({clientX, clientY, pageX, pageY, screenX, screenY} = nativeEvent);
100 - }
101 -
102 - return {
103 - target,
104 - type,
105 - pointerType,
106 - direction,
107 - timeStamp: context.getTimeStamp(),
108 - clientX,
109 - clientY,
110 - pageX,
111 - pageY,
112 - screenX,
113 - screenY,
114 - x: clientX,
115 - y: clientY,
116 - };
117 -}
118 -
119 -function dispatchEvent(
120 - event: ?ReactDOMResponderEvent,
121 - listener: ScrollEvent => void,
122 - context: ReactDOMResponderContext,
123 - state: ScrollState,
124 - name: ScrollEventType,
125 - eventPriority: EventPriority,
126 -): void {
127 - const target = ((state.scrollTarget: any): Element | Document);
128 - const pointerType = state.pointerType;
129 - const direction = state.direction;
130 - const syntheticEvent = createScrollEvent(
131 - event,
132 - context,
133 - name,
134 - target,
135 - pointerType,
136 - direction,
137 - );
138 - context.dispatchEvent(syntheticEvent, listener, eventPriority);
139 -}
140 -
141 -const scrollResponderImpl = {
142 - targetEventTypes,
143 - getInitialState() {
144 - return {
145 - direction: '',
146 - isTouching: false,
147 - pointerType: '',
148 - prevScrollTop: 0,
149 - prevScrollLeft: 0,
150 - scrollTarget: null,
151 - };
152 - },
153 - onEvent(
154 - event: ReactDOMResponderEvent,
155 - context: ReactDOMResponderContext,
156 - props: ScrollProps,
157 - state: ScrollState,
158 - ): void {
159 - const {pointerType, target, type} = event;
160 -
161 - if (props.disabled) {
162 - if (state.isTouching) {
163 - state.isTouching = false;
164 - state.scrollTarget = null;
165 - state.isDragging = false;
166 - state.direction = '';
167 - context.removeRootEventTypes(rootEventTypes);
168 - }
169 - return;
170 - }
171 -
172 - switch (type) {
173 - case 'scroll': {
174 - const prevScrollTarget = state.scrollTarget;
175 - let scrollLeft = 0;
176 - let scrollTop = 0;
177 -
178 - // Check if target is the document
179 - if (target.nodeType === 9) {
180 - const bodyNode = ((target: any): Document).body;
181 - if (bodyNode !== null) {
182 - scrollLeft = bodyNode.offsetLeft;
183 - scrollTop = bodyNode.offsetTop;
184 - }
185 - } else {
186 - scrollLeft = ((target: any): Element).scrollLeft;
187 - scrollTop = ((target: any): Element).scrollTop;
188 - }
189 -
190 - if (prevScrollTarget !== null) {
191 - if (scrollTop === state.scrollTop) {
192 - if (scrollLeft > state.scrollLeft) {
193 - state.direction = 'right';
194 - } else {
195 - state.direction = 'left';
196 - }
197 - } else {
198 - if (scrollTop > state.scrollTop) {
199 - state.direction = 'down';
200 - } else {
201 - state.direction = 'up';
202 - }
203 - }
204 - } else {
205 - state.direction = '';
206 - }
207 - state.scrollTarget = ((target: any): Element | Document);
208 - state.scrollLeft = scrollLeft;
209 - state.scrollTop = scrollTop;
210 -
211 - if (state.isTouching && !state.isDragging) {
212 - state.isDragging = true;
213 - const onScrollDragStart = props.onScrollDragStart;
214 -
215 - if (isFunction(onScrollDragStart)) {
216 - dispatchEvent(
217 - event,
218 - onScrollDragStart,
219 - context,
220 - state,
221 - 'scrolldragstart',
222 - UserBlockingEvent,
223 - );
224 - }
225 - }
226 - const onScroll = props.onScroll;
227 -
228 - if (isFunction(onScroll)) {
229 - dispatchEvent(
230 - event,
231 - onScroll,
232 - context,
233 - state,
234 - 'scroll',
235 - UserBlockingEvent,
236 - );
237 - }
238 - break;
239 - }
240 - case 'keyup': {
241 - state.pointerType = pointerType;
242 - break;
243 - }
244 - case 'mousedown':
245 - case 'wheel': {
246 - state.pointerType = 'mouse';
247 - break;
248 - }
249 - case 'pointerdown': {
250 - state.pointerType = pointerType;
251 - if (pointerType === 'touch' && !state.isTouching) {
252 - state.isTouching = true;
253 - context.addRootEventTypes(rootEventTypes);
254 - }
255 - break;
256 - }
257 - case 'touchstart': {
258 - if (!state.isTouching) {
259 - state.isTouching = true;
260 - state.pointerType = 'touch';
261 - context.addRootEventTypes(rootEventTypes);
262 - }
263 - }
264 - }
265 - },
266 - onRootEvent(
267 - event: ReactDOMResponderEvent,
268 - context: ReactDOMResponderContext,
269 - props: ScrollProps,
270 - state: ScrollState,
271 - ) {
272 - const {type} = event;
273 -
274 - switch (type) {
275 - case 'pointercancel':
276 - case 'pointerup':
277 - case 'touchcancel':
278 - case 'touchend': {
279 - if (state.isTouching) {
280 - const onScrollDragEnd = props.onScrollDragEnd;
281 -
282 - if (state.isDragging && isFunction(onScrollDragEnd)) {
283 - dispatchEvent(
284 - event,
285 - onScrollDragEnd,
286 - context,
287 - state,
288 - 'scrolldragend',
289 - UserBlockingEvent,
290 - );
291 - }
292 - state.isTouching = false;
293 - state.isDragging = false;
294 - state.scrollTarget = null;
295 - state.pointerType = '';
296 - context.removeRootEventTypes(rootEventTypes);
297 - }
298 - }
299 - }
300 - },
301 - onUnmount(
302 - context: ReactDOMResponderContext,
303 - props: ScrollProps,
304 - state: ScrollState,
305 - ) {
306 - // TODO
307 - },
308 -};
309 -
310 -export const ScrollResponder = React.DEPRECATED_createResponder(
311 - 'Scroll',
312 - scrollResponderImpl,
313 -);
314 -
315 -export function useScroll(
316 - props: ScrollProps,
317 -): ReactEventResponderListener<any, any> {
318 - return React.DEPRECATED_useResponder(ScrollResponder, props);
319 -}
packages/react-interactions/events/src/dom/Swipe.js deleted
-291
@@ -1,291 +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 {
11 - ReactDOMResponderEvent,
12 - ReactDOMResponderContext,
13 -} from 'shared/ReactDOMTypes';
14 -import type {
15 - EventPriority,
16 - ReactEventResponderListener,
17 -} from 'shared/ReactTypes';
18 -
19 -import React from 'react';
20 -import {UserBlockingEvent, DiscreteEvent} from 'shared/ReactTypes';
21 -
22 -type SwipeProps = {
23 - disabled: boolean,
24 - shouldClaimOwnership: () => boolean,
25 - onSwipeMove: (e: SwipeEvent) => void,
26 - onSwipeEnd: (e: SwipeEvent) => void,
27 - onSwipeLeft: (e: SwipeEvent) => void,
28 - onSwipeRight: (e: SwipeEvent) => void,
29 - ...
30 -};
31 -
32 -const targetEventTypes = ['pointerdown'];
33 -const rootEventTypes = ['pointerup', 'pointercancel', 'pointermove_active'];
34 -
35 -// In the case we don't have PointerEvents (Safari), we listen to touch events
36 -// too
37 -if (typeof window !== 'undefined' && window.PointerEvent === undefined) {
38 - targetEventTypes.push('touchstart', 'mousedown');
39 - rootEventTypes.push(
40 - 'mouseup',
41 - 'mousemove',
42 - 'touchend',
43 - 'touchcancel',
44 - 'touchmove_active',
45 - );
46 -}
47 -
48 -type EventData = {
49 - diffX: number,
50 - diffY: number,
51 - ...
52 -};
53 -type SwipeEventType = 'swipeleft' | 'swiperight' | 'swipeend' | 'swipemove';
54 -
55 -type SwipeEvent = {|
56 - target: Element | Document,
57 - type: SwipeEventType,
58 - timeStamp: number,
59 - diffX?: number,
60 - diffY?: number,
61 -|};
62 -
63 -function isFunction(obj): boolean {
64 - return typeof obj === 'function';
65 -}
66 -
67 -function createSwipeEvent(
68 - context: ReactDOMResponderContext,
69 - type: SwipeEventType,
70 - target: Element | Document,
71 - eventData?: EventData,
72 -): SwipeEvent {
73 - return context.objectAssign(
74 - {
75 - target,
76 - type,
77 - timeStamp: context.getTimeStamp(),
78 - },
79 - eventData,
80 - );
81 -}
82 -
83 -function dispatchSwipeEvent(
84 - context: ReactDOMResponderContext,
85 - listener: SwipeEvent => void,
86 - name: SwipeEventType,
87 - state: SwipeState,
88 - eventPriority: EventPriority,
89 - eventData?: EventData,
90 -) {
91 - const target = ((state.swipeTarget: any): Element | Document);
92 - const syntheticEvent = createSwipeEvent(context, name, target, eventData);
93 - context.dispatchEvent(syntheticEvent, listener, eventPriority);
94 -}
95 -
96 -type SwipeState = {
97 - direction: number,
98 - isSwiping: boolean,
99 - lastDirection: number,
100 - startX: number,
101 - startY: number,
102 - touchId: null | number,
103 - swipeTarget: null | Element | Document,
104 - x: number,
105 - y: number,
106 - ...
107 -};
108 -
109 -const swipeResponderImpl = {
110 - targetEventTypes,
111 - getInitialState(): SwipeState {
112 - return {
113 - direction: 0,
114 - isSwiping: false,
115 - lastDirection: 0,
116 - startX: 0,
117 - startY: 0,
118 - touchId: null,
119 - swipeTarget: null,
120 - x: 0,
121 - y: 0,
122 - };
123 - },
124 - onEvent(
125 - event: ReactDOMResponderEvent,
126 - context: ReactDOMResponderContext,
127 - props: SwipeProps,
128 - state: SwipeState,
129 - ): void {
130 - const {target, type, nativeEvent} = event;
131 -
132 - switch (type) {
133 - case 'touchstart':
134 - case 'mousedown':
135 - case 'pointerdown': {
136 - if (!state.isSwiping) {
137 - let obj = nativeEvent;
138 - if (type === 'touchstart') {
139 - obj = (nativeEvent: any).targetTouches[0];
140 - state.touchId = obj.identifier;
141 - }
142 - const x = (obj: any).screenX;
143 - const y = (obj: any).screenY;
144 -
145 - state.isSwiping = true;
146 - state.startX = x;
147 - state.startY = y;
148 - state.x = x;
149 - state.y = y;
150 - state.swipeTarget = target;
151 - context.addRootEventTypes(rootEventTypes);
152 - }
153 - break;
154 - }
155 - }
156 - },
157 - onRootEvent(
158 - event: ReactDOMResponderEvent,
159 - context: ReactDOMResponderContext,
160 - props: SwipeProps,
161 - state: SwipeState,
162 - ): void {
163 - const {type, nativeEvent} = event;
164 -
165 - switch (type) {
166 - case 'touchmove':
167 - case 'mousemove':
168 - case 'pointermove': {
169 - if (event.passive) {
170 - return;
171 - }
172 - if (state.isSwiping) {
173 - let obj = null;
174 - if (type === 'touchmove') {
175 - const targetTouches = (nativeEvent: any).targetTouches;
176 - for (let i = 0; i < targetTouches.length; i++) {
177 - if (state.touchId === targetTouches[i].identifier) {
178 - obj = targetTouches[i];
179 - break;
180 - }
181 - }
182 - } else {
183 - obj = nativeEvent;
184 - }
185 - if (obj === null) {
186 - state.isSwiping = false;
187 - state.swipeTarget = null;
188 - state.touchId = null;
189 - context.removeRootEventTypes(rootEventTypes);
190 - return;
191 - }
192 - const x = (obj: any).screenX;
193 - const y = (obj: any).screenY;
194 - if (x < state.x) {
195 - state.direction = 3;
196 - } else if (x > state.x) {
197 - state.direction = 1;
198 - }
199 - state.x = x;
200 - state.y = y;
201 - const eventData = {
202 - diffX: x - state.startX,
203 - diffY: y - state.startY,
204 - };
205 - const onSwipeMove = props.onSwipeMove;
206 -
207 - if (isFunction(onSwipeMove)) {
208 - dispatchSwipeEvent(
209 - context,
210 - onSwipeMove,
211 - 'swipemove',
212 - state,
213 - UserBlockingEvent,
214 - eventData,
215 - );
216 - }
217 - (nativeEvent: any).preventDefault();
218 - }
219 - break;
220 - }
221 - case 'pointercancel':
222 - case 'touchcancel':
223 - case 'touchend':
224 - case 'mouseup':
225 - case 'pointerup': {
226 - if (state.isSwiping) {
227 - if (state.x === state.startX && state.y === state.startY) {
228 - return;
229 - }
230 - const direction = state.direction;
231 - const lastDirection = state.lastDirection;
232 - if (direction !== lastDirection) {
233 - if (direction === 3) {
234 - const onSwipeLeft = props.onSwipeLeft;
235 -
236 - if (isFunction(onSwipeLeft)) {
237 - dispatchSwipeEvent(
238 - context,
239 - onSwipeLeft,
240 - 'swipeleft',
241 - state,
242 - DiscreteEvent,
243 - );
244 - }
245 - } else if (direction === 1) {
246 - const onSwipeRight = props.onSwipeRight;
247 -
248 - if (isFunction(onSwipeRight)) {
249 - dispatchSwipeEvent(
250 - context,
251 - onSwipeRight,
252 - 'swiperight',
253 - state,
254 - DiscreteEvent,
255 - );
256 - }
257 - }
258 - }
259 - const onSwipeEnd = props.onSwipeEnd;
260 -
261 - if (isFunction(onSwipeEnd)) {
262 - dispatchSwipeEvent(
263 - context,
264 - onSwipeEnd,
265 - 'swipeend',
266 - state,
267 - DiscreteEvent,
268 - );
269 - }
270 - state.lastDirection = direction;
271 - state.isSwiping = false;
272 - state.swipeTarget = null;
273 - state.touchId = null;
274 - context.removeRootEventTypes(rootEventTypes);
275 - }
276 - break;
277 - }
278 - }
279 - },
280 -};
281 -
282 -export const SwipeResponder = React.DEPRECATED_createResponder(
283 - 'Swipe',
284 - swipeResponderImpl,
285 -);
286 -
287 -export function useSwipe(
288 - props: SwipeProps,
289 -): ReactEventResponderListener<any, any> {
290 - return React.DEPRECATED_useResponder(SwipeResponder, props);
291 -}
packages/react-interactions/events/src/dom/__tests__/Drag-test.internal.js deleted
-205
@@ -1,205 +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 - * @emails react-core
8 - */
9 -
10 -'use strict';
11 -
12 -let React;
13 -let ReactFeatureFlags;
14 -let ReactDOM;
15 -let useDrag;
16 -
17 -describe('Drag event responder', () => {
18 - let container;
19 -
20 - beforeEach(() => {
21 - jest.resetModules();
22 - ReactFeatureFlags = require('shared/ReactFeatureFlags');
23 - ReactFeatureFlags.enableDeprecatedFlareAPI = true;
24 - React = require('react');
25 - ReactDOM = require('react-dom');
26 - useDrag = require('react-interactions/events/drag').useDrag;
27 -
28 - container = document.createElement('div');
29 - document.body.appendChild(container);
30 - });
31 -
32 - afterEach(() => {
33 - ReactDOM.render(null, container);
34 - document.body.removeChild(container);
35 - container = null;
36 - });
37 -
38 - it('should support onDragChange', () => {
39 - let divRef = React.createRef();
40 - let events = [];
41 -
42 - function handleOnDrag() {
43 - events.push({isChanged: true});
44 - }
45 -
46 - function Component() {
47 - const listener = useDrag({
48 - onDragChange: handleOnDrag,
49 - });
50 - return (
51 - <div ref={divRef} DEPRECATED_flareListeners={listener}>
52 - Drag me!
53 - </div>
54 - );
55 - }
56 -
57 - ReactDOM.render(<Component />, container);
58 -
59 - const mouseOverEvent = document.createEvent('MouseEvents');
60 - mouseOverEvent.initEvent('mousedown', true, true);
61 - divRef.current.dispatchEvent(mouseOverEvent);
62 -
63 - const mouseMoveEvent = document.createEvent('MouseEvents');
64 - for (let index = 0; index <= 20; index++) {
65 - mouseMoveEvent.initMouseEvent(
66 - 'mousemove',
67 - true,
68 - true,
69 - window,
70 - 1,
71 - index,
72 - index,
73 - 50,
74 - 50,
75 - );
76 - divRef.current.dispatchEvent(mouseMoveEvent);
77 - }
78 - divRef.current.dispatchEvent(mouseMoveEvent);
79 -
80 - const mouseUpEvent = document.createEvent('MouseEvents');
81 - mouseUpEvent.initEvent('mouseup', true, true);
82 - divRef.current.dispatchEvent(mouseUpEvent);
83 -
84 - expect(events).toHaveLength(2);
85 - expect(events).toEqual(
86 - expect.arrayContaining([expect.objectContaining({isChanged: true})]),
87 - );
88 - });
89 -
90 - it('should support onDragStart and onDragEnd', () => {
91 - let divRef = React.createRef();
92 - let events = [];
93 -
94 - function handleDragStart() {
95 - events.push('dragstart');
96 - }
97 -
98 - function handleDragEnd() {
99 - events.push('dragend');
100 - }
101 -
102 - function Component() {
103 - const listener = useDrag({
104 - onDragStart: handleDragStart,
105 - onDragEnd: handleDragEnd,
106 - });
107 - return (
108 - <div ref={divRef} DEPRECATED_flareListeners={listener}>
109 - Drag me!
110 - </div>
111 - );
112 - }
113 -
114 - ReactDOM.render(<Component />, container);
115 -
116 - const mouseOverEvent = document.createEvent('MouseEvents');
117 - mouseOverEvent.initEvent('mousedown', true, true);
118 - divRef.current.dispatchEvent(mouseOverEvent);
119 -
120 - const mouseMoveEvent = document.createEvent('MouseEvents');
121 - for (let index = 0; index <= 20; index++) {
122 - mouseMoveEvent.initMouseEvent(
123 - 'mousemove',
124 - true,
125 - true,
126 - window,
127 - 1,
128 - index,
129 - index,
130 - 50,
131 - 50,
132 - );
133 - divRef.current.dispatchEvent(mouseMoveEvent);
134 - }
135 - divRef.current.dispatchEvent(mouseMoveEvent);
136 -
137 - const mouseUpEvent = document.createEvent('MouseEvents');
138 - mouseUpEvent.initEvent('mouseup', true, true);
139 - divRef.current.dispatchEvent(mouseUpEvent);
140 -
141 - expect(events).toEqual(['dragstart', 'dragend']);
142 - });
143 -
144 - it('should support onDragMove', () => {
145 - let divRef = React.createRef();
146 - let events = [];
147 -
148 - function handleDragMove(e) {
149 - events.push({
150 - diffX: e.diffX,
151 - diffY: e.diffY,
152 - });
153 - }
154 -
155 - function Component() {
156 - const listener = useDrag({
157 - onDragMove: handleDragMove,
158 - });
159 - return (
160 - <div ref={divRef} DEPRECATED_flareListeners={listener}>
161 - Drag me!
162 - </div>
163 - );
164 - }
165 -
166 - ReactDOM.render(<Component />, container);
167 -
168 - const mouseOverEvent = document.createEvent('MouseEvents');
169 - mouseOverEvent.initEvent('mousedown', true, true, window, 1, 0, 0);
170 - divRef.current.dispatchEvent(mouseOverEvent);
171 -
172 - const mouseMoveEvent = document.createEvent('MouseEvents');
173 - for (let index = 0; index <= 20; index++) {
174 - mouseMoveEvent.initMouseEvent(
175 - 'mousemove',
176 - true,
177 - true,
178 - window,
179 - 1,
180 - index + 1,
181 - index + 1,
182 - 50,
183 - 50,
184 - );
185 - divRef.current.dispatchEvent(mouseMoveEvent);
186 - }
187 -
188 - const mouseUpEvent = document.createEvent('MouseEvents');
189 - mouseUpEvent.initEvent('mouseup', true, true);
190 - divRef.current.dispatchEvent(mouseUpEvent);
191 - expect(events).toHaveLength(20);
192 - expect(events).toEqual(
193 - expect.arrayContaining([
194 - expect.objectContaining({
195 - diffX: 2,
196 - diffY: 2,
197 - }),
198 - expect.objectContaining({
199 - diffX: 21,
200 - diffY: 21,
201 - }),
202 - ]),
203 - );
204 - });
205 -});
packages/react-interactions/events/src/dom/__tests__/Scroll-test.internal.js deleted
-201
@@ -1,201 +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 - * @emails react-core
8 - */
9 -
10 -'use strict';
11 -
12 -import {createEventTarget, setPointerEvent} from 'dom-event-testing-library';
13 -
14 -let React;
15 -let ReactFeatureFlags;
16 -let ReactDOM;
17 -let useScroll;
18 -
19 -const forcePointerEvents = true;
20 -const table = [[forcePointerEvents], [!forcePointerEvents]];
21 -
22 -const initializeModules = hasPointerEvents => {
23 - setPointerEvent(hasPointerEvents);
24 - jest.resetModules();
25 - ReactFeatureFlags = require('shared/ReactFeatureFlags');
26 - ReactFeatureFlags.enableDeprecatedFlareAPI = true;
27 - React = require('react');
28 - ReactDOM = require('react-dom');
29 - useScroll = require('react-interactions/events/scroll').useScroll;
30 -};
31 -
32 -describe.each(table)('Scroll responder', hasPointerEvents => {
33 - let container;
34 -
35 - beforeEach(() => {
36 - initializeModules(hasPointerEvents);
37 - container = document.createElement('div');
38 - document.body.appendChild(container);
39 - });
40 -
41 - afterEach(() => {
42 - ReactDOM.render(null, container);
43 - document.body.removeChild(container);
44 - container = null;
45 - });
46 -
47 - describe('disabled', () => {
48 - let onScroll, ref;
49 -
50 - beforeEach(() => {
51 - onScroll = jest.fn();
52 - ref = React.createRef();
53 - const Component = () => {
54 - const listener = useScroll({
55 - disabled: true,
56 - onScroll,
57 - });
58 - return <div ref={ref} DEPRECATED_flareListeners={listener} />;
59 - };
60 - ReactDOM.render(<Component />, container);
61 - });
62 -
63 - it('prevents custom events being dispatched', () => {
64 - const target = createEventTarget(ref.current);
65 - target.scroll();
66 - expect(onScroll).not.toBeCalled();
67 - });
68 - });
69 -
70 - describe('onScroll', () => {
71 - let onScroll, ref;
72 -
73 - beforeEach(() => {
74 - onScroll = jest.fn();
75 - ref = React.createRef();
76 - const Component = () => {
77 - const listener = useScroll({
78 - onScroll,
79 - });
80 - return <div ref={ref} DEPRECATED_flareListeners={listener} />;
81 - };
82 - ReactDOM.render(<Component />, container);
83 - });
84 -
85 - describe('is called after "scroll" event', () => {
86 - const pointerTypesTable = hasPointerEvents
87 - ? [['mouse'], ['touch'], ['pen']]
88 - : [['mouse'], ['touch']];
89 - it.each(pointerTypesTable)('with pointerType: %s', pointerType => {
90 - const node = ref.current;
91 - const target = createEventTarget(node);
92 - target.pointerdown({pointerType});
93 - target.scroll();
94 - expect(onScroll).toHaveBeenCalledTimes(1);
95 - expect(onScroll).toHaveBeenCalledWith(
96 - expect.objectContaining({
97 - pointerType,
98 - type: 'scroll',
99 - direction: '',
100 - }),
101 - );
102 - onScroll.mockReset();
103 - node.scrollTop = -1;
104 - target.scroll();
105 - expect(onScroll).toHaveBeenCalledWith(
106 - expect.objectContaining({
107 - pointerType,
108 - type: 'scroll',
109 - direction: 'up',
110 - }),
111 - );
112 - onScroll.mockReset();
113 - node.scrollTop = 1;
114 - target.scroll();
115 - expect(onScroll).toHaveBeenCalledWith(
116 - expect.objectContaining({
117 - pointerType,
118 - type: 'scroll',
119 - direction: 'down',
120 - }),
121 - );
122 - });
123 -
124 - it('with pointerType: keyboard', () => {
125 - const target = createEventTarget(ref.current);
126 - target.keydown({key: 'A'});
127 - target.keyup({key: 'A'});
128 - target.scroll();
129 - expect(onScroll).toHaveBeenCalledTimes(1);
130 - expect(onScroll).toHaveBeenCalledWith(
131 - expect.objectContaining({
132 - pointerType: 'keyboard',
133 - type: 'scroll',
134 - direction: '',
135 - }),
136 - );
137 - });
138 - });
139 - });
140 -
141 - describe('onScrollDragStart', () => {
142 - let onScrollDragStart, ref;
143 -
144 - beforeEach(() => {
145 - onScrollDragStart = jest.fn();
146 - ref = React.createRef();
147 - const Component = () => {
148 - const listener = useScroll({
149 - onScrollDragStart,
150 - });
151 - return <div ref={ref} DEPRECATED_flareListeners={listener} />;
152 - };
153 - ReactDOM.render(<Component />, container);
154 - });
155 -
156 - it('works as expected with touch events', () => {
157 - const target = createEventTarget(ref.current);
158 - target.pointerdown({pointerType: 'touch'});
159 - target.scroll();
160 - expect(onScrollDragStart).toHaveBeenCalledTimes(1);
161 - expect(onScrollDragStart).toHaveBeenCalledWith(
162 - expect.objectContaining({
163 - pointerType: 'touch',
164 - type: 'scrolldragstart',
165 - direction: '',
166 - }),
167 - );
168 - });
169 - });
170 -
171 - describe('onScrollDragEnd', () => {
172 - let onScrollDragEnd, ref;
173 -
174 - beforeEach(() => {
175 - onScrollDragEnd = jest.fn();
176 - ref = React.createRef();
177 - const Component = () => {
178 - const listener = useScroll({
179 - onScrollDragEnd,
180 - });
181 - return <div ref={ref} DEPRECATED_flareListeners={listener} />;
182 - };
183 - ReactDOM.render(<Component />, container);
184 - });
185 -
186 - it('works as expected with touch events', () => {
187 - const target = createEventTarget(ref.current);
188 - target.pointerdown({pointerType: 'touch'});
189 - target.scroll();
190 - target.pointerup({pointerType: 'touch'});
191 - expect(onScrollDragEnd).toHaveBeenCalledTimes(1);
192 - expect(onScrollDragEnd).toHaveBeenCalledWith(
193 - expect.objectContaining({
194 - pointerType: 'touch',
195 - type: 'scrolldragend',
196 - direction: '',
197 - }),
198 - );
199 - });
200 - });
201 -});
packages/react-interactions/events/swipe.js deleted
-12
@@ -1,12 +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 -'use strict';
11 -
12 -module.exports = require('./src/dom/Swipe');
packages/react-interactions/package.json
-3
@@ -14,15 +14,12 @@
14 "README.md",
15 "events/README.md",
16 "events/context-menu.js",
17 - "events/drag.js",
17 "events/focus.js",
18 "events/hover.js",
19 "events/input.js",
20 "events/keyboard.js",
21 "events/press.js",
22 "events/press-legacy.js",
24 - "events/scroll.js",
25 - "events/swipe.js",
23 "events/tap.js",
24 "build-info.json",
25 "cjs/",
scripts/rollup/bundles.js
-45
@@ -578,21 +578,6 @@ const bundles = [
578 externals: ['react'],
579 },
580
581 - {
582 - bundleTypes: [
583 - UMD_DEV,
584 - UMD_PROD,
585 - NODE_DEV,
586 - NODE_PROD,
587 - FB_WWW_DEV,
588 - FB_WWW_PROD,
589 - ],
590 - moduleType: NON_FIBER_RENDERER,
591 - entry: 'react-interactions/events/drag',
592 - global: 'ReactEventsDrag',
593 - externals: ['react'],
594 - },
595 -
581 {
582 bundleTypes: [
583 UMD_DEV,
@@ -687,36 +672,6 @@ const bundles = [
672 externals: ['react'],
673 },
674
690 - {
691 - bundleTypes: [
692 - UMD_DEV,
693 - UMD_PROD,
694 - NODE_DEV,
695 - NODE_PROD,
696 - FB_WWW_DEV,
697 - FB_WWW_PROD,
698 - ],
699 - moduleType: NON_FIBER_RENDERER,
700 - entry: 'react-interactions/events/scroll',
701 - global: 'ReactEventsScroll',
702 - externals: ['react'],
703 - },
704 -
705 - {
706 - bundleTypes: [
707 - UMD_DEV,
708 - UMD_PROD,
709 - NODE_DEV,
710 - NODE_PROD,
711 - FB_WWW_DEV,
712 - FB_WWW_PROD,
713 - ],
714 - moduleType: NON_FIBER_RENDERER,
715 - entry: 'react-interactions/events/swipe',
716 - global: 'ReactEventsSwipe',
717 - externals: ['react'],
718 - },
719 -
675 {
676 bundleTypes: [
677 UMD_DEV,