Skip to content

Commit a146c1f

Browse files
authored
[Flare] Refactor of Press to fix various issues (#15878)
1 parent de7a09c commit a146c1f

9 files changed

Lines changed: 649 additions & 310 deletions

File tree

packages/react-dom/src/events/DOMEventResponderSystem.js

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -394,26 +394,6 @@ const eventResponderContext: ReactResponderContext = {
394394
},
395395
getActiveDocument,
396396
objectAssign: Object.assign,
397-
getEventPointerType(
398-
event: ReactResponderEvent,
399-
): '' | 'mouse' | 'keyboard' | 'pen' | 'touch' {
400-
validateResponderContext();
401-
const nativeEvent: any = event.nativeEvent;
402-
const {type, pointerType} = nativeEvent;
403-
if (pointerType != null) {
404-
return pointerType;
405-
}
406-
if (type.indexOf('mouse') === 0) {
407-
return 'mouse';
408-
}
409-
if (type.indexOf('touch') === 0) {
410-
return 'touch';
411-
}
412-
if (type.indexOf('key') === 0) {
413-
return 'keyboard';
414-
}
415-
return '';
416-
},
417397
getEventCurrentTarget(event: ReactResponderEvent): Element {
418398
validateResponderContext();
419399
const target = event.target;
@@ -583,12 +563,29 @@ function createResponderEvent(
583563
passive: boolean,
584564
passiveSupported: boolean,
585565
): ReactResponderEvent {
566+
const {pointerType} = (nativeEvent: any);
567+
let eventPointerType = '';
568+
let pointerId = null;
569+
570+
if (pointerType !== undefined) {
571+
eventPointerType = pointerType;
572+
pointerId = (nativeEvent: any).pointerId;
573+
} else if (nativeEvent.key !== undefined) {
574+
eventPointerType = 'keyboard';
575+
} else if (nativeEvent.button !== undefined) {
576+
eventPointerType = 'mouse';
577+
} else if ((nativeEvent: any).changedTouches !== undefined) {
578+
eventPointerType = 'touch';
579+
}
580+
586581
const responderEvent = {
587582
nativeEvent: nativeEvent,
588-
target: nativeEventTarget,
589-
type: topLevelType,
590583
passive,
591584
passiveSupported,
585+
pointerId,
586+
pointerType: eventPointerType,
587+
target: nativeEventTarget,
588+
type: topLevelType,
592589
};
593590
if (__DEV__) {
594591
Object.freeze(responderEvent);

packages/react-events/src/Focus.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
*/
99

1010
import type {
11+
PointerType,
1112
ReactResponderEvent,
1213
ReactResponderContext,
1314
} from 'shared/ReactTypes';
@@ -30,7 +31,6 @@ type FocusState = {
3031
pointerType: PointerType,
3132
};
3233

33-
type PointerType = '' | 'mouse' | 'keyboard' | 'pen' | 'touch';
3434
type FocusEventType = 'focus' | 'blur' | 'focuschange' | 'focusvisiblechange';
3535

3636
type FocusEvent = {|

packages/react-events/src/Hover.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ const HoverResponder = {
294294
props: HoverProps,
295295
state: HoverState,
296296
): void {
297-
const {type} = event;
297+
const {pointerType, type} = event;
298298

299299
if (props.disabled) {
300300
if (state.isHovered) {
@@ -306,7 +306,6 @@ const HoverResponder = {
306306
}
307307
return;
308308
}
309-
const pointerType = context.getEventPointerType(event);
310309

311310
switch (type) {
312311
// START

0 commit comments

Comments
 (0)