@samitouri / QOS-React-2 / commits / 23b8a25345

[Flare] Remove responder flags to simplify logic (#16084)

Dominic Gannaway committed Jul 9, 2019 at 15:05 UTC 23b8a25345fe2e1b04eac4eaa801b24aba62f3e1
12 files changed +13 -183
packages/react-dom/src/events/__tests__/DOMEventResponderSystem-test.internal.js
-131
@@ -26,8 +26,6 @@ function createReactEventComponent({
26 onMount,
27 onUnmount,
28 onOwnershipChange,
29 - allowMultipleHostChildren,
30 - allowEventHooks,
29 }) {
30 const testEventResponder = {
31 displayName: 'TestEventComponent',
@@ -39,8 +37,6 @@ function createReactEventComponent({
37 onMount,
38 onUnmount,
39 onOwnershipChange,
42 - allowMultipleHostChildren: allowMultipleHostChildren || false,
43 - allowEventHooks: allowEventHooks || true,
40 };
41
42 return React.unstable_createEvent(testEventResponder);
@@ -822,133 +818,6 @@ describe('DOMEventResponderSystem', () => {
818 expect(container.innerHTML).toBe('<button>Click me!</button>');
819 });
820
825 - it('should warn if multiple host components are detected without allowMultipleHostChildren', () => {
826 - const EventComponent = createReactEventComponent({
827 - targetEventTypes: [],
828 - onEvent: () => {},
829 - allowMultipleHostChildren: false,
830 - });
831 -
832 - const Test = () => (
833 - <EventComponent>
834 - <div />
835 - <div />
836 - </EventComponent>
837 - );
838 -
839 - expect(() => {
840 - ReactDOM.render(<Test />, container);
841 - }).toWarnDev(
842 - 'Warning: A "<TestEventComponent>" event component cannot contain multiple host children.',
843 - );
844 -
845 - function Component() {
846 - return <div />;
847 - }
848 -
849 - const Test2 = () => (
850 - <EventComponent>
851 - <div />
852 - <Component />
853 - </EventComponent>
854 - );
855 -
856 - expect(() => {
857 - ReactDOM.render(<Test2 />, container);
858 - }).toWarnDev(
859 - 'Warning: A "<TestEventComponent>" event component cannot contain multiple host children.',
860 - );
861 - });
862 -
863 - it('should handle suspended nodes correctly when detecting host components without allowMultipleHostChildren', () => {
864 - const EventComponent = createReactEventComponent({
865 - targetEventTypes: [],
866 - onEvent: () => {},
867 - allowMultipleHostChildren: false,
868 - });
869 -
870 - function SuspendedComponent() {
871 - throw Promise.resolve();
872 - }
873 -
874 - function Component() {
875 - return (
876 - <React.Fragment>
877 - <div />
878 - <SuspendedComponent />
879 - </React.Fragment>
880 - );
881 - }
882 -
883 - const Test = () => (
884 - <EventComponent>
885 - <React.Suspense fallback={<div>Loading...</div>}>
886 - <Component />
887 - </React.Suspense>
888 - </EventComponent>
889 - );
890 -
891 - ReactDOM.render(<Test />, container);
892 -
893 - function Component2() {
894 - return (
895 - <React.Fragment>
896 - <SuspendedComponent />
897 - </React.Fragment>
898 - );
899 - }
900 -
901 - const Test2 = () => (
902 - <EventComponent>
903 - <React.Suspense
904 - fallback={
905 - <React.Fragment>
906 - <div />
907 - <div />
908 - </React.Fragment>
909 - }>
910 - <Component2 />
911 - </React.Suspense>
912 - </EventComponent>
913 - );
914 -
915 - expect(() => {
916 - ReactDOM.render(<Test2 />, container);
917 - }).toWarnDev(
918 - 'Warning: A "<TestEventComponent>" event component cannot contain multiple host children.',
919 - );
920 - });
921 -
922 - it('should not warn if multiple host components are detected with allowMultipleHostChildren', () => {
923 - const EventComponent = createReactEventComponent({
924 - targetEventTypes: [],
925 - onEvent: () => {},
926 - allowMultipleHostChildren: true,
927 - });
928 -
929 - const Test = () => (
930 - <EventComponent>
931 - <div />
932 - <div />
933 - </EventComponent>
934 - );
935 -
936 - ReactDOM.render(<Test />, container);
937 -
938 - function Component() {
939 - return <div />;
940 - }
941 -
942 - const Test2 = () => (
943 - <EventComponent>
944 - <div />
945 - <Component />
946 - </EventComponent>
947 - );
948 -
949 - ReactDOM.render(<Test2 />, container);
950 - });
951 -
821 it('should work with event component hooks', () => {
822 const buttonRef = React.createRef();
823 const eventLogs = [];
packages/react-events/src/dom/Drag.js
-2
@@ -98,8 +98,6 @@ const DragResponder: ReactDOMEventResponder = {
98 y: 0,
99 };
100 },
101 - allowMultipleHostChildren: false,
102 - allowEventHooks: false,
101 onEvent(
102 event: ReactDOMResponderEvent,
103 context: ReactDOMResponderContext,
packages/react-events/src/dom/Focus.js
-2
@@ -228,8 +228,6 @@ const FocusResponder: ReactDOMEventResponder = {
228 pointerType: '',
229 };
230 },
231 - allowMultipleHostChildren: false,
232 - allowEventHooks: true,
231 onEvent(
232 event: ReactDOMResponderEvent,
233 context: ReactDOMResponderContext,
packages/react-events/src/dom/FocusScope.js
-2
@@ -56,8 +56,6 @@ const FocusScopeResponder: ReactDOMEventResponder = {
56 currentFocusedNode: null,
57 };
58 },
59 - allowMultipleHostChildren: true,
60 - allowEventHooks: false,
59 onEvent(
60 event: ReactDOMResponderEvent,
61 context: ReactDOMResponderContext,
packages/react-events/src/dom/Hover.js
+12 -14
@@ -332,20 +332,18 @@ const HoverResponder: ReactDOMEventResponder = {
332 case 'pointermove':
333 case 'mousemove': {
334 if (state.isHovered && !isEmulatedMouseEvent(event, state)) {
335 - if (state.isHovered) {
336 - if (props.onHoverMove && state.hoverTarget !== null) {
337 - const syntheticEvent = createHoverEvent(
338 - event,
339 - context,
340 - 'hovermove',
341 - state.hoverTarget,
342 - );
343 - context.dispatchEvent(
344 - syntheticEvent,
345 - props.onHoverMove,
346 - UserBlockingEvent,
347 - );
348 - }
335 + if (props.onHoverMove && state.hoverTarget !== null) {
336 + const syntheticEvent = createHoverEvent(
337 + event,
338 + context,
339 + 'hovermove',
340 + state.hoverTarget,
341 + );
342 + context.dispatchEvent(
343 + syntheticEvent,
344 + props.onHoverMove,
345 + UserBlockingEvent,
346 + );
347 }
348 }
349 return;
packages/react-events/src/dom/Press.js
-2
@@ -649,8 +649,6 @@ const PressResponder: ReactDOMEventResponder = {
649 touchEvent: null,
650 };
651 },
652 - allowMultipleHostChildren: false,
653 - allowEventHooks: true,
652 onEvent(
653 event: ReactDOMResponderEvent,
654 context: ReactDOMResponderContext,
packages/react-events/src/dom/Scroll.js
-2
@@ -141,8 +141,6 @@ const ScrollResponder: ReactDOMEventResponder = {
141 scrollTarget: null,
142 };
143 },
144 - allowMultipleHostChildren: true,
145 - allowEventHooks: true,
144 onEvent(
145 event: ReactDOMResponderEvent,
146 context: ReactDOMResponderContext,
packages/react-events/src/dom/Swipe.js
-2
@@ -104,8 +104,6 @@ const SwipeResponder: ReactDOMEventResponder = {
104 y: 0,
105 };
106 },
107 - allowMultipleHostChildren: false,
108 - allowEventHooks: false,
107 onEvent(
108 event: ReactDOMResponderEvent,
109 context: ReactDOMResponderContext,
packages/react-events/src/rn/Press.js
-2
@@ -502,8 +502,6 @@ function dispatchPressEndEvents(event, context, props, state): void {
502 const PressResponder: ReactNativeEventResponder = {
503 displayName: 'Press',
504 targetEventTypes,
505 - allowEventHooks: true,
506 - allowMultipleHostChildren: false,
505 getInitialState(): PressState {
506 return {
507 activationPosition: null,
packages/react-reconciler/src/ReactFiberCompleteWork.js
+1 -16
@@ -116,12 +116,7 @@ import {
116 renderDidSuspendDelayIfPossible,
117 renderHasNotSuspendedYet,
118 } from './ReactFiberWorkLoop';
119 -import {
120 - getEventComponentHostChildrenCount,
121 - createEventComponentInstance,
122 -} from './ReactFiberEvents';
123 -import getComponentName from 'shared/getComponentName';
124 -import warning from 'shared/warning';
119 +import {createEventComponentInstance} from './ReactFiberEvents';
120 import {Never} from './ReactFiberExpirationTime';
121 import {resetChildFibers} from './ReactChildFiber';
122
@@ -1131,16 +1126,6 @@ function completeWork(
1126
1127 if (eventComponentInstance === null) {
1128 let responderState = null;
1134 - if (__DEV__ && !responder.allowMultipleHostChildren) {
1135 - const hostChildrenCount = getEventComponentHostChildrenCount(
1136 - workInProgress,
1137 - );
1138 - warning(
1139 - (hostChildrenCount || 0) < 2,
1140 - 'A "<%s>" event component cannot contain multiple host children.',
1141 - getComponentName(workInProgress.type),
1142 - );
1143 - }
1129 const getInitialState = responder.getInitialState;
1130 if (getInitialState !== undefined) {
1131 responderState = getInitialState(newProps);
packages/react-reconciler/src/ReactFiberEvents.js
-6
@@ -22,7 +22,6 @@ import {
22 Fragment,
23 } from 'shared/ReactWorkTags';
24 import {NoWork} from './ReactFiberExpirationTime';
25 -import invariant from 'shared/invariant';
25
26 let currentlyRenderingFiber: null | Fiber = null;
27 let currentEventComponentInstanceIndex: number = 0;
@@ -37,11 +36,6 @@ export function updateEventComponentInstance<E, C>(
36 props: Object,
37 ): void {
38 const responder = eventComponent.responder;
40 - invariant(
41 - responder.allowEventHooks,
42 - 'The "%s" event responder cannot be used via the "useEvent" hook.',
43 - responder.displayName,
44 - );
39 let events;
40 let dependencies: Dependencies | null = ((currentlyRenderingFiber: any): Fiber)
41 .dependencies;
packages/shared/ReactTypes.js
-2
@@ -95,8 +95,6 @@ export type ReactEventResponder<E, C> = {
95 targetEventTypes?: Array<string>,
96 rootEventTypes?: Array<string>,
97 getInitialState?: (props: Object) => Object,
98 - allowMultipleHostChildren: boolean,
99 - allowEventHooks: boolean,
98 onEvent?: (event: E, context: C, props: Object, state: Object) => void,
99 onRootEvent?: (event: E, context: C, props: Object, state: Object) => void,
100 onMount?: (context: C, props: Object, state: Object) => void,