react-native-gesture-handler 2.13.4 → 2.14.1
Sign up to get free protection for your applications and to get access to all the features.
- package/android/build.gradle +3 -2
- package/android/gradle.properties +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +36 -72
- package/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +12 -14
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +8 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +34 -88
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +18 -12
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/FlingGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/GestureHandlerEventDataBuilder.kt +22 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/HoverGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/LongPressGestureHandlerEventDataBuilder.kt +33 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/ManualGestureHandlerEventDataBuilder.kt +5 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/NativeGestureHandlerEventDataBuilder.kt +18 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/PanGestureHandlerEventDataBuilder.kt +42 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/PinchGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/RotationGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/TapGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/jni/CMakeLists.txt +14 -2
- package/ios/Handlers/RNHoverHandler.m +15 -14
- package/ios/RNGestureHandler.m +11 -0
- package/ios/RNGestureHandlerButtonComponentView.mm +2 -0
- package/lib/commonjs/components/gestureHandlerRootHOC.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -1
- package/lib/commonjs/getReactNativeVersion.js +22 -0
- package/lib/commonjs/getReactNativeVersion.js.map +1 -0
- package/lib/commonjs/getReactNativeVersion.web.js +11 -0
- package/lib/commonjs/getReactNativeVersion.web.js.map +1 -0
- package/lib/commonjs/handlers/gestureHandlerCommon.js +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +13 -3
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +8 -0
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +39 -37
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/commonjs/utils.js +0 -13
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +4 -6
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +4 -15
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js +27 -29
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +13 -3
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/components/gestureHandlerRootHOC.js.map +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedback.android.js +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
- package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -1
- package/lib/module/getReactNativeVersion.js +10 -0
- package/lib/module/getReactNativeVersion.js.map +1 -0
- package/lib/module/getReactNativeVersion.web.js +4 -0
- package/lib/module/getReactNativeVersion.web.js.map +1 -0
- package/lib/module/handlers/gestureHandlerCommon.js +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +12 -3
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +8 -0
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js +44 -42
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/module/utils.js +0 -6
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +4 -6
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +4 -15
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js +27 -29
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +12 -3
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/typescript/ActionType.d.ts +1 -1
- package/lib/typescript/Directions.d.ts +1 -1
- package/lib/typescript/PlatformConstants.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.d.ts +1 -1
- package/lib/typescript/State.d.ts +1 -1
- package/lib/typescript/TouchEventType.d.ts +1 -1
- package/lib/typescript/components/DrawerLayout.d.ts +9 -9
- package/lib/typescript/components/GestureButtons.d.ts +3 -3
- package/lib/typescript/components/GestureComponents.d.ts +6 -6
- package/lib/typescript/components/GestureComponents.web.d.ts +1 -1
- package/lib/typescript/components/GestureHandlerRootView.android.d.ts +2 -1
- package/lib/typescript/components/GestureHandlerRootView.d.ts +2 -1
- package/lib/typescript/components/GestureHandlerRootView.web.d.ts +2 -1
- package/lib/typescript/components/Swipeable.d.ts +4 -4
- package/lib/typescript/components/gestureHandlerRootHOC.d.ts +1 -1
- package/lib/typescript/components/touchables/GenericTouchable.d.ts +4 -3
- package/lib/typescript/components/touchables/TouchableHighlight.d.ts +4 -3
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +7 -6
- package/lib/typescript/components/touchables/TouchableOpacity.d.ts +3 -2
- package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +1 -1
- package/lib/typescript/getReactNativeVersion.d.ts +4 -0
- package/lib/typescript/getReactNativeVersion.web.d.ts +1 -0
- package/lib/typescript/handlers/FlingGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/LongPressGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +3 -3
- package/lib/typescript/handlers/PanGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/PinchGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/RotationGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/TapGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/createHandler.d.ts +1 -1
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +11 -10
- package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +32 -32
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +2 -2
- package/lib/typescript/handlers/gestures/flingGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +2 -2
- package/lib/typescript/handlers/gestures/gesture.d.ts +7 -5
- package/lib/typescript/handlers/gestures/gestureComposition.d.ts +4 -4
- package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +3 -1
- package/lib/typescript/handlers/gestures/hoverGesture.d.ts +3 -3
- package/lib/typescript/handlers/gestures/longPressGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/manualGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/nativeGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/panGesture.d.ts +2 -2
- package/lib/typescript/handlers/gestures/pinchGesture.d.ts +2 -2
- package/lib/typescript/handlers/gestures/rotationGesture.d.ts +2 -2
- package/lib/typescript/handlers/gestures/tapGesture.d.ts +1 -1
- package/lib/typescript/jestUtils/jestUtils.d.ts +6 -6
- package/lib/typescript/typeUtils.d.ts +1 -1
- package/lib/typescript/utils.d.ts +1 -5
- package/lib/typescript/web/interfaces.d.ts +4 -3
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +0 -1
- package/lib/typescript/web/tools/InteractionManager.d.ts +2 -1
- package/lib/typescript/web_hammer/GestureHandler.d.ts +2 -2
- package/package.json +7 -7
- package/src/components/gestureHandlerRootHOC.tsx +1 -3
- package/src/components/touchables/TouchableNativeFeedback.android.tsx +2 -1
- package/src/components/touchables/TouchableWithoutFeedback.tsx +3 -3
- package/src/getReactNativeVersion.ts +11 -0
- package/src/getReactNativeVersion.web.ts +3 -0
- package/src/handlers/gestureHandlerCommon.ts +6 -1
- package/src/handlers/gestures/GestureDetector.tsx +9 -6
- package/src/handlers/gestures/gesture.ts +9 -1
- package/src/handlers/gestures/gestureStateManager.ts +42 -40
- package/src/utils.ts +0 -8
- package/src/web/handlers/FlingGestureHandler.ts +5 -5
- package/src/web/handlers/GestureHandler.ts +1 -1
- package/src/web/interfaces.ts +1 -0
- package/src/web/tools/GestureHandlerOrchestrator.ts +4 -13
- package/src/web/tools/InteractionManager.ts +37 -30
- package/src/web/tools/PointerEventManager.ts +14 -3
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +0 -8
- /package/android/{src/fabric → fabric/src/main}/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java +0 -0
- /package/android/{src/fabric → fabric/src/main}/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +0 -0
@@ -156,6 +156,14 @@ export class BaseGesture extends Gesture {
|
|
156
156
|
return this;
|
157
157
|
}
|
158
158
|
|
159
|
+
blocksExternalGesture(...gestures) {
|
160
|
+
for (const gesture of gestures) {
|
161
|
+
this.addDependency('blocksHandlers', gesture);
|
162
|
+
}
|
163
|
+
|
164
|
+
return this;
|
165
|
+
}
|
166
|
+
|
159
167
|
withTestId(id) {
|
160
168
|
this.config.testId = id;
|
161
169
|
return this;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["gesture.ts"],"names":["getNextHandlerTag","isRemoteDebuggingEnabled","CALLBACK_TYPE","UNDEFINED","BEGAN","START","UPDATE","CHANGE","END","FINALIZE","TOUCHES_DOWN","TOUCHES_MOVE","TOUCHES_UP","TOUCHES_CANCELLED","Gesture","nextGestureId","BaseGesture","constructor","gestureId","handlerTag","isWorklet","handlers","addDependency","key","gesture","value","config","Array","concat","withRef","ref","callback","__workletHash","undefined","onBegin","onStart","onEnd","onFinalize","onTouchesDown","needsPointerData","onTouchesMove","onTouchesUp","onTouchesCancelled","enabled","shouldCancelWhenOutside","hitSlop","activeCursor","runOnJS","simultaneousWithExternalGesture","gestures","requireExternalGestureToFail","withTestId","id","testId","cancelsTouchesInView","initialize","current","toGestureArray","prepare","shouldUseReanimated","includes","ContinousBaseGesture","onUpdate","onChange","manualActivation"],"mappings":"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","sourcesContent":["import { FlingGestureHandlerEventPayload } from '../FlingGestureHandler';\nimport { ForceTouchGestureHandlerEventPayload } from '../ForceTouchGestureHandler';\nimport {\n HitSlop,\n CommonGestureConfig,\n GestureTouchEvent,\n GestureStateChangeEvent,\n GestureUpdateEvent,\n ActiveCursor,\n} from '../gestureHandlerCommon';\nimport { getNextHandlerTag } from '../handlersRegistry';\nimport { GestureStateManagerType } from './gestureStateManager';\nimport { LongPressGestureHandlerEventPayload } from '../LongPressGestureHandler';\nimport { PanGestureHandlerEventPayload } from '../PanGestureHandler';\nimport { PinchGestureHandlerEventPayload } from '../PinchGestureHandler';\nimport { RotationGestureHandlerEventPayload } from '../RotationGestureHandler';\nimport { TapGestureHandlerEventPayload } from '../TapGestureHandler';\nimport { NativeViewGestureHandlerPayload } from '../NativeViewGestureHandler';\nimport { isRemoteDebuggingEnabled } from '../../utils';\n\nexport type GestureType =\n | BaseGesture<Record<string, unknown>>\n | BaseGesture<Record<string, never>>\n | BaseGesture<TapGestureHandlerEventPayload>\n | BaseGesture<PanGestureHandlerEventPayload>\n | BaseGesture<LongPressGestureHandlerEventPayload>\n | BaseGesture<RotationGestureHandlerEventPayload>\n | BaseGesture<PinchGestureHandlerEventPayload>\n | BaseGesture<FlingGestureHandlerEventPayload>\n | BaseGesture<ForceTouchGestureHandlerEventPayload>\n | BaseGesture<NativeViewGestureHandlerPayload>;\n\nexport type GestureRef =\n | number\n | GestureType\n | React.RefObject<GestureType | undefined>\n | React.RefObject<React.ComponentType | undefined>; // allow adding a ref to a gesture handler\nexport interface BaseGestureConfig\n extends CommonGestureConfig,\n Record<string, unknown> {\n ref?: React.MutableRefObject<GestureType | undefined>;\n requireToFail?: GestureRef[];\n simultaneousWith?: GestureRef[];\n needsPointerData?: boolean;\n manualActivation?: boolean;\n runOnJS?: boolean;\n testId?: string;\n cancelsTouchesInView?: boolean;\n}\n\ntype TouchEventHandlerType = (\n event: GestureTouchEvent,\n stateManager: GestureStateManagerType\n) => void;\n\nexport type HandlerCallbacks<EventPayloadT extends Record<string, unknown>> = {\n gestureId: number;\n handlerTag: number;\n onBegin?: (event: GestureStateChangeEvent<EventPayloadT>) => void;\n onStart?: (event: GestureStateChangeEvent<EventPayloadT>) => void;\n onEnd?: (\n event: GestureStateChangeEvent<EventPayloadT>,\n success: boolean\n ) => void;\n onFinalize?: (\n event: GestureStateChangeEvent<EventPayloadT>,\n success: boolean\n ) => void;\n onUpdate?: (event: GestureUpdateEvent<EventPayloadT>) => void;\n onChange?: (event: any) => void;\n onTouchesDown?: TouchEventHandlerType;\n onTouchesMove?: TouchEventHandlerType;\n onTouchesUp?: TouchEventHandlerType;\n onTouchesCancelled?: TouchEventHandlerType;\n changeEventCalculator?: (\n current: GestureUpdateEvent<Record<string, unknown>>,\n previous?: GestureUpdateEvent<Record<string, unknown>>\n ) => GestureUpdateEvent<Record<string, unknown>>;\n isWorklet: boolean[];\n};\n\nexport const CALLBACK_TYPE = {\n UNDEFINED: 0,\n BEGAN: 1,\n START: 2,\n UPDATE: 3,\n CHANGE: 4,\n END: 5,\n FINALIZE: 6,\n TOUCHES_DOWN: 7,\n TOUCHES_MOVE: 8,\n TOUCHES_UP: 9,\n TOUCHES_CANCELLED: 10,\n} as const;\n\n// Allow using CALLBACK_TYPE as object and type\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type CALLBACK_TYPE = typeof CALLBACK_TYPE[keyof typeof CALLBACK_TYPE];\n\nexport abstract class Gesture {\n /**\n * Return array of gestures, providing the same interface for creating and updating\n * handlers, no matter which object was used to create gesture instance.\n */\n abstract toGestureArray(): GestureType[];\n\n /**\n * Assign handlerTag to the gesture instance and set ref.current (if a ref is set)\n */\n abstract initialize(): void;\n\n /**\n * Make sure that values of properties defining relations are arrays. Do any necessary\n * preprocessing required to configure relations between handlers. Called just before\n * updating the handler on the native side.\n */\n abstract prepare(): void;\n}\n\nlet nextGestureId = 0;\nexport abstract class BaseGesture<\n EventPayloadT extends Record<string, unknown>\n> extends Gesture {\n private gestureId = -1;\n public handlerTag = -1;\n public handlerName = '';\n public config: BaseGestureConfig = {};\n public handlers: HandlerCallbacks<EventPayloadT> = {\n gestureId: -1,\n handlerTag: -1,\n isWorklet: [],\n };\n\n constructor() {\n super();\n\n // Used to check whether the gesture config has been updated when wrapping it\n // with `useMemo`. Since every config will have a unique id, when the dependencies\n // don't change, the config won't be recreated and the id will stay the same.\n // If the id is different, it means that the config has changed and the gesture\n // needs to be updated.\n this.gestureId = nextGestureId++;\n this.handlers.gestureId = this.gestureId;\n }\n\n private addDependency(\n key: 'simultaneousWith' | 'requireToFail',\n gesture: Exclude<GestureRef, number>\n ) {\n const value = this.config[key];\n this.config[key] = value\n ? Array<GestureRef>().concat(value, gesture)\n : [gesture];\n }\n\n withRef(ref: React.MutableRefObject<GestureType | undefined>) {\n this.config.ref = ref;\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n protected isWorklet(callback: Function) {\n //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false\n return callback.__workletHash !== undefined;\n }\n\n onBegin(callback: (event: GestureStateChangeEvent<EventPayloadT>) => void) {\n this.handlers.onBegin = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.BEGAN] = this.isWorklet(callback);\n return this;\n }\n\n onStart(callback: (event: GestureStateChangeEvent<EventPayloadT>) => void) {\n this.handlers.onStart = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.START] = this.isWorklet(callback);\n return this;\n }\n\n onEnd(\n callback: (\n event: GestureStateChangeEvent<EventPayloadT>,\n success: boolean\n ) => void\n ) {\n this.handlers.onEnd = callback;\n //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false\n this.handlers.isWorklet[CALLBACK_TYPE.END] = this.isWorklet(callback);\n return this;\n }\n\n onFinalize(\n callback: (\n event: GestureStateChangeEvent<EventPayloadT>,\n success: boolean\n ) => void\n ) {\n this.handlers.onFinalize = callback;\n //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false\n this.handlers.isWorklet[CALLBACK_TYPE.FINALIZE] = this.isWorklet(callback);\n return this;\n }\n\n onTouchesDown(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesDown = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_DOWN] =\n this.isWorklet(callback);\n\n return this;\n }\n\n onTouchesMove(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesMove = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_MOVE] =\n this.isWorklet(callback);\n\n return this;\n }\n\n onTouchesUp(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesUp = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_UP] =\n this.isWorklet(callback);\n\n return this;\n }\n\n onTouchesCancelled(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesCancelled = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_CANCELLED] =\n this.isWorklet(callback);\n\n return this;\n }\n\n enabled(enabled: boolean) {\n this.config.enabled = enabled;\n return this;\n }\n\n shouldCancelWhenOutside(value: boolean) {\n this.config.shouldCancelWhenOutside = value;\n return this;\n }\n\n hitSlop(hitSlop: HitSlop) {\n this.config.hitSlop = hitSlop;\n return this;\n }\n\n activeCursor(activeCursor: ActiveCursor) {\n this.config.activeCursor = activeCursor;\n return this;\n }\n\n runOnJS(runOnJS: boolean) {\n this.config.runOnJS = runOnJS;\n return this;\n }\n\n simultaneousWithExternalGesture(...gestures: Exclude<GestureRef, number>[]) {\n for (const gesture of gestures) {\n this.addDependency('simultaneousWith', gesture);\n }\n return this;\n }\n\n requireExternalGestureToFail(...gestures: Exclude<GestureRef, number>[]) {\n for (const gesture of gestures) {\n this.addDependency('requireToFail', gesture);\n }\n return this;\n }\n\n withTestId(id: string) {\n this.config.testId = id;\n return this;\n }\n\n cancelsTouchesInView(value: boolean) {\n this.config.cancelsTouchesInView = value;\n return this;\n }\n\n initialize() {\n this.handlerTag = getNextHandlerTag();\n\n this.handlers = { ...this.handlers, handlerTag: this.handlerTag };\n\n if (this.config.ref) {\n this.config.ref.current = this as GestureType;\n }\n }\n\n toGestureArray(): GestureType[] {\n return [this as GestureType];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n prepare() {}\n\n get shouldUseReanimated(): boolean {\n // use Reanimated when runOnJS isn't set explicitly,\n // and all defined callbacks are worklets,\n // and remote debugging is disabled\n return (\n this.config.runOnJS !== true &&\n !this.handlers.isWorklet.includes(false) &&\n !isRemoteDebuggingEnabled()\n );\n }\n}\n\nexport abstract class ContinousBaseGesture<\n EventPayloadT extends Record<string, unknown>,\n EventChangePayloadT extends Record<string, unknown>\n> extends BaseGesture<EventPayloadT> {\n onUpdate(callback: (event: GestureUpdateEvent<EventPayloadT>) => void) {\n this.handlers.onUpdate = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.UPDATE] = this.isWorklet(callback);\n return this;\n }\n\n onChange(\n callback: (\n event: GestureUpdateEvent<EventPayloadT & EventChangePayloadT>\n ) => void\n ) {\n this.handlers.onChange = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.CHANGE] = this.isWorklet(callback);\n return this;\n }\n\n manualActivation(manualActivation: boolean) {\n this.config.manualActivation = manualActivation;\n return this;\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["gesture.ts"],"names":["getNextHandlerTag","isRemoteDebuggingEnabled","CALLBACK_TYPE","UNDEFINED","BEGAN","START","UPDATE","CHANGE","END","FINALIZE","TOUCHES_DOWN","TOUCHES_MOVE","TOUCHES_UP","TOUCHES_CANCELLED","Gesture","nextGestureId","BaseGesture","constructor","gestureId","handlerTag","isWorklet","handlers","addDependency","key","gesture","value","config","Array","concat","withRef","ref","callback","__workletHash","undefined","onBegin","onStart","onEnd","onFinalize","onTouchesDown","needsPointerData","onTouchesMove","onTouchesUp","onTouchesCancelled","enabled","shouldCancelWhenOutside","hitSlop","activeCursor","runOnJS","simultaneousWithExternalGesture","gestures","requireExternalGestureToFail","blocksExternalGesture","withTestId","id","testId","cancelsTouchesInView","initialize","current","toGestureArray","prepare","shouldUseReanimated","includes","ContinousBaseGesture","onUpdate","onChange","manualActivation"],"mappings":"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","sourcesContent":["import { FlingGestureHandlerEventPayload } from '../FlingGestureHandler';\nimport { ForceTouchGestureHandlerEventPayload } from '../ForceTouchGestureHandler';\nimport {\n HitSlop,\n CommonGestureConfig,\n GestureTouchEvent,\n GestureStateChangeEvent,\n GestureUpdateEvent,\n ActiveCursor,\n} from '../gestureHandlerCommon';\nimport { getNextHandlerTag } from '../handlersRegistry';\nimport { GestureStateManagerType } from './gestureStateManager';\nimport { LongPressGestureHandlerEventPayload } from '../LongPressGestureHandler';\nimport { PanGestureHandlerEventPayload } from '../PanGestureHandler';\nimport { PinchGestureHandlerEventPayload } from '../PinchGestureHandler';\nimport { RotationGestureHandlerEventPayload } from '../RotationGestureHandler';\nimport { TapGestureHandlerEventPayload } from '../TapGestureHandler';\nimport { NativeViewGestureHandlerPayload } from '../NativeViewGestureHandler';\nimport { isRemoteDebuggingEnabled } from '../../utils';\n\nexport type GestureType =\n | BaseGesture<Record<string, unknown>>\n | BaseGesture<Record<string, never>>\n | BaseGesture<TapGestureHandlerEventPayload>\n | BaseGesture<PanGestureHandlerEventPayload>\n | BaseGesture<LongPressGestureHandlerEventPayload>\n | BaseGesture<RotationGestureHandlerEventPayload>\n | BaseGesture<PinchGestureHandlerEventPayload>\n | BaseGesture<FlingGestureHandlerEventPayload>\n | BaseGesture<ForceTouchGestureHandlerEventPayload>\n | BaseGesture<NativeViewGestureHandlerPayload>;\n\nexport type GestureRef =\n | number\n | GestureType\n | React.RefObject<GestureType | undefined>\n | React.RefObject<React.ComponentType | undefined>; // allow adding a ref to a gesture handler\nexport interface BaseGestureConfig\n extends CommonGestureConfig,\n Record<string, unknown> {\n ref?: React.MutableRefObject<GestureType | undefined>;\n requireToFail?: GestureRef[];\n simultaneousWith?: GestureRef[];\n blocksHandlers?: GestureRef[];\n needsPointerData?: boolean;\n manualActivation?: boolean;\n runOnJS?: boolean;\n testId?: string;\n cancelsTouchesInView?: boolean;\n}\n\ntype TouchEventHandlerType = (\n event: GestureTouchEvent,\n stateManager: GestureStateManagerType\n) => void;\n\nexport type HandlerCallbacks<EventPayloadT extends Record<string, unknown>> = {\n gestureId: number;\n handlerTag: number;\n onBegin?: (event: GestureStateChangeEvent<EventPayloadT>) => void;\n onStart?: (event: GestureStateChangeEvent<EventPayloadT>) => void;\n onEnd?: (\n event: GestureStateChangeEvent<EventPayloadT>,\n success: boolean\n ) => void;\n onFinalize?: (\n event: GestureStateChangeEvent<EventPayloadT>,\n success: boolean\n ) => void;\n onUpdate?: (event: GestureUpdateEvent<EventPayloadT>) => void;\n onChange?: (event: any) => void;\n onTouchesDown?: TouchEventHandlerType;\n onTouchesMove?: TouchEventHandlerType;\n onTouchesUp?: TouchEventHandlerType;\n onTouchesCancelled?: TouchEventHandlerType;\n changeEventCalculator?: (\n current: GestureUpdateEvent<Record<string, unknown>>,\n previous?: GestureUpdateEvent<Record<string, unknown>>\n ) => GestureUpdateEvent<Record<string, unknown>>;\n isWorklet: boolean[];\n};\n\nexport const CALLBACK_TYPE = {\n UNDEFINED: 0,\n BEGAN: 1,\n START: 2,\n UPDATE: 3,\n CHANGE: 4,\n END: 5,\n FINALIZE: 6,\n TOUCHES_DOWN: 7,\n TOUCHES_MOVE: 8,\n TOUCHES_UP: 9,\n TOUCHES_CANCELLED: 10,\n} as const;\n\n// Allow using CALLBACK_TYPE as object and type\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type CALLBACK_TYPE = typeof CALLBACK_TYPE[keyof typeof CALLBACK_TYPE];\n\nexport abstract class Gesture {\n /**\n * Return array of gestures, providing the same interface for creating and updating\n * handlers, no matter which object was used to create gesture instance.\n */\n abstract toGestureArray(): GestureType[];\n\n /**\n * Assign handlerTag to the gesture instance and set ref.current (if a ref is set)\n */\n abstract initialize(): void;\n\n /**\n * Make sure that values of properties defining relations are arrays. Do any necessary\n * preprocessing required to configure relations between handlers. Called just before\n * updating the handler on the native side.\n */\n abstract prepare(): void;\n}\n\nlet nextGestureId = 0;\nexport abstract class BaseGesture<\n EventPayloadT extends Record<string, unknown>\n> extends Gesture {\n private gestureId = -1;\n public handlerTag = -1;\n public handlerName = '';\n public config: BaseGestureConfig = {};\n public handlers: HandlerCallbacks<EventPayloadT> = {\n gestureId: -1,\n handlerTag: -1,\n isWorklet: [],\n };\n\n constructor() {\n super();\n\n // Used to check whether the gesture config has been updated when wrapping it\n // with `useMemo`. Since every config will have a unique id, when the dependencies\n // don't change, the config won't be recreated and the id will stay the same.\n // If the id is different, it means that the config has changed and the gesture\n // needs to be updated.\n this.gestureId = nextGestureId++;\n this.handlers.gestureId = this.gestureId;\n }\n\n private addDependency(\n key: 'simultaneousWith' | 'requireToFail' | 'blocksHandlers',\n gesture: Exclude<GestureRef, number>\n ) {\n const value = this.config[key];\n this.config[key] = value\n ? Array<GestureRef>().concat(value, gesture)\n : [gesture];\n }\n\n withRef(ref: React.MutableRefObject<GestureType | undefined>) {\n this.config.ref = ref;\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n protected isWorklet(callback: Function) {\n //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false\n return callback.__workletHash !== undefined;\n }\n\n onBegin(callback: (event: GestureStateChangeEvent<EventPayloadT>) => void) {\n this.handlers.onBegin = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.BEGAN] = this.isWorklet(callback);\n return this;\n }\n\n onStart(callback: (event: GestureStateChangeEvent<EventPayloadT>) => void) {\n this.handlers.onStart = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.START] = this.isWorklet(callback);\n return this;\n }\n\n onEnd(\n callback: (\n event: GestureStateChangeEvent<EventPayloadT>,\n success: boolean\n ) => void\n ) {\n this.handlers.onEnd = callback;\n //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false\n this.handlers.isWorklet[CALLBACK_TYPE.END] = this.isWorklet(callback);\n return this;\n }\n\n onFinalize(\n callback: (\n event: GestureStateChangeEvent<EventPayloadT>,\n success: boolean\n ) => void\n ) {\n this.handlers.onFinalize = callback;\n //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false\n this.handlers.isWorklet[CALLBACK_TYPE.FINALIZE] = this.isWorklet(callback);\n return this;\n }\n\n onTouchesDown(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesDown = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_DOWN] =\n this.isWorklet(callback);\n\n return this;\n }\n\n onTouchesMove(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesMove = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_MOVE] =\n this.isWorklet(callback);\n\n return this;\n }\n\n onTouchesUp(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesUp = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_UP] =\n this.isWorklet(callback);\n\n return this;\n }\n\n onTouchesCancelled(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesCancelled = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_CANCELLED] =\n this.isWorklet(callback);\n\n return this;\n }\n\n enabled(enabled: boolean) {\n this.config.enabled = enabled;\n return this;\n }\n\n shouldCancelWhenOutside(value: boolean) {\n this.config.shouldCancelWhenOutside = value;\n return this;\n }\n\n hitSlop(hitSlop: HitSlop) {\n this.config.hitSlop = hitSlop;\n return this;\n }\n\n activeCursor(activeCursor: ActiveCursor) {\n this.config.activeCursor = activeCursor;\n return this;\n }\n\n runOnJS(runOnJS: boolean) {\n this.config.runOnJS = runOnJS;\n return this;\n }\n\n simultaneousWithExternalGesture(...gestures: Exclude<GestureRef, number>[]) {\n for (const gesture of gestures) {\n this.addDependency('simultaneousWith', gesture);\n }\n return this;\n }\n\n requireExternalGestureToFail(...gestures: Exclude<GestureRef, number>[]) {\n for (const gesture of gestures) {\n this.addDependency('requireToFail', gesture);\n }\n return this;\n }\n\n blocksExternalGesture(...gestures: Exclude<GestureRef, number>[]) {\n for (const gesture of gestures) {\n this.addDependency('blocksHandlers', gesture);\n }\n return this;\n }\n\n withTestId(id: string) {\n this.config.testId = id;\n return this;\n }\n\n cancelsTouchesInView(value: boolean) {\n this.config.cancelsTouchesInView = value;\n return this;\n }\n\n initialize() {\n this.handlerTag = getNextHandlerTag();\n\n this.handlers = { ...this.handlers, handlerTag: this.handlerTag };\n\n if (this.config.ref) {\n this.config.ref.current = this as GestureType;\n }\n }\n\n toGestureArray(): GestureType[] {\n return [this as GestureType];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n prepare() {}\n\n get shouldUseReanimated(): boolean {\n // use Reanimated when runOnJS isn't set explicitly,\n // and all defined callbacks are worklets,\n // and remote debugging is disabled\n return (\n this.config.runOnJS !== true &&\n !this.handlers.isWorklet.includes(false) &&\n !isRemoteDebuggingEnabled()\n );\n }\n}\n\nexport abstract class ContinousBaseGesture<\n EventPayloadT extends Record<string, unknown>,\n EventChangePayloadT extends Record<string, unknown>\n> extends BaseGesture<EventPayloadT> {\n onUpdate(callback: (event: GestureUpdateEvent<EventPayloadT>) => void) {\n this.handlers.onUpdate = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.UPDATE] = this.isWorklet(callback);\n return this;\n }\n\n onChange(\n callback: (\n event: GestureUpdateEvent<EventPayloadT & EventChangePayloadT>\n ) => void\n ) {\n this.handlers.onChange = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.CHANGE] = this.isWorklet(callback);\n return this;\n }\n\n manualActivation(manualActivation: boolean) {\n this.config.manualActivation = manualActivation;\n return this;\n }\n}\n"]}
|
@@ -6,49 +6,51 @@ const warningMessage = tagMessage('react-native-reanimated is required in order
|
|
6
6
|
|
7
7
|
const REANIMATED_AVAILABLE = (Reanimated === null || Reanimated === void 0 ? void 0 : Reanimated.useSharedValue) !== undefined;
|
8
8
|
const setGestureState = Reanimated === null || Reanimated === void 0 ? void 0 : Reanimated.setGestureState;
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
}
|
31
|
-
},
|
32
|
-
fail: () => {
|
33
|
-
'worklet';
|
34
|
-
|
35
|
-
if (REANIMATED_AVAILABLE) {
|
36
|
-
setGestureState(handlerTag, State.FAILED);
|
37
|
-
} else {
|
38
|
-
console.warn(warningMessage);
|
39
|
-
}
|
40
|
-
},
|
41
|
-
end: () => {
|
42
|
-
'worklet';
|
43
|
-
|
44
|
-
if (REANIMATED_AVAILABLE) {
|
45
|
-
setGestureState(handlerTag, State.END);
|
46
|
-
} else {
|
47
|
-
console.warn(warningMessage);
|
48
|
-
}
|
9
|
+
|
10
|
+
function create(handlerTag) {
|
11
|
+
'worklet';
|
12
|
+
|
13
|
+
return {
|
14
|
+
begin: () => {
|
15
|
+
'worklet';
|
16
|
+
|
17
|
+
if (REANIMATED_AVAILABLE) {
|
18
|
+
setGestureState(handlerTag, State.BEGAN);
|
19
|
+
} else {
|
20
|
+
console.warn(warningMessage);
|
21
|
+
}
|
22
|
+
},
|
23
|
+
activate: () => {
|
24
|
+
'worklet';
|
25
|
+
|
26
|
+
if (REANIMATED_AVAILABLE) {
|
27
|
+
setGestureState(handlerTag, State.ACTIVE);
|
28
|
+
} else {
|
29
|
+
console.warn(warningMessage);
|
49
30
|
}
|
50
|
-
}
|
51
|
-
|
31
|
+
},
|
32
|
+
fail: () => {
|
33
|
+
'worklet';
|
52
34
|
|
35
|
+
if (REANIMATED_AVAILABLE) {
|
36
|
+
setGestureState(handlerTag, State.FAILED);
|
37
|
+
} else {
|
38
|
+
console.warn(warningMessage);
|
39
|
+
}
|
40
|
+
},
|
41
|
+
end: () => {
|
42
|
+
'worklet';
|
43
|
+
|
44
|
+
if (REANIMATED_AVAILABLE) {
|
45
|
+
setGestureState(handlerTag, State.END);
|
46
|
+
} else {
|
47
|
+
console.warn(warningMessage);
|
48
|
+
}
|
49
|
+
}
|
50
|
+
};
|
51
|
+
}
|
52
|
+
|
53
|
+
export const GestureStateManager = {
|
54
|
+
create
|
53
55
|
};
|
54
56
|
//# sourceMappingURL=gestureStateManager.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["gestureStateManager.ts"],"names":["Reanimated","State","tagMessage","warningMessage","REANIMATED_AVAILABLE","useSharedValue","undefined","setGestureState","
|
1
|
+
{"version":3,"sources":["gestureStateManager.ts"],"names":["Reanimated","State","tagMessage","warningMessage","REANIMATED_AVAILABLE","useSharedValue","undefined","setGestureState","create","handlerTag","begin","BEGAN","console","warn","activate","ACTIVE","fail","FAILED","end","END","GestureStateManager"],"mappings":"AAAA,SAASA,UAAT,QAA2B,qBAA3B;AACA,SAASC,KAAT,QAAsB,aAAtB;AACA,SAASC,UAAT,QAA2B,aAA3B;AASA,MAAMC,cAAc,GAAGD,UAAU,CAC/B,kFAD+B,CAAjC,C,CAIA;AACA;;AACA,MAAME,oBAAoB,GAAG,CAAAJ,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEK,cAAZ,MAA+BC,SAA5D;AACA,MAAMC,eAAe,GAAGP,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAEO,eAApC;;AAEA,SAASC,MAAT,CAAgBC,UAAhB,EAA6D;AAC3D;;AACA,SAAO;AACLC,IAAAA,KAAK,EAAE,MAAM;AACX;;AACA,UAAIN,oBAAJ,EAA0B;AACxBG,QAAAA,eAAe,CAACE,UAAD,EAAaR,KAAK,CAACU,KAAnB,CAAf;AACD,OAFD,MAEO;AACLC,QAAAA,OAAO,CAACC,IAAR,CAAaV,cAAb;AACD;AACF,KARI;AAULW,IAAAA,QAAQ,EAAE,MAAM;AACd;;AACA,UAAIV,oBAAJ,EAA0B;AACxBG,QAAAA,eAAe,CAACE,UAAD,EAAaR,KAAK,CAACc,MAAnB,CAAf;AACD,OAFD,MAEO;AACLH,QAAAA,OAAO,CAACC,IAAR,CAAaV,cAAb;AACD;AACF,KAjBI;AAmBLa,IAAAA,IAAI,EAAE,MAAM;AACV;;AACA,UAAIZ,oBAAJ,EAA0B;AACxBG,QAAAA,eAAe,CAACE,UAAD,EAAaR,KAAK,CAACgB,MAAnB,CAAf;AACD,OAFD,MAEO;AACLL,QAAAA,OAAO,CAACC,IAAR,CAAaV,cAAb;AACD;AACF,KA1BI;AA4BLe,IAAAA,GAAG,EAAE,MAAM;AACT;;AACA,UAAId,oBAAJ,EAA0B;AACxBG,QAAAA,eAAe,CAACE,UAAD,EAAaR,KAAK,CAACkB,GAAnB,CAAf;AACD,OAFD,MAEO;AACLP,QAAAA,OAAO,CAACC,IAAR,CAAaV,cAAb;AACD;AACF;AAnCI,GAAP;AAqCD;;AAED,OAAO,MAAMiB,mBAAmB,GAAG;AACjCZ,EAAAA;AADiC,CAA5B","sourcesContent":["import { Reanimated } from './reanimatedWrapper';\nimport { State } from '../../State';\nimport { tagMessage } from '../../utils';\n\nexport interface GestureStateManagerType {\n begin: () => void;\n activate: () => void;\n fail: () => void;\n end: () => void;\n}\n\nconst warningMessage = tagMessage(\n 'react-native-reanimated is required in order to use synchronous state management'\n);\n\n// check if reanimated module is available, but look for useSharedValue as conditional\n// require of reanimated can sometimes return content of `utils.ts` file (?)\nconst REANIMATED_AVAILABLE = Reanimated?.useSharedValue !== undefined;\nconst setGestureState = Reanimated?.setGestureState;\n\nfunction create(handlerTag: number): GestureStateManagerType {\n 'worklet';\n return {\n begin: () => {\n 'worklet';\n if (REANIMATED_AVAILABLE) {\n setGestureState(handlerTag, State.BEGAN);\n } else {\n console.warn(warningMessage);\n }\n },\n\n activate: () => {\n 'worklet';\n if (REANIMATED_AVAILABLE) {\n setGestureState(handlerTag, State.ACTIVE);\n } else {\n console.warn(warningMessage);\n }\n },\n\n fail: () => {\n 'worklet';\n if (REANIMATED_AVAILABLE) {\n setGestureState(handlerTag, State.FAILED);\n } else {\n console.warn(warningMessage);\n }\n },\n\n end: () => {\n 'worklet';\n if (REANIMATED_AVAILABLE) {\n setGestureState(handlerTag, State.END);\n } else {\n console.warn(warningMessage);\n }\n },\n };\n}\n\nexport const GestureStateManager = {\n create,\n};\n"]}
|
package/lib/module/utils.js
CHANGED
@@ -1,9 +1,3 @@
|
|
1
|
-
import pack from 'react-native/package.json';
|
2
|
-
const [majorStr, minorStr] = pack.version.split('.');
|
3
|
-
export const REACT_NATIVE_VERSION = {
|
4
|
-
major: parseInt(majorStr, 10),
|
5
|
-
minor: parseInt(minorStr, 10)
|
6
|
-
};
|
7
1
|
export function toArray(object) {
|
8
2
|
if (!Array.isArray(object)) {
|
9
3
|
return [object];
|
package/lib/module/utils.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["utils.ts"],"names":["
|
1
|
+
{"version":3,"sources":["utils.ts"],"names":["toArray","object","Array","isArray","withPrevAndCurrent","array","mapFn","previousArr","currentArr","transformedArr","forEach","current","i","previous","transformed","push","hasProperty","key","Object","prototype","hasOwnProperty","call","isJestEnv","global","process","env","JEST_WORKER_ID","tagMessage","msg","isFabric","nativeFabricUIManager","isRemoteDebuggingEnabled","nativeCallSyncHook","__REMOTEDEV__"],"mappings":"AAAA,OAAO,SAASA,OAAT,CAAoBC,MAApB,EAA0C;AAC/C,MAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAL,EAA4B;AAC1B,WAAO,CAACA,MAAD,CAAP;AACD;;AAED,SAAOA,MAAP;AACD;AAMD,OAAO,SAASG,kBAAT,CACLC,KADK,EAELC,KAFK,EAGU;AACf,QAAMC,WAAmC,GAAG,CAAC,IAAD,CAA5C;AACA,QAAMC,UAAU,GAAG,CAAC,GAAGH,KAAJ,CAAnB;AACA,QAAMI,cAA6B,GAAG,EAAtC;AACAD,EAAAA,UAAU,CAACE,OAAX,CAAmB,CAACC,OAAD,EAAUC,CAAV,KAAgB;AACjC,UAAMC,QAAQ,GAAGN,WAAW,CAACK,CAAD,CAA5B;AACA,UAAME,WAAW,GAAGR,KAAK,CAACO,QAAD,EAAWF,OAAX,CAAzB;AACAJ,IAAAA,WAAW,CAACQ,IAAZ,CAAiBD,WAAjB;AACAL,IAAAA,cAAc,CAACM,IAAf,CAAoBD,WAApB;AACD,GALD;AAMA,SAAOL,cAAP;AACD,C,CAED;;AACA,OAAO,SAASO,WAAT,CAAqBf,MAArB,EAAqCgB,GAArC,EAAkD;AACvD,SAAOC,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCpB,MAArC,EAA6CgB,GAA7C,CAAP;AACD;AAED,OAAO,SAASK,SAAT,GAA8B;AACnC;AACA,SAAON,WAAW,CAACO,MAAD,EAAS,SAAT,CAAX,IAAkC,CAAC,CAACC,OAAO,CAACC,GAAR,CAAYC,cAAvD;AACD;AAED,OAAO,SAASC,UAAT,CAAoBC,GAApB,EAAiC;AACtC,SAAQ,kCAAiCA,GAAI,EAA7C;AACD,C,CAED;AACA;;AACA,OAAO,SAASC,QAAT,GAA6B;AAAA;;AAClC;AACA,SAAO,CAAC,aAACN,MAAD,oCAAC,QAAQO,qBAAT,CAAR;AACD;AAED,OAAO,SAASC,wBAAT,GAA6C;AAClD;AACA;AACA,SAAO,CAAER,MAAD,CAAgBS,kBAAjB,IAAwCT,MAAD,CAAgBU,aAA9D;AACD","sourcesContent":["export function toArray<T>(object: T | T[]): T[] {\n if (!Array.isArray(object)) {\n return [object];\n }\n\n return object;\n}\n\nexport type withPrevAndCurrentMapFn<T, Transformed> = (\n previous: Transformed | null,\n current: T\n) => Transformed;\nexport function withPrevAndCurrent<T, Transformed>(\n array: T[],\n mapFn: withPrevAndCurrentMapFn<T, Transformed>\n): Transformed[] {\n const previousArr: (null | Transformed)[] = [null];\n const currentArr = [...array];\n const transformedArr: Transformed[] = [];\n currentArr.forEach((current, i) => {\n const previous = previousArr[i];\n const transformed = mapFn(previous, current);\n previousArr.push(transformed);\n transformedArr.push(transformed);\n });\n return transformedArr;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasProperty(object: object, key: string) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nexport function isJestEnv(): boolean {\n // @ts-ignore Do not use `@types/node` because it will prioritise Node types over RN types which breaks the types (ex. setTimeout) in React Native projects.\n return hasProperty(global, 'process') && !!process.env.JEST_WORKER_ID;\n}\n\nexport function tagMessage(msg: string) {\n return `[react-native-gesture-handler] ${msg}`;\n}\n\n// helper method to check whether Fabric is enabled, however global.nativeFabricUIManager\n// may not be initialized before the first render\nexport function isFabric(): boolean {\n // @ts-expect-error nativeFabricUIManager is not yet included in the RN types\n return !!global?.nativeFabricUIManager;\n}\n\nexport function isRemoteDebuggingEnabled(): boolean {\n // react-native-reanimated checks if in remote debugging in the same way\n // @ts-ignore global is available but node types are not included\n return !(global as any).nativeCallSyncHook || (global as any).__REMOTEDEV__;\n}\n"]}
|
@@ -4,7 +4,7 @@ import { State } from '../../State';
|
|
4
4
|
import { Direction } from '../constants';
|
5
5
|
import GestureHandler from './GestureHandler';
|
6
6
|
const DEFAULT_MAX_DURATION_MS = 800;
|
7
|
-
const DEFAULT_MIN_ACCEPTABLE_DELTA =
|
7
|
+
const DEFAULT_MIN_ACCEPTABLE_DELTA = 32;
|
8
8
|
const DEFAULT_DIRECTION = Direction.RIGHT;
|
9
9
|
const DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;
|
10
10
|
export default class FlingGestureHandler extends GestureHandler {
|
@@ -128,13 +128,11 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
128
128
|
}
|
129
129
|
|
130
130
|
onUp(event) {
|
131
|
-
this.
|
132
|
-
|
133
|
-
if (this.currentState !== State.BEGAN) {
|
134
|
-
return;
|
131
|
+
if (this.currentState === State.BEGAN) {
|
132
|
+
this.endFling();
|
135
133
|
}
|
136
134
|
|
137
|
-
this.
|
135
|
+
this.tracker.removeFromTracker(event.pointerId);
|
138
136
|
}
|
139
137
|
|
140
138
|
activate(force) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["FlingGestureHandler.ts"],"names":["State","Direction","GestureHandler","DEFAULT_MAX_DURATION_MS","DEFAULT_MIN_ACCEPTABLE_DELTA","DEFAULT_DIRECTION","RIGHT","DEFAULT_NUMBER_OF_TOUCHES_REQUIRED","FlingGestureHandler","NaN","init","ref","propsRef","updateGestureConfig","enabled","props","config","direction","numberOfPointers","numberOfPointersRequired","startFling","startX","tracker","getLastX","keyPointer","startY","getLastY","begin","maxNumberOfPointersSimultaneously","delayTimeout","setTimeout","fail","maxDurationMs","tryEndFling","minAcceptableDelta","LEFT","UP","DOWN","clearTimeout","activate","endFling","onPointerDown","event","addToTracker","pointerId","newPointerAction","onPointerAdd","currentState","UNDETERMINED","BEGAN","getTrackedPointersCount","onPointerMove","track","onPointerUp","onUp","onPointerRemove","removeFromTracker","force","end","resetConfig"],"mappings":";;AAAA,SAASA,KAAT,QAAsB,aAAtB;AACA,SAASC,SAAT,QAA0B,cAA1B;AAGA,OAAOC,cAAP,MAA2B,kBAA3B;AAEA,MAAMC,uBAAuB,GAAG,GAAhC;AACA,MAAMC,4BAA4B,GAAG,
|
1
|
+
{"version":3,"sources":["FlingGestureHandler.ts"],"names":["State","Direction","GestureHandler","DEFAULT_MAX_DURATION_MS","DEFAULT_MIN_ACCEPTABLE_DELTA","DEFAULT_DIRECTION","RIGHT","DEFAULT_NUMBER_OF_TOUCHES_REQUIRED","FlingGestureHandler","NaN","init","ref","propsRef","updateGestureConfig","enabled","props","config","direction","numberOfPointers","numberOfPointersRequired","startFling","startX","tracker","getLastX","keyPointer","startY","getLastY","begin","maxNumberOfPointersSimultaneously","delayTimeout","setTimeout","fail","maxDurationMs","tryEndFling","minAcceptableDelta","LEFT","UP","DOWN","clearTimeout","activate","endFling","onPointerDown","event","addToTracker","pointerId","newPointerAction","onPointerAdd","currentState","UNDETERMINED","BEGAN","getTrackedPointersCount","onPointerMove","track","onPointerUp","onUp","onPointerRemove","removeFromTracker","force","end","resetConfig"],"mappings":";;AAAA,SAASA,KAAT,QAAsB,aAAtB;AACA,SAASC,SAAT,QAA0B,cAA1B;AAGA,OAAOC,cAAP,MAA2B,kBAA3B;AAEA,MAAMC,uBAAuB,GAAG,GAAhC;AACA,MAAMC,4BAA4B,GAAG,EAArC;AACA,MAAMC,iBAAiB,GAAGJ,SAAS,CAACK,KAApC;AACA,MAAMC,kCAAkC,GAAG,CAA3C;AAEA,eAAe,MAAMC,mBAAN,SAAkCN,cAAlC,CAAiD;AAAA;AAAA;;AAAA,sDAC3BK,kCAD2B;;AAAA,uCAE1CF,iBAF0C;;AAAA,2CAItCF,uBAJsC;;AAAA,gDAKjCC,4BALiC;;AAAA;;AAAA,oCAQ7C,CAR6C;;AAAA,oCAS7C,CAT6C;;AAAA,+DAWlB,CAXkB;;AAAA,wCAYzCK,GAZyC;AAAA;;AAcvDC,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAwD;AACjE,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;;AAEA,QAAI,KAAKC,MAAL,CAAYC,SAAhB,EAA2B;AACzB,WAAKA,SAAL,GAAiB,KAAKD,MAAL,CAAYC,SAA7B;AACD;;AAED,QAAI,KAAKD,MAAL,CAAYE,gBAAhB,EAAkC;AAChC,WAAKC,wBAAL,GAAgC,KAAKH,MAAL,CAAYE,gBAA5C;AACD;AACF;;AAEOE,EAAAA,UAAU,GAAS;AACzB,SAAKC,MAAL,GAAc,KAAKC,OAAL,CAAaC,QAAb,CAAsB,KAAKC,UAA3B,CAAd;AACA,SAAKC,MAAL,GAAc,KAAKH,OAAL,CAAaI,QAAb,CAAsB,KAAKF,UAA3B,CAAd;AAEA,SAAKG,KAAL;AAEA,SAAKC,iCAAL,GAAyC,CAAzC;AAEA,SAAKC,YAAL,GAAoBC,UAAU,CAAC,MAAM,KAAKC,IAAL,EAAP,EAAoB,KAAKC,aAAzB,CAA9B;AACD;;AAEOC,EAAAA,WAAW,GAAY;AAC7B,QACE,KAAKL,iCAAL,KACE,KAAKT,wBADP,KAEE,KAAKF,SAAL,GAAiBhB,SAAS,CAACK,KAA3B,IACA,KAAKgB,OAAL,CAAaC,QAAb,CAAsB,KAAKC,UAA3B,IAAyC,KAAKH,MAA9C,GACE,KAAKa,kBAFR,IAGE,KAAKjB,SAAL,GAAiBhB,SAAS,CAACkC,IAA3B,IACC,KAAKd,MAAL,GAAc,KAAKC,OAAL,CAAaC,QAAb,CAAsB,KAAKC,UAA3B,CAAd,GACE,KAAKU,kBALV,IAME,KAAKjB,SAAL,GAAiBhB,SAAS,CAACmC,EAA3B,IACC,KAAKX,MAAL,GAAc,KAAKH,OAAL,CAAaI,QAAb,CAAsB,KAAKF,UAA3B,CAAd,GACE,KAAKU,kBARV,IASE,KAAKjB,SAAL,GAAiBhB,SAAS,CAACoC,IAA3B,IACC,KAAKf,OAAL,CAAaI,QAAb,CAAsB,KAAKF,UAA3B,IAAyC,KAAKC,MAA9C,GACE,KAAKS,kBAbX,CADF,EAeE;AACAI,MAAAA,YAAY,CAAC,KAAKT,YAAN,CAAZ;AACA,WAAKU,QAAL;AAEA,aAAO,IAAP;AACD;;AAED,WAAO,KAAP;AACD;;AAEOC,EAAAA,QAAQ,GAAG;AACjB,QAAI,CAAC,KAAKP,WAAL,EAAL,EAAyB;AACvB,WAAKF,IAAL;AACD;AACF;;AAESU,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKpB,OAAL,CAAaqB,YAAb,CAA0BD,KAA1B;AACA,SAAKlB,UAAL,GAAkBkB,KAAK,CAACE,SAAxB;AAEA,UAAMH,aAAN,CAAoBC,KAApB;AACA,SAAKG,gBAAL;AACD;;AAESC,EAAAA,YAAY,CAACJ,KAAD,EAA4B;AAChD,SAAKpB,OAAL,CAAaqB,YAAb,CAA0BD,KAA1B;AACA,UAAMI,YAAN,CAAmBJ,KAAnB;AACA,SAAKG,gBAAL;AACD;;AAEOA,EAAAA,gBAAgB,GAAS;AAC/B,QAAI,KAAKE,YAAL,KAAsB/C,KAAK,CAACgD,YAAhC,EAA8C;AAC5C,WAAK5B,UAAL;AACD;;AAED,QAAI,KAAK2B,YAAL,KAAsB/C,KAAK,CAACiD,KAAhC,EAAuC;AACrC;AACD;;AAED,SAAKhB,WAAL;;AAEA,QACE,KAAKX,OAAL,CAAa4B,uBAAb,KACA,KAAKtB,iCAFP,EAGE;AACA,WAAKA,iCAAL,GACE,KAAKN,OAAL,CAAa4B,uBAAb,EADF;AAED;AACF;;AAESC,EAAAA,aAAa,CAACT,KAAD,EAA4B;AACjD,SAAKpB,OAAL,CAAa8B,KAAb,CAAmBV,KAAnB;;AAEA,QAAI,KAAKK,YAAL,KAAsB/C,KAAK,CAACiD,KAAhC,EAAuC;AACrC;AACD;;AAED,SAAKhB,WAAL;AAEA,UAAMkB,aAAN,CAAoBT,KAApB;AACD;;AAESW,EAAAA,WAAW,CAACX,KAAD,EAA4B;AAC/C,UAAMW,WAAN,CAAkBX,KAAlB;AACA,SAAKY,IAAL,CAAUZ,KAAV;AAEA,SAAKlB,UAAL,GAAkBf,GAAlB;AACD;;AAES8C,EAAAA,eAAe,CAACb,KAAD,EAA4B;AACnD,UAAMa,eAAN,CAAsBb,KAAtB;AACA,SAAKY,IAAL,CAAUZ,KAAV;AACD;;AAEOY,EAAAA,IAAI,CAACZ,KAAD,EAA4B;AACtC,QAAI,KAAKK,YAAL,KAAsB/C,KAAK,CAACiD,KAAhC,EAAuC;AACrC,WAAKT,QAAL;AACD;;AAED,SAAKlB,OAAL,CAAakC,iBAAb,CAA+Bd,KAAK,CAACE,SAArC;AACD;;AAEML,EAAAA,QAAQ,CAACkB,KAAD,EAAwB;AACrC,UAAMlB,QAAN,CAAekB,KAAf;AACA,SAAKC,GAAL;AACD;;AAESC,EAAAA,WAAW,GAAS;AAC5B,UAAMA,WAAN;AACA,SAAKxC,wBAAL,GAAgCZ,kCAAhC;AACA,SAAKU,SAAL,GAAiBZ,iBAAjB;AACD;;AApJ6D","sourcesContent":["import { State } from '../../State';\nimport { Direction } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 800;\nconst DEFAULT_MIN_ACCEPTABLE_DELTA = 32;\nconst DEFAULT_DIRECTION = Direction.RIGHT;\nconst DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;\n\nexport default class FlingGestureHandler extends GestureHandler {\n private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n private direction = DEFAULT_DIRECTION;\n\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private minAcceptableDelta = DEFAULT_MIN_ACCEPTABLE_DELTA;\n private delayTimeout!: number;\n\n private startX = 0;\n private startY = 0;\n\n private maxNumberOfPointersSimultaneously = 0;\n private keyPointer = NaN;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.direction) {\n this.direction = this.config.direction;\n }\n\n if (this.config.numberOfPointers) {\n this.numberOfPointersRequired = this.config.numberOfPointers;\n }\n }\n\n private startFling(): void {\n this.startX = this.tracker.getLastX(this.keyPointer);\n this.startY = this.tracker.getLastY(this.keyPointer);\n\n this.begin();\n\n this.maxNumberOfPointersSimultaneously = 1;\n\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private tryEndFling(): boolean {\n if (\n this.maxNumberOfPointersSimultaneously ===\n this.numberOfPointersRequired &&\n ((this.direction & Direction.RIGHT &&\n this.tracker.getLastX(this.keyPointer) - this.startX >\n this.minAcceptableDelta) ||\n (this.direction & Direction.LEFT &&\n this.startX - this.tracker.getLastX(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.UP &&\n this.startY - this.tracker.getLastY(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.DOWN &&\n this.tracker.getLastY(this.keyPointer) - this.startY >\n this.minAcceptableDelta))\n ) {\n clearTimeout(this.delayTimeout);\n this.activate();\n\n return true;\n }\n\n return false;\n }\n\n private endFling() {\n if (!this.tryEndFling()) {\n this.fail();\n }\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n this.keyPointer = event.pointerId;\n\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n if (this.currentState === State.UNDETERMINED) {\n this.startFling();\n }\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n if (\n this.tracker.getTrackedPointersCount() >\n this.maxNumberOfPointersSimultaneously\n ) {\n this.maxNumberOfPointersSimultaneously =\n this.tracker.getTrackedPointersCount();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n super.onPointerMove(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n\n this.keyPointer = NaN;\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n if (this.currentState === State.BEGAN) {\n this.endFling();\n }\n\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n public activate(force?: boolean): void {\n super.activate(force);\n this.end();\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n this.direction = DEFAULT_DIRECTION;\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["GestureHandler.ts"],"names":["State","PointerType","TouchEventType","EventTypes","GestureHandlerOrchestrator","InteractionManager","PointerTracker","GestureHandler","constructor","delegate","UNDETERMINED","enabled","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","init","viewRef","attachEventManager","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerLeave","onPointerLeave","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setOnPointerMoveOver","onPointerMoveOver","setOnPointerMoveOut","onPointerMoveOut","setListeners","onCancel","onReset","resetProgress","reset","tracker","resetTracker","moveToState","sendIfDisabled","getTrackedPointersCount","config","needsPointerData","isFinished","cancelTouches","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","onFail","FAILED","cancel","CANCELLED","activate","_force","onActivate","end","onEnd","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","shouldCancellWhenOutside","_event","out","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","isPointerInBounds","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","handlerTag","target","timeStamp","Date","now","rect","measureView","all","changed","trackerData","getData","size","has","pointerId","forEach","element","key","id","getMappedTouchEventId","push","lastX","pageX","lastY","pageY","absoluteX","absoluteY","eventType","CANCEL","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","shouldCancelWhenOutside","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hasCustomActivationCriteria","hitSlop","left","right","width","Error","height","top","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","resetConfig","getTag","setTag","tag","getConfig","getDelegate","getTracker","getTrackedPointersID","getState","isEnabled","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n PointerType,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria = false;\n protected enabled = false;\n\n private viewRef!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.NONE;\n\n protected delegate: GestureHandlerDelegate<unknown>;\n\n public constructor(delegate: GestureHandlerDelegate<unknown>) {\n this.delegate = delegate;\n }\n\n //\n // Initializing handler\n //\n\n protected init(viewRef: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.viewRef = viewRef;\n\n this.currentState = State.UNDETERMINED;\n\n this.delegate.init(viewRef, this);\n }\n\n public attachEventManager(manager: EventManager<unknown>): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerLeave(this.onPointerLeave.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setOnPointerMoveOver(this.onPointerMoveOver.bind(this));\n manager.setOnPointerMoveOut(this.onPointerMoveOut.bind(this));\n manager.setListeners();\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.delegate.reset();\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n if (\n this.tracker.getTrackedPointersCount() > 0 &&\n this.config.needsPointerData &&\n this.isFinished()\n ) {\n this.cancelTouches();\n }\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n // Here the order of calling the delegate and moveToState is important.\n // At this point we can use currentState as previuos state, because immediately after changing cursor we call moveToState method.\n this.delegate.onFail();\n\n this.moveToState(State.FAILED, sendIfDisabled);\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n\n // Same as above - order matters\n this.delegate.onCancel();\n\n this.moveToState(State.CANCELLED, sendIfDisabled);\n }\n }\n\n public activate(_force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.delegate.onActivate();\n\n this.moveToState(State.ACTIVE);\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n // Same as above - order matters\n this.delegate.onEnd();\n\n this.moveToState(State.END);\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerLeave(event: AdaptedEvent): void {\n if (this.shouldCancellWhenOutside) {\n switch (this.currentState) {\n case State.ACTIVE:\n this.cancel();\n break;\n case State.BEGAN:\n this.fail();\n break;\n }\n return;\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n\n this.cancel();\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMoveOver(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n protected onPointerMoveOut(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined =\n this.transformTouchEvent(event);\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =\n this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: this.delegate.isPointerInBounds({\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.viewRef,\n oldState: newState !== oldState ? oldState : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.delegate.measureView();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.pageX,\n y: event.y - rect.pageY,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n private cancelTouches(): void {\n const rect = this.delegate.measureView();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n\n changed.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent(): Record<string, unknown> {\n // those properties are shared by most handlers and if not this method will be overriden\n const rect = this.delegate.measureView();\n\n return {\n x: this.tracker.getLastAvgX() - rect.pageX,\n y: this.tracker.getLastAvgY() - rect.pageY,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const { width, height } = this.delegate.measureView();\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect = this.delegate.measureView();\n const offsetX: number = this.tracker.getLastX() - rect.pageX;\n const offsetY: number = this.tracker.getLastY() - rect.pageY;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n public getConfig() {\n return this.config;\n }\n\n public getDelegate(): GestureHandlerDelegate<unknown> {\n return this.delegate;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n private isFinished(): boolean {\n return (\n this.currentState === State.END ||\n this.currentState === State.FAILED ||\n this.currentState === State.CANCELLED\n );\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancellWhenOutside = shouldCancel;\n }\n\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
|
1
|
+
{"version":3,"sources":["GestureHandler.ts"],"names":["State","PointerType","TouchEventType","EventTypes","GestureHandlerOrchestrator","InteractionManager","PointerTracker","GestureHandler","constructor","delegate","UNDETERMINED","enabled","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","init","viewRef","attachEventManager","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerLeave","onPointerLeave","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setOnPointerMoveOver","onPointerMoveOver","setOnPointerMoveOut","onPointerMoveOut","setListeners","onCancel","onReset","resetProgress","reset","tracker","resetTracker","moveToState","sendIfDisabled","getTrackedPointersCount","config","needsPointerData","isFinished","cancelTouches","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","onFail","FAILED","cancel","CANCELLED","activate","_force","onActivate","end","onEnd","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","shouldCancellWhenOutside","_event","out","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","isPointerInBounds","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","handlerTag","target","timeStamp","Date","now","rect","measureView","all","changed","trackerData","getData","size","has","pointerId","forEach","element","key","id","getMappedTouchEventId","push","lastX","pageX","lastY","pageY","absoluteX","absoluteY","eventType","CANCEL","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","shouldCancelWhenOutside","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hasCustomActivationCriteria","hitSlop","left","right","width","Error","height","top","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","resetConfig","getTag","setTag","tag","getConfig","getDelegate","getTracker","getTrackedPointersID","getState","isEnabled","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n PointerType,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria = false;\n protected enabled = false;\n\n private viewRef!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.NONE;\n\n protected delegate: GestureHandlerDelegate<unknown>;\n\n public constructor(delegate: GestureHandlerDelegate<unknown>) {\n this.delegate = delegate;\n }\n\n //\n // Initializing handler\n //\n\n protected init(viewRef: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.viewRef = viewRef;\n\n this.currentState = State.UNDETERMINED;\n\n this.delegate.init(viewRef, this);\n }\n\n public attachEventManager(manager: EventManager<unknown>): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerLeave(this.onPointerLeave.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setOnPointerMoveOver(this.onPointerMoveOver.bind(this));\n manager.setOnPointerMoveOut(this.onPointerMoveOut.bind(this));\n manager.setListeners();\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.delegate.reset();\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n if (\n this.tracker.getTrackedPointersCount() > 0 &&\n this.config.needsPointerData &&\n this.isFinished()\n ) {\n this.cancelTouches();\n }\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n // Here the order of calling the delegate and moveToState is important.\n // At this point we can use currentState as previuos state, because immediately after changing cursor we call moveToState method.\n this.delegate.onFail();\n\n this.moveToState(State.FAILED, sendIfDisabled);\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n\n // Same as above - order matters\n this.delegate.onCancel();\n\n this.moveToState(State.CANCELLED, sendIfDisabled);\n }\n }\n\n public activate(_force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.delegate.onActivate();\n\n this.moveToState(State.ACTIVE);\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n // Same as above - order matters\n this.delegate.onEnd();\n\n this.moveToState(State.END);\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerLeave(event: AdaptedEvent): void {\n if (this.shouldCancellWhenOutside) {\n switch (this.currentState) {\n case State.ACTIVE:\n this.cancel();\n break;\n case State.BEGAN:\n this.fail();\n break;\n }\n return;\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n\n this.cancel();\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMoveOver(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n protected onPointerMoveOut(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined =\n this.transformTouchEvent(event);\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =\n this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: this.delegate.isPointerInBounds({\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.viewRef,\n oldState: newState !== oldState ? oldState : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.delegate.measureView();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.pageX,\n y: event.y - rect.pageY,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n private cancelTouches(): void {\n const rect = this.delegate.measureView();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n\n changed.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent(): Record<string, unknown> {\n // those properties are shared by most handlers and if not this method will be overriden\n const rect = this.delegate.measureView();\n\n return {\n x: this.tracker.getLastAvgX() - rect.pageX,\n y: this.tracker.getLastAvgY() - rect.pageY,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const { width, height } = this.delegate.measureView();\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect = this.delegate.measureView();\n const offsetX: number = this.tracker.getLastX() - rect.pageX;\n const offsetY: number = this.tracker.getLastY() - rect.pageY;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n public getConfig() {\n return this.config;\n }\n\n public getDelegate(): GestureHandlerDelegate<unknown> {\n return this.delegate;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n private isFinished(): boolean {\n return (\n this.currentState === State.END ||\n this.currentState === State.FAILED ||\n this.currentState === State.CANCELLED\n );\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancellWhenOutside = shouldCancel;\n }\n\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping }: { argMapping: unknown } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["interfaces.ts"],"names":["MouseButtons","EventTypes","TouchEventType","PointerType"],"mappings":"
|
1
|
+
{"version":3,"sources":["interfaces.ts"],"names":["MouseButtons","EventTypes","TouchEventType","PointerType"],"mappings":"AAmIA,WAAYA,YAAZ;;WAAYA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;GAAAA,Y,KAAAA,Y;;AAWZ,WAAYC,UAAZ;;WAAYA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;GAAAA,U,KAAAA,U;;AAWZ,WAAYC,cAAZ;;WAAYA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;GAAAA,c,KAAAA,c;;AAQZ,WAAYC,WAAZ;;WAAYA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,KAAAA,W","sourcesContent":["import { UserSelect, ActiveCursor } from '../handlers/gestureHandlerCommon';\nimport { Directions } from '../Directions';\nimport { State } from '../State';\n\nexport interface HitSlop {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n horizontal?: number;\n vertical?: number;\n width?: number;\n height?: number;\n}\n\nexport interface Handler {\n handlerTag: number;\n}\n\ntype ConfigArgs =\n | number\n | boolean\n | HitSlop\n | UserSelect\n | ActiveCursor\n | Directions\n | Handler[]\n | null\n | undefined;\n\nexport interface Config extends Record<string, ConfigArgs> {\n enabled?: boolean;\n simultaneousHandlers?: Handler[] | null;\n waitFor?: Handler[] | null;\n blocksHandlers?: Handler[] | null;\n hitSlop?: HitSlop;\n shouldCancelWhenOutside?: boolean;\n userSelect?: UserSelect;\n activeCursor?: ActiveCursor;\n\n activateAfterLongPress?: number;\n failOffsetXStart?: number;\n failOffsetYStart?: number;\n failOffsetXEnd?: number;\n failOffsetYEnd?: number;\n activeOffsetXStart?: number;\n activeOffsetXEnd?: number;\n activeOffsetYStart?: number;\n activeOffsetYEnd?: number;\n minPointers?: number;\n maxPointers?: number;\n minDist?: number;\n minDistSq?: number;\n minVelocity?: number;\n minVelocityX?: number;\n minVelocityY?: number;\n minVelocitySq?: number;\n maxDist?: number;\n maxDistSq?: number;\n numberOfPointers?: number;\n minDurationMs?: number;\n numberOfTaps?: number;\n maxDurationMs?: number;\n maxDelayMs?: number;\n maxDeltaX?: number;\n maxDeltaY?: number;\n shouldActivateOnStart?: boolean;\n disallowInterruption?: boolean;\n direction?: Directions;\n}\n\ntype NativeEventArgs = number | State | boolean | undefined;\ninterface NativeEvent extends Record<string, NativeEventArgs> {\n numberOfPointers: number;\n state: State;\n pointerInside: boolean | undefined;\n handlerTag: number;\n target: number;\n oldState?: State;\n}\n\nexport interface PointerData {\n id: number;\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n}\n\ntype TouchNativeArgs = number | State | TouchEventType | PointerData[];\n\ninterface NativeTouchEvent extends Record<string, TouchNativeArgs> {\n handlerTag: number;\n state: State;\n eventType: TouchEventType;\n changedTouches: PointerData[];\n allTouches: PointerData[];\n numberOfTouches: number;\n}\n\nexport interface ResultEvent extends Record<string, NativeEvent | number> {\n nativeEvent: NativeEvent;\n timeStamp: number;\n}\n\nexport interface ResultTouchEvent\n extends Record<string, NativeTouchEvent | number> {\n nativeEvent: NativeTouchEvent;\n timeStamp: number;\n}\n\nexport interface PropsRef {\n onGestureHandlerEvent: () => void;\n onGestureHandlerStateChange: () => void;\n}\n\nexport interface AdaptedEvent {\n x: number;\n y: number;\n offsetX: number;\n offsetY: number;\n pointerId: number;\n eventType: EventTypes;\n pointerType: PointerType;\n buttons: number;\n time: number;\n allTouches?: TouchList;\n changedTouches?: TouchList;\n touchEventType?: TouchEventType;\n}\n\nexport enum MouseButtons {\n NONE,\n LEFT,\n RIGHT,\n LEFT_RIGHT,\n SCROLL,\n SCROLL_LEFT,\n SCROLL_RIGHT,\n SCROLL_LEFT_RIGHT,\n}\n\nexport enum EventTypes {\n DOWN,\n ADDITIONAL_POINTER_DOWN,\n UP,\n ADDITIONAL_POINTER_UP,\n MOVE,\n ENTER,\n LEAVE,\n CANCEL,\n}\n\nexport enum TouchEventType {\n UNDETERMINED,\n DOWN,\n MOVE,\n UP,\n CANCELLED,\n}\n\nexport enum PointerType {\n NONE = 'none',\n MOUSE = 'mouse',\n TOUCH = 'touch',\n PEN = 'pen',\n}\n"]}
|