react-native-gesture-handler 2.14.1 → 2.16.0-rc.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +1 -0
- package/RNGestureHandler.podspec +3 -24
- package/android/build.gradle +1 -1
- package/android/paper/src/main/java/com/swmansion/gesturehandler/NativeRNGestureHandlerModuleSpec.java +55 -0
- package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +69 -4
- package/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt +4 -0
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +69 -0
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +37 -21
- package/android/src/main/java/com/swmansion/gesturehandler/core/LongPressGestureHandler.kt +5 -1
- package/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt +5 -1
- package/android/src/main/java/com/swmansion/gesturehandler/core/TapGestureHandler.kt +7 -3
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +61 -24
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +3 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/GestureHandlerEventDataBuilder.kt +3 -0
- package/android/src/main/jni/cpp-adapter.cpp +18 -22
- package/{ios → apple}/Handlers/RNFlingHandler.m +29 -8
- package/{ios → apple}/Handlers/RNForceTouchHandler.m +28 -8
- package/{ios → apple}/Handlers/RNHoverHandler.m +28 -2
- package/{ios → apple}/Handlers/RNLongPressHandler.m +27 -5
- package/{ios → apple}/Handlers/RNManualHandler.m +25 -4
- package/{ios → apple}/Handlers/RNNativeViewHandler.mm +51 -13
- package/{ios → apple}/Handlers/RNPanHandler.m +106 -16
- package/apple/Handlers/RNPinchHandler.m +175 -0
- package/apple/Handlers/RNRotationHandler.m +169 -0
- package/{ios → apple}/Handlers/RNTapHandler.m +98 -26
- package/apple/RNGHUIKit.h +27 -0
- package/{ios → apple}/RNGestureHandler.h +12 -3
- package/{ios → apple}/RNGestureHandler.m +68 -7
- package/{ios → apple}/RNGestureHandlerButton.h +4 -1
- package/{ios → apple}/RNGestureHandlerButton.m +12 -4
- package/{ios → apple}/RNGestureHandlerButtonManager.m +4 -2
- package/{ios → apple}/RNGestureHandlerEvents.h +19 -10
- package/{ios → apple}/RNGestureHandlerEvents.m +29 -11
- package/{ios → apple}/RNGestureHandlerManager.h +7 -2
- package/{ios → apple}/RNGestureHandlerManager.mm +78 -17
- package/apple/RNGestureHandlerModule.h +19 -0
- package/{ios → apple}/RNGestureHandlerModule.mm +69 -69
- package/{ios → apple}/RNGestureHandlerPointerTracker.h +5 -5
- package/{ios → apple}/RNGestureHandlerPointerTracker.m +19 -14
- package/apple/RNGestureHandlerPointerType.h +8 -0
- package/{ios → apple}/RNGestureHandlerRegistry.h +1 -1
- package/{ios → apple}/RNGestureHandlerRegistry.m +1 -1
- package/{ios → apple}/RNManualActivationRecognizer.h +8 -0
- package/{ios → apple}/RNManualActivationRecognizer.m +27 -7
- package/{ios → apple}/RNRootViewGestureRecognizer.m +72 -4
- package/lib/commonjs/PointerType.js +16 -0
- package/lib/commonjs/PointerType.js.map +1 -0
- package/lib/commonjs/RNGestureHandlerModule.js +5 -18
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.windows.js +10 -102
- package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -1
- package/lib/commonjs/components/DrawerLayout.js +2 -0
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerRootView.android.js +17 -2
- package/lib/commonjs/components/GestureHandlerRootView.android.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerRootView.js +15 -2
- package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerRootView.web.js +15 -2
- package/lib/commonjs/components/GestureHandlerRootView.web.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.js +19 -2
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js +5 -0
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +11 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +5 -0
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/index.js +16 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/specs/NativeRNGestureHandlerModule.js +13 -0
- package/lib/commonjs/specs/NativeRNGestureHandlerModule.js.map +1 -0
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +4 -0
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +19 -4
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +8 -6
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +4 -0
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +4 -0
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js +12 -24
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +3 -3
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +35 -0
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/commonjs/web/tools/NodeManager.js +3 -2
- package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +40 -10
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/TouchEventManager.js +3 -2
- package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
- package/lib/commonjs/web/utils.js +6 -0
- package/lib/commonjs/web/utils.js.map +1 -1
- package/lib/module/PointerType.js +9 -0
- package/lib/module/PointerType.js.map +1 -0
- package/lib/module/RNGestureHandlerModule.js +4 -18
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.windows.js +10 -81
- package/lib/module/RNGestureHandlerModule.windows.js.map +1 -1
- package/lib/module/components/DrawerLayout.js +2 -0
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/GestureHandlerRootView.android.js +15 -2
- package/lib/module/components/GestureHandlerRootView.android.js.map +1 -1
- package/lib/module/components/GestureHandlerRootView.js +15 -3
- package/lib/module/components/GestureHandlerRootView.js.map +1 -1
- package/lib/module/components/GestureHandlerRootView.web.js +15 -3
- package/lib/module/components/GestureHandlerRootView.web.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.js +19 -2
- package/lib/module/getShadowNodeFromRef.js.map +1 -1
- package/lib/module/handlers/createHandler.js +6 -1
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +11 -1
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +5 -0
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/specs/NativeRNGestureHandlerModule.js +3 -0
- package/lib/module/specs/NativeRNGestureHandlerModule.js.map +1 -0
- package/lib/module/web/handlers/FlingGestureHandler.js +4 -0
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +18 -4
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +8 -5
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +4 -0
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +4 -0
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js +9 -20
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +2 -2
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerWebDelegate.js +34 -0
- package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/module/web/tools/NodeManager.js +3 -2
- package/lib/module/web/tools/NodeManager.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +41 -12
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/web/tools/TouchEventManager.js +2 -2
- package/lib/module/web/tools/TouchEventManager.js.map +1 -1
- package/lib/module/web/utils.js +2 -0
- package/lib/module/web/utils.js.map +1 -1
- package/lib/typescript/PointerType.d.ts +6 -0
- package/lib/typescript/RNGestureHandlerModule.d.ts +2 -13
- package/lib/typescript/RNGestureHandlerModule.windows.d.ts +5 -21
- package/lib/typescript/components/DrawerLayout.d.ts +11 -0
- package/lib/typescript/components/GestureHandlerRootView.android.d.ts +1 -1
- package/lib/typescript/components/GestureHandlerRootView.d.ts +1 -1
- package/lib/typescript/components/GestureHandlerRootView.web.d.ts +1 -1
- package/lib/typescript/getShadowNodeFromRef.d.ts +1 -1
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +6 -1
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +2 -1
- package/lib/typescript/handlers/gestures/gesture.d.ts +2 -0
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/specs/NativeRNGestureHandlerModule.d.ts +14 -0
- package/lib/typescript/web/handlers/GestureHandler.d.ts +4 -1
- package/lib/typescript/web/interfaces.d.ts +10 -14
- package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +2 -0
- package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +7 -0
- package/lib/typescript/web/tools/PointerEventManager.d.ts +2 -0
- package/lib/typescript/web/utils.d.ts +2 -0
- package/package.json +14 -11
- package/src/PointerType.ts +6 -0
- package/src/RNGestureHandlerModule.ts +4 -49
- package/src/RNGestureHandlerModule.windows.ts +18 -100
- package/src/components/DrawerLayout.tsx +15 -0
- package/src/components/GestureHandlerRootView.android.tsx +13 -5
- package/src/components/GestureHandlerRootView.tsx +10 -5
- package/src/components/GestureHandlerRootView.web.tsx +10 -5
- package/src/getShadowNodeFromRef.ts +28 -6
- package/src/handlers/createHandler.tsx +6 -0
- package/src/handlers/gestureHandlerCommon.ts +7 -0
- package/src/handlers/gestures/GestureDetector.tsx +16 -2
- package/src/handlers/gestures/gesture.ts +6 -0
- package/src/index.ts +2 -0
- package/src/specs/NativeRNGestureHandlerModule.ts +26 -0
- package/src/web/handlers/FlingGestureHandler.ts +4 -0
- package/src/web/handlers/GestureHandler.ts +20 -2
- package/src/web/handlers/LongPressGestureHandler.ts +8 -5
- package/src/web/handlers/PanGestureHandler.ts +4 -0
- package/src/web/handlers/TapGestureHandler.ts +4 -0
- package/src/web/interfaces.ts +12 -17
- package/src/web/tools/GestureHandlerDelegate.ts +3 -0
- package/src/web/tools/GestureHandlerOrchestrator.ts +2 -2
- package/src/web/tools/GestureHandlerWebDelegate.ts +39 -0
- package/src/web/tools/NodeManager.ts +5 -1
- package/src/web/tools/PointerEventManager.ts +46 -10
- package/src/web/tools/TouchEventManager.ts +2 -8
- package/src/web/utils.ts +9 -0
- package/ios/Handlers/RNPinchHandler.m +0 -95
- package/ios/Handlers/RNRotationHandler.m +0 -93
- package/ios/RNGestureHandlerModule.h +0 -7
- package/lib/commonjs/RNGestureHandlerModule.macos.js +0 -149
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +0 -1
- package/lib/module/RNGestureHandlerModule.macos.js +0 -110
- package/lib/module/RNGestureHandlerModule.macos.js.map +0 -1
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +0 -47
- package/src/RNGestureHandlerModule.macos.ts +0 -133
- /package/{ios → apple}/Handlers/RNFlingHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNForceTouchHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNHoverHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNLongPressHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNManualHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNNativeViewHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNPanHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNPinchHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNRotationHandler.h +0 -0
- /package/{ios → apple}/Handlers/RNTapHandler.h +0 -0
- /package/{ios → apple}/RNGHTouchEventType.h +0 -0
- /package/{ios → apple}/RNGestureHandler.xcodeproj/project.pbxproj +0 -0
- /package/{ios → apple}/RNGestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
- /package/{ios → apple}/RNGestureHandlerActionType.h +0 -0
- /package/{ios → apple}/RNGestureHandlerButtonComponentView.h +0 -0
- /package/{ios → apple}/RNGestureHandlerButtonComponentView.mm +0 -0
- /package/{ios → apple}/RNGestureHandlerButtonManager.h +0 -0
- /package/{ios → apple}/RNGestureHandlerDirection.h +0 -0
- /package/{ios → apple}/RNGestureHandlerRootViewComponentView.mm +0 -0
- /package/{ios → apple}/RNGestureHandlerState.h +0 -0
- /package/{ios → apple}/RNGestureHandlerStateManager.h +0 -0
- /package/{ios → apple}/RNRootViewGestureRecognizer.h +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["PanGestureHandler.ts"],"names":["State","DEFAULT_TOUCH_SLOP","GestureHandler","DEFAULT_MIN_POINTERS","DEFAULT_MAX_POINTERS","DEFAULT_MIN_DIST_SQ","PanGestureHandler","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","init","ref","propsRef","updateGestureConfig","enabled","props","resetConfig","checkCustomActivationCriteria","customActivationProperties","config","minDist","undefined","minDistSq","hasCustomActivationCriteria","minPointers","maxPointers","minVelocity","minVelocityX","minVelocityY","activateAfterLongPress","activeOffsetXStart","activeOffsetXEnd","failOffsetXStart","failOffsetXEnd","activeOffsetYStart","activeOffsetYEnd","failOffsetYStart","failOffsetYEnd","minVelocitySq","transformNativeEvent","translationX","getTranslationX","translationY","getTranslationY","isNaN","velocityX","velocityY","lastX","startX","offsetX","lastY","startY","offsetY","clearActivationTimeout","clearTimeout","activationTimeout","onPointerDown","event","tracker","addToTracker","getLastAvgX","getLastAvgY","tryBegin","checkBegan","onPointerAdd","getTrackedPointersCount","currentState","ACTIVE","cancel","fail","onPointerUp","removeFromTracker","pointerId","end","resetProgress","onPointerRemove","onPointerMove","track","getVelocityX","getVelocityY","onPointerOutOfBounds","getShouldCancelWhenOutside","shouldActivate","dx","dy","distanceSq","vx","vy","velocitySq","shouldFail","UNDETERMINED","begin","setTimeout","activate","BEGAN","force","onCancel","onReset"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_POINTERS = 1;\nconst DEFAULT_MAX_POINTERS = 10;\nconst DEFAULT_MIN_DIST_SQ = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\nexport default class PanGestureHandler extends GestureHandler {\n private readonly customActivationProperties: string[] = [\n 'activeOffsetXStart',\n 'activeOffsetXEnd',\n 'failOffsetXStart',\n 'failOffsetXEnd',\n 'activeOffsetYStart',\n 'activeOffsetYEnd',\n 'failOffsetYStart',\n 'failOffsetYEnd',\n 'minVelocityX',\n 'minVelocityY',\n ];\n\n public velocityX = 0;\n public velocityY = 0;\n\n private minDistSq = DEFAULT_MIN_DIST_SQ;\n\n private activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n private activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetXStart = Number.MIN_SAFE_INTEGER;\n private failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n private activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n private activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetYStart = Number.MIN_SAFE_INTEGER;\n private failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n private minVelocityX = Number.MAX_SAFE_INTEGER;\n private minVelocityY = Number.MAX_SAFE_INTEGER;\n private minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n private minPointers = DEFAULT_MIN_POINTERS;\n private maxPointers = DEFAULT_MAX_POINTERS;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private activateAfterLongPress = 0;\n private activationTimeout = 0;\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 this.resetConfig();\n\n super.updateGestureConfig({ enabled: enabled, ...props });\n this.checkCustomActivationCriteria(this.customActivationProperties);\n\n if (this.config.minDist !== undefined) {\n this.minDistSq = this.config.minDist * this.config.minDist;\n } else if (this.hasCustomActivationCriteria) {\n this.minDistSq = Number.MAX_SAFE_INTEGER;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minPointers = this.config.minPointers;\n }\n\n if (this.config.maxPointers !== undefined) {\n this.maxPointers = this.config.maxPointers;\n }\n\n if (this.config.minVelocity !== undefined) {\n this.minVelocityX = this.config.minVelocity;\n this.minVelocityY = this.config.minVelocity;\n }\n\n if (this.config.minVelocityX !== undefined) {\n this.minVelocityX = this.config.minVelocityX;\n }\n\n if (this.config.minVelocityY !== undefined) {\n this.minVelocityY = this.config.minVelocityY;\n }\n\n if (this.config.activateAfterLongPress !== undefined) {\n this.activateAfterLongPress = this.config.activateAfterLongPress;\n }\n\n if (this.config.activeOffsetXStart !== undefined) {\n this.activeOffsetXStart = this.config.activeOffsetXStart;\n\n if (this.config.activeOffsetXEnd === undefined) {\n this.activeOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetXEnd !== undefined) {\n this.activeOffsetXEnd = this.config.activeOffsetXEnd;\n\n if (this.config.activeOffsetXStart === undefined) {\n this.activeOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXStart !== undefined) {\n this.failOffsetXStart = this.config.failOffsetXStart;\n\n if (this.config.failOffsetXEnd === undefined) {\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXEnd !== undefined) {\n this.failOffsetXEnd = this.config.failOffsetXEnd;\n\n if (this.config.failOffsetXStart === undefined) {\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYStart !== undefined) {\n this.activeOffsetYStart = this.config.activeOffsetYStart;\n\n if (this.config.activeOffsetYEnd === undefined) {\n this.activeOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYEnd !== undefined) {\n this.activeOffsetYEnd = this.config.activeOffsetYEnd;\n\n if (this.config.activeOffsetYStart === undefined) {\n this.activeOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYStart !== undefined) {\n this.failOffsetYStart = this.config.failOffsetYStart;\n\n if (this.config.failOffsetYEnd === undefined) {\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYEnd !== undefined) {\n this.failOffsetYEnd = this.config.failOffsetYEnd;\n\n if (this.config.failOffsetYStart === undefined) {\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n this.activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n this.activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n this.activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n this.minVelocityX = Number.MAX_SAFE_INTEGER;\n this.minVelocityY = Number.MAX_SAFE_INTEGER;\n this.minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n this.minDistSq = DEFAULT_MIN_DIST_SQ;\n\n this.minPointers = DEFAULT_MIN_POINTERS;\n this.maxPointers = DEFAULT_MAX_POINTERS;\n\n this.activateAfterLongPress = 0;\n }\n\n protected transformNativeEvent() {\n const translationX: number = this.getTranslationX();\n const translationY: number = this.getTranslationY();\n\n return {\n ...super.transformNativeEvent(),\n translationX: isNaN(translationX) ? 0 : translationX,\n translationY: isNaN(translationY) ? 0 : translationY,\n velocityX: this.velocityX,\n velocityY: this.velocityY,\n };\n }\n\n private getTranslationX(): number {\n return this.lastX - this.startX + this.offsetX;\n }\n private getTranslationY(): number {\n return this.lastY - this.startY + this.offsetY;\n }\n\n private clearActivationTimeout(): void {\n clearTimeout(this.activationTimeout);\n }\n\n //EventsHandling\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.tryBegin(event);\n this.checkBegan();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.tryBegin(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (this.tracker.getTrackedPointersCount() > this.maxPointers) {\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n } else {\n this.checkBegan();\n }\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n\n if (this.currentState === State.ACTIVE) {\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n }\n\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.resetProgress();\n this.fail();\n }\n }\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (\n !(\n this.currentState === State.ACTIVE &&\n this.tracker.getTrackedPointersCount() < this.minPointers\n )\n ) {\n this.checkBegan();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n\n this.checkBegan();\n\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.getShouldCancelWhenOutside()) {\n return;\n }\n\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n\n this.checkBegan();\n\n if (this.currentState === State.ACTIVE) {\n super.onPointerOutOfBounds(event);\n }\n }\n\n private shouldActivate(): boolean {\n const dx: number = this.getTranslationX();\n\n if (\n this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER &&\n dx < this.activeOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetXEnd !== Number.MIN_SAFE_INTEGER &&\n dx > this.activeOffsetXEnd\n ) {\n return true;\n }\n\n const dy: number = this.getTranslationY();\n\n if (\n this.activeOffsetYStart !== Number.MAX_SAFE_INTEGER &&\n dy < this.activeOffsetYStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetYEnd !== Number.MIN_SAFE_INTEGER &&\n dy > this.activeOffsetYEnd\n ) {\n return true;\n }\n\n const distanceSq: number = dx * dx + dy * dy;\n\n if (\n this.minDistSq !== Number.MAX_SAFE_INTEGER &&\n distanceSq >= this.minDistSq\n ) {\n return true;\n }\n\n const vx: number = this.velocityX;\n\n if (\n this.minVelocityX !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityX < 0 && vx <= this.minVelocityX) ||\n (this.minVelocityX >= 0 && this.minVelocityX <= vx))\n ) {\n return true;\n }\n\n const vy: number = this.velocityY;\n if (\n this.minVelocityY !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityY < 0 && vy <= this.minVelocityY) ||\n (this.minVelocityY >= 0 && this.minVelocityY <= vy))\n ) {\n return true;\n }\n\n const velocitySq: number = vx * vx + vy * vy;\n\n return (\n this.minVelocitySq !== Number.MAX_SAFE_INTEGER &&\n velocitySq >= this.minVelocitySq\n );\n }\n\n private shouldFail(): boolean {\n const dx: number = this.getTranslationX();\n const dy: number = this.getTranslationY();\n const distanceSq = dx * dx + dy * dy;\n\n if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) {\n this.clearActivationTimeout();\n return true;\n }\n\n if (\n this.failOffsetXStart !== Number.MIN_SAFE_INTEGER &&\n dx < this.failOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.failOffsetXEnd !== Number.MAX_SAFE_INTEGER &&\n dx > this.failOffsetXEnd\n ) {\n return true;\n }\n\n if (\n this.failOffsetYStart !== Number.MIN_SAFE_INTEGER &&\n dy < this.failOffsetYStart\n ) {\n return true;\n }\n\n return (\n this.failOffsetYEnd !== Number.MAX_SAFE_INTEGER &&\n dy > this.failOffsetYEnd\n );\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (\n this.currentState === State.UNDETERMINED &&\n this.tracker.getTrackedPointersCount() >= this.minPointers\n ) {\n this.resetProgress();\n this.offsetX = 0;\n this.offsetY = 0;\n this.velocityX = 0;\n this.velocityY = 0;\n\n this.begin();\n\n if (this.activateAfterLongPress > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.activateAfterLongPress);\n }\n } else {\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n }\n }\n\n private checkBegan(): void {\n if (this.currentState === State.BEGAN) {\n if (this.shouldFail()) {\n this.fail();\n } else if (this.shouldActivate()) {\n this.activate();\n }\n }\n }\n\n public activate(force = false): void {\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n\n super.activate(force);\n }\n\n protected onCancel(): void {\n this.clearActivationTimeout();\n }\n\n protected onReset(): void {\n this.clearActivationTimeout();\n }\n\n protected resetProgress(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["PanGestureHandler.ts"],"names":["State","DEFAULT_TOUCH_SLOP","GestureHandler","DEFAULT_MIN_POINTERS","DEFAULT_MAX_POINTERS","DEFAULT_MIN_DIST_SQ","PanGestureHandler","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","init","ref","propsRef","updateGestureConfig","enabled","props","resetConfig","checkCustomActivationCriteria","customActivationProperties","config","minDist","undefined","minDistSq","hasCustomActivationCriteria","minPointers","maxPointers","minVelocity","minVelocityX","minVelocityY","activateAfterLongPress","activeOffsetXStart","activeOffsetXEnd","failOffsetXStart","failOffsetXEnd","activeOffsetYStart","activeOffsetYEnd","failOffsetYStart","failOffsetYEnd","minVelocitySq","transformNativeEvent","translationX","getTranslationX","translationY","getTranslationY","isNaN","velocityX","velocityY","lastX","startX","offsetX","lastY","startY","offsetY","clearActivationTimeout","clearTimeout","activationTimeout","onPointerDown","event","isButtonInConfig","button","tracker","addToTracker","getLastAvgX","getLastAvgY","tryBegin","checkBegan","onPointerAdd","getTrackedPointersCount","currentState","ACTIVE","cancel","fail","onPointerUp","removeFromTracker","pointerId","end","resetProgress","onPointerRemove","onPointerMove","track","getVelocityX","getVelocityY","onPointerOutOfBounds","getShouldCancelWhenOutside","shouldActivate","dx","dy","distanceSq","vx","vy","velocitySq","shouldFail","UNDETERMINED","begin","setTimeout","activate","BEGAN","force","onCancel","onReset"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_POINTERS = 1;\nconst DEFAULT_MAX_POINTERS = 10;\nconst DEFAULT_MIN_DIST_SQ = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\nexport default class PanGestureHandler extends GestureHandler {\n private readonly customActivationProperties: string[] = [\n 'activeOffsetXStart',\n 'activeOffsetXEnd',\n 'failOffsetXStart',\n 'failOffsetXEnd',\n 'activeOffsetYStart',\n 'activeOffsetYEnd',\n 'failOffsetYStart',\n 'failOffsetYEnd',\n 'minVelocityX',\n 'minVelocityY',\n ];\n\n public velocityX = 0;\n public velocityY = 0;\n\n private minDistSq = DEFAULT_MIN_DIST_SQ;\n\n private activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n private activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetXStart = Number.MIN_SAFE_INTEGER;\n private failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n private activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n private activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetYStart = Number.MIN_SAFE_INTEGER;\n private failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n private minVelocityX = Number.MAX_SAFE_INTEGER;\n private minVelocityY = Number.MAX_SAFE_INTEGER;\n private minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n private minPointers = DEFAULT_MIN_POINTERS;\n private maxPointers = DEFAULT_MAX_POINTERS;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private activateAfterLongPress = 0;\n private activationTimeout = 0;\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 this.resetConfig();\n\n super.updateGestureConfig({ enabled: enabled, ...props });\n this.checkCustomActivationCriteria(this.customActivationProperties);\n\n if (this.config.minDist !== undefined) {\n this.minDistSq = this.config.minDist * this.config.minDist;\n } else if (this.hasCustomActivationCriteria) {\n this.minDistSq = Number.MAX_SAFE_INTEGER;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minPointers = this.config.minPointers;\n }\n\n if (this.config.maxPointers !== undefined) {\n this.maxPointers = this.config.maxPointers;\n }\n\n if (this.config.minVelocity !== undefined) {\n this.minVelocityX = this.config.minVelocity;\n this.minVelocityY = this.config.minVelocity;\n }\n\n if (this.config.minVelocityX !== undefined) {\n this.minVelocityX = this.config.minVelocityX;\n }\n\n if (this.config.minVelocityY !== undefined) {\n this.minVelocityY = this.config.minVelocityY;\n }\n\n if (this.config.activateAfterLongPress !== undefined) {\n this.activateAfterLongPress = this.config.activateAfterLongPress;\n }\n\n if (this.config.activeOffsetXStart !== undefined) {\n this.activeOffsetXStart = this.config.activeOffsetXStart;\n\n if (this.config.activeOffsetXEnd === undefined) {\n this.activeOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetXEnd !== undefined) {\n this.activeOffsetXEnd = this.config.activeOffsetXEnd;\n\n if (this.config.activeOffsetXStart === undefined) {\n this.activeOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXStart !== undefined) {\n this.failOffsetXStart = this.config.failOffsetXStart;\n\n if (this.config.failOffsetXEnd === undefined) {\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXEnd !== undefined) {\n this.failOffsetXEnd = this.config.failOffsetXEnd;\n\n if (this.config.failOffsetXStart === undefined) {\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYStart !== undefined) {\n this.activeOffsetYStart = this.config.activeOffsetYStart;\n\n if (this.config.activeOffsetYEnd === undefined) {\n this.activeOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYEnd !== undefined) {\n this.activeOffsetYEnd = this.config.activeOffsetYEnd;\n\n if (this.config.activeOffsetYStart === undefined) {\n this.activeOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYStart !== undefined) {\n this.failOffsetYStart = this.config.failOffsetYStart;\n\n if (this.config.failOffsetYEnd === undefined) {\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYEnd !== undefined) {\n this.failOffsetYEnd = this.config.failOffsetYEnd;\n\n if (this.config.failOffsetYStart === undefined) {\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n this.activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n this.activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n this.activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n this.minVelocityX = Number.MAX_SAFE_INTEGER;\n this.minVelocityY = Number.MAX_SAFE_INTEGER;\n this.minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n this.minDistSq = DEFAULT_MIN_DIST_SQ;\n\n this.minPointers = DEFAULT_MIN_POINTERS;\n this.maxPointers = DEFAULT_MAX_POINTERS;\n\n this.activateAfterLongPress = 0;\n }\n\n protected transformNativeEvent() {\n const translationX: number = this.getTranslationX();\n const translationY: number = this.getTranslationY();\n\n return {\n ...super.transformNativeEvent(),\n translationX: isNaN(translationX) ? 0 : translationX,\n translationY: isNaN(translationY) ? 0 : translationY,\n velocityX: this.velocityX,\n velocityY: this.velocityY,\n };\n }\n\n private getTranslationX(): number {\n return this.lastX - this.startX + this.offsetX;\n }\n private getTranslationY(): number {\n return this.lastY - this.startY + this.offsetY;\n }\n\n private clearActivationTimeout(): void {\n clearTimeout(this.activationTimeout);\n }\n\n //EventsHandling\n protected onPointerDown(event: AdaptedEvent): void {\n if (!this.isButtonInConfig(event.button)) {\n return;\n }\n\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.tryBegin(event);\n this.checkBegan();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.tryBegin(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (this.tracker.getTrackedPointersCount() > this.maxPointers) {\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n } else {\n this.checkBegan();\n }\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n\n if (this.currentState === State.ACTIVE) {\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n }\n\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.resetProgress();\n this.fail();\n }\n }\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (\n !(\n this.currentState === State.ACTIVE &&\n this.tracker.getTrackedPointersCount() < this.minPointers\n )\n ) {\n this.checkBegan();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n\n this.checkBegan();\n\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.getShouldCancelWhenOutside()) {\n return;\n }\n\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n\n this.checkBegan();\n\n if (this.currentState === State.ACTIVE) {\n super.onPointerOutOfBounds(event);\n }\n }\n\n private shouldActivate(): boolean {\n const dx: number = this.getTranslationX();\n\n if (\n this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER &&\n dx < this.activeOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetXEnd !== Number.MIN_SAFE_INTEGER &&\n dx > this.activeOffsetXEnd\n ) {\n return true;\n }\n\n const dy: number = this.getTranslationY();\n\n if (\n this.activeOffsetYStart !== Number.MAX_SAFE_INTEGER &&\n dy < this.activeOffsetYStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetYEnd !== Number.MIN_SAFE_INTEGER &&\n dy > this.activeOffsetYEnd\n ) {\n return true;\n }\n\n const distanceSq: number = dx * dx + dy * dy;\n\n if (\n this.minDistSq !== Number.MAX_SAFE_INTEGER &&\n distanceSq >= this.minDistSq\n ) {\n return true;\n }\n\n const vx: number = this.velocityX;\n\n if (\n this.minVelocityX !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityX < 0 && vx <= this.minVelocityX) ||\n (this.minVelocityX >= 0 && this.minVelocityX <= vx))\n ) {\n return true;\n }\n\n const vy: number = this.velocityY;\n if (\n this.minVelocityY !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityY < 0 && vy <= this.minVelocityY) ||\n (this.minVelocityY >= 0 && this.minVelocityY <= vy))\n ) {\n return true;\n }\n\n const velocitySq: number = vx * vx + vy * vy;\n\n return (\n this.minVelocitySq !== Number.MAX_SAFE_INTEGER &&\n velocitySq >= this.minVelocitySq\n );\n }\n\n private shouldFail(): boolean {\n const dx: number = this.getTranslationX();\n const dy: number = this.getTranslationY();\n const distanceSq = dx * dx + dy * dy;\n\n if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) {\n this.clearActivationTimeout();\n return true;\n }\n\n if (\n this.failOffsetXStart !== Number.MIN_SAFE_INTEGER &&\n dx < this.failOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.failOffsetXEnd !== Number.MAX_SAFE_INTEGER &&\n dx > this.failOffsetXEnd\n ) {\n return true;\n }\n\n if (\n this.failOffsetYStart !== Number.MIN_SAFE_INTEGER &&\n dy < this.failOffsetYStart\n ) {\n return true;\n }\n\n return (\n this.failOffsetYEnd !== Number.MAX_SAFE_INTEGER &&\n dy > this.failOffsetYEnd\n );\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (\n this.currentState === State.UNDETERMINED &&\n this.tracker.getTrackedPointersCount() >= this.minPointers\n ) {\n this.resetProgress();\n this.offsetX = 0;\n this.offsetY = 0;\n this.velocityX = 0;\n this.velocityY = 0;\n\n this.begin();\n\n if (this.activateAfterLongPress > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.activateAfterLongPress);\n }\n } else {\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n }\n }\n\n private checkBegan(): void {\n if (this.currentState === State.BEGAN) {\n if (this.shouldFail()) {\n this.fail();\n } else if (this.shouldActivate()) {\n this.activate();\n }\n }\n }\n\n public activate(force = false): void {\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n\n super.activate(force);\n }\n\n protected onCancel(): void {\n this.clearActivationTimeout();\n }\n\n protected onReset(): void {\n this.clearActivationTimeout();\n }\n\n protected resetProgress(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n }\n}\n"]}
|
@@ -121,6 +121,10 @@ export default class TapGestureHandler extends GestureHandler {
|
|
121
121
|
|
122
122
|
|
123
123
|
onPointerDown(event) {
|
124
|
+
if (!this.isButtonInConfig(event.button)) {
|
125
|
+
return;
|
126
|
+
}
|
127
|
+
|
124
128
|
this.tracker.addToTracker(event);
|
125
129
|
super.onPointerDown(event);
|
126
130
|
this.trySettingPosition(event);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["TapGestureHandler.ts"],"names":["State","EventTypes","GestureHandler","DEFAULT_MAX_DURATION_MS","DEFAULT_MAX_DELAY_MS","DEFAULT_NUMBER_OF_TAPS","DEFAULT_MIN_NUMBER_OF_POINTERS","TapGestureHandler","Number","MIN_SAFE_INTEGER","init","ref","propsRef","updateGestureConfig","enabled","props","config","numberOfTaps","undefined","maxDurationMs","maxDelayMs","maxDeltaX","maxDeltaY","maxDist","maxDistSq","minPointers","minNumberOfPointers","resetConfig","clearTimeouts","clearTimeout","waitTimeout","delayTimeout","startTap","setTimeout","fail","endTap","tapsSoFar","currentMaxNumberOfPointers","activate","onPointerDown","event","tracker","addToTracker","trySettingPosition","startX","x","startY","y","lastX","lastY","updateState","onPointerAdd","offsetX","offsetY","getLastAvgX","getLastAvgY","onPointerUp","removeFromTracker","pointerId","onPointerRemove","onPointerMove","track","onPointerOutOfBounds","getTrackedPointersCount","shouldFail","currentState","UNDETERMINED","eventType","DOWN","begin","BEGAN","UP","dx","Math","abs","dy","distSq","end","onCancel","resetProgress"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config, EventTypes } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 500;\nconst DEFAULT_MAX_DELAY_MS = 500;\nconst DEFAULT_NUMBER_OF_TAPS = 1;\nconst DEFAULT_MIN_NUMBER_OF_POINTERS = 1;\n\nexport default class TapGestureHandler extends GestureHandler {\n private maxDeltaX = Number.MIN_SAFE_INTEGER;\n private maxDeltaY = Number.MIN_SAFE_INTEGER;\n private maxDistSq = Number.MIN_SAFE_INTEGER;\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private maxDelayMs = DEFAULT_MAX_DELAY_MS;\n\n private numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n private minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n private currentMaxNumberOfPointers = 1;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private waitTimeout: number | undefined;\n private delayTimeout: number | undefined;\n\n private tapsSoFar = 0;\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.numberOfTaps !== undefined) {\n this.numberOfTaps = this.config.numberOfTaps;\n }\n\n if (this.config.maxDurationMs !== undefined) {\n this.maxDurationMs = this.config.maxDurationMs;\n }\n\n if (this.config.maxDelayMs !== undefined) {\n this.maxDelayMs = this.config.maxDelayMs;\n }\n\n if (this.config.maxDeltaX !== undefined) {\n this.maxDeltaX = this.config.maxDeltaX;\n }\n\n if (this.config.maxDeltaY !== undefined) {\n this.maxDeltaY = this.config.maxDeltaY;\n }\n\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minNumberOfPointers = this.config.minPointers;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.maxDeltaX = Number.MIN_SAFE_INTEGER;\n this.maxDeltaY = Number.MIN_SAFE_INTEGER;\n this.maxDistSq = Number.MIN_SAFE_INTEGER;\n this.maxDurationMs = DEFAULT_MAX_DURATION_MS;\n this.maxDelayMs = DEFAULT_MAX_DELAY_MS;\n this.numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n this.minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n }\n\n private clearTimeouts(): void {\n clearTimeout(this.waitTimeout);\n clearTimeout(this.delayTimeout);\n }\n\n private startTap(): void {\n this.clearTimeouts();\n\n this.waitTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private endTap(): void {\n this.clearTimeouts();\n\n if (\n ++this.tapsSoFar === this.numberOfTaps &&\n this.currentMaxNumberOfPointers >= this.minNumberOfPointers\n ) {\n this.activate();\n } else {\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDelayMs);\n }\n }\n\n //Handling Events\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n\n this.trySettingPosition(event);\n\n this.startX = event.x;\n this.startY = event.y;\n\n this.lastX = event.x;\n this.lastY = event.y;\n\n this.updateState(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n super.onPointerAdd(event);\n this.tracker.addToTracker(event);\n this.trySettingPosition(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.tracker.getLastAvgX();\n this.startY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.tracker.removeFromTracker(event.pointerId);\n\n this.updateState(event);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY = this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n this.updateState(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.trySettingPosition(event);\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.trySettingPosition(event);\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n\n super.onPointerOutOfBounds(event);\n }\n\n private updateState(event: AdaptedEvent): void {\n if (\n this.currentMaxNumberOfPointers < this.tracker.getTrackedPointersCount()\n ) {\n this.currentMaxNumberOfPointers = this.tracker.getTrackedPointersCount();\n }\n\n if (this.shouldFail()) {\n this.fail();\n return;\n }\n\n switch (this.currentState) {\n case State.UNDETERMINED:\n if (event.eventType === EventTypes.DOWN) {\n this.begin();\n }\n this.startTap();\n break;\n case State.BEGAN:\n if (event.eventType === EventTypes.UP) {\n this.endTap();\n }\n if (event.eventType === EventTypes.DOWN) {\n this.startTap();\n }\n break;\n default:\n break;\n }\n }\n\n private trySettingPosition(event: AdaptedEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.offsetX = 0;\n this.offsetY = 0;\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private shouldFail(): boolean {\n const dx = this.lastX - this.startX + this.offsetX;\n\n if (\n this.maxDeltaX !== Number.MIN_SAFE_INTEGER &&\n Math.abs(dx) > this.maxDeltaX\n ) {\n return true;\n }\n\n const dy = this.lastY - this.startY + this.offsetY;\n if (\n this.maxDeltaY !== Number.MIN_SAFE_INTEGER &&\n Math.abs(dy) > this.maxDeltaY\n ) {\n return true;\n }\n\n const distSq = dy * dy + dx * dx;\n\n return (\n this.maxDistSq !== Number.MIN_SAFE_INTEGER && distSq > this.maxDistSq\n );\n }\n\n public activate(): void {\n super.activate();\n\n this.end();\n }\n\n protected onCancel(): void {\n this.resetProgress();\n this.clearTimeouts();\n }\n\n protected resetProgress(): void {\n this.clearTimeouts();\n this.tapsSoFar = 0;\n this.currentMaxNumberOfPointers = 0;\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["TapGestureHandler.ts"],"names":["State","EventTypes","GestureHandler","DEFAULT_MAX_DURATION_MS","DEFAULT_MAX_DELAY_MS","DEFAULT_NUMBER_OF_TAPS","DEFAULT_MIN_NUMBER_OF_POINTERS","TapGestureHandler","Number","MIN_SAFE_INTEGER","init","ref","propsRef","updateGestureConfig","enabled","props","config","numberOfTaps","undefined","maxDurationMs","maxDelayMs","maxDeltaX","maxDeltaY","maxDist","maxDistSq","minPointers","minNumberOfPointers","resetConfig","clearTimeouts","clearTimeout","waitTimeout","delayTimeout","startTap","setTimeout","fail","endTap","tapsSoFar","currentMaxNumberOfPointers","activate","onPointerDown","event","isButtonInConfig","button","tracker","addToTracker","trySettingPosition","startX","x","startY","y","lastX","lastY","updateState","onPointerAdd","offsetX","offsetY","getLastAvgX","getLastAvgY","onPointerUp","removeFromTracker","pointerId","onPointerRemove","onPointerMove","track","onPointerOutOfBounds","getTrackedPointersCount","shouldFail","currentState","UNDETERMINED","eventType","DOWN","begin","BEGAN","UP","dx","Math","abs","dy","distSq","end","onCancel","resetProgress"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config, EventTypes } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 500;\nconst DEFAULT_MAX_DELAY_MS = 500;\nconst DEFAULT_NUMBER_OF_TAPS = 1;\nconst DEFAULT_MIN_NUMBER_OF_POINTERS = 1;\n\nexport default class TapGestureHandler extends GestureHandler {\n private maxDeltaX = Number.MIN_SAFE_INTEGER;\n private maxDeltaY = Number.MIN_SAFE_INTEGER;\n private maxDistSq = Number.MIN_SAFE_INTEGER;\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private maxDelayMs = DEFAULT_MAX_DELAY_MS;\n\n private numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n private minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n private currentMaxNumberOfPointers = 1;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private waitTimeout: number | undefined;\n private delayTimeout: number | undefined;\n\n private tapsSoFar = 0;\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.numberOfTaps !== undefined) {\n this.numberOfTaps = this.config.numberOfTaps;\n }\n\n if (this.config.maxDurationMs !== undefined) {\n this.maxDurationMs = this.config.maxDurationMs;\n }\n\n if (this.config.maxDelayMs !== undefined) {\n this.maxDelayMs = this.config.maxDelayMs;\n }\n\n if (this.config.maxDeltaX !== undefined) {\n this.maxDeltaX = this.config.maxDeltaX;\n }\n\n if (this.config.maxDeltaY !== undefined) {\n this.maxDeltaY = this.config.maxDeltaY;\n }\n\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minNumberOfPointers = this.config.minPointers;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.maxDeltaX = Number.MIN_SAFE_INTEGER;\n this.maxDeltaY = Number.MIN_SAFE_INTEGER;\n this.maxDistSq = Number.MIN_SAFE_INTEGER;\n this.maxDurationMs = DEFAULT_MAX_DURATION_MS;\n this.maxDelayMs = DEFAULT_MAX_DELAY_MS;\n this.numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n this.minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n }\n\n private clearTimeouts(): void {\n clearTimeout(this.waitTimeout);\n clearTimeout(this.delayTimeout);\n }\n\n private startTap(): void {\n this.clearTimeouts();\n\n this.waitTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private endTap(): void {\n this.clearTimeouts();\n\n if (\n ++this.tapsSoFar === this.numberOfTaps &&\n this.currentMaxNumberOfPointers >= this.minNumberOfPointers\n ) {\n this.activate();\n } else {\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDelayMs);\n }\n }\n\n //Handling Events\n protected onPointerDown(event: AdaptedEvent): void {\n if (!this.isButtonInConfig(event.button)) {\n return;\n }\n\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n\n this.trySettingPosition(event);\n\n this.startX = event.x;\n this.startY = event.y;\n\n this.lastX = event.x;\n this.lastY = event.y;\n\n this.updateState(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n super.onPointerAdd(event);\n this.tracker.addToTracker(event);\n this.trySettingPosition(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.tracker.getLastAvgX();\n this.startY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.tracker.removeFromTracker(event.pointerId);\n\n this.updateState(event);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY = this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n this.updateState(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.trySettingPosition(event);\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.trySettingPosition(event);\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n\n super.onPointerOutOfBounds(event);\n }\n\n private updateState(event: AdaptedEvent): void {\n if (\n this.currentMaxNumberOfPointers < this.tracker.getTrackedPointersCount()\n ) {\n this.currentMaxNumberOfPointers = this.tracker.getTrackedPointersCount();\n }\n\n if (this.shouldFail()) {\n this.fail();\n return;\n }\n\n switch (this.currentState) {\n case State.UNDETERMINED:\n if (event.eventType === EventTypes.DOWN) {\n this.begin();\n }\n this.startTap();\n break;\n case State.BEGAN:\n if (event.eventType === EventTypes.UP) {\n this.endTap();\n }\n if (event.eventType === EventTypes.DOWN) {\n this.startTap();\n }\n break;\n default:\n break;\n }\n }\n\n private trySettingPosition(event: AdaptedEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.offsetX = 0;\n this.offsetY = 0;\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private shouldFail(): boolean {\n const dx = this.lastX - this.startX + this.offsetX;\n\n if (\n this.maxDeltaX !== Number.MIN_SAFE_INTEGER &&\n Math.abs(dx) > this.maxDeltaX\n ) {\n return true;\n }\n\n const dy = this.lastY - this.startY + this.offsetY;\n if (\n this.maxDeltaY !== Number.MIN_SAFE_INTEGER &&\n Math.abs(dy) > this.maxDeltaY\n ) {\n return true;\n }\n\n const distSq = dy * dy + dx * dx;\n\n return (\n this.maxDistSq !== Number.MIN_SAFE_INTEGER && distSq > this.maxDistSq\n );\n }\n\n public activate(): void {\n super.activate();\n\n this.end();\n }\n\n protected onCancel(): void {\n this.resetProgress();\n this.clearTimeouts();\n }\n\n protected resetProgress(): void {\n this.clearTimeouts();\n this.tapsSoFar = 0;\n this.currentMaxNumberOfPointers = 0;\n }\n}\n"]}
|
@@ -1,15 +1,13 @@
|
|
1
|
-
export let
|
1
|
+
export let MouseButton;
|
2
2
|
|
3
|
-
(function (
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
MouseButtons[MouseButtons["SCROLL_LEFT_RIGHT"] = 7] = "SCROLL_LEFT_RIGHT";
|
12
|
-
})(MouseButtons || (MouseButtons = {}));
|
3
|
+
(function (MouseButton) {
|
4
|
+
MouseButton[MouseButton["LEFT"] = 1] = "LEFT";
|
5
|
+
MouseButton[MouseButton["RIGHT"] = 2] = "RIGHT";
|
6
|
+
MouseButton[MouseButton["MIDDLE"] = 4] = "MIDDLE";
|
7
|
+
MouseButton[MouseButton["BUTTON_4"] = 8] = "BUTTON_4";
|
8
|
+
MouseButton[MouseButton["BUTTON_5"] = 16] = "BUTTON_5";
|
9
|
+
MouseButton[MouseButton["ALL"] = 31] = "ALL";
|
10
|
+
})(MouseButton || (MouseButton = {}));
|
13
11
|
|
14
12
|
export let EventTypes;
|
15
13
|
|
@@ -33,13 +31,4 @@ export let TouchEventType;
|
|
33
31
|
TouchEventType[TouchEventType["UP"] = 3] = "UP";
|
34
32
|
TouchEventType[TouchEventType["CANCELLED"] = 4] = "CANCELLED";
|
35
33
|
})(TouchEventType || (TouchEventType = {}));
|
36
|
-
|
37
|
-
export let PointerType;
|
38
|
-
|
39
|
-
(function (PointerType) {
|
40
|
-
PointerType["NONE"] = "none";
|
41
|
-
PointerType["MOUSE"] = "mouse";
|
42
|
-
PointerType["TOUCH"] = "touch";
|
43
|
-
PointerType["PEN"] = "pen";
|
44
|
-
})(PointerType || (PointerType = {}));
|
45
34
|
//# sourceMappingURL=interfaces.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["interfaces.ts"],"names":["
|
1
|
+
{"version":3,"sources":["interfaces.ts"],"names":["MouseButton","EventTypes","TouchEventType"],"mappings":"AAuIA,WAAYA,WAAZ;;WAAYA,W;AAAAA,EAAAA,W,CAAAA,W;AAAAA,EAAAA,W,CAAAA,W;AAAAA,EAAAA,W,CAAAA,W;AAAAA,EAAAA,W,CAAAA,W;AAAAA,EAAAA,W,CAAAA,W;AAAAA,EAAAA,W,CAAAA,W;GAAAA,W,KAAAA,W;;AASZ,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","sourcesContent":["import { UserSelect, ActiveCursor } from '../handlers/gestureHandlerCommon';\nimport { Directions } from '../Directions';\nimport { State } from '../State';\nimport { PointerType } from '../PointerType';\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 mouseButton?: MouseButton;\n enableContextMenu?: boolean;\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 pointerType: PointerType;\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 time: number;\n button?: MouseButton;\n allTouches?: TouchList;\n changedTouches?: TouchList;\n touchEventType?: TouchEventType;\n}\n\nexport enum MouseButton {\n LEFT = 1,\n RIGHT = 2,\n MIDDLE = 4,\n BUTTON_4 = 8,\n BUTTON_5 = 16,\n ALL = 31,\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"]}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
2
2
|
|
3
|
+
import { PointerType } from '../../PointerType';
|
3
4
|
import { State } from '../../State';
|
4
|
-
import { PointerType } from '../interfaces';
|
5
5
|
import PointerTracker from './PointerTracker';
|
6
6
|
export default class GestureHandlerOrchestrator {
|
7
7
|
// Private beacuse of Singleton
|
@@ -302,7 +302,7 @@ export default class GestureHandlerOrchestrator {
|
|
302
302
|
|
303
303
|
cancelMouseAndPenGestures(currentHandler) {
|
304
304
|
this.gestureHandlers.forEach(handler => {
|
305
|
-
if (handler.getPointerType() !== PointerType.MOUSE && handler.getPointerType() !== PointerType.
|
305
|
+
if (handler.getPointerType() !== PointerType.MOUSE && handler.getPointerType() !== PointerType.STYLUS) {
|
306
306
|
return;
|
307
307
|
}
|
308
308
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["GestureHandlerOrchestrator.ts"],"names":["State","PointerType","PointerTracker","GestureHandlerOrchestrator","constructor","scheduleFinishedHandlersCleanup","handlingChangeSemaphore","cleanupFinishedHandlers","cleanHandler","handler","reset","setActive","setAwaiting","setActivationIndex","Number","MAX_VALUE","removeHandlerFromOrchestrator","gestureHandlers","splice","indexOf","awaitingHandlers","i","length","isFinished","getState","isAwaiting","hasOtherHandlerToWaitFor","hasToWait","forEach","otherHandler","shouldHandlerWaitForOther","tryActivate","addAwaitingHandler","CANCELLED","FAILED","shouldActivate","makeActive","ACTIVE","fail","BEGAN","cancel","shouldHandlerBeCancelledBy","cleanupAwaitingHandlers","onHandlerStateChange","newState","oldState","sendIfDisabled","isEnabled","END","sendEvent","isActive","UNDETERMINED","currentState","setShouldResetProgress","activationIndex","alreadyExists","push","recordHandlerIfNotPresent","MAX_SAFE_INTEGER","shouldWaitForHandlerFailure","shouldRequireToWaitForFailure","canRunSimultaneously","gh1","gh2","shouldRecognizeSimultaneously","shouldBeCancelledByOther","handlerPointers","getTrackedPointersID","otherPointers","shareCommonPointers","getDelegate","getView","checkOverlap","overlap","pointer","handlerX","getTracker","getLastX","handlerY","getLastY","isPointerInBounds","x","y","otherX","otherY","state","cancelMouseAndPenGestures","currentHandler","getPointerType","MOUSE","PEN","resetTracker","getInstance","instance"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { PointerType } from '../interfaces';\n\nimport GestureHandler from '../handlers/GestureHandler';\nimport PointerTracker from './PointerTracker';\n\nexport default class GestureHandlerOrchestrator {\n private static instance: GestureHandlerOrchestrator;\n\n private gestureHandlers: GestureHandler[] = [];\n private awaitingHandlers: GestureHandler[] = [];\n\n private handlingChangeSemaphore = 0;\n private activationIndex = 0;\n\n // Private beacuse of Singleton\n // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function\n private constructor() {}\n\n private scheduleFinishedHandlersCleanup(): void {\n if (this.handlingChangeSemaphore === 0) {\n this.cleanupFinishedHandlers();\n }\n }\n\n private cleanHandler(handler: GestureHandler): void {\n handler.reset();\n handler.setActive(false);\n handler.setAwaiting(false);\n handler.setActivationIndex(Number.MAX_VALUE);\n }\n\n public removeHandlerFromOrchestrator(handler: GestureHandler): void {\n this.gestureHandlers.splice(this.gestureHandlers.indexOf(handler), 1);\n this.awaitingHandlers.splice(this.awaitingHandlers.indexOf(handler), 1);\n }\n\n private cleanupFinishedHandlers(): void {\n for (let i = this.gestureHandlers.length - 1; i >= 0; --i) {\n const handler = this.gestureHandlers[i];\n\n if (!handler) {\n continue;\n }\n if (this.isFinished(handler.getState()) && !handler.isAwaiting()) {\n this.gestureHandlers.splice(i, 1);\n\n this.cleanHandler(handler);\n }\n }\n }\n\n private hasOtherHandlerToWaitFor(handler: GestureHandler): boolean {\n let hasToWait = false;\n this.gestureHandlers.forEach((otherHandler) => {\n if (\n otherHandler &&\n !this.isFinished(otherHandler.getState()) &&\n this.shouldHandlerWaitForOther(handler, otherHandler)\n ) {\n hasToWait = true;\n return;\n }\n });\n\n return hasToWait;\n }\n\n private tryActivate(handler: GestureHandler): void {\n if (this.hasOtherHandlerToWaitFor(handler)) {\n this.addAwaitingHandler(handler);\n } else if (\n handler.getState() !== State.CANCELLED &&\n handler.getState() !== State.FAILED\n ) {\n if (this.shouldActivate(handler)) {\n this.makeActive(handler);\n } else {\n switch (handler.getState()) {\n case State.ACTIVE:\n handler.fail();\n break;\n case State.BEGAN:\n handler.cancel();\n }\n }\n }\n }\n\n private shouldActivate(handler: GestureHandler): boolean {\n for (const otherHandler of this.gestureHandlers) {\n if (this.shouldHandlerBeCancelledBy(handler, otherHandler)) {\n return false;\n }\n }\n\n return true;\n }\n\n private cleanupAwaitingHandlers(handler: GestureHandler): void {\n for (let i = 0; i < this.awaitingHandlers.length; ++i) {\n if (\n !this.awaitingHandlers[i].isAwaiting() &&\n this.shouldHandlerWaitForOther(this.awaitingHandlers[i], handler)\n ) {\n this.cleanHandler(this.awaitingHandlers[i]);\n this.awaitingHandlers.splice(i, 1);\n }\n }\n }\n\n public onHandlerStateChange(\n handler: GestureHandler,\n newState: State,\n oldState: State,\n sendIfDisabled?: boolean\n ): void {\n if (!handler.isEnabled() && !sendIfDisabled) {\n return;\n }\n\n this.handlingChangeSemaphore += 1;\n\n if (this.isFinished(newState)) {\n this.awaitingHandlers.forEach((otherHandler) => {\n if (this.shouldHandlerWaitForOther(otherHandler, handler)) {\n if (newState === State.END) {\n otherHandler?.cancel();\n if (otherHandler.getState() === State.END) {\n // Handle edge case, where discrete gestures end immediately after activation thus\n // their state is set to END and when the gesture they are waiting for activates they\n // should be cancelled, however `cancel` was never sent as gestures were already in the END state.\n // Send synthetic BEGAN -> CANCELLED to properly handle JS logic\n otherHandler.sendEvent(State.CANCELLED, State.BEGAN);\n }\n otherHandler?.setAwaiting(false);\n } else {\n this.tryActivate(otherHandler);\n }\n }\n });\n }\n\n if (newState === State.ACTIVE) {\n this.tryActivate(handler);\n } else if (oldState === State.ACTIVE || oldState === State.END) {\n if (handler.isActive()) {\n handler.sendEvent(newState, oldState);\n } else if (\n oldState === State.ACTIVE &&\n (newState === State.CANCELLED || newState === State.FAILED)\n ) {\n handler.sendEvent(newState, State.BEGAN);\n }\n } else if (\n oldState !== State.UNDETERMINED ||\n newState !== State.CANCELLED\n ) {\n handler.sendEvent(newState, oldState);\n }\n\n this.handlingChangeSemaphore -= 1;\n\n this.scheduleFinishedHandlersCleanup();\n\n if (this.awaitingHandlers.indexOf(handler) < 0) {\n this.cleanupAwaitingHandlers(handler);\n }\n }\n\n private makeActive(handler: GestureHandler): void {\n const currentState = handler.getState();\n\n handler.setActive(true);\n handler.setShouldResetProgress(true);\n handler.setActivationIndex(this.activationIndex++);\n\n for (let i = this.gestureHandlers.length - 1; i >= 0; --i) {\n if (this.shouldHandlerBeCancelledBy(this.gestureHandlers[i], handler)) {\n this.gestureHandlers[i].cancel();\n }\n }\n\n this.awaitingHandlers.forEach((otherHandler) => {\n if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) {\n otherHandler?.cancel();\n otherHandler?.setAwaiting(true);\n }\n });\n\n handler.sendEvent(State.ACTIVE, State.BEGAN);\n\n if (currentState !== State.ACTIVE) {\n handler.sendEvent(State.END, State.ACTIVE);\n if (currentState !== State.END) {\n handler.sendEvent(State.UNDETERMINED, State.END);\n }\n }\n\n if (handler.isAwaiting()) {\n handler.setAwaiting(false);\n for (let i = 0; i < this.awaitingHandlers.length; ++i) {\n if (this.awaitingHandlers[i] === handler) {\n this.awaitingHandlers.splice(i, 1);\n }\n }\n }\n }\n\n private addAwaitingHandler(handler: GestureHandler): void {\n let alreadyExists = false;\n\n this.awaitingHandlers.forEach((otherHandler) => {\n if (otherHandler === handler) {\n alreadyExists = true;\n return;\n }\n });\n\n if (alreadyExists) {\n return;\n }\n\n this.awaitingHandlers.push(handler);\n\n handler.setAwaiting(true);\n handler.setActivationIndex(this.activationIndex++);\n }\n\n public recordHandlerIfNotPresent(handler: GestureHandler): void {\n let alreadyExists = false;\n\n this.gestureHandlers.forEach((otherHandler) => {\n if (otherHandler === handler) {\n alreadyExists = true;\n return;\n }\n });\n\n if (alreadyExists) {\n return;\n }\n\n this.gestureHandlers.push(handler);\n\n handler.setActive(false);\n handler.setAwaiting(false);\n handler.setActivationIndex(Number.MAX_SAFE_INTEGER);\n }\n\n private shouldHandlerWaitForOther(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n return (\n handler !== otherHandler &&\n (handler.shouldWaitForHandlerFailure(otherHandler) ||\n otherHandler.shouldRequireToWaitForFailure(handler))\n );\n }\n\n private canRunSimultaneously(\n gh1: GestureHandler,\n gh2: GestureHandler\n ): boolean {\n return (\n gh1 === gh2 ||\n gh1.shouldRecognizeSimultaneously(gh2) ||\n gh2.shouldRecognizeSimultaneously(gh1)\n );\n }\n\n private shouldHandlerBeCancelledBy(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n if (this.canRunSimultaneously(handler, otherHandler)) {\n return false;\n }\n\n if (\n handler !== otherHandler &&\n (handler.isAwaiting() || handler.getState() === State.ACTIVE)\n ) {\n // For now it always returns false\n return handler.shouldBeCancelledByOther(otherHandler);\n }\n\n const handlerPointers: number[] = handler.getTrackedPointersID();\n const otherPointers: number[] = otherHandler.getTrackedPointersID();\n\n if (\n !PointerTracker.shareCommonPointers(handlerPointers, otherPointers) &&\n handler.getDelegate().getView() !== otherHandler.getDelegate().getView()\n ) {\n return this.checkOverlap(handler, otherHandler);\n }\n\n return true;\n }\n\n private checkOverlap(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n // If handlers don't have common pointers, default return value is false.\n // However, if at least on pointer overlaps with both handlers, we return true\n // This solves issue in overlapping parents example\n\n // TODO: Find better way to handle that issue, for example by activation order and handler cancelling\n\n const handlerPointers: number[] = handler.getTrackedPointersID();\n const otherPointers: number[] = otherHandler.getTrackedPointersID();\n\n let overlap = false;\n\n handlerPointers.forEach((pointer: number) => {\n const handlerX: number = handler.getTracker().getLastX(pointer);\n const handlerY: number = handler.getTracker().getLastY(pointer);\n\n if (\n handler.getDelegate().isPointerInBounds({ x: handlerX, y: handlerY }) &&\n otherHandler\n .getDelegate()\n .isPointerInBounds({ x: handlerX, y: handlerY })\n ) {\n overlap = true;\n }\n });\n\n otherPointers.forEach((pointer: number) => {\n const otherX: number = otherHandler.getTracker().getLastX(pointer);\n const otherY: number = otherHandler.getTracker().getLastY(pointer);\n\n if (\n handler.getDelegate().isPointerInBounds({ x: otherX, y: otherY }) &&\n otherHandler.getDelegate().isPointerInBounds({ x: otherX, y: otherY })\n ) {\n overlap = true;\n }\n });\n\n return overlap;\n }\n\n private isFinished(state: State): boolean {\n return (\n state === State.END || state === State.FAILED || state === State.CANCELLED\n );\n }\n\n // This function is called when handler receives touchdown event\n // If handler is using mouse or pen as a pointer and any handler receives touch event,\n // mouse/pen event dissappears - it doesn't send onPointerCancel nor onPointerUp (and others)\n // This became a problem because handler was left at active state without any signal to end or fail\n // To handle this, when new touch event is received, we loop through active handlers and check which type of\n // pointer they're using. If there are any handler with mouse/pen as a pointer, we cancel them\n public cancelMouseAndPenGestures(currentHandler: GestureHandler): void {\n this.gestureHandlers.forEach((handler: GestureHandler) => {\n if (\n handler.getPointerType() !== PointerType.MOUSE &&\n handler.getPointerType() !== PointerType.PEN\n ) {\n return;\n }\n\n if (handler !== currentHandler) {\n handler.cancel();\n } else {\n // Handler that received touch event should have its pointer tracker reset\n // This allows handler to smoothly change from mouse/pen to touch\n // The drawback is, that when we try to use mouse/pen one more time, it doesn't send onPointerDown at the first time\n // so it is required to click two times to get handler to work\n //\n // However, handler will receive manually created onPointerEnter that is triggered in EventManager in onPointerMove method.\n // There may be possibility to use that fact to make handler respond properly to first mouse click\n handler.getTracker().resetTracker();\n }\n });\n }\n\n public static getInstance(): GestureHandlerOrchestrator {\n if (!GestureHandlerOrchestrator.instance) {\n GestureHandlerOrchestrator.instance = new GestureHandlerOrchestrator();\n }\n\n return GestureHandlerOrchestrator.instance;\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["GestureHandlerOrchestrator.ts"],"names":["PointerType","State","PointerTracker","GestureHandlerOrchestrator","constructor","scheduleFinishedHandlersCleanup","handlingChangeSemaphore","cleanupFinishedHandlers","cleanHandler","handler","reset","setActive","setAwaiting","setActivationIndex","Number","MAX_VALUE","removeHandlerFromOrchestrator","gestureHandlers","splice","indexOf","awaitingHandlers","i","length","isFinished","getState","isAwaiting","hasOtherHandlerToWaitFor","hasToWait","forEach","otherHandler","shouldHandlerWaitForOther","tryActivate","addAwaitingHandler","CANCELLED","FAILED","shouldActivate","makeActive","ACTIVE","fail","BEGAN","cancel","shouldHandlerBeCancelledBy","cleanupAwaitingHandlers","onHandlerStateChange","newState","oldState","sendIfDisabled","isEnabled","END","sendEvent","isActive","UNDETERMINED","currentState","setShouldResetProgress","activationIndex","alreadyExists","push","recordHandlerIfNotPresent","MAX_SAFE_INTEGER","shouldWaitForHandlerFailure","shouldRequireToWaitForFailure","canRunSimultaneously","gh1","gh2","shouldRecognizeSimultaneously","shouldBeCancelledByOther","handlerPointers","getTrackedPointersID","otherPointers","shareCommonPointers","getDelegate","getView","checkOverlap","overlap","pointer","handlerX","getTracker","getLastX","handlerY","getLastY","isPointerInBounds","x","y","otherX","otherY","state","cancelMouseAndPenGestures","currentHandler","getPointerType","MOUSE","STYLUS","resetTracker","getInstance","instance"],"mappings":"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","sourcesContent":["import { PointerType } from '../../PointerType';\nimport { State } from '../../State';\n\nimport GestureHandler from '../handlers/GestureHandler';\nimport PointerTracker from './PointerTracker';\n\nexport default class GestureHandlerOrchestrator {\n private static instance: GestureHandlerOrchestrator;\n\n private gestureHandlers: GestureHandler[] = [];\n private awaitingHandlers: GestureHandler[] = [];\n\n private handlingChangeSemaphore = 0;\n private activationIndex = 0;\n\n // Private beacuse of Singleton\n // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function\n private constructor() {}\n\n private scheduleFinishedHandlersCleanup(): void {\n if (this.handlingChangeSemaphore === 0) {\n this.cleanupFinishedHandlers();\n }\n }\n\n private cleanHandler(handler: GestureHandler): void {\n handler.reset();\n handler.setActive(false);\n handler.setAwaiting(false);\n handler.setActivationIndex(Number.MAX_VALUE);\n }\n\n public removeHandlerFromOrchestrator(handler: GestureHandler): void {\n this.gestureHandlers.splice(this.gestureHandlers.indexOf(handler), 1);\n this.awaitingHandlers.splice(this.awaitingHandlers.indexOf(handler), 1);\n }\n\n private cleanupFinishedHandlers(): void {\n for (let i = this.gestureHandlers.length - 1; i >= 0; --i) {\n const handler = this.gestureHandlers[i];\n\n if (!handler) {\n continue;\n }\n if (this.isFinished(handler.getState()) && !handler.isAwaiting()) {\n this.gestureHandlers.splice(i, 1);\n\n this.cleanHandler(handler);\n }\n }\n }\n\n private hasOtherHandlerToWaitFor(handler: GestureHandler): boolean {\n let hasToWait = false;\n this.gestureHandlers.forEach((otherHandler) => {\n if (\n otherHandler &&\n !this.isFinished(otherHandler.getState()) &&\n this.shouldHandlerWaitForOther(handler, otherHandler)\n ) {\n hasToWait = true;\n return;\n }\n });\n\n return hasToWait;\n }\n\n private tryActivate(handler: GestureHandler): void {\n if (this.hasOtherHandlerToWaitFor(handler)) {\n this.addAwaitingHandler(handler);\n } else if (\n handler.getState() !== State.CANCELLED &&\n handler.getState() !== State.FAILED\n ) {\n if (this.shouldActivate(handler)) {\n this.makeActive(handler);\n } else {\n switch (handler.getState()) {\n case State.ACTIVE:\n handler.fail();\n break;\n case State.BEGAN:\n handler.cancel();\n }\n }\n }\n }\n\n private shouldActivate(handler: GestureHandler): boolean {\n for (const otherHandler of this.gestureHandlers) {\n if (this.shouldHandlerBeCancelledBy(handler, otherHandler)) {\n return false;\n }\n }\n\n return true;\n }\n\n private cleanupAwaitingHandlers(handler: GestureHandler): void {\n for (let i = 0; i < this.awaitingHandlers.length; ++i) {\n if (\n !this.awaitingHandlers[i].isAwaiting() &&\n this.shouldHandlerWaitForOther(this.awaitingHandlers[i], handler)\n ) {\n this.cleanHandler(this.awaitingHandlers[i]);\n this.awaitingHandlers.splice(i, 1);\n }\n }\n }\n\n public onHandlerStateChange(\n handler: GestureHandler,\n newState: State,\n oldState: State,\n sendIfDisabled?: boolean\n ): void {\n if (!handler.isEnabled() && !sendIfDisabled) {\n return;\n }\n\n this.handlingChangeSemaphore += 1;\n\n if (this.isFinished(newState)) {\n this.awaitingHandlers.forEach((otherHandler) => {\n if (this.shouldHandlerWaitForOther(otherHandler, handler)) {\n if (newState === State.END) {\n otherHandler?.cancel();\n if (otherHandler.getState() === State.END) {\n // Handle edge case, where discrete gestures end immediately after activation thus\n // their state is set to END and when the gesture they are waiting for activates they\n // should be cancelled, however `cancel` was never sent as gestures were already in the END state.\n // Send synthetic BEGAN -> CANCELLED to properly handle JS logic\n otherHandler.sendEvent(State.CANCELLED, State.BEGAN);\n }\n otherHandler?.setAwaiting(false);\n } else {\n this.tryActivate(otherHandler);\n }\n }\n });\n }\n\n if (newState === State.ACTIVE) {\n this.tryActivate(handler);\n } else if (oldState === State.ACTIVE || oldState === State.END) {\n if (handler.isActive()) {\n handler.sendEvent(newState, oldState);\n } else if (\n oldState === State.ACTIVE &&\n (newState === State.CANCELLED || newState === State.FAILED)\n ) {\n handler.sendEvent(newState, State.BEGAN);\n }\n } else if (\n oldState !== State.UNDETERMINED ||\n newState !== State.CANCELLED\n ) {\n handler.sendEvent(newState, oldState);\n }\n\n this.handlingChangeSemaphore -= 1;\n\n this.scheduleFinishedHandlersCleanup();\n\n if (this.awaitingHandlers.indexOf(handler) < 0) {\n this.cleanupAwaitingHandlers(handler);\n }\n }\n\n private makeActive(handler: GestureHandler): void {\n const currentState = handler.getState();\n\n handler.setActive(true);\n handler.setShouldResetProgress(true);\n handler.setActivationIndex(this.activationIndex++);\n\n for (let i = this.gestureHandlers.length - 1; i >= 0; --i) {\n if (this.shouldHandlerBeCancelledBy(this.gestureHandlers[i], handler)) {\n this.gestureHandlers[i].cancel();\n }\n }\n\n this.awaitingHandlers.forEach((otherHandler) => {\n if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) {\n otherHandler?.cancel();\n otherHandler?.setAwaiting(true);\n }\n });\n\n handler.sendEvent(State.ACTIVE, State.BEGAN);\n\n if (currentState !== State.ACTIVE) {\n handler.sendEvent(State.END, State.ACTIVE);\n if (currentState !== State.END) {\n handler.sendEvent(State.UNDETERMINED, State.END);\n }\n }\n\n if (handler.isAwaiting()) {\n handler.setAwaiting(false);\n for (let i = 0; i < this.awaitingHandlers.length; ++i) {\n if (this.awaitingHandlers[i] === handler) {\n this.awaitingHandlers.splice(i, 1);\n }\n }\n }\n }\n\n private addAwaitingHandler(handler: GestureHandler): void {\n let alreadyExists = false;\n\n this.awaitingHandlers.forEach((otherHandler) => {\n if (otherHandler === handler) {\n alreadyExists = true;\n return;\n }\n });\n\n if (alreadyExists) {\n return;\n }\n\n this.awaitingHandlers.push(handler);\n\n handler.setAwaiting(true);\n handler.setActivationIndex(this.activationIndex++);\n }\n\n public recordHandlerIfNotPresent(handler: GestureHandler): void {\n let alreadyExists = false;\n\n this.gestureHandlers.forEach((otherHandler) => {\n if (otherHandler === handler) {\n alreadyExists = true;\n return;\n }\n });\n\n if (alreadyExists) {\n return;\n }\n\n this.gestureHandlers.push(handler);\n\n handler.setActive(false);\n handler.setAwaiting(false);\n handler.setActivationIndex(Number.MAX_SAFE_INTEGER);\n }\n\n private shouldHandlerWaitForOther(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n return (\n handler !== otherHandler &&\n (handler.shouldWaitForHandlerFailure(otherHandler) ||\n otherHandler.shouldRequireToWaitForFailure(handler))\n );\n }\n\n private canRunSimultaneously(\n gh1: GestureHandler,\n gh2: GestureHandler\n ): boolean {\n return (\n gh1 === gh2 ||\n gh1.shouldRecognizeSimultaneously(gh2) ||\n gh2.shouldRecognizeSimultaneously(gh1)\n );\n }\n\n private shouldHandlerBeCancelledBy(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n if (this.canRunSimultaneously(handler, otherHandler)) {\n return false;\n }\n\n if (\n handler !== otherHandler &&\n (handler.isAwaiting() || handler.getState() === State.ACTIVE)\n ) {\n // For now it always returns false\n return handler.shouldBeCancelledByOther(otherHandler);\n }\n\n const handlerPointers: number[] = handler.getTrackedPointersID();\n const otherPointers: number[] = otherHandler.getTrackedPointersID();\n\n if (\n !PointerTracker.shareCommonPointers(handlerPointers, otherPointers) &&\n handler.getDelegate().getView() !== otherHandler.getDelegate().getView()\n ) {\n return this.checkOverlap(handler, otherHandler);\n }\n\n return true;\n }\n\n private checkOverlap(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n // If handlers don't have common pointers, default return value is false.\n // However, if at least on pointer overlaps with both handlers, we return true\n // This solves issue in overlapping parents example\n\n // TODO: Find better way to handle that issue, for example by activation order and handler cancelling\n\n const handlerPointers: number[] = handler.getTrackedPointersID();\n const otherPointers: number[] = otherHandler.getTrackedPointersID();\n\n let overlap = false;\n\n handlerPointers.forEach((pointer: number) => {\n const handlerX: number = handler.getTracker().getLastX(pointer);\n const handlerY: number = handler.getTracker().getLastY(pointer);\n\n if (\n handler.getDelegate().isPointerInBounds({ x: handlerX, y: handlerY }) &&\n otherHandler\n .getDelegate()\n .isPointerInBounds({ x: handlerX, y: handlerY })\n ) {\n overlap = true;\n }\n });\n\n otherPointers.forEach((pointer: number) => {\n const otherX: number = otherHandler.getTracker().getLastX(pointer);\n const otherY: number = otherHandler.getTracker().getLastY(pointer);\n\n if (\n handler.getDelegate().isPointerInBounds({ x: otherX, y: otherY }) &&\n otherHandler.getDelegate().isPointerInBounds({ x: otherX, y: otherY })\n ) {\n overlap = true;\n }\n });\n\n return overlap;\n }\n\n private isFinished(state: State): boolean {\n return (\n state === State.END || state === State.FAILED || state === State.CANCELLED\n );\n }\n\n // This function is called when handler receives touchdown event\n // If handler is using mouse or pen as a pointer and any handler receives touch event,\n // mouse/pen event dissappears - it doesn't send onPointerCancel nor onPointerUp (and others)\n // This became a problem because handler was left at active state without any signal to end or fail\n // To handle this, when new touch event is received, we loop through active handlers and check which type of\n // pointer they're using. If there are any handler with mouse/pen as a pointer, we cancel them\n public cancelMouseAndPenGestures(currentHandler: GestureHandler): void {\n this.gestureHandlers.forEach((handler: GestureHandler) => {\n if (\n handler.getPointerType() !== PointerType.MOUSE &&\n handler.getPointerType() !== PointerType.STYLUS\n ) {\n return;\n }\n\n if (handler !== currentHandler) {\n handler.cancel();\n } else {\n // Handler that received touch event should have its pointer tracker reset\n // This allows handler to smoothly change from mouse/pen to touch\n // The drawback is, that when we try to use mouse/pen one more time, it doesn't send onPointerDown at the first time\n // so it is required to click two times to get handler to work\n //\n // However, handler will receive manually created onPointerEnter that is triggered in EventManager in onPointerMove method.\n // There may be possibility to use that fact to make handler respond properly to first mouse click\n handler.getTracker().resetTracker();\n }\n });\n }\n\n public static getInstance(): GestureHandlerOrchestrator {\n if (!GestureHandlerOrchestrator.instance) {\n GestureHandlerOrchestrator.instance = new GestureHandlerOrchestrator();\n }\n\n return GestureHandlerOrchestrator.instance;\n }\n}\n"]}
|
@@ -5,6 +5,7 @@ import PointerEventManager from './PointerEventManager';
|
|
5
5
|
import TouchEventManager from './TouchEventManager';
|
6
6
|
import { State } from '../../State';
|
7
7
|
import { isPointerInBounds } from '../utils';
|
8
|
+
import { MouseButton } from '../interfaces';
|
8
9
|
export class GestureHandlerWebDelegate {
|
9
10
|
constructor() {
|
10
11
|
_defineProperty(this, "view", void 0);
|
@@ -29,6 +30,7 @@ export class GestureHandlerWebDelegate {
|
|
29
30
|
|
30
31
|
this.view.style['WebkitTouchCallout'] = 'none';
|
31
32
|
const config = handler.getConfig();
|
33
|
+
this.addContextMenuListeners(config);
|
32
34
|
|
33
35
|
if (!config.userSelect) {
|
34
36
|
this.view.style['webkitUserSelect'] = 'none';
|
@@ -75,6 +77,34 @@ export class GestureHandlerWebDelegate {
|
|
75
77
|
}
|
76
78
|
}
|
77
79
|
|
80
|
+
shouldDisableContextMenu(config) {
|
81
|
+
return config.enableContextMenu === undefined && this.gestureHandler.isButtonInConfig(MouseButton.RIGHT) || config.enableContextMenu === false;
|
82
|
+
}
|
83
|
+
|
84
|
+
addContextMenuListeners(config) {
|
85
|
+
if (this.shouldDisableContextMenu(config)) {
|
86
|
+
this.view.addEventListener('contextmenu', this.disableContextMenu);
|
87
|
+
} else if (config.enableContextMenu) {
|
88
|
+
this.view.addEventListener('contextmenu', this.enableContextMenu);
|
89
|
+
}
|
90
|
+
}
|
91
|
+
|
92
|
+
removeContextMenuListeners(config) {
|
93
|
+
if (this.shouldDisableContextMenu(config)) {
|
94
|
+
this.view.removeEventListener('contextmenu', this.disableContextMenu);
|
95
|
+
} else if (config.enableContextMenu) {
|
96
|
+
this.view.removeEventListener('contextmenu', this.enableContextMenu);
|
97
|
+
}
|
98
|
+
}
|
99
|
+
|
100
|
+
disableContextMenu(e) {
|
101
|
+
e.preventDefault();
|
102
|
+
}
|
103
|
+
|
104
|
+
enableContextMenu(e) {
|
105
|
+
e.stopPropagation();
|
106
|
+
}
|
107
|
+
|
78
108
|
onBegin() {// no-op for now
|
79
109
|
}
|
80
110
|
|
@@ -98,5 +128,9 @@ export class GestureHandlerWebDelegate {
|
|
98
128
|
this.tryResetCursor();
|
99
129
|
}
|
100
130
|
|
131
|
+
destroy(config) {
|
132
|
+
this.removeContextMenuListeners(config);
|
133
|
+
}
|
134
|
+
|
101
135
|
}
|
102
136
|
//# sourceMappingURL=GestureHandlerWebDelegate.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["GestureHandlerWebDelegate.ts"],"names":["findNodeHandle","PointerEventManager","TouchEventManager","State","isPointerInBounds","GestureHandlerWebDelegate","getView","view","init","viewRef","handler","Error","getTag","gestureHandler","style","config","getConfig","userSelect","eventManagers","push","forEach","manager","attachEventManager","x","y","measureView","rect","getBoundingClientRect","pageX","left","pageY","top","width","height","reset","resetManager","tryResetCursor","activeCursor","getState","ACTIVE","cursor","onBegin","onActivate","onEnd","onCancel","onFail"],"mappings":";;AAAA,SAASA,cAAT,QAA+B,cAA/B;AAMA,OAAOC,mBAAP,MAAgC,uBAAhC;AACA,OAAOC,iBAAP,MAA8B,qBAA9B;AACA,SAASC,KAAT,QAAsB,aAAtB;AACA,SAASC,iBAAT,QAAkC,UAAlC;
|
1
|
+
{"version":3,"sources":["GestureHandlerWebDelegate.ts"],"names":["findNodeHandle","PointerEventManager","TouchEventManager","State","isPointerInBounds","MouseButton","GestureHandlerWebDelegate","getView","view","init","viewRef","handler","Error","getTag","gestureHandler","style","config","getConfig","addContextMenuListeners","userSelect","eventManagers","push","forEach","manager","attachEventManager","x","y","measureView","rect","getBoundingClientRect","pageX","left","pageY","top","width","height","reset","resetManager","tryResetCursor","activeCursor","getState","ACTIVE","cursor","shouldDisableContextMenu","enableContextMenu","undefined","isButtonInConfig","RIGHT","addEventListener","disableContextMenu","removeContextMenuListeners","removeEventListener","e","preventDefault","stopPropagation","onBegin","onActivate","onEnd","onCancel","onFail","destroy"],"mappings":"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","sourcesContent":["import { findNodeHandle } from 'react-native';\nimport type GestureHandler from '../handlers/GestureHandler';\nimport {\n GestureHandlerDelegate,\n MeasureResult,\n} from './GestureHandlerDelegate';\nimport PointerEventManager from './PointerEventManager';\nimport TouchEventManager from './TouchEventManager';\nimport { State } from '../../State';\nimport { isPointerInBounds } from '../utils';\nimport EventManager from './EventManager';\nimport { Config, MouseButton } from '../interfaces';\n\nexport class GestureHandlerWebDelegate\n implements GestureHandlerDelegate<HTMLElement>\n{\n private view!: HTMLElement;\n private gestureHandler!: GestureHandler;\n private eventManagers: EventManager<unknown>[] = [];\n\n getView(): HTMLElement {\n return this.view;\n }\n\n init(viewRef: number, handler: GestureHandler): void {\n if (!viewRef) {\n throw new Error(\n `Cannot find HTML Element for handler ${handler.getTag()}`\n );\n }\n\n this.gestureHandler = handler;\n this.view = findNodeHandle(viewRef) as unknown as HTMLElement;\n\n this.view.style['touchAction'] = 'none';\n //@ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = 'none';\n\n const config = handler.getConfig();\n\n this.addContextMenuListeners(config);\n\n if (!config.userSelect) {\n this.view.style['webkitUserSelect'] = 'none';\n this.view.style['userSelect'] = 'none';\n } else {\n this.view.style['webkitUserSelect'] = config.userSelect;\n this.view.style['userSelect'] = config.userSelect;\n }\n\n this.eventManagers.push(new PointerEventManager(this.view));\n this.eventManagers.push(new TouchEventManager(this.view));\n\n this.eventManagers.forEach((manager) =>\n this.gestureHandler.attachEventManager(manager)\n );\n }\n\n isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n return isPointerInBounds(this.view, { x, y });\n }\n\n measureView(): MeasureResult {\n const rect = this.view.getBoundingClientRect();\n\n return {\n pageX: rect.left,\n pageY: rect.top,\n width: rect.width,\n height: rect.height,\n };\n }\n\n reset(): void {\n this.eventManagers.forEach((manager: EventManager<unknown>) =>\n manager.resetManager()\n );\n }\n\n tryResetCursor() {\n const config = this.gestureHandler.getConfig();\n\n if (\n config.activeCursor &&\n config.activeCursor !== 'auto' &&\n this.gestureHandler.getState() === State.ACTIVE\n ) {\n this.view.style.cursor = 'auto';\n }\n }\n\n private shouldDisableContextMenu(config: Config) {\n return (\n (config.enableContextMenu === undefined &&\n this.gestureHandler.isButtonInConfig(MouseButton.RIGHT)) ||\n config.enableContextMenu === false\n );\n }\n\n private addContextMenuListeners(config: Config): void {\n if (this.shouldDisableContextMenu(config)) {\n this.view.addEventListener('contextmenu', this.disableContextMenu);\n } else if (config.enableContextMenu) {\n this.view.addEventListener('contextmenu', this.enableContextMenu);\n }\n }\n\n private removeContextMenuListeners(config: Config): void {\n if (this.shouldDisableContextMenu(config)) {\n this.view.removeEventListener('contextmenu', this.disableContextMenu);\n } else if (config.enableContextMenu) {\n this.view.removeEventListener('contextmenu', this.enableContextMenu);\n }\n }\n\n private disableContextMenu(this: void, e: MouseEvent): void {\n e.preventDefault();\n }\n\n private enableContextMenu(this: void, e: MouseEvent): void {\n e.stopPropagation();\n }\n\n onBegin(): void {\n // no-op for now\n }\n\n onActivate(): void {\n const config = this.gestureHandler.getConfig();\n\n if (\n (!this.view.style.cursor || this.view.style.cursor === 'auto') &&\n config.activeCursor\n ) {\n this.view.style.cursor = config.activeCursor;\n }\n }\n\n onEnd(): void {\n this.tryResetCursor();\n }\n\n onCancel(): void {\n this.tryResetCursor();\n }\n\n onFail(): void {\n this.tryResetCursor();\n }\n\n public destroy(config: Config): void {\n this.removeContextMenuListeners(config);\n }\n}\n"]}
|
@@ -12,7 +12,7 @@ export default class NodeManager {
|
|
12
12
|
|
13
13
|
static createGestureHandler(handlerTag, handler) {
|
14
14
|
if (handlerTag in this.gestures) {
|
15
|
-
throw new Error(`Handler with tag ${handlerTag} already exists
|
15
|
+
throw new Error(`Handler with tag ${handlerTag} already exists. Please ensure that no Gesture instance is used across multiple GestureDetectors.`);
|
16
16
|
}
|
17
17
|
|
18
18
|
this.gestures[handlerTag] = handler;
|
@@ -22,8 +22,9 @@ export default class NodeManager {
|
|
22
22
|
static dropGestureHandler(handlerTag) {
|
23
23
|
if (!(handlerTag in this.gestures)) {
|
24
24
|
return;
|
25
|
-
}
|
25
|
+
}
|
26
26
|
|
27
|
+
this.gestures[handlerTag].onDestroy(); // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
27
28
|
|
28
29
|
delete this.gestures[handlerTag];
|
29
30
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["NodeManager.ts"],"names":["NodeManager","getHandler","tag","gestures","Error","createGestureHandler","handlerTag","handler","setTag","dropGestureHandler","getNodes"],"mappings":";;AAGA;AACA,eAAe,MAAeA,WAAf,CAA2B;AAMhB,SAAVC,UAAU,CAACC,GAAD,EAAc;AACpC,QAAIA,GAAG,IAAI,KAAKC,QAAhB,EAA0B;AACxB,aAAO,KAAKA,QAAL,CAAcD,GAAd,CAAP;AACD;;AAED,UAAM,IAAIE,KAAJ,CAAW,sBAAqBF,GAAI,EAApC,CAAN;AACD;;AAEiC,SAApBG,oBAAoB,CAChCC,UADgC,EAEhCC,OAFgC,EAG1B;AACN,QAAID,UAAU,IAAI,KAAKH,QAAvB,EAAiC;AAC/B,YAAM,IAAIC,KAAJ,
|
1
|
+
{"version":3,"sources":["NodeManager.ts"],"names":["NodeManager","getHandler","tag","gestures","Error","createGestureHandler","handlerTag","handler","setTag","dropGestureHandler","onDestroy","getNodes"],"mappings":";;AAGA;AACA,eAAe,MAAeA,WAAf,CAA2B;AAMhB,SAAVC,UAAU,CAACC,GAAD,EAAc;AACpC,QAAIA,GAAG,IAAI,KAAKC,QAAhB,EAA0B;AACxB,aAAO,KAAKA,QAAL,CAAcD,GAAd,CAAP;AACD;;AAED,UAAM,IAAIE,KAAJ,CAAW,sBAAqBF,GAAI,EAApC,CAAN;AACD;;AAEiC,SAApBG,oBAAoB,CAChCC,UADgC,EAEhCC,OAFgC,EAG1B;AACN,QAAID,UAAU,IAAI,KAAKH,QAAvB,EAAiC;AAC/B,YAAM,IAAIC,KAAJ,CACH,oBAAmBE,UAAW,mGAD3B,CAAN;AAGD;;AAED,SAAKH,QAAL,CAAcG,UAAd,IAA4BC,OAA5B;AACA,SAAKJ,QAAL,CAAcG,UAAd,EAA0BE,MAA1B,CAAiCF,UAAjC;AACD;;AAE+B,SAAlBG,kBAAkB,CAACH,UAAD,EAA2B;AACzD,QAAI,EAAEA,UAAU,IAAI,KAAKH,QAArB,CAAJ,EAAoC;AAClC;AACD;;AAED,SAAKA,QAAL,CAAcG,UAAd,EAA0BI,SAA1B,GALyD,CAOzD;;AACA,WAAO,KAAKP,QAAL,CAAcG,UAAd,CAAP;AACD;;AAEqB,SAARK,QAAQ,GAAG;AACvB,WAAO,EAAE,GAAG,KAAKR;AAAV,KAAP;AACD;;AAzCuC;;gBAAZH,W,cAIxB,E","sourcesContent":["import { ValueOf } from '../../typeUtils';\nimport { Gestures } from '../../RNGestureHandlerModule.web';\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport default abstract class NodeManager {\n private static gestures: Record<\n number,\n InstanceType<ValueOf<typeof Gestures>>\n > = {};\n\n public static getHandler(tag: number) {\n if (tag in this.gestures) {\n return this.gestures[tag];\n }\n\n throw new Error(`No handler for tag ${tag}`);\n }\n\n public static createGestureHandler(\n handlerTag: number,\n handler: InstanceType<ValueOf<typeof Gestures>>\n ): void {\n if (handlerTag in this.gestures) {\n throw new Error(\n `Handler with tag ${handlerTag} already exists. Please ensure that no Gesture instance is used across multiple GestureDetectors.`\n );\n }\n\n this.gestures[handlerTag] = handler;\n this.gestures[handlerTag].setTag(handlerTag);\n }\n\n public static dropGestureHandler(handlerTag: number): void {\n if (!(handlerTag in this.gestures)) {\n return;\n }\n\n this.gestures[handlerTag].onDestroy();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.gestures[handlerTag];\n }\n\n public static getNodes() {\n return { ...this.gestures };\n }\n}\n"]}
|