react-native-gesture-handler 2.6.0 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +2 -2
- package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
- package/lib/commonjs/EnableExperimentalWebImplementation.js +7 -0
- package/lib/commonjs/EnableExperimentalWebImplementation.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.macos.js +20 -9
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +23 -10
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.web.js +1 -1
- package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -5
- package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/eventReceiver.js +14 -20
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +32 -0
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -0
- package/lib/commonjs/web/detectors/RotationGestureDetector.js +13 -17
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js +3 -14
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +37 -12
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +282 -79
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +23 -18
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +51 -0
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +81 -22
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +57 -40
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +43 -34
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +45 -39
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +52 -50
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js +22 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/EventManager.js +40 -96
- package/lib/commonjs/web/tools/EventManager.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +109 -30
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js +24 -10
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +130 -0
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -0
- package/lib/commonjs/web/tools/PointerTracker.js +97 -7
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
- package/lib/commonjs/web/tools/TouchEventManager.js +138 -0
- package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -0
- package/lib/commonjs/web/utils.js +15 -0
- package/lib/commonjs/web/utils.js.map +1 -0
- package/lib/module/EnableExperimentalWebImplementation.js +5 -0
- package/lib/module/EnableExperimentalWebImplementation.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.js +1 -1
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.macos.js +19 -10
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +22 -11
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/components/GestureComponents.web.js +1 -1
- package/lib/module/components/GestureComponents.web.js.map +1 -1
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -4
- package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/eventReceiver.js +14 -20
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.web.js +21 -0
- package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -0
- package/lib/module/web/detectors/RotationGestureDetector.js +13 -17
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/detectors/ScaleGestureDetector.js +3 -14
- package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +37 -12
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +276 -79
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +23 -18
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +39 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/NativeViewGestureHandler.js +80 -22
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +57 -41
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +43 -33
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +45 -38
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +52 -50
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js +19 -0
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/EventManager.js +39 -95
- package/lib/module/web/tools/EventManager.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +107 -30
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js +24 -10
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web/tools/NodeManager.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +116 -0
- package/lib/module/web/tools/PointerEventManager.js.map +1 -0
- package/lib/module/web/tools/PointerTracker.js +97 -7
- package/lib/module/web/tools/PointerTracker.js.map +1 -1
- package/lib/module/web/tools/TouchEventManager.js +124 -0
- package/lib/module/web/tools/TouchEventManager.js.map +1 -0
- package/lib/module/web/utils.js +8 -0
- package/lib/module/web/utils.js.map +1 -0
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +5 -2
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +5 -2
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +1 -1
- package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +3 -3
- package/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts +3 -2
- package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +4 -0
- package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +7 -7
- package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +6 -7
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +12 -10
- package/lib/typescript/web/handlers/GestureHandler.d.ts +41 -32
- package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +6 -9
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +11 -0
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +15 -6
- package/lib/typescript/web/handlers/PanGestureHandler.d.ts +15 -23
- package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +11 -12
- package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +12 -12
- package/lib/typescript/web/handlers/TapGestureHandler.d.ts +11 -14
- package/lib/typescript/web/interfaces.d.ts +50 -10
- package/lib/typescript/web/tools/EventManager.d.ts +28 -26
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +4 -2
- package/lib/typescript/web/tools/InteractionManager.d.ts +3 -0
- package/lib/typescript/web/tools/NodeManager.d.ts +3 -3
- package/lib/typescript/web/tools/PointerEventManager.d.ts +6 -0
- package/lib/typescript/web/tools/PointerTracker.d.ts +29 -5
- package/lib/typescript/web/tools/TouchEventManager.d.ts +6 -0
- package/lib/typescript/web/utils.d.ts +4 -0
- package/package.json +2 -2
- package/src/EnableExperimentalWebImplementation.ts +9 -0
- package/src/RNGestureHandlerModule.macos.ts +25 -10
- package/src/RNGestureHandlerModule.ts +4 -1
- package/src/RNGestureHandlerModule.web.ts +20 -7
- package/src/components/GestureComponents.web.tsx +1 -1
- package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +2 -12
- package/src/fabric/RNGestureHandlerRootViewNativeComponent.ts +2 -8
- package/src/handlers/gestures/GestureDetector.tsx +0 -1
- package/src/handlers/gestures/eventReceiver.ts +23 -24
- package/src/handlers/gestures/gestureStateManager.web.ts +24 -0
- package/src/web/detectors/RotationGestureDetector.ts +20 -52
- package/src/web/detectors/ScaleGestureDetector.ts +9 -45
- package/src/web/handlers/FlingGestureHandler.ts +45 -22
- package/src/web/handlers/GestureHandler.ts +306 -97
- package/src/web/handlers/LongPressGestureHandler.ts +30 -24
- package/src/web/handlers/ManualGestureHandler.ts +39 -0
- package/src/web/handlers/NativeViewGestureHandler.ts +81 -24
- package/src/web/handlers/PanGestureHandler.ts +68 -53
- package/src/web/handlers/PinchGestureHandler.ts +47 -44
- package/src/web/handlers/RotationGestureHandler.ts +52 -51
- package/src/web/handlers/TapGestureHandler.ts +74 -56
- package/src/web/interfaces.ts +57 -10
- package/src/web/tools/EventManager.ts +58 -148
- package/src/web/tools/GestureHandlerOrchestrator.ts +115 -47
- package/src/web/tools/InteractionManager.ts +25 -9
- package/src/web/tools/NodeManager.ts +6 -6
- package/src/web/tools/PointerEventManager.ts +134 -0
- package/src/web/tools/PointerTracker.ts +120 -10
- package/src/web/tools/TouchEventManager.ts +167 -0
- package/src/web/utils.ts +8 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GestureHandler.ts"],"names":["GestureHandler","constructor","State","UNDETERMINED","enabled","PointerTracker","event","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","hasCustomActivationCriteria","init","ref","setView","setEventManager","view","style","eventManager","EventManager","setOnPointerDown","onPointerDown","bind","setOnPointerUp","onPointerUp","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerOut","onPointerOut","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setListeners","setInteractionManager","manager","interactionManager","onCancel","onReset","resetProgress","reset","tracker","resetTracker","moveToState","GestureHandlerOrchestrator","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","FAILED","cancel","CANCELLED","activate","_force","end","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","_event","recordHandlerIfNotPresent","onPointerAdd","onPointerRemove","tryToSendMoveEvent","out","shouldCancellWhenOutside","sendEvent","numberOfPointers","getTrackedPointersCount","state","pointerInside","isPointerInBounds","x","y","transformNativeEvent","handlerTag","target","timeStamp","Date","now","updateGestureConfig","props","config","validateHitSlops","checkCustomActivationCriteria","criterias","key","indexOf","hitSlop","left","right","width","Error","height","top","bottom","getBoundingClientRect","horizontal","vertical","offsetX","offsetY","resetConfig","getTag","setTag","tag","getConfig","getShouldEnableGestureOnSetup","getView","getEventManager","getTracker","getTrackedPointersID","getState","setShouldCancelWhenOutside","flag","getShouldCancelWhenOutside","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { findNodeHandle } from 'react-native';\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedPointerEvent,\n PropsRef,\n ResultEvent,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerTracker from '../tools/PointerTracker';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria: boolean;\n protected enabled = false;\n\n private ref!: number;\n private propsRef!: React.RefObject<unknown>;\n protected config: Config = { enabled: false };\n private handlerTag!: number;\n protected view: HTMLElement | null = null;\n\n protected eventManager!: EventManager;\n protected tracker: PointerTracker = new PointerTracker();\n protected interactionManager!: InteractionManager;\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n\n public constructor() {\n this.hasCustomActivationCriteria = false;\n }\n\n //\n // Initializing handler\n //\n\n protected init(ref: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.ref = ref;\n\n this.currentState = State.UNDETERMINED;\n\n this.setView(ref);\n this.setEventManager();\n }\n\n private setView(ref: number) {\n if (!ref) {\n this.view = null;\n return;\n }\n\n this.view = (findNodeHandle(ref) as unknown) as HTMLElement;\n this.view.style['touchAction'] = 'none';\n this.view.style['webkitUserSelect'] = 'none';\n this.view.style['userSelect'] = 'none';\n\n //@ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = 'none';\n }\n\n private setEventManager(): void {\n if (!this.view) {\n return;\n }\n\n this.eventManager = new EventManager(this.view);\n\n this.eventManager.setOnPointerDown(this.onPointerDown.bind(this));\n this.eventManager.setOnPointerUp(this.onPointerUp.bind(this));\n this.eventManager.setOnPointerMove(this.onPointerMove.bind(this));\n this.eventManager.setOnPointerEnter(this.onPointerEnter.bind(this));\n this.eventManager.setOnPointerOut(this.onPointerOut.bind(this));\n this.eventManager.setOnPointerCancel(this.onPointerCancel.bind(this));\n this.eventManager.setOnPointerOutOfBounds(\n this.onPointerOutOfBounds.bind(this)\n );\n\n this.eventManager.setListeners();\n }\n\n public setInteractionManager(manager: InteractionManager): void {\n this.interactionManager = manager;\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, event: AdaptedPointerEvent) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n event\n );\n\n this.onStateChange(newState, oldState);\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(event: AdaptedPointerEvent): void {\n if (!this.checkHitSlop(event)) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN, event);\n }\n }\n\n public fail(event: AdaptedPointerEvent): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.FAILED, event);\n }\n\n this.resetProgress();\n }\n\n public cancel(event: AdaptedPointerEvent): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n this.moveToState(State.CANCELLED, event);\n }\n }\n\n protected activate(event: AdaptedPointerEvent, _force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.ACTIVE, event);\n }\n }\n\n public end(event: AdaptedPointerEvent) {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n this.moveToState(State.END, event);\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return this.interactionManager.shouldWaitForHandlerFailure(this, handler);\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return this.interactionManager.shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return this.interactionManager.shouldRecognizeSimultaneously(this, handler);\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return this.interactionManager.shouldHandlerBeCancelledBy(this, handler);\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(_event: AdaptedPointerEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(_event: AdaptedPointerEvent): void {}\n protected onPointerUp(_event: AdaptedPointerEvent): void {}\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(_event: AdaptedPointerEvent): void {}\n protected onPointerMove(event: AdaptedPointerEvent): void {\n this.tryToSendMoveEvent(event, false);\n }\n protected onPointerOut(_event: AdaptedPointerEvent): void {}\n protected onPointerEnter(_event: AdaptedPointerEvent): void {}\n protected onPointerCancel(_event: AdaptedPointerEvent): void {}\n protected onPointerOutOfBounds(event: AdaptedPointerEvent): void {\n this.tryToSendMoveEvent(event, true);\n }\n private tryToSendMoveEvent(event: AdaptedPointerEvent, out: boolean): void {\n if (\n this.currentState === State.ACTIVE &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(event, this.currentState, this.currentState);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (\n event: AdaptedPointerEvent,\n newState: State,\n oldState: State\n ): void => {\n const {\n onGestureHandlerEvent,\n onGestureHandlerStateChange,\n }: PropsRef = this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n event,\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(\n event: AdaptedPointerEvent,\n newState: State,\n oldState: State\n ): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: this.eventManager?.isPointerInBounds({\n x: event.x,\n y: event.y,\n }),\n ...this.transformNativeEvent(event),\n handlerTag: this.handlerTag,\n target: this.ref,\n oldState: newState !== oldState ? oldState : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n protected transformNativeEvent(_event: AdaptedPointerEvent) {\n return {};\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }): void {\n this.config = { enabled, ...props };\n this.validateHitSlops();\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(event: AdaptedPointerEvent): boolean {\n if (!this.config.hitSlop || !this.view) {\n return true;\n }\n\n const width = this.view.getBoundingClientRect().width;\n const height = this.view.getBoundingClientRect().height;\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n if (\n event.offsetX >= left &&\n event.offsetX <= right &&\n event.offsetY >= top &&\n event.offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n protected getConfig() {\n return this.config;\n }\n\n public getShouldEnableGestureOnSetup(): boolean {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n\n public getView(): HTMLElement | null {\n return this.view;\n }\n\n public getEventManager(): EventManager {\n return this.eventManager;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n protected setShouldCancelWhenOutside(flag: boolean) {\n this.shouldCancellWhenOutside = flag;\n }\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent) => void)\n | { __getHandler: () => (event: ResultEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["GestureHandler.ts"],"names":["GestureHandler","constructor","State","UNDETERMINED","enabled","PointerTracker","PointerType","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","hasCustomActivationCriteria","init","ref","setView","addEventManager","PointerEventManager","view","TouchEventManager","Error","handlerTag","style","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerOut","onPointerOut","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setListeners","eventManagers","push","onCancel","onReset","resetProgress","reset","tracker","resetTracker","forEach","resetManager","moveToState","sendIfDisabled","GestureHandlerOrchestrator","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","FAILED","cursor","cancel","CANCELLED","activate","_force","end","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","InteractionManager","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","config","needsPointerData","sendTouchEvent","tryToSendMoveEvent","out","shouldCancellWhenOutside","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","getTrackedPointersCount","state","pointerInside","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","target","timeStamp","Date","now","rect","getBoundingClientRect","all","changed","trackerData","getData","size","has","pointerId","element","key","id","getMappedTouchEventId","lastX","left","lastY","top","absoluteX","absoluteY","eventType","EventTypes","CANCEL","TouchEventType","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","updateGestureConfig","props","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hitSlop","right","width","height","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","isPointerInBounds","resetConfig","getTag","setTag","tag","getConfig","getShouldEnableGestureOnSetup","getView","getEventManagers","getTracker","getTrackedPointersID","getState","isEnabled","setShouldCancelWhenOutside","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { findNodeHandle } from 'react-native';\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n PointerType,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerEventManager from '../tools/PointerEventManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport TouchEventManager from '../tools/TouchEventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria: boolean;\n protected enabled = false;\n\n private ref!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n protected view!: HTMLElement;\n\n protected eventManagers: EventManager[] = [];\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.NONE;\n\n public constructor() {\n this.hasCustomActivationCriteria = false;\n }\n\n //\n // Initializing handler\n //\n\n protected init(ref: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.ref = ref;\n\n this.currentState = State.UNDETERMINED;\n\n this.setView();\n this.addEventManager(new PointerEventManager(this.view));\n this.addEventManager(new TouchEventManager(this.view));\n }\n\n private setView() {\n if (!this.ref) {\n throw new Error(\n `Cannot find HTML Element for handler ${this.handlerTag}`\n );\n }\n\n this.view = (findNodeHandle(this.ref) as unknown) as HTMLElement;\n this.view.style['touchAction'] = 'none';\n this.view.style['webkitUserSelect'] = 'none';\n this.view.style['userSelect'] = 'none';\n\n //@ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = 'none';\n }\n\n private addEventManager(manager: EventManager): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerOut(this.onPointerOut.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setListeners();\n\n this.eventManagers.push(manager);\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.eventManagers.forEach((manager: EventManager) =>\n manager.resetManager()\n );\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.FAILED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n this.moveToState(State.CANCELLED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n }\n\n public activate(_force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.ACTIVE);\n this.view.style.cursor = 'grab';\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n this.moveToState(State.END);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOut(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined = this.transformTouchEvent(\n event\n );\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const {\n onGestureHandlerEvent,\n onGestureHandlerStateChange,\n }: PropsRef = this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: isPointerInBounds(this.view, {\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.ref,\n oldState: newState !== oldState ? oldState : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.left,\n y: event.y - rect.top,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n protected transformNativeEvent() {\n return {};\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const width = this.view.getBoundingClientRect().width;\n const height = this.view.getBoundingClientRect().height;\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect: DOMRect = this.view.getBoundingClientRect();\n const offsetX: number = this.tracker.getLastX() - rect.left;\n const offsetY: number = this.tracker.getLastY() - rect.top;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n public isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return (\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom\n );\n }\n\n protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n protected getConfig() {\n return this.config;\n }\n\n public getShouldEnableGestureOnSetup(): boolean {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n\n public getView(): HTMLElement {\n return this.view;\n }\n\n public getEventManagers(): EventManager[] {\n return this.eventManagers;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancellWhenOutside = shouldCancel;\n }\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
|
|
@@ -43,12 +43,13 @@ class LongPressGestureHandler extends _GestureHandler.default {
|
|
|
43
43
|
this.setShouldCancelWhenOutside(true);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
transformNativeEvent(
|
|
46
|
+
transformNativeEvent() {
|
|
47
|
+
const rect = this.view.getBoundingClientRect();
|
|
47
48
|
return {
|
|
48
|
-
x:
|
|
49
|
-
y:
|
|
50
|
-
absoluteX:
|
|
51
|
-
absoluteY:
|
|
49
|
+
x: this.tracker.getLastAvgX() - rect.left,
|
|
50
|
+
y: this.tracker.getLastAvgY() - rect.top,
|
|
51
|
+
absoluteX: this.tracker.getLastAvgX(),
|
|
52
|
+
absoluteY: this.tracker.getLastAvgY(),
|
|
52
53
|
duration: Date.now() - this.startTime
|
|
53
54
|
};
|
|
54
55
|
}
|
|
@@ -83,26 +84,30 @@ class LongPressGestureHandler extends _GestureHandler.default {
|
|
|
83
84
|
}
|
|
84
85
|
|
|
85
86
|
onPointerDown(event) {
|
|
87
|
+
this.tracker.addToTracker(event);
|
|
86
88
|
super.onPointerDown(event);
|
|
87
89
|
this.tryBegin(event);
|
|
88
|
-
this.tryActivate(
|
|
90
|
+
this.tryActivate();
|
|
91
|
+
this.checkDistanceFail(event);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
onPointerMove(event) {
|
|
95
|
+
super.onPointerMove(event);
|
|
96
|
+
this.tracker.track(event);
|
|
89
97
|
this.checkDistanceFail(event);
|
|
90
98
|
}
|
|
91
99
|
|
|
92
100
|
onPointerUp(event) {
|
|
93
101
|
super.onPointerUp(event);
|
|
102
|
+
this.tracker.removeFromTracker(event.pointerId);
|
|
94
103
|
|
|
95
104
|
if (this.currentState === _State.State.ACTIVE) {
|
|
96
|
-
this.end(
|
|
105
|
+
this.end();
|
|
97
106
|
} else {
|
|
98
|
-
this.fail(
|
|
107
|
+
this.fail();
|
|
99
108
|
}
|
|
100
109
|
}
|
|
101
110
|
|
|
102
|
-
onPointerMove(event) {
|
|
103
|
-
this.checkDistanceFail(event);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
111
|
tryBegin(event) {
|
|
107
112
|
if (this.currentState !== _State.State.UNDETERMINED) {
|
|
108
113
|
return;
|
|
@@ -110,18 +115,18 @@ class LongPressGestureHandler extends _GestureHandler.default {
|
|
|
110
115
|
|
|
111
116
|
this.previousTime = Date.now();
|
|
112
117
|
this.startTime = this.previousTime;
|
|
113
|
-
this.begin(
|
|
118
|
+
this.begin();
|
|
114
119
|
this.startX = event.x;
|
|
115
120
|
this.startY = event.y;
|
|
116
121
|
}
|
|
117
122
|
|
|
118
|
-
tryActivate(
|
|
123
|
+
tryActivate() {
|
|
119
124
|
if (this.minDurationMs > 0) {
|
|
120
125
|
this.activationTimeout = setTimeout(() => {
|
|
121
|
-
this.activate(
|
|
126
|
+
this.activate();
|
|
122
127
|
}, this.minDurationMs);
|
|
123
128
|
} else if (this.minDurationMs === 0) {
|
|
124
|
-
this.activate(
|
|
129
|
+
this.activate();
|
|
125
130
|
}
|
|
126
131
|
}
|
|
127
132
|
|
|
@@ -135,9 +140,9 @@ class LongPressGestureHandler extends _GestureHandler.default {
|
|
|
135
140
|
}
|
|
136
141
|
|
|
137
142
|
if (this.currentState === _State.State.ACTIVE) {
|
|
138
|
-
this.cancel(
|
|
143
|
+
this.cancel();
|
|
139
144
|
} else {
|
|
140
|
-
this.fail(
|
|
145
|
+
this.fail();
|
|
141
146
|
}
|
|
142
147
|
}
|
|
143
148
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["LongPressGestureHandler.ts"],"names":["DEFAULT_MIN_DURATION_MS","DEFAULT_MAX_DIST_DP","SCALING_FACTOR","LongPressGestureHandler","GestureHandler","defaultMaxDistSq","init","ref","propsRef","setShouldCancelWhenOutside","transformNativeEvent","
|
|
1
|
+
{"version":3,"sources":["LongPressGestureHandler.ts"],"names":["DEFAULT_MIN_DURATION_MS","DEFAULT_MAX_DIST_DP","SCALING_FACTOR","LongPressGestureHandler","GestureHandler","defaultMaxDistSq","init","ref","propsRef","setShouldCancelWhenOutside","transformNativeEvent","rect","view","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","duration","Date","now","startTime","updateGestureConfig","enabled","props","config","minDurationMs","undefined","maxDist","maxDistSq","resetConfig","onStateChange","_newState","_oldState","clearTimeout","activationTimeout","onPointerDown","event","addToTracker","tryBegin","tryActivate","checkDistanceFail","onPointerMove","track","onPointerUp","removeFromTracker","pointerId","currentState","State","ACTIVE","end","fail","UNDETERMINED","previousTime","begin","startX","startY","setTimeout","activate","dx","dy","distSq","cancel"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_DURATION_MS = 500;\nconst DEFAULT_MAX_DIST_DP = 10;\nconst SCALING_FACTOR = 10;\n\nexport default class LongPressGestureHandler extends GestureHandler {\n private minDurationMs = DEFAULT_MIN_DURATION_MS;\n private defaultMaxDistSq = DEFAULT_MAX_DIST_DP * SCALING_FACTOR;\n\n private maxDistSq = this.defaultMaxDistSq;\n private startX = 0;\n private startY = 0;\n\n private startTime = 0;\n private previousTime = 0;\n\n private activationTimeout: number | undefined;\n\n public init(ref: number, propsRef: React.RefObject<unknown>) {\n super.init(ref, propsRef);\n this.setShouldCancelWhenOutside(true);\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return {\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n duration: Date.now() - this.startTime,\n };\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n this.enabled = enabled;\n\n if (this.config.minDurationMs !== undefined) {\n this.minDurationMs = this.config.minDurationMs;\n }\n\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.minDurationMs = DEFAULT_MIN_DURATION_MS;\n this.maxDistSq = this.defaultMaxDistSq;\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {\n clearTimeout(this.activationTimeout);\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.tryBegin(event);\n this.tryActivate();\n this.checkDistanceFail(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n super.onPointerMove(event);\n this.tracker.track(event);\n this.checkDistanceFail(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.previousTime = Date.now();\n this.startTime = this.previousTime;\n\n this.begin();\n\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private tryActivate(): void {\n if (this.minDurationMs > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.minDurationMs);\n } else if (this.minDurationMs === 0) {\n this.activate();\n }\n }\n\n private checkDistanceFail(event: AdaptedEvent): void {\n const dx = event.x - this.startX;\n const dy = event.y - this.startY;\n const distSq = dx * dx + dy * dy;\n\n if (distSq <= this.maxDistSq) {\n return;\n }\n\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _GestureHandler = _interopRequireDefault(require("./GestureHandler"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
class ManualGestureHandler extends _GestureHandler.default {
|
|
13
|
+
init(ref, propsRef) {
|
|
14
|
+
super.init(ref, propsRef);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
onPointerDown(event) {
|
|
18
|
+
this.tracker.addToTracker(event);
|
|
19
|
+
super.onPointerDown(event);
|
|
20
|
+
this.begin();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
onPointerAdd(event) {
|
|
24
|
+
this.tracker.addToTracker(event);
|
|
25
|
+
super.onPointerAdd(event);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
onPointerMove(event) {
|
|
29
|
+
this.tracker.track(event);
|
|
30
|
+
super.onPointerMove(event);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
onPointerUp(event) {
|
|
34
|
+
super.onPointerUp(event);
|
|
35
|
+
this.tracker.removeFromTracker(event.pointerId);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
onPointerRemove(event) {
|
|
39
|
+
super.onPointerRemove(event);
|
|
40
|
+
this.tracker.removeFromTracker(event.pointerId);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
onPointerCancel(event) {
|
|
44
|
+
super.onPointerCancel(event);
|
|
45
|
+
this.reset();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
exports.default = ManualGestureHandler;
|
|
51
|
+
//# sourceMappingURL=ManualGestureHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ManualGestureHandler.ts"],"names":["ManualGestureHandler","GestureHandler","init","ref","propsRef","onPointerDown","event","tracker","addToTracker","begin","onPointerAdd","onPointerMove","track","onPointerUp","removeFromTracker","pointerId","onPointerRemove","onPointerCancel","reset"],"mappings":";;;;;;;AACA;;;;AAEe,MAAMA,oBAAN,SAAmCC,uBAAnC,CAAkD;AACxDC,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAkD;AAC3D,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAESC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACA,SAAKG,KAAL;AACD;;AAESC,EAAAA,YAAY,CAACJ,KAAD,EAA4B;AAChD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMI,YAAN,CAAmBJ,KAAnB;AACD;;AAESK,EAAAA,aAAa,CAACL,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaK,KAAb,CAAmBN,KAAnB;AACA,UAAMK,aAAN,CAAoBL,KAApB;AACD;;AAESO,EAAAA,WAAW,CAACP,KAAD,EAA4B;AAC/C,UAAMO,WAAN,CAAkBP,KAAlB;AACA,SAAKC,OAAL,CAAaO,iBAAb,CAA+BR,KAAK,CAACS,SAArC;AACD;;AAESC,EAAAA,eAAe,CAACV,KAAD,EAA4B;AACnD,UAAMU,eAAN,CAAsBV,KAAtB;AACA,SAAKC,OAAL,CAAaO,iBAAb,CAA+BR,KAAK,CAACS,SAArC;AACD;;AAESE,EAAAA,eAAe,CAACX,KAAD,EAA4B;AACnD,UAAMW,eAAN,CAAsBX,KAAtB;AACA,SAAKY,KAAL;AACD;;AAlC8D","sourcesContent":["import { AdaptedEvent } from '../interfaces';\nimport GestureHandler from './GestureHandler';\n\nexport default class ManualGestureHandler extends GestureHandler {\n public init(ref: number, propsRef: React.RefObject<unknown>) {\n super.init(ref, propsRef);\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.begin();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n super.onPointerMove(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.reset();\n }\n}\n"]}
|
|
@@ -7,6 +7,8 @@ exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _State = require("../../State");
|
|
9
9
|
|
|
10
|
+
var _constants = require("../constants");
|
|
11
|
+
|
|
10
12
|
var _GestureHandler = _interopRequireDefault(require("./GestureHandler"));
|
|
11
13
|
|
|
12
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -19,20 +21,21 @@ class NativeViewGestureHandler extends _GestureHandler.default {
|
|
|
19
21
|
|
|
20
22
|
_defineProperty(this, "buttonRole", void 0);
|
|
21
23
|
|
|
24
|
+
_defineProperty(this, "shouldActivateOnStart", false);
|
|
25
|
+
|
|
22
26
|
_defineProperty(this, "disallowInterruption", false);
|
|
27
|
+
|
|
28
|
+
_defineProperty(this, "startX", 0);
|
|
29
|
+
|
|
30
|
+
_defineProperty(this, "startY", 0);
|
|
31
|
+
|
|
32
|
+
_defineProperty(this, "minDistSq", _constants.DEFAULT_TOUCH_SLOP * _constants.DEFAULT_TOUCH_SLOP);
|
|
23
33
|
}
|
|
24
34
|
|
|
25
35
|
init(ref, propsRef) {
|
|
26
36
|
super.init(ref, propsRef);
|
|
27
37
|
this.setShouldCancelWhenOutside(true);
|
|
28
|
-
|
|
29
|
-
if (!this.view) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
this.view.style['touchAction'] = 'auto';
|
|
34
|
-
this.view.style['webkitUserSelect'] = 'auto';
|
|
35
|
-
this.view.style['userSelect'] = 'auto'; //@ts-ignore Turns on defualt touch behavior on Safari
|
|
38
|
+
this.view.style['touchAction'] = 'auto'; //@ts-ignore Turns on defualt touch behavior on Safari
|
|
36
39
|
|
|
37
40
|
this.view.style['WebkitTouchCallout'] = 'auto';
|
|
38
41
|
|
|
@@ -41,6 +44,29 @@ class NativeViewGestureHandler extends _GestureHandler.default {
|
|
|
41
44
|
} else {
|
|
42
45
|
this.buttonRole = false;
|
|
43
46
|
}
|
|
47
|
+
|
|
48
|
+
if (this.view.tagName.toLowerCase() === 'input') {
|
|
49
|
+
//Enables text input on Safari
|
|
50
|
+
this.view.style['webkitUserSelect'] = 'auto';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
updateGestureConfig({
|
|
55
|
+
enabled = true,
|
|
56
|
+
...props
|
|
57
|
+
}) {
|
|
58
|
+
super.updateGestureConfig({
|
|
59
|
+
enabled: enabled,
|
|
60
|
+
...props
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
if (this.config.shouldActivateOnStart !== undefined) {
|
|
64
|
+
this.shouldActivateOnStart = this.config.shouldActivateOnStart;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (this.config.disallowInterruption !== undefined) {
|
|
68
|
+
this.disallowInterruption = this.config.disallowInterruption;
|
|
69
|
+
}
|
|
44
70
|
}
|
|
45
71
|
|
|
46
72
|
resetConfig() {
|
|
@@ -48,39 +74,72 @@ class NativeViewGestureHandler extends _GestureHandler.default {
|
|
|
48
74
|
}
|
|
49
75
|
|
|
50
76
|
onPointerDown(event) {
|
|
77
|
+
this.tracker.addToTracker(event);
|
|
51
78
|
super.onPointerDown(event);
|
|
79
|
+
this.newPointerAction();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
onPointerAdd(event) {
|
|
52
83
|
this.tracker.addToTracker(event);
|
|
84
|
+
super.onPointerAdd(event);
|
|
85
|
+
this.newPointerAction();
|
|
86
|
+
}
|
|
53
87
|
|
|
54
|
-
|
|
55
|
-
|
|
88
|
+
newPointerAction() {
|
|
89
|
+
this.startX = this.tracker.getLastAvgX();
|
|
90
|
+
this.startY = this.tracker.getLastAvgY();
|
|
56
91
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
92
|
+
if (this.currentState !== _State.State.UNDETERMINED) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
this.begin();
|
|
97
|
+
|
|
98
|
+
if (this.buttonRole) {
|
|
99
|
+
this.activate();
|
|
60
100
|
}
|
|
61
101
|
}
|
|
62
102
|
|
|
63
|
-
onPointerMove(
|
|
103
|
+
onPointerMove(event) {
|
|
104
|
+
this.tracker.track(event);
|
|
105
|
+
const dx = this.startX - this.tracker.getLastAvgX();
|
|
106
|
+
const dy = this.startY - this.tracker.getLastAvgY();
|
|
107
|
+
const distSq = dx * dx + dy * dy;
|
|
108
|
+
|
|
109
|
+
if (!this.buttonRole && distSq >= this.minDistSq && this.currentState === _State.State.BEGAN) {
|
|
110
|
+
this.activate();
|
|
111
|
+
}
|
|
64
112
|
}
|
|
65
113
|
|
|
66
|
-
onPointerOut(
|
|
67
|
-
this.cancel(
|
|
114
|
+
onPointerOut() {
|
|
115
|
+
this.cancel();
|
|
68
116
|
}
|
|
69
117
|
|
|
70
118
|
onPointerUp(event) {
|
|
71
|
-
|
|
119
|
+
super.onPointerUp(event);
|
|
120
|
+
this.onUp(event);
|
|
121
|
+
}
|
|
72
122
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
123
|
+
onPointerRemove(event) {
|
|
124
|
+
super.onPointerRemove(event);
|
|
125
|
+
this.onUp(event);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
onUp(event) {
|
|
129
|
+
this.tracker.removeFromTracker(event.pointerId);
|
|
76
130
|
|
|
77
131
|
if (this.tracker.getTrackedPointersCount() === 0) {
|
|
78
|
-
this.
|
|
132
|
+
if (this.currentState === _State.State.ACTIVE) {
|
|
133
|
+
this.end();
|
|
134
|
+
} else {
|
|
135
|
+
this.fail();
|
|
136
|
+
}
|
|
79
137
|
}
|
|
80
138
|
}
|
|
81
139
|
|
|
82
140
|
onPointerCancel(event) {
|
|
83
|
-
|
|
141
|
+
super.onPointerCancel(event);
|
|
142
|
+
this.cancel();
|
|
84
143
|
this.reset();
|
|
85
144
|
}
|
|
86
145
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["NativeViewGestureHandler","GestureHandler","init","ref","propsRef","setShouldCancelWhenOutside","view","style","hasAttribute","buttonRole","resetConfig","onPointerDown","event","tracker","addToTracker","currentState","State","UNDETERMINED","begin","activate","onPointerMove","
|
|
1
|
+
{"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["NativeViewGestureHandler","GestureHandler","DEFAULT_TOUCH_SLOP","init","ref","propsRef","setShouldCancelWhenOutside","view","style","hasAttribute","buttonRole","tagName","toLowerCase","updateGestureConfig","enabled","props","config","shouldActivateOnStart","undefined","disallowInterruption","resetConfig","onPointerDown","event","tracker","addToTracker","newPointerAction","onPointerAdd","startX","getLastAvgX","startY","getLastAvgY","currentState","State","UNDETERMINED","begin","activate","onPointerMove","track","dx","dy","distSq","minDistSq","BEGAN","onPointerOut","cancel","onPointerUp","onUp","onPointerRemove","removeFromTracker","pointerId","getTrackedPointersCount","ACTIVE","end","fail","onPointerCancel","reset","shouldRecognizeSimultaneously","handler","getState","disallowsInterruption","canBeInterrupted","getTag","shouldBeCancelledByOther","_handler"],"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';\nexport default class NativeViewGestureHandler extends GestureHandler {\n private buttonRole!: boolean;\n\n //TODO: Implement logic for activation on start\n //@ts-ignore Logic yet to be implemented\n private shouldActivateOnStart = false;\n private disallowInterruption = false;\n\n private startX = 0;\n private startY = 0;\n private minDistSq = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(true);\n\n this.view.style['touchAction'] = 'auto';\n\n //@ts-ignore Turns on defualt touch behavior on Safari\n this.view.style['WebkitTouchCallout'] = 'auto';\n\n if (this.view.hasAttribute('role')) {\n this.buttonRole = true;\n } else {\n this.buttonRole = false;\n }\n\n if (this.view.tagName.toLowerCase() === 'input') {\n //Enables text input on Safari\n this.view.style['webkitUserSelect'] = 'auto';\n }\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.shouldActivateOnStart !== undefined) {\n this.shouldActivateOnStart = this.config.shouldActivateOnStart;\n }\n if (this.config.disallowInterruption !== undefined) {\n this.disallowInterruption = this.config.disallowInterruption;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n this.startX = this.tracker.getLastAvgX();\n this.startY = this.tracker.getLastAvgY();\n\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.begin();\n if (this.buttonRole) {\n this.activate();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n const dx = this.startX - this.tracker.getLastAvgX();\n const dy = this.startY - this.tracker.getLastAvgY();\n const distSq = dx * dx + dy * dy;\n\n if (\n !this.buttonRole &&\n distSq >= this.minDistSq &&\n this.currentState === State.BEGAN\n ) {\n this.activate();\n }\n }\n\n protected onPointerOut(): void {\n this.cancel();\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.tracker.getTrackedPointersCount() === 0) {\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.cancel();\n this.reset();\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (super.shouldRecognizeSimultaneously(handler)) {\n return true;\n }\n\n if (\n handler instanceof NativeViewGestureHandler &&\n handler.getState() === State.ACTIVE &&\n handler.disallowsInterruption()\n ) {\n return false;\n }\n\n const canBeInterrupted = !this.disallowInterruption;\n\n if (\n this.currentState === State.ACTIVE &&\n handler.getState() === State.ACTIVE &&\n canBeInterrupted\n ) {\n return false;\n }\n\n return (\n this.currentState === State.ACTIVE &&\n canBeInterrupted &&\n handler.getTag() > 0\n );\n }\n\n public shouldBeCancelledByOther(_handler: GestureHandler): boolean {\n return !this.disallowInterruption;\n }\n\n public disallowsInterruption(): boolean {\n return this.disallowInterruption;\n }\n}\n"]}
|