react-native-gesture-handler 2.7.1 → 2.8.0
Sign up to get free protection for your applications and to get access to all the features.
- package/android/build.gradle +10 -5
- package/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +3 -3
- package/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +7 -7
- package/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +3 -3
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/FlingGestureHandler.kt +12 -9
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandler.kt +39 -31
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerInteractionController.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerOrchestrator.kt +28 -19
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerRegistry.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureUtils.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/LongPressGestureHandler.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ManualGestureHandler.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/NativeViewGestureHandler.kt +5 -5
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/OnTouchEventListener.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PanGestureHandler.kt +7 -5
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PinchGestureHandler.kt +11 -4
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PointerEventsConfig.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureDetector.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureHandler.kt +7 -2
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ScaleGestureDetector.java +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/TapGestureHandler.kt +3 -3
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ViewConfigurationHelper.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/react}/Extensions.kt +3 -3
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +7 -6
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +1 -5
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +6 -6
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +3 -3
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +35 -14
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +8 -6
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +0 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +4 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +7 -7
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +5 -5
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +2 -2
- package/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +5 -5
- package/ios/Handlers/RNManualHandler.m +24 -8
- package/ios/RNGestureHandlerButtonComponentView.mm +7 -8
- package/ios/RNGestureHandlerManager.mm +176 -178
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.windows.js +156 -0
- package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -0
- package/lib/commonjs/components/DrawerLayout.js +1 -0
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.js +2 -2
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +5 -2
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerTypesCompat.js +4 -0
- package/lib/commonjs/handlers/gestures/GestureDetector.js +17 -10
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +28 -3
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +15 -0
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +0 -2
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +0 -5
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/NodeManager.js +4 -1
- package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
- package/lib/commonjs/web_hammer/PanGestureHandler.js +25 -6
- package/lib/commonjs/web_hammer/PanGestureHandler.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.windows.js +117 -0
- package/lib/module/RNGestureHandlerModule.windows.js.map +1 -0
- package/lib/module/components/DrawerLayout.js +1 -0
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.js +2 -2
- package/lib/module/getShadowNodeFromRef.js.map +1 -1
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +5 -2
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestureHandlerTypesCompat.js +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +17 -10
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/jestUtils/jestUtils.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +0 -1
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +28 -3
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +0 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +15 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js +0 -2
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +0 -5
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +0 -1
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +0 -1
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +0 -1
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web_hammer/GestureHandler.js.map +1 -1
- package/lib/module/web_hammer/NodeManager.js +4 -1
- package/lib/module/web_hammer/NodeManager.js.map +1 -1
- package/lib/module/web_hammer/PanGestureHandler.js +25 -6
- package/lib/module/web_hammer/PanGestureHandler.js.map +1 -1
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.windows.d.ts +48 -0
- package/lib/typescript/components/DrawerLayout.d.ts +7 -0
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -1
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +3 -1
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +3 -1
- package/lib/typescript/web/interfaces.d.ts +3 -1
- package/lib/typescript/web/tools/NodeManager.d.ts +2 -2
- package/package.json +14 -10
- package/src/RNGestureHandlerModule.macos.ts +2 -2
- package/src/RNGestureHandlerModule.web.ts +2 -2
- package/src/RNGestureHandlerModule.windows.ts +140 -0
- package/src/components/DrawerLayout.tsx +14 -8
- package/src/components/Swipeable.tsx +2 -4
- package/src/components/touchables/TouchableOpacity.tsx +1 -1
- package/src/getShadowNodeFromRef.ts +3 -3
- package/src/handlers/createHandler.tsx +13 -15
- package/src/handlers/gestureHandlerCommon.ts +9 -4
- package/src/handlers/gestureHandlerTypesCompat.ts +34 -17
- package/src/handlers/gestures/GestureDetector.tsx +36 -16
- package/src/handlers/gestures/eventReceiver.ts +2 -1
- package/src/handlers/gestures/gesture.ts +8 -12
- package/src/jestUtils/jestUtils.ts +3 -4
- package/src/web/detectors/RotationGestureDetector.ts +2 -1
- package/src/web/handlers/FlingGestureHandler.ts +2 -3
- package/src/web/handlers/GestureHandler.ts +30 -11
- package/src/web/handlers/LongPressGestureHandler.ts +0 -2
- package/src/web/handlers/ManualGestureHandler.ts +10 -1
- package/src/web/handlers/NativeViewGestureHandler.ts +0 -2
- package/src/web/handlers/PanGestureHandler.ts +0 -6
- package/src/web/handlers/PinchGestureHandler.ts +0 -2
- package/src/web/handlers/RotationGestureHandler.ts +2 -5
- package/src/web/handlers/TapGestureHandler.ts +0 -2
- package/src/web/interfaces.ts +3 -0
- package/src/web/tools/InteractionManager.ts +2 -3
- package/src/web_hammer/GestureHandler.ts +6 -8
- package/src/web_hammer/NodeManager.ts +3 -1
- package/src/web_hammer/PanGestureHandler.ts +12 -6
- package/android/lib/build.gradle +0 -28
@@ -18,6 +18,7 @@ import {
|
|
18
18
|
GestureStateChangeEvent,
|
19
19
|
HandlerStateChangeEvent,
|
20
20
|
scheduleFlushOperations,
|
21
|
+
UserSelect,
|
21
22
|
} from '../gestureHandlerCommon';
|
22
23
|
import {
|
23
24
|
GestureStateManager,
|
@@ -125,7 +126,7 @@ interface WebEventHandler {
|
|
125
126
|
|
126
127
|
interface AttachHandlersConfig {
|
127
128
|
preparedGesture: GestureConfigReference;
|
128
|
-
gestureConfig: ComposedGesture | GestureType
|
129
|
+
gestureConfig: ComposedGesture | GestureType;
|
129
130
|
gesture: GestureType[];
|
130
131
|
viewTag: number;
|
131
132
|
webEventHandlersRef: React.RefObject<WebEventHandler>;
|
@@ -139,7 +140,7 @@ function attachHandlers({
|
|
139
140
|
webEventHandlersRef,
|
140
141
|
}: AttachHandlersConfig) {
|
141
142
|
if (!preparedGesture.firstExecution) {
|
142
|
-
gestureConfig
|
143
|
+
gestureConfig.initialize();
|
143
144
|
} else {
|
144
145
|
preparedGesture.firstExecution = false;
|
145
146
|
}
|
@@ -147,7 +148,7 @@ function attachHandlers({
|
|
147
148
|
// use setImmediate to extract handlerTags, because all refs should be initialized
|
148
149
|
// when it's ran
|
149
150
|
setImmediate(() => {
|
150
|
-
gestureConfig
|
151
|
+
gestureConfig.prepare();
|
151
152
|
});
|
152
153
|
|
153
154
|
for (const handler of gesture) {
|
@@ -197,7 +198,9 @@ function attachHandlers({
|
|
197
198
|
: ActionType.JS_FUNCTION_NEW_API;
|
198
199
|
|
199
200
|
if (Platform.OS === 'web') {
|
200
|
-
(
|
201
|
+
(
|
202
|
+
RNGestureHandlerModule.attachGestureHandler as typeof RNGestureHandlerModuleWeb.attachGestureHandler
|
203
|
+
)(
|
201
204
|
gesture.handlerTag,
|
202
205
|
viewTag,
|
203
206
|
ActionType.JS_FUNCTION_OLD_API, // ignored on web
|
@@ -215,9 +218,9 @@ function attachHandlers({
|
|
215
218
|
if (preparedGesture.animatedHandlers) {
|
216
219
|
const isAnimatedGesture = (g: GestureType) => g.shouldUseReanimated;
|
217
220
|
|
218
|
-
preparedGesture.animatedHandlers.value =
|
221
|
+
preparedGesture.animatedHandlers.value = gesture
|
219
222
|
.filter(isAnimatedGesture)
|
220
|
-
.map((g) => g.handlers) as unknown
|
223
|
+
.map((g) => g.handlers) as unknown as HandlerCallbacks<
|
221
224
|
Record<string, unknown>
|
222
225
|
>[];
|
223
226
|
}
|
@@ -225,11 +228,11 @@ function attachHandlers({
|
|
225
228
|
|
226
229
|
function updateHandlers(
|
227
230
|
preparedGesture: GestureConfigReference,
|
228
|
-
gestureConfig: ComposedGesture | GestureType
|
231
|
+
gestureConfig: ComposedGesture | GestureType,
|
229
232
|
gesture: GestureType[],
|
230
233
|
mountedRef: RefObject<boolean>
|
231
234
|
) {
|
232
|
-
gestureConfig
|
235
|
+
gestureConfig.prepare();
|
233
236
|
|
234
237
|
for (let i = 0; i < gesture.length; i++) {
|
235
238
|
const handler = preparedGesture.config[i];
|
@@ -278,9 +281,9 @@ function updateHandlers(
|
|
278
281
|
if (preparedGesture.animatedHandlers) {
|
279
282
|
const previousHandlersValue =
|
280
283
|
preparedGesture.animatedHandlers.value ?? [];
|
281
|
-
const newHandlersValue =
|
284
|
+
const newHandlersValue = preparedGesture.config
|
282
285
|
.filter((g) => g.shouldUseReanimated) // ignore gestures that shouldn't run on UI
|
283
|
-
.map((g) => g.handlers) as unknown
|
286
|
+
.map((g) => g.handlers) as unknown as HandlerCallbacks<
|
284
287
|
Record<string, unknown>
|
285
288
|
>[];
|
286
289
|
|
@@ -550,9 +553,11 @@ function validateDetectorChildren(ref: any) {
|
|
550
553
|
ref._reactInternals.elementType
|
551
554
|
: // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
552
555
|
ref._reactInternalFiber.elementType;
|
553
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
554
|
-
let instance =
|
555
|
-
.
|
556
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
557
|
+
let instance =
|
558
|
+
RNRenderer.findHostInstance_DEPRECATED(
|
559
|
+
ref
|
560
|
+
)._internalFiberInstanceHandleDEV;
|
556
561
|
|
557
562
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
558
563
|
while (instance && instance.elementType !== wrapType) {
|
@@ -569,13 +574,28 @@ function validateDetectorChildren(ref: any) {
|
|
569
574
|
}
|
570
575
|
}
|
571
576
|
|
577
|
+
const applyUserSelectProp = (
|
578
|
+
userSelect: UserSelect,
|
579
|
+
gesture: ComposedGesture | GestureType
|
580
|
+
): void => {
|
581
|
+
for (const g of gesture.toGestureArray()) {
|
582
|
+
g.config.userSelect = userSelect;
|
583
|
+
}
|
584
|
+
};
|
585
|
+
|
572
586
|
interface GestureDetectorProps {
|
573
|
-
gesture
|
587
|
+
gesture: ComposedGesture | GestureType;
|
588
|
+
userSelect?: UserSelect;
|
574
589
|
children?: React.ReactNode;
|
575
590
|
}
|
576
591
|
export const GestureDetector = (props: GestureDetectorProps) => {
|
577
592
|
const gestureConfig = props.gesture;
|
578
|
-
|
593
|
+
|
594
|
+
if (props.userSelect) {
|
595
|
+
applyUserSelectProp(props.userSelect, gestureConfig);
|
596
|
+
}
|
597
|
+
|
598
|
+
const gesture = gestureConfig.toGestureArray();
|
579
599
|
const useReanimatedHook = gesture.some((g) => g.shouldUseReanimated);
|
580
600
|
const viewRef = useRef(null);
|
581
601
|
const firstRenderRef = useRef(true);
|
@@ -613,7 +633,7 @@ export const GestureDetector = (props: GestureDetectorProps) => {
|
|
613
633
|
preparedGesture.firstExecution || needsToReattach(preparedGesture, gesture);
|
614
634
|
|
615
635
|
if (preparedGesture.firstExecution) {
|
616
|
-
gestureConfig
|
636
|
+
gestureConfig.initialize();
|
617
637
|
}
|
618
638
|
|
619
639
|
if (useReanimatedHook) {
|
@@ -14,7 +14,8 @@ import {
|
|
14
14
|
} from './gestureStateManager';
|
15
15
|
|
16
16
|
let gestureHandlerEventSubscription: EmitterSubscription | null = null;
|
17
|
-
let gestureHandlerStateChangeEventSubscription: EmitterSubscription | null =
|
17
|
+
let gestureHandlerStateChangeEventSubscription: EmitterSubscription | null =
|
18
|
+
null;
|
18
19
|
|
19
20
|
const gestureStateManagers: Map<number, GestureStateManagerType> = new Map<
|
20
21
|
number,
|
@@ -202,9 +202,8 @@ export abstract class BaseGesture<
|
|
202
202
|
onTouchesDown(callback: TouchEventHandlerType) {
|
203
203
|
this.config.needsPointerData = true;
|
204
204
|
this.handlers.onTouchesDown = callback;
|
205
|
-
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_DOWN] =
|
206
|
-
callback
|
207
|
-
);
|
205
|
+
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_DOWN] =
|
206
|
+
this.isWorklet(callback);
|
208
207
|
|
209
208
|
return this;
|
210
209
|
}
|
@@ -212,9 +211,8 @@ export abstract class BaseGesture<
|
|
212
211
|
onTouchesMove(callback: TouchEventHandlerType) {
|
213
212
|
this.config.needsPointerData = true;
|
214
213
|
this.handlers.onTouchesMove = callback;
|
215
|
-
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_MOVE] =
|
216
|
-
callback
|
217
|
-
);
|
214
|
+
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_MOVE] =
|
215
|
+
this.isWorklet(callback);
|
218
216
|
|
219
217
|
return this;
|
220
218
|
}
|
@@ -222,9 +220,8 @@ export abstract class BaseGesture<
|
|
222
220
|
onTouchesUp(callback: TouchEventHandlerType) {
|
223
221
|
this.config.needsPointerData = true;
|
224
222
|
this.handlers.onTouchesUp = callback;
|
225
|
-
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_UP] =
|
226
|
-
callback
|
227
|
-
);
|
223
|
+
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_UP] =
|
224
|
+
this.isWorklet(callback);
|
228
225
|
|
229
226
|
return this;
|
230
227
|
}
|
@@ -232,9 +229,8 @@ export abstract class BaseGesture<
|
|
232
229
|
onTouchesCancelled(callback: TouchEventHandlerType) {
|
233
230
|
this.config.needsPointerData = true;
|
234
231
|
this.handlers.onTouchesCancelled = callback;
|
235
|
-
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_CANCELLED] =
|
236
|
-
callback
|
237
|
-
);
|
232
|
+
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_CANCELLED] =
|
233
|
+
this.isWorklet(callback);
|
238
234
|
|
239
235
|
return this;
|
240
236
|
}
|
@@ -464,9 +464,8 @@ export function fireGestureHandler<THandler extends AllGestures | AllHandlers>(
|
|
464
464
|
componentOrGesture: ReactTestInstance | GestureType,
|
465
465
|
eventList: Partial<GestureHandlerTestEvent<ExtractConfig<THandler>>>[] = []
|
466
466
|
): void {
|
467
|
-
const { emitEvent, handlerType, handlerTag } =
|
468
|
-
componentOrGesture
|
469
|
-
);
|
467
|
+
const { emitEvent, handlerType, handlerTag } =
|
468
|
+
getHandlerData(componentOrGesture);
|
470
469
|
|
471
470
|
let _ = fillMissingStatesTransitions(
|
472
471
|
eventList,
|
@@ -478,7 +477,7 @@ export function fireGestureHandler<THandler extends AllGestures | AllHandlers>(
|
|
478
477
|
// @ts-ignore TODO
|
479
478
|
_ = _.map(wrapWithNativeEvent);
|
480
479
|
|
481
|
-
const events =
|
480
|
+
const events = _ as unknown as WrappedGestureHandlerTestEvent[];
|
482
481
|
|
483
482
|
const firstEvent = events.shift()!;
|
484
483
|
|
@@ -8,7 +8,8 @@ export interface RotationGestureListener {
|
|
8
8
|
}
|
9
9
|
|
10
10
|
export default class RotationGestureDetector
|
11
|
-
implements RotationGestureListener
|
11
|
+
implements RotationGestureListener
|
12
|
+
{
|
12
13
|
onRotationBegin: (detector: RotationGestureDetector) => boolean;
|
13
14
|
onRotation: (detector: RotationGestureDetector) => boolean;
|
14
15
|
onRotationEnd: (detector: RotationGestureDetector) => void;
|
@@ -30,8 +30,6 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
30
30
|
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
31
31
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
32
32
|
|
33
|
-
this.enabled = enabled;
|
34
|
-
|
35
33
|
if (this.config.direction) {
|
36
34
|
this.direction = this.config.direction;
|
37
35
|
}
|
@@ -124,7 +122,8 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
124
122
|
this.tracker.getTrackedPointersCount() >
|
125
123
|
this.maxNumberOfPointersSimultaneously
|
126
124
|
) {
|
127
|
-
this.maxNumberOfPointersSimultaneously =
|
125
|
+
this.maxNumberOfPointersSimultaneously =
|
126
|
+
this.tracker.getTrackedPointersCount();
|
128
127
|
}
|
129
128
|
}
|
130
129
|
|
@@ -70,13 +70,18 @@ export default abstract class GestureHandler {
|
|
70
70
|
);
|
71
71
|
}
|
72
72
|
|
73
|
-
this.view =
|
73
|
+
this.view = findNodeHandle(this.ref) as unknown as HTMLElement;
|
74
74
|
this.view.style['touchAction'] = 'none';
|
75
|
-
this.view.style['webkitUserSelect'] = 'none';
|
76
|
-
this.view.style['userSelect'] = 'none';
|
77
|
-
|
78
75
|
//@ts-ignore This one disables default events on Safari
|
79
76
|
this.view.style['WebkitTouchCallout'] = 'none';
|
77
|
+
|
78
|
+
if (!this.config.userSelect) {
|
79
|
+
this.view.style['webkitUserSelect'] = 'none';
|
80
|
+
this.view.style['userSelect'] = 'none';
|
81
|
+
} else {
|
82
|
+
this.view.style['webkitUserSelect'] = this.config.userSelect;
|
83
|
+
this.view.style['userSelect'] = this.config.userSelect;
|
84
|
+
}
|
80
85
|
}
|
81
86
|
|
82
87
|
private addEventManager(manager: EventManager): void {
|
@@ -322,6 +327,18 @@ export default abstract class GestureHandler {
|
|
322
327
|
}
|
323
328
|
}
|
324
329
|
protected onPointerOut(event: AdaptedEvent): void {
|
330
|
+
if (this.shouldCancellWhenOutside) {
|
331
|
+
switch (this.currentState) {
|
332
|
+
case State.ACTIVE:
|
333
|
+
this.cancel();
|
334
|
+
break;
|
335
|
+
case State.BEGAN:
|
336
|
+
this.fail();
|
337
|
+
break;
|
338
|
+
}
|
339
|
+
return;
|
340
|
+
}
|
341
|
+
|
325
342
|
if (this.config.needsPointerData) {
|
326
343
|
this.sendTouchEvent(event);
|
327
344
|
}
|
@@ -360,9 +377,8 @@ export default abstract class GestureHandler {
|
|
360
377
|
const { onGestureHandlerEvent }: PropsRef = this.propsRef
|
361
378
|
.current as PropsRef;
|
362
379
|
|
363
|
-
const touchEvent: ResultTouchEvent | undefined =
|
364
|
-
event
|
365
|
-
);
|
380
|
+
const touchEvent: ResultTouchEvent | undefined =
|
381
|
+
this.transformTouchEvent(event);
|
366
382
|
|
367
383
|
if (touchEvent) {
|
368
384
|
invokeNullableMethod(onGestureHandlerEvent, touchEvent);
|
@@ -374,10 +390,8 @@ export default abstract class GestureHandler {
|
|
374
390
|
//
|
375
391
|
|
376
392
|
public sendEvent = (newState: State, oldState: State): void => {
|
377
|
-
const {
|
378
|
-
|
379
|
-
onGestureHandlerStateChange,
|
380
|
-
}: PropsRef = this.propsRef.current as PropsRef;
|
393
|
+
const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =
|
394
|
+
this.propsRef.current as PropsRef;
|
381
395
|
|
382
396
|
const resultEvent: ResultEvent = this.transformEventData(
|
383
397
|
newState,
|
@@ -576,6 +590,11 @@ export default abstract class GestureHandler {
|
|
576
590
|
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
577
591
|
this.config = { enabled: enabled, ...props };
|
578
592
|
this.enabled = enabled;
|
593
|
+
|
594
|
+
if (this.config.shouldCancelWhenOutside !== undefined) {
|
595
|
+
this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);
|
596
|
+
}
|
597
|
+
|
579
598
|
this.validateHitSlops();
|
580
599
|
|
581
600
|
if (this.enabled) {
|
@@ -42,8 +42,6 @@ export default class LongPressGestureHandler extends GestureHandler {
|
|
42
42
|
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
43
43
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
44
44
|
|
45
|
-
this.enabled = enabled;
|
46
|
-
|
47
45
|
if (this.config.minDurationMs !== undefined) {
|
48
46
|
this.minDurationMs = this.config.minDurationMs;
|
49
47
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { AdaptedEvent } from '../interfaces';
|
1
|
+
import { AdaptedEvent, Config } from '../interfaces';
|
2
2
|
import GestureHandler from './GestureHandler';
|
3
3
|
|
4
4
|
export default class ManualGestureHandler extends GestureHandler {
|
@@ -6,6 +6,10 @@ export default class ManualGestureHandler extends GestureHandler {
|
|
6
6
|
super.init(ref, propsRef);
|
7
7
|
}
|
8
8
|
|
9
|
+
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
10
|
+
super.updateGestureConfig({ enabled: enabled, ...props });
|
11
|
+
}
|
12
|
+
|
9
13
|
protected onPointerDown(event: AdaptedEvent): void {
|
10
14
|
this.tracker.addToTracker(event);
|
11
15
|
super.onPointerDown(event);
|
@@ -22,6 +26,11 @@ export default class ManualGestureHandler extends GestureHandler {
|
|
22
26
|
super.onPointerMove(event);
|
23
27
|
}
|
24
28
|
|
29
|
+
protected onPointerOutOfBounds(event: AdaptedEvent): void {
|
30
|
+
this.tracker.track(event);
|
31
|
+
super.onPointerOutOfBounds(event);
|
32
|
+
}
|
33
|
+
|
25
34
|
protected onPointerUp(event: AdaptedEvent): void {
|
26
35
|
super.onPointerUp(event);
|
27
36
|
this.tracker.removeFromTracker(event.pointerId);
|
@@ -65,8 +65,6 @@ export default class PanGestureHandler extends GestureHandler {
|
|
65
65
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
66
66
|
this.checkCustomActivationCriteria(this.customActivationProperties);
|
67
67
|
|
68
|
-
this.enabled = enabled;
|
69
|
-
|
70
68
|
if (this.config.minDist !== undefined) {
|
71
69
|
this.minDistSq = this.config.minDist * this.config.minDist;
|
72
70
|
} else if (this.hasCustomActivationCriteria) {
|
@@ -98,10 +96,6 @@ export default class PanGestureHandler extends GestureHandler {
|
|
98
96
|
this.activateAfterLongPress = this.config.activateAfterLongPress;
|
99
97
|
}
|
100
98
|
|
101
|
-
if (this.config.shouldCancelWhenOutside !== undefined) {
|
102
|
-
this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);
|
103
|
-
}
|
104
|
-
|
105
99
|
if (this.config.activeOffsetXStart !== undefined) {
|
106
100
|
this.activeOffsetXStart = this.config.activeOffsetXStart;
|
107
101
|
|
@@ -57,8 +57,6 @@ export default class PinchGestureHandler extends GestureHandler {
|
|
57
57
|
|
58
58
|
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
59
59
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
60
|
-
|
61
|
-
this.enabled = enabled;
|
62
60
|
}
|
63
61
|
|
64
62
|
protected transformNativeEvent() {
|
@@ -41,9 +41,8 @@ export default class RotationGestureHandler extends GestureHandler {
|
|
41
41
|
},
|
42
42
|
};
|
43
43
|
|
44
|
-
private rotationGestureDetector: RotationGestureDetector =
|
45
|
-
this.rotationGestureListener
|
46
|
-
);
|
44
|
+
private rotationGestureDetector: RotationGestureDetector =
|
45
|
+
new RotationGestureDetector(this.rotationGestureListener);
|
47
46
|
|
48
47
|
public init(ref: number, propsRef: React.RefObject<unknown>): void {
|
49
48
|
super.init(ref, propsRef);
|
@@ -53,8 +52,6 @@ export default class RotationGestureHandler extends GestureHandler {
|
|
53
52
|
|
54
53
|
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
55
54
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
56
|
-
|
57
|
-
this.enabled = enabled;
|
58
55
|
}
|
59
56
|
|
60
57
|
protected transformNativeEvent() {
|
@@ -39,8 +39,6 @@ export default class TapGestureHandler extends GestureHandler {
|
|
39
39
|
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
40
40
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
41
41
|
|
42
|
-
this.enabled = enabled;
|
43
|
-
|
44
42
|
if (this.config.numberOfTaps !== undefined) {
|
45
43
|
this.numberOfTaps = this.config.numberOfTaps;
|
46
44
|
}
|
package/src/web/interfaces.ts
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import { UserSelect } from '../handlers/gestureHandlerCommon';
|
1
2
|
import { Directions } from '../Directions';
|
2
3
|
import { State } from '../State';
|
3
4
|
|
@@ -20,6 +21,7 @@ type ConfigArgs =
|
|
20
21
|
| number
|
21
22
|
| boolean
|
22
23
|
| HitSlop
|
24
|
+
| UserSelect
|
23
25
|
| Directions
|
24
26
|
| Handler[]
|
25
27
|
| null
|
@@ -31,6 +33,7 @@ export interface Config extends Record<string, ConfigArgs> {
|
|
31
33
|
waitFor?: Handler[] | null;
|
32
34
|
hitSlop?: HitSlop;
|
33
35
|
shouldCancelWhenOutside?: boolean;
|
36
|
+
userSelect?: UserSelect;
|
34
37
|
|
35
38
|
activateAfterLongPress?: number;
|
36
39
|
failOffsetXStart?: number;
|
@@ -69,9 +69,8 @@ export default class InteractionManager {
|
|
69
69
|
handler: GestureHandler,
|
70
70
|
otherHandler: GestureHandler
|
71
71
|
): boolean {
|
72
|
-
const simultaneousHandlers:
|
73
|
-
|
74
|
-
| undefined = this.simultaneousRelations.get(handler.getTag());
|
72
|
+
const simultaneousHandlers: number[] | undefined =
|
73
|
+
this.simultaneousRelations.get(handler.getTag());
|
75
74
|
if (!simultaneousHandlers) {
|
76
75
|
return false;
|
77
76
|
}
|
@@ -206,10 +206,8 @@ abstract class GestureHandler {
|
|
206
206
|
}
|
207
207
|
|
208
208
|
sendEvent = (nativeEvent: HammerInputExt) => {
|
209
|
-
const {
|
210
|
-
|
211
|
-
onGestureHandlerStateChange,
|
212
|
-
} = this.propsRef.current;
|
209
|
+
const { onGestureHandlerEvent, onGestureHandlerStateChange } =
|
210
|
+
this.propsRef.current;
|
213
211
|
|
214
212
|
const event = this.transformEventData(nativeEvent);
|
215
213
|
|
@@ -312,7 +310,7 @@ abstract class GestureHandler {
|
|
312
310
|
return;
|
313
311
|
}
|
314
312
|
|
315
|
-
this.onRawEvent(
|
313
|
+
this.onRawEvent(ev as unknown as HammerInputExt);
|
316
314
|
|
317
315
|
// TODO: Bacon: Check against something other than null
|
318
316
|
// The isFirst value is not called when the first rotation is calculated.
|
@@ -336,17 +334,17 @@ abstract class GestureHandler {
|
|
336
334
|
// TODO(TS) Hammer types aren't exactly that what we get in runtime
|
337
335
|
if (!this.isDiscrete) {
|
338
336
|
this.hammer!.on(`${this.name}start`, (event: HammerInput) =>
|
339
|
-
this.onStart(
|
337
|
+
this.onStart(event as unknown as HammerInputExt)
|
340
338
|
);
|
341
339
|
this.hammer!.on(
|
342
340
|
`${this.name}end ${this.name}cancel`,
|
343
341
|
(event: HammerInput) => {
|
344
|
-
this.onGestureEnded(
|
342
|
+
this.onGestureEnded(event as unknown as HammerInputExt);
|
345
343
|
}
|
346
344
|
);
|
347
345
|
}
|
348
346
|
this.hammer!.on(this.name, (ev: HammerInput) =>
|
349
|
-
this.onGestureActivated(
|
347
|
+
this.onGestureActivated(ev as unknown as HammerInputExt)
|
350
348
|
); // TODO(TS) remove cast after https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50438 is merged
|
351
349
|
}
|
352
350
|
|
@@ -54,23 +54,29 @@ class PanGestureHandler extends DraggingGestureHandler {
|
|
54
54
|
return Hammer.DIRECTION_ALL;
|
55
55
|
}
|
56
56
|
|
57
|
-
if (!isnan(activeOffsetXStart))
|
57
|
+
if (!isnan(activeOffsetXStart)) {
|
58
58
|
horizontalDirections.push(Hammer.DIRECTION_LEFT);
|
59
|
-
|
59
|
+
}
|
60
|
+
if (!isnan(activeOffsetXEnd)) {
|
60
61
|
horizontalDirections.push(Hammer.DIRECTION_RIGHT);
|
61
|
-
|
62
|
+
}
|
63
|
+
if (horizontalDirections.length === 2) {
|
62
64
|
horizontalDirections = [Hammer.DIRECTION_HORIZONTAL];
|
65
|
+
}
|
63
66
|
|
64
67
|
directions = directions.concat(horizontalDirections);
|
65
68
|
let verticalDirections = [];
|
66
69
|
|
67
|
-
if (!isnan(activeOffsetYStart))
|
70
|
+
if (!isnan(activeOffsetYStart)) {
|
68
71
|
verticalDirections.push(Hammer.DIRECTION_UP);
|
69
|
-
|
72
|
+
}
|
73
|
+
if (!isnan(activeOffsetYEnd)) {
|
70
74
|
verticalDirections.push(Hammer.DIRECTION_DOWN);
|
75
|
+
}
|
71
76
|
|
72
|
-
if (verticalDirections.length === 2)
|
77
|
+
if (verticalDirections.length === 2) {
|
73
78
|
verticalDirections = [Hammer.DIRECTION_VERTICAL];
|
79
|
+
}
|
74
80
|
|
75
81
|
directions = directions.concat(verticalDirections);
|
76
82
|
|
package/android/lib/build.gradle
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
apply plugin: 'com.android.library'
|
2
|
-
|
3
|
-
repositories {
|
4
|
-
maven { url 'https://repo1.maven.org/maven2' }
|
5
|
-
}
|
6
|
-
|
7
|
-
android {
|
8
|
-
compileSdkVersion 23
|
9
|
-
buildToolsVersion '25.0.0'
|
10
|
-
|
11
|
-
defaultConfig {
|
12
|
-
minSdkVersion 16
|
13
|
-
targetSdkVersion 23
|
14
|
-
versionCode 1
|
15
|
-
versionName "1.0"
|
16
|
-
}
|
17
|
-
buildTypes {
|
18
|
-
release {
|
19
|
-
minifyEnabled false
|
20
|
-
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
21
|
-
}
|
22
|
-
}
|
23
|
-
}
|
24
|
-
|
25
|
-
dependencies {
|
26
|
-
testCompile 'junit:junit:4.12'
|
27
|
-
compile 'com.android.support:appcompat-v7:23.4.0'
|
28
|
-
}
|