react-native-gesture-handler 2.7.1 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
-
}
|