react-native-gesture-handler 2.6.0 → 2.6.2
Sign up to get free protection for your applications and to get access to all the features.
- package/android/build.gradle +2 -2
- package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
- package/lib/commonjs/EnableExperimentalWebImplementation.js +7 -0
- package/lib/commonjs/EnableExperimentalWebImplementation.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.macos.js +22 -13
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +23 -10
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.js +6 -4
- package/lib/commonjs/components/GestureComponents.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.web.js +1 -1
- package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
- package/lib/commonjs/components/Swipeable.js +4 -4
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -5
- package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +4 -2
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/eventReceiver.js +14 -20
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +32 -0
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -0
- package/lib/commonjs/utils.js +10 -6
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js +13 -17
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js +3 -14
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +37 -12
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +330 -79
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +23 -18
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +51 -0
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +81 -22
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +57 -40
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +43 -34
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +45 -39
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +52 -50
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js +22 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/EventManager.js +40 -96
- package/lib/commonjs/web/tools/EventManager.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +109 -30
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js +24 -10
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +130 -0
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -0
- package/lib/commonjs/web/tools/PointerTracker.js +97 -7
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
- package/lib/commonjs/web/tools/TouchEventManager.js +138 -0
- package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -0
- package/lib/commonjs/web/utils.js +15 -0
- package/lib/commonjs/web/utils.js.map +1 -0
- package/lib/module/EnableExperimentalWebImplementation.js +5 -0
- package/lib/module/EnableExperimentalWebImplementation.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.js +1 -1
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.macos.js +21 -14
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +22 -11
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/components/GestureComponents.js +6 -4
- package/lib/module/components/GestureComponents.js.map +1 -1
- package/lib/module/components/GestureComponents.web.js +1 -1
- package/lib/module/components/GestureComponents.web.js.map +1 -1
- package/lib/module/components/Swipeable.js +4 -4
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -4
- package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +5 -3
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/eventReceiver.js +14 -20
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.web.js +21 -0
- package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -0
- package/lib/module/utils.js +7 -6
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js +13 -17
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/detectors/ScaleGestureDetector.js +3 -14
- package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +37 -12
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +324 -79
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +23 -18
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +39 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/NativeViewGestureHandler.js +80 -22
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +57 -41
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +43 -33
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +45 -38
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +52 -50
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js +19 -0
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/EventManager.js +39 -95
- package/lib/module/web/tools/EventManager.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +107 -30
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js +24 -10
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web/tools/NodeManager.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +116 -0
- package/lib/module/web/tools/PointerEventManager.js.map +1 -0
- package/lib/module/web/tools/PointerTracker.js +97 -7
- package/lib/module/web/tools/PointerTracker.js.map +1 -1
- package/lib/module/web/tools/TouchEventManager.js +124 -0
- package/lib/module/web/tools/TouchEventManager.js.map +1 -0
- package/lib/module/web/utils.js +8 -0
- package/lib/module/web/utils.js.map +1 -0
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +6 -3
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +5 -2
- package/lib/typescript/components/Swipeable.d.ts +3 -3
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +1 -1
- package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +3 -3
- package/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts +3 -2
- package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +4 -0
- package/lib/typescript/utils.d.ts +4 -0
- package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +7 -7
- package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +6 -7
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +12 -10
- package/lib/typescript/web/handlers/GestureHandler.d.ts +42 -32
- package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +6 -9
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +11 -0
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +15 -6
- package/lib/typescript/web/handlers/PanGestureHandler.d.ts +15 -23
- package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +11 -12
- package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +12 -12
- package/lib/typescript/web/handlers/TapGestureHandler.d.ts +11 -14
- package/lib/typescript/web/interfaces.d.ts +50 -10
- package/lib/typescript/web/tools/EventManager.d.ts +28 -26
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +4 -2
- package/lib/typescript/web/tools/InteractionManager.d.ts +3 -0
- package/lib/typescript/web/tools/NodeManager.d.ts +3 -3
- package/lib/typescript/web/tools/PointerEventManager.d.ts +6 -0
- package/lib/typescript/web/tools/PointerTracker.d.ts +29 -5
- package/lib/typescript/web/tools/TouchEventManager.d.ts +6 -0
- package/lib/typescript/web/utils.d.ts +4 -0
- package/package.json +2 -2
- package/src/EnableExperimentalWebImplementation.ts +9 -0
- package/src/RNGestureHandlerModule.macos.ts +28 -13
- package/src/RNGestureHandlerModule.ts +4 -1
- package/src/RNGestureHandlerModule.web.ts +20 -7
- package/src/components/GestureComponents.tsx +12 -16
- package/src/components/GestureComponents.web.tsx +1 -1
- package/src/components/Swipeable.tsx +11 -7
- package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +2 -12
- package/src/fabric/RNGestureHandlerRootViewNativeComponent.ts +2 -8
- package/src/handlers/gestures/GestureDetector.tsx +8 -4
- package/src/handlers/gestures/eventReceiver.ts +23 -24
- package/src/handlers/gestures/gestureStateManager.web.ts +24 -0
- package/src/utils.ts +6 -6
- package/src/web/detectors/RotationGestureDetector.ts +20 -52
- package/src/web/detectors/ScaleGestureDetector.ts +9 -45
- package/src/web/handlers/FlingGestureHandler.ts +45 -22
- package/src/web/handlers/GestureHandler.ts +365 -97
- package/src/web/handlers/LongPressGestureHandler.ts +30 -24
- package/src/web/handlers/ManualGestureHandler.ts +39 -0
- package/src/web/handlers/NativeViewGestureHandler.ts +81 -24
- package/src/web/handlers/PanGestureHandler.ts +68 -53
- package/src/web/handlers/PinchGestureHandler.ts +47 -44
- package/src/web/handlers/RotationGestureHandler.ts +52 -51
- package/src/web/handlers/TapGestureHandler.ts +74 -56
- package/src/web/interfaces.ts +57 -10
- package/src/web/tools/EventManager.ts +58 -148
- package/src/web/tools/GestureHandlerOrchestrator.ts +115 -47
- package/src/web/tools/InteractionManager.ts +25 -9
- package/src/web/tools/NodeManager.ts +6 -6
- package/src/web/tools/PointerEventManager.ts +134 -0
- package/src/web/tools/PointerTracker.ts +120 -10
- package/src/web/tools/TouchEventManager.ts +167 -0
- package/src/web/utils.ts +8 -0
@@ -1,19 +1,9 @@
|
|
1
|
-
|
2
|
-
import codegenNativeComponentUntyped from 'react-native/Libraries/Utilities/codegenNativeComponent';
|
3
|
-
// @ts-ignore TODO: remove once there is a .d.ts file with definitions
|
1
|
+
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
|
4
2
|
import type {
|
5
3
|
Int32,
|
6
4
|
WithDefault,
|
7
|
-
// @ts-ignore TODO: remove once there is a .d.ts file with definitions
|
8
5
|
} from 'react-native/Libraries/Types/CodegenTypes';
|
9
|
-
import type { ViewProps,
|
10
|
-
// @ts-ignore TODO: remove once there is a .d.ts file with definitions
|
11
|
-
import type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet';
|
12
|
-
|
13
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
14
|
-
const codegenNativeComponent = codegenNativeComponentUntyped as <T extends {}>(
|
15
|
-
name: string
|
16
|
-
) => HostComponent<T>;
|
6
|
+
import type { ViewProps, ColorValue } from 'react-native';
|
17
7
|
|
18
8
|
interface NativeProps extends ViewProps {
|
19
9
|
exclusive?: WithDefault<boolean, true>;
|
@@ -1,11 +1,5 @@
|
|
1
|
-
|
2
|
-
import
|
3
|
-
import type { ViewProps, HostComponent } from 'react-native';
|
4
|
-
|
5
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
6
|
-
const codegenNativeComponent = codegenNativeComponentUntyped as <T extends {}>(
|
7
|
-
name: string
|
8
|
-
) => HostComponent<T>;
|
1
|
+
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
|
2
|
+
import type { ViewProps } from 'react-native';
|
9
3
|
|
10
4
|
interface NativeProps extends ViewProps {}
|
11
5
|
|
@@ -35,7 +35,7 @@ import { State } from '../../State';
|
|
35
35
|
import { TouchEventType } from '../../TouchEventType';
|
36
36
|
import { ComposedGesture } from './gestureComposition';
|
37
37
|
import { ActionType } from '../../ActionType';
|
38
|
-
import { isFabric, tagMessage } from '../../utils';
|
38
|
+
import { isFabric, REACT_NATIVE_VERSION, tagMessage } from '../../utils';
|
39
39
|
import { getShadowNodeFromRef } from '../../getShadowNodeFromRef';
|
40
40
|
import { Platform } from 'react-native';
|
41
41
|
import type RNGestureHandlerModuleWeb from '../../RNGestureHandlerModule.web';
|
@@ -152,7 +152,6 @@ function attachHandlers({
|
|
152
152
|
|
153
153
|
for (const handler of gesture) {
|
154
154
|
checkGestureCallbacksForWorklets(handler);
|
155
|
-
|
156
155
|
RNGestureHandlerModule.createGestureHandler(
|
157
156
|
handler.handlerName,
|
158
157
|
handler.handlerTag,
|
@@ -540,8 +539,13 @@ function validateDetectorChildren(ref: any) {
|
|
540
539
|
// / \
|
541
540
|
// NativeView NativeView
|
542
541
|
if (__DEV__ && Platform.OS !== 'web') {
|
543
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
544
|
-
const wrapType =
|
542
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
543
|
+
const wrapType =
|
544
|
+
REACT_NATIVE_VERSION.minor > 63 || REACT_NATIVE_VERSION.major > 0
|
545
|
+
? // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
546
|
+
ref._reactInternals.elementType
|
547
|
+
: // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
548
|
+
ref._reactInternalFiber.elementType;
|
545
549
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
|
546
550
|
let instance = RNRenderer.findHostInstance_DEPRECATED(ref)
|
547
551
|
._internalFiberInstanceHandleDEV;
|
@@ -6,32 +6,20 @@ import {
|
|
6
6
|
GestureUpdateEvent,
|
7
7
|
GestureStateChangeEvent,
|
8
8
|
} from '../gestureHandlerCommon';
|
9
|
-
import { GestureStateManagerType } from './gestureStateManager';
|
10
9
|
import { findHandler, findOldGestureHandler } from '../handlersRegistry';
|
11
10
|
import { BaseGesture } from './gesture';
|
12
|
-
import {
|
11
|
+
import {
|
12
|
+
GestureStateManager,
|
13
|
+
GestureStateManagerType,
|
14
|
+
} from './gestureStateManager';
|
13
15
|
|
14
16
|
let gestureHandlerEventSubscription: EmitterSubscription | null = null;
|
15
17
|
let gestureHandlerStateChangeEventSubscription: EmitterSubscription | null = null;
|
16
18
|
|
17
|
-
const
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
const dummyStateManager: GestureStateManagerType = {
|
22
|
-
begin: () => {
|
23
|
-
console.warn(warningMessage);
|
24
|
-
},
|
25
|
-
activate: () => {
|
26
|
-
console.warn(warningMessage);
|
27
|
-
},
|
28
|
-
end: () => {
|
29
|
-
console.warn(warningMessage);
|
30
|
-
},
|
31
|
-
fail: () => {
|
32
|
-
console.warn(warningMessage);
|
33
|
-
},
|
34
|
-
};
|
19
|
+
const gestureStateManagers: Map<number, GestureStateManagerType> = new Map<
|
20
|
+
number,
|
21
|
+
GestureStateManagerType
|
22
|
+
>();
|
35
23
|
|
36
24
|
const lastUpdateEvent: (GestureUpdateEvent | undefined)[] = [];
|
37
25
|
|
@@ -83,21 +71,32 @@ export function onGestureHandlerEvent(
|
|
83
71
|
handler.handlers.onEnd?.(event, false);
|
84
72
|
}
|
85
73
|
handler.handlers.onFinalize?.(event, false);
|
74
|
+
gestureStateManagers.delete(event.handlerTag);
|
86
75
|
lastUpdateEvent[handler.handlers.handlerTag] = undefined;
|
87
76
|
}
|
88
77
|
} else if (isTouchEvent(event)) {
|
78
|
+
if (!gestureStateManagers.has(event.handlerTag)) {
|
79
|
+
gestureStateManagers.set(
|
80
|
+
event.handlerTag,
|
81
|
+
GestureStateManager.create(event.handlerTag)
|
82
|
+
);
|
83
|
+
}
|
84
|
+
|
85
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
86
|
+
const manager = gestureStateManagers.get(event.handlerTag)!;
|
87
|
+
|
89
88
|
switch (event.eventType) {
|
90
89
|
case TouchEventType.TOUCHES_DOWN:
|
91
|
-
handler.handlers?.onTouchesDown?.(event,
|
90
|
+
handler.handlers?.onTouchesDown?.(event, manager);
|
92
91
|
break;
|
93
92
|
case TouchEventType.TOUCHES_MOVE:
|
94
|
-
handler.handlers?.onTouchesMove?.(event,
|
93
|
+
handler.handlers?.onTouchesMove?.(event, manager);
|
95
94
|
break;
|
96
95
|
case TouchEventType.TOUCHES_UP:
|
97
|
-
handler.handlers?.onTouchesUp?.(event,
|
96
|
+
handler.handlers?.onTouchesUp?.(event, manager);
|
98
97
|
break;
|
99
98
|
case TouchEventType.TOUCHES_CANCELLED:
|
100
|
-
handler.handlers?.onTouchesCancelled?.(event,
|
99
|
+
handler.handlers?.onTouchesCancelled?.(event, manager);
|
101
100
|
break;
|
102
101
|
}
|
103
102
|
} else {
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import NodeManager from '../../web/tools/NodeManager';
|
2
|
+
import { GestureStateManagerType } from './gestureStateManager';
|
3
|
+
|
4
|
+
export const GestureStateManager = {
|
5
|
+
create(handlerTag: number): GestureStateManagerType {
|
6
|
+
return {
|
7
|
+
begin: () => {
|
8
|
+
NodeManager.getHandler(handlerTag).begin();
|
9
|
+
},
|
10
|
+
|
11
|
+
activate: () => {
|
12
|
+
NodeManager.getHandler(handlerTag).activate();
|
13
|
+
},
|
14
|
+
|
15
|
+
fail: () => {
|
16
|
+
NodeManager.getHandler(handlerTag).fail();
|
17
|
+
},
|
18
|
+
|
19
|
+
end: () => {
|
20
|
+
NodeManager.getHandler(handlerTag).end();
|
21
|
+
},
|
22
|
+
};
|
23
|
+
},
|
24
|
+
};
|
package/src/utils.ts
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
import pack from 'react-native/package.json';
|
2
2
|
|
3
|
-
const
|
3
|
+
const [majorStr, minorStr] = pack.version.split('.');
|
4
|
+
export const REACT_NATIVE_VERSION = {
|
5
|
+
major: parseInt(majorStr, 10),
|
6
|
+
minor: parseInt(minorStr, 10),
|
7
|
+
};
|
4
8
|
|
5
9
|
export function toArray<T>(object: T | T[]): T[] {
|
6
10
|
if (!Array.isArray(object)) {
|
@@ -52,12 +56,8 @@ export function isFabric(): boolean {
|
|
52
56
|
}
|
53
57
|
|
54
58
|
export function shouldUseCodegenNativeComponent(): boolean {
|
55
|
-
const [majorStr, minorStr] = rnVersion.split('.');
|
56
|
-
const major = Number.parseInt(majorStr);
|
57
|
-
const minor = Number.parseInt(minorStr);
|
58
|
-
|
59
59
|
// use codegenNativeComponent starting with RN 0.68
|
60
|
-
return minor >= 68 || major > 0;
|
60
|
+
return REACT_NATIVE_VERSION.minor >= 68 || REACT_NATIVE_VERSION.major > 0;
|
61
61
|
}
|
62
62
|
|
63
63
|
export function isRemoteDebuggingEnabled(): boolean {
|
@@ -1,29 +1,17 @@
|
|
1
|
-
import {
|
1
|
+
import { AdaptedEvent, EventTypes } from '../interfaces';
|
2
2
|
import PointerTracker from '../tools/PointerTracker';
|
3
3
|
|
4
4
|
export interface RotationGestureListener {
|
5
5
|
onRotationBegin: (detector: RotationGestureDetector) => boolean;
|
6
|
-
onRotation: (
|
7
|
-
|
8
|
-
event: AdaptedPointerEvent
|
9
|
-
) => boolean;
|
10
|
-
onRotationEnd: (
|
11
|
-
detector: RotationGestureDetector,
|
12
|
-
event: AdaptedPointerEvent
|
13
|
-
) => void;
|
6
|
+
onRotation: (detector: RotationGestureDetector) => boolean;
|
7
|
+
onRotationEnd: (detector: RotationGestureDetector) => void;
|
14
8
|
}
|
15
9
|
|
16
10
|
export default class RotationGestureDetector
|
17
11
|
implements RotationGestureListener {
|
18
12
|
onRotationBegin: (detector: RotationGestureDetector) => boolean;
|
19
|
-
onRotation: (
|
20
|
-
|
21
|
-
event: AdaptedPointerEvent
|
22
|
-
) => boolean;
|
23
|
-
onRotationEnd: (
|
24
|
-
detector: RotationGestureDetector,
|
25
|
-
event: AdaptedPointerEvent
|
26
|
-
) => void;
|
13
|
+
onRotation: (detector: RotationGestureDetector) => boolean;
|
14
|
+
onRotationEnd: (detector: RotationGestureDetector) => void;
|
27
15
|
|
28
16
|
private currentTime = 0;
|
29
17
|
private previousTime = 0;
|
@@ -44,10 +32,7 @@ export default class RotationGestureDetector
|
|
44
32
|
this.onRotationEnd = callbacks.onRotationEnd;
|
45
33
|
}
|
46
34
|
|
47
|
-
private updateCurrent(
|
48
|
-
event: AdaptedPointerEvent,
|
49
|
-
tracker: PointerTracker
|
50
|
-
): void {
|
35
|
+
private updateCurrent(event: AdaptedEvent, tracker: PointerTracker): void {
|
51
36
|
this.previousTime = this.currentTime;
|
52
37
|
this.currentTime = event.time;
|
53
38
|
|
@@ -66,6 +51,7 @@ export default class RotationGestureDetector
|
|
66
51
|
|
67
52
|
//Angle diff should be positive when rotating in clockwise direction
|
68
53
|
const angle: number = -Math.atan2(vectorY, vectorX);
|
54
|
+
|
69
55
|
this.rotation = Number.isNaN(this.previousAngle)
|
70
56
|
? 0
|
71
57
|
: this.previousAngle - angle;
|
@@ -85,14 +71,14 @@ export default class RotationGestureDetector
|
|
85
71
|
}
|
86
72
|
}
|
87
73
|
|
88
|
-
private finish(
|
74
|
+
private finish(): void {
|
89
75
|
if (!this.isInProgress) {
|
90
76
|
return;
|
91
77
|
}
|
92
78
|
|
93
79
|
this.isInProgress = false;
|
94
80
|
this.keyPointers = [NaN, NaN];
|
95
|
-
this.onRotationEnd(this
|
81
|
+
this.onRotationEnd(this);
|
96
82
|
}
|
97
83
|
|
98
84
|
private setKeyPointers(tracker: PointerTracker): void {
|
@@ -106,12 +92,7 @@ export default class RotationGestureDetector
|
|
106
92
|
this.keyPointers[1] = pointerIDs.next().value as number;
|
107
93
|
}
|
108
94
|
|
109
|
-
public onTouchEvent(
|
110
|
-
event: AdaptedPointerEvent,
|
111
|
-
tracker: PointerTracker
|
112
|
-
): boolean {
|
113
|
-
this.adaptEvent(event, tracker);
|
114
|
-
|
95
|
+
public onTouchEvent(event: AdaptedEvent, tracker: PointerTracker): boolean {
|
115
96
|
switch (event.eventType) {
|
116
97
|
case EventTypes.DOWN:
|
117
98
|
this.isInProgress = false;
|
@@ -121,7 +102,6 @@ export default class RotationGestureDetector
|
|
121
102
|
if (this.isInProgress) {
|
122
103
|
break;
|
123
104
|
}
|
124
|
-
|
125
105
|
this.isInProgress = true;
|
126
106
|
|
127
107
|
this.previousTime = event.time;
|
@@ -139,7 +119,7 @@ export default class RotationGestureDetector
|
|
139
119
|
}
|
140
120
|
|
141
121
|
this.updateCurrent(event, tracker);
|
142
|
-
this.onRotation(this
|
122
|
+
this.onRotation(this);
|
143
123
|
|
144
124
|
break;
|
145
125
|
|
@@ -149,38 +129,21 @@ export default class RotationGestureDetector
|
|
149
129
|
}
|
150
130
|
|
151
131
|
if (this.keyPointers.indexOf(event.pointerId) >= 0) {
|
152
|
-
this.finish(
|
132
|
+
this.finish();
|
153
133
|
}
|
154
134
|
|
155
135
|
break;
|
156
136
|
|
157
137
|
case EventTypes.UP:
|
158
|
-
this.
|
138
|
+
if (this.isInProgress) {
|
139
|
+
this.finish();
|
140
|
+
}
|
159
141
|
break;
|
160
142
|
}
|
161
143
|
|
162
144
|
return true;
|
163
145
|
}
|
164
146
|
|
165
|
-
private adaptEvent(
|
166
|
-
event: AdaptedPointerEvent,
|
167
|
-
tracker: PointerTracker
|
168
|
-
): void {
|
169
|
-
if (
|
170
|
-
tracker.getTrackedPointersCount() &&
|
171
|
-
event.eventType === EventTypes.DOWN
|
172
|
-
) {
|
173
|
-
event.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;
|
174
|
-
}
|
175
|
-
|
176
|
-
if (
|
177
|
-
tracker.getTrackedPointersCount() > 1 &&
|
178
|
-
event.eventType === EventTypes.UP
|
179
|
-
) {
|
180
|
-
event.eventType = EventTypes.ADDITIONAL_POINTER_UP;
|
181
|
-
}
|
182
|
-
}
|
183
|
-
|
184
147
|
public getTimeDelta(): number {
|
185
148
|
return this.currentTime + this.previousTime;
|
186
149
|
}
|
@@ -196,4 +159,9 @@ export default class RotationGestureDetector
|
|
196
159
|
public getRotation(): number {
|
197
160
|
return this.rotation;
|
198
161
|
}
|
162
|
+
|
163
|
+
public reset(): void {
|
164
|
+
this.keyPointers = [NaN, NaN];
|
165
|
+
this.isInProgress = false;
|
166
|
+
}
|
199
167
|
}
|
@@ -1,30 +1,18 @@
|
|
1
1
|
import { DEFAULT_TOUCH_SLOP } from '../constants';
|
2
|
-
import {
|
2
|
+
import { AdaptedEvent, EventTypes } from '../interfaces';
|
3
3
|
|
4
4
|
import PointerTracker from '../tools/PointerTracker';
|
5
5
|
|
6
6
|
export interface ScaleGestureListener {
|
7
7
|
onScaleBegin: (detector: ScaleGestureDetector) => boolean;
|
8
|
-
onScale: (
|
9
|
-
|
10
|
-
event: AdaptedPointerEvent
|
11
|
-
) => boolean;
|
12
|
-
onScaleEnd: (
|
13
|
-
detector: ScaleGestureDetector,
|
14
|
-
event: AdaptedPointerEvent
|
15
|
-
) => void;
|
8
|
+
onScale: (detector: ScaleGestureDetector) => boolean;
|
9
|
+
onScaleEnd: (detector: ScaleGestureDetector) => void;
|
16
10
|
}
|
17
11
|
|
18
12
|
export default class ScaleGestureDetector implements ScaleGestureListener {
|
19
13
|
public onScaleBegin: (detector: ScaleGestureDetector) => boolean;
|
20
|
-
public onScale: (
|
21
|
-
|
22
|
-
event: AdaptedPointerEvent
|
23
|
-
) => boolean;
|
24
|
-
public onScaleEnd: (
|
25
|
-
detector: ScaleGestureDetector,
|
26
|
-
event: AdaptedPointerEvent
|
27
|
-
) => void;
|
14
|
+
public onScale: (detector: ScaleGestureDetector) => boolean;
|
15
|
+
public onScaleEnd: (detector: ScaleGestureDetector) => void;
|
28
16
|
|
29
17
|
private focusX!: number;
|
30
18
|
private focusY!: number;
|
@@ -50,12 +38,7 @@ export default class ScaleGestureDetector implements ScaleGestureListener {
|
|
50
38
|
this.minSpan = 0;
|
51
39
|
}
|
52
40
|
|
53
|
-
public onTouchEvent(
|
54
|
-
event: AdaptedPointerEvent,
|
55
|
-
tracker: PointerTracker
|
56
|
-
): boolean {
|
57
|
-
this.adaptEvent(event, tracker);
|
58
|
-
|
41
|
+
public onTouchEvent(event: AdaptedEvent, tracker: PointerTracker): boolean {
|
59
42
|
this.currentTime = event.time;
|
60
43
|
|
61
44
|
const action: EventTypes = event.eventType;
|
@@ -68,7 +51,7 @@ export default class ScaleGestureDetector implements ScaleGestureListener {
|
|
68
51
|
|
69
52
|
if (action === EventTypes.DOWN || streamComplete) {
|
70
53
|
if (this.inProgress) {
|
71
|
-
this.onScaleEnd(this
|
54
|
+
this.onScaleEnd(this);
|
72
55
|
this.inProgress = false;
|
73
56
|
this.initialSpan = 0;
|
74
57
|
}
|
@@ -127,7 +110,7 @@ export default class ScaleGestureDetector implements ScaleGestureListener {
|
|
127
110
|
this.focusY = focusY;
|
128
111
|
|
129
112
|
if (this.inProgress && (span < this.minSpan || configChanged)) {
|
130
|
-
this.onScaleEnd(this
|
113
|
+
this.onScaleEnd(this);
|
131
114
|
this.inProgress = false;
|
132
115
|
this.initialSpan = span;
|
133
116
|
}
|
@@ -153,7 +136,7 @@ export default class ScaleGestureDetector implements ScaleGestureListener {
|
|
153
136
|
|
154
137
|
this.currentSpan = span;
|
155
138
|
|
156
|
-
if (this.inProgress && !this.onScale(this
|
139
|
+
if (this.inProgress && !this.onScale(this)) {
|
157
140
|
return true;
|
158
141
|
}
|
159
142
|
|
@@ -163,25 +146,6 @@ export default class ScaleGestureDetector implements ScaleGestureListener {
|
|
163
146
|
return true;
|
164
147
|
}
|
165
148
|
|
166
|
-
private adaptEvent(
|
167
|
-
event: AdaptedPointerEvent,
|
168
|
-
tracker: PointerTracker
|
169
|
-
): void {
|
170
|
-
if (
|
171
|
-
tracker.getTrackedPointersCount() > 1 &&
|
172
|
-
event.eventType === EventTypes.DOWN
|
173
|
-
) {
|
174
|
-
event.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;
|
175
|
-
}
|
176
|
-
|
177
|
-
if (
|
178
|
-
tracker.getTrackedPointersCount() > 1 &&
|
179
|
-
event.eventType === EventTypes.UP
|
180
|
-
) {
|
181
|
-
event.eventType = EventTypes.ADDITIONAL_POINTER_UP;
|
182
|
-
}
|
183
|
-
}
|
184
|
-
|
185
149
|
public getCurrentSpan(): number {
|
186
150
|
return this.currentSpan;
|
187
151
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { State } from '../../State';
|
2
2
|
import { Direction } from '../constants';
|
3
|
-
import {
|
3
|
+
import { AdaptedEvent, Config } from '../interfaces';
|
4
4
|
|
5
5
|
import GestureHandler from './GestureHandler';
|
6
6
|
|
@@ -26,7 +26,7 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
26
26
|
super.init(ref, propsRef);
|
27
27
|
}
|
28
28
|
|
29
|
-
public updateGestureConfig({ enabled = true, ...props }): void {
|
29
|
+
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
30
30
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
31
31
|
|
32
32
|
this.enabled = enabled;
|
@@ -40,27 +40,29 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
40
40
|
}
|
41
41
|
}
|
42
42
|
|
43
|
-
protected transformNativeEvent(
|
43
|
+
protected transformNativeEvent() {
|
44
|
+
const rect: DOMRect = this.view.getBoundingClientRect();
|
45
|
+
|
44
46
|
return {
|
45
|
-
x:
|
46
|
-
y:
|
47
|
-
absoluteX:
|
48
|
-
absoluteY:
|
47
|
+
x: this.tracker.getLastAvgX() - rect.left,
|
48
|
+
y: this.tracker.getLastAvgY() - rect.top,
|
49
|
+
absoluteX: this.tracker.getLastAvgX(),
|
50
|
+
absoluteY: this.tracker.getLastAvgY(),
|
49
51
|
};
|
50
52
|
}
|
51
53
|
|
52
|
-
private startFling(event:
|
54
|
+
private startFling(event: AdaptedEvent): void {
|
53
55
|
this.startX = event.x;
|
54
56
|
this.startY = event.y;
|
55
57
|
|
56
|
-
this.begin(
|
58
|
+
this.begin();
|
57
59
|
|
58
60
|
this.maxNumberOfPointersSimultaneously = 1;
|
59
61
|
|
60
|
-
this.delayTimeout = setTimeout(() => this.fail(
|
62
|
+
this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);
|
61
63
|
}
|
62
64
|
|
63
|
-
private tryEndFling(event:
|
65
|
+
private tryEndFling(event: AdaptedEvent): boolean {
|
64
66
|
if (
|
65
67
|
this.maxNumberOfPointersSimultaneously ===
|
66
68
|
this.numberOfPointersRequired &&
|
@@ -74,7 +76,7 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
74
76
|
event.y - this.startY > this.minAcceptableDelta))
|
75
77
|
) {
|
76
78
|
clearTimeout(this.delayTimeout);
|
77
|
-
this.activate(
|
79
|
+
this.activate();
|
78
80
|
|
79
81
|
return true;
|
80
82
|
}
|
@@ -82,17 +84,25 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
82
84
|
return false;
|
83
85
|
}
|
84
86
|
|
85
|
-
private endFling(event:
|
87
|
+
private endFling(event: AdaptedEvent) {
|
86
88
|
if (!this.tryEndFling(event)) {
|
87
|
-
this.fail(
|
89
|
+
this.fail();
|
88
90
|
}
|
89
91
|
}
|
90
92
|
|
91
|
-
protected onPointerDown(event:
|
93
|
+
protected onPointerDown(event: AdaptedEvent): void {
|
94
|
+
this.tracker.addToTracker(event);
|
92
95
|
super.onPointerDown(event);
|
96
|
+
this.newPointerAction(event);
|
97
|
+
}
|
93
98
|
|
99
|
+
protected onPointerAdd(event: AdaptedEvent): void {
|
94
100
|
this.tracker.addToTracker(event);
|
101
|
+
super.onPointerAdd(event);
|
102
|
+
this.newPointerAction(event);
|
103
|
+
}
|
95
104
|
|
105
|
+
private newPointerAction(event: AdaptedEvent): void {
|
96
106
|
if (this.currentState === State.UNDETERMINED) {
|
97
107
|
this.startFling(event);
|
98
108
|
}
|
@@ -111,7 +121,7 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
111
121
|
}
|
112
122
|
}
|
113
123
|
|
114
|
-
protected onPointerMove(event:
|
124
|
+
protected onPointerMove(event: AdaptedEvent): void {
|
115
125
|
this.tracker.track(event);
|
116
126
|
|
117
127
|
if (this.currentState !== State.BEGAN) {
|
@@ -123,19 +133,32 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
123
133
|
super.onPointerMove(event);
|
124
134
|
}
|
125
135
|
|
126
|
-
protected onPointerUp(event:
|
127
|
-
|
136
|
+
protected onPointerUp(event: AdaptedEvent): void {
|
137
|
+
super.onPointerUp(event);
|
138
|
+
this.onUp(event);
|
139
|
+
}
|
128
140
|
|
141
|
+
protected onPointerRemove(event: AdaptedEvent): void {
|
142
|
+
super.onPointerRemove(event);
|
143
|
+
this.onUp(event);
|
144
|
+
}
|
145
|
+
|
146
|
+
private onUp(event: AdaptedEvent): void {
|
147
|
+
this.tracker.removeFromTracker(event.pointerId);
|
129
148
|
if (this.currentState !== State.BEGAN) {
|
130
149
|
return;
|
131
150
|
}
|
132
|
-
|
133
151
|
this.endFling(event);
|
134
152
|
}
|
135
153
|
|
136
|
-
protected
|
137
|
-
super.
|
138
|
-
this.
|
154
|
+
protected onPointerCancel(event: AdaptedEvent): void {
|
155
|
+
super.onPointerCancel(event);
|
156
|
+
this.reset();
|
157
|
+
}
|
158
|
+
|
159
|
+
public activate(force?: boolean): void {
|
160
|
+
super.activate(force);
|
161
|
+
this.end();
|
139
162
|
}
|
140
163
|
|
141
164
|
protected resetConfig(): void {
|