react-native-gesture-handler 2.6.2 → 2.7.0
Sign up to get free protection for your applications and to get access to all the features.
- package/android/build.gradle +0 -8
- package/android/gradle.properties +1 -1
- package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt +7 -7
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +46 -26
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +76 -29
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt +4 -6
- package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +6 -6
- package/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt +1 -1
- package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +1 -1
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +11 -11
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +17 -9
- package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt +15 -8
- package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt +10 -10
- package/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +1 -1
- package/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +31 -12
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +1 -1
- package/ios/RNGestureHandlerButtonComponentView.mm +4 -4
- package/lib/commonjs/web/handlers/GestureHandler.js +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/tools/PointerTracker.js +2 -2
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +1 -1
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/tools/PointerTracker.js +2 -2
- package/lib/module/web/tools/PointerTracker.js.map +1 -1
- package/package.json +4 -8
- package/src/web/handlers/GestureHandler.ts +1 -0
- package/src/web/tools/PointerTracker.ts +2 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["GestureHandler.ts"],"names":["findNodeHandle","State","PointerType","TouchEventType","EventTypes","GestureHandlerOrchestrator","InteractionManager","PointerEventManager","PointerTracker","TouchEventManager","isPointerInBounds","GestureHandler","constructor","UNDETERMINED","enabled","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","hasCustomActivationCriteria","init","ref","setView","addEventManager","view","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","getTrackedPointersCount","END","CANCELLED","FAILED","cancelTouches","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","cursor","cancel","activate","_force","end","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","config","needsPointerData","sendTouchEvent","tryToSendMoveEvent","out","shouldCancellWhenOutside","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","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","CANCEL","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hitSlop","right","width","height","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","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 if (\n this.tracker.getTrackedPointersCount() > 0 &&\n (newState === State.END ||\n newState === State.CANCELLED ||\n newState === State.FAILED)\n ) {\n this.cancelTouches();\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 private cancelTouches(): void {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\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 const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent() {\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"]}
|
1
|
+
{"version":3,"sources":["GestureHandler.ts"],"names":["findNodeHandle","State","PointerType","TouchEventType","EventTypes","GestureHandlerOrchestrator","InteractionManager","PointerEventManager","PointerTracker","TouchEventManager","isPointerInBounds","GestureHandler","constructor","UNDETERMINED","enabled","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","hasCustomActivationCriteria","init","ref","setView","addEventManager","view","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","getTrackedPointersCount","config","needsPointerData","END","CANCELLED","FAILED","cancelTouches","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","cursor","cancel","activate","_force","end","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","out","shouldCancellWhenOutside","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","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","CANCEL","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hitSlop","right","width","height","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","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 if (\n this.tracker.getTrackedPointersCount() > 0 &&\n this.config.needsPointerData &&\n (newState === State.END ||\n newState === State.CANCELLED ||\n newState === State.FAILED)\n ) {\n this.cancelTouches();\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 private cancelTouches(): void {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\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 const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent() {\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"]}
|
@@ -118,7 +118,7 @@ export default class PointerTracker {
|
|
118
118
|
|
119
119
|
|
120
120
|
getLastX(pointerId) {
|
121
|
-
if (pointerId) {
|
121
|
+
if (pointerId !== undefined) {
|
122
122
|
var _this$trackedPointers3;
|
123
123
|
|
124
124
|
return (_this$trackedPointers3 = this.trackedPointers.get(pointerId)) === null || _this$trackedPointers3 === void 0 ? void 0 : _this$trackedPointers3.lastX;
|
@@ -134,7 +134,7 @@ export default class PointerTracker {
|
|
134
134
|
|
135
135
|
|
136
136
|
getLastY(pointerId) {
|
137
|
-
if (pointerId) {
|
137
|
+
if (pointerId !== undefined) {
|
138
138
|
var _this$trackedPointers5;
|
139
139
|
|
140
140
|
return (_this$trackedPointers5 = this.trackedPointers.get(pointerId)) === null || _this$trackedPointers5 === void 0 ? void 0 : _this$trackedPointers5.lastY;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["PointerTracker.ts"],"names":["VELOCITY_FACTOR","MAX_POINTERS","PointerTracker","constructor","Map","x","y","lastMovedPointerId","NaN","i","touchEventsIds","set","addToTracker","event","trackedPointers","has","pointerId","newElement","lastX","lastY","timeStamp","time","velocityX","velocityY","mapTouchEventId","cachedAverages","getLastAvgX","getLastAvgY","removeFromTracker","delete","removeMappedTouchId","track","element","get","dx","dy","dt","avgX","avgY","id","mappedId","touchId","isNaN","getMappedTouchEventId","touchEventId","key","value","entries","getVelocityX","getVelocityY","getLastX","getLastY","getSumX","size","getSumY","ignoredPointer","sumX","forEach","sumY","getTrackedPointersCount","getTrackedPointersID","keys","_value","push","getData","resetTracker","clear","shareCommonPointers","stPointers","ndPointers","some","includes"],"mappings":"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","sourcesContent":["import { AdaptedEvent } from '../interfaces';\n\nexport interface TrackerElement {\n lastX: number;\n lastY: number;\n\n timeStamp: number;\n\n velocityX: number;\n velocityY: number;\n}\n\n// Used to scale velocity so that it is similar to velocity in Android/iOS\nconst VELOCITY_FACTOR = 0.2;\nconst MAX_POINTERS = 20;\n\nexport default class PointerTracker {\n private trackedPointers: Map<number, TrackerElement> = new Map<\n number,\n TrackerElement\n >();\n\n private touchEventsIds: Map<number, number> = new Map<number, number>();\n\n private lastMovedPointerId: number;\n\n private cachedAverages: { x: number; y: number } = { x: 0, y: 0 };\n\n public constructor() {\n this.lastMovedPointerId = NaN;\n\n for (let i = 0; i < MAX_POINTERS; ++i) {\n this.touchEventsIds.set(i, NaN);\n }\n }\n\n public addToTracker(event: AdaptedEvent): void {\n if (this.trackedPointers.has(event.pointerId)) {\n return;\n }\n\n this.lastMovedPointerId = event.pointerId;\n\n const newElement: TrackerElement = {\n lastX: event.x,\n lastY: event.y,\n timeStamp: event.time,\n velocityX: 0,\n velocityY: 0,\n };\n\n this.trackedPointers.set(event.pointerId, newElement);\n this.mapTouchEventId(event.pointerId);\n\n this.cachedAverages = {\n x: this.getLastAvgX(),\n y: this.getLastAvgY(),\n };\n }\n\n public removeFromTracker(pointerId: number): void {\n this.trackedPointers.delete(pointerId);\n this.removeMappedTouchId(pointerId);\n }\n\n public track(event: AdaptedEvent): void {\n const element: TrackerElement = this.trackedPointers.get(\n event.pointerId\n ) as TrackerElement;\n\n if (!element) {\n return;\n }\n\n this.lastMovedPointerId = event.pointerId;\n\n const dx = event.x - element.lastX;\n const dy = event.y - element.lastY;\n const dt = event.time - element.timeStamp;\n\n element.velocityX = (dx / dt) * 1000 * VELOCITY_FACTOR;\n element.velocityY = (dy / dt) * 1000 * VELOCITY_FACTOR;\n\n element.lastX = event.x;\n element.lastY = event.y;\n\n this.trackedPointers.set(event.pointerId, element);\n\n const avgX: number = this.getLastAvgX();\n const avgY: number = this.getLastAvgY();\n\n this.cachedAverages = {\n x: avgX,\n y: avgY,\n };\n }\n\n //Mapping TouchEvents ID\n private mapTouchEventId(id: number): void {\n for (const [mappedId, touchId] of this.touchEventsIds) {\n if (isNaN(touchId)) {\n this.touchEventsIds.set(mappedId, id);\n break;\n }\n }\n }\n\n private removeMappedTouchId(id: number): void {\n const mappedId: number = this.getMappedTouchEventId(id);\n if (!isNaN(mappedId)) {\n this.touchEventsIds.set(mappedId, NaN);\n }\n }\n\n public getMappedTouchEventId(touchEventId: number): number {\n for (const [key, value] of this.touchEventsIds.entries()) {\n if (value === touchEventId) {\n return key;\n }\n }\n\n return NaN;\n }\n\n public getVelocityX(pointerId: number): number {\n return this.trackedPointers.get(pointerId)?.velocityX as number;\n }\n public getVelocityY(pointerId: number): number {\n return this.trackedPointers.get(pointerId)?.velocityY as number;\n }\n\n /**\n * Returns X coordinate of last moved pointer\n */\n public getLastX(): number;\n\n /**\n *\n * @param pointerId\n * Returns X coordinate of given pointer\n */\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n public getLastX(pointerId: number): number;\n\n public getLastX(pointerId?: number): number {\n if (pointerId) {\n return this.trackedPointers.get(pointerId)?.lastX as number;\n } else {\n return this.trackedPointers.get(this.lastMovedPointerId)?.lastX as number;\n }\n }\n\n /**\n * Returns Y coordinate of last moved pointer\n */\n public getLastY(): number;\n\n /**\n *\n * @param pointerId\n * Returns Y coordinate of given pointer\n */\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n public getLastY(pointerId: number): number;\n\n public getLastY(pointerId?: number): number {\n if (pointerId) {\n return this.trackedPointers.get(pointerId)?.lastY as number;\n } else {\n return this.trackedPointers.get(this.lastMovedPointerId)?.lastY as number;\n }\n }\n\n // Some handlers use these methods to send average values in native event.\n // This may happen when pointers have already been removed from tracker (i.e. pointerup event).\n // In situation when NaN would be sent as a response, we return cached value.\n // That prevents handlers from crashing\n public getLastAvgX(): number {\n const avgX: number = this.getSumX() / this.trackedPointers.size;\n return isNaN(avgX) ? this.cachedAverages.x : avgX;\n }\n public getLastAvgY(): number {\n const avgY: number = this.getSumY() / this.trackedPointers.size;\n return isNaN(avgY) ? this.cachedAverages.y : avgY;\n }\n public getSumX(ignoredPointer?: number): number {\n let sumX = 0;\n\n this.trackedPointers.forEach((value, key) => {\n if (key !== ignoredPointer) {\n sumX += value.lastX;\n }\n });\n\n return sumX;\n }\n public getSumY(ignoredPointer?: number): number {\n let sumY = 0;\n\n this.trackedPointers.forEach((value, key) => {\n if (key !== ignoredPointer) {\n sumY += value.lastY;\n }\n });\n\n return sumY;\n }\n public getTrackedPointersCount(): number {\n return this.trackedPointers.size;\n }\n public getTrackedPointersID(): number[] {\n const keys: number[] = [];\n\n this.trackedPointers.forEach((_value, key) => {\n keys.push(key);\n });\n\n return keys;\n }\n\n public getData(): Map<number, TrackerElement> {\n return this.trackedPointers;\n }\n\n public resetTracker(): void {\n this.trackedPointers.clear();\n this.lastMovedPointerId = NaN;\n\n for (let i = 0; i < MAX_POINTERS; ++i) {\n this.touchEventsIds.set(i, NaN);\n }\n }\n\n public static shareCommonPointers(\n stPointers: number[],\n ndPointers: number[]\n ): boolean {\n return stPointers.some((pointerId) => ndPointers.includes(pointerId));\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["PointerTracker.ts"],"names":["VELOCITY_FACTOR","MAX_POINTERS","PointerTracker","constructor","Map","x","y","lastMovedPointerId","NaN","i","touchEventsIds","set","addToTracker","event","trackedPointers","has","pointerId","newElement","lastX","lastY","timeStamp","time","velocityX","velocityY","mapTouchEventId","cachedAverages","getLastAvgX","getLastAvgY","removeFromTracker","delete","removeMappedTouchId","track","element","get","dx","dy","dt","avgX","avgY","id","mappedId","touchId","isNaN","getMappedTouchEventId","touchEventId","key","value","entries","getVelocityX","getVelocityY","getLastX","undefined","getLastY","getSumX","size","getSumY","ignoredPointer","sumX","forEach","sumY","getTrackedPointersCount","getTrackedPointersID","keys","_value","push","getData","resetTracker","clear","shareCommonPointers","stPointers","ndPointers","some","includes"],"mappings":"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","sourcesContent":["import { AdaptedEvent } from '../interfaces';\n\nexport interface TrackerElement {\n lastX: number;\n lastY: number;\n\n timeStamp: number;\n\n velocityX: number;\n velocityY: number;\n}\n\n// Used to scale velocity so that it is similar to velocity in Android/iOS\nconst VELOCITY_FACTOR = 0.2;\nconst MAX_POINTERS = 20;\n\nexport default class PointerTracker {\n private trackedPointers: Map<number, TrackerElement> = new Map<\n number,\n TrackerElement\n >();\n\n private touchEventsIds: Map<number, number> = new Map<number, number>();\n\n private lastMovedPointerId: number;\n\n private cachedAverages: { x: number; y: number } = { x: 0, y: 0 };\n\n public constructor() {\n this.lastMovedPointerId = NaN;\n\n for (let i = 0; i < MAX_POINTERS; ++i) {\n this.touchEventsIds.set(i, NaN);\n }\n }\n\n public addToTracker(event: AdaptedEvent): void {\n if (this.trackedPointers.has(event.pointerId)) {\n return;\n }\n\n this.lastMovedPointerId = event.pointerId;\n\n const newElement: TrackerElement = {\n lastX: event.x,\n lastY: event.y,\n timeStamp: event.time,\n velocityX: 0,\n velocityY: 0,\n };\n\n this.trackedPointers.set(event.pointerId, newElement);\n this.mapTouchEventId(event.pointerId);\n\n this.cachedAverages = {\n x: this.getLastAvgX(),\n y: this.getLastAvgY(),\n };\n }\n\n public removeFromTracker(pointerId: number): void {\n this.trackedPointers.delete(pointerId);\n this.removeMappedTouchId(pointerId);\n }\n\n public track(event: AdaptedEvent): void {\n const element: TrackerElement = this.trackedPointers.get(\n event.pointerId\n ) as TrackerElement;\n\n if (!element) {\n return;\n }\n\n this.lastMovedPointerId = event.pointerId;\n\n const dx = event.x - element.lastX;\n const dy = event.y - element.lastY;\n const dt = event.time - element.timeStamp;\n\n element.velocityX = (dx / dt) * 1000 * VELOCITY_FACTOR;\n element.velocityY = (dy / dt) * 1000 * VELOCITY_FACTOR;\n\n element.lastX = event.x;\n element.lastY = event.y;\n\n this.trackedPointers.set(event.pointerId, element);\n\n const avgX: number = this.getLastAvgX();\n const avgY: number = this.getLastAvgY();\n\n this.cachedAverages = {\n x: avgX,\n y: avgY,\n };\n }\n\n //Mapping TouchEvents ID\n private mapTouchEventId(id: number): void {\n for (const [mappedId, touchId] of this.touchEventsIds) {\n if (isNaN(touchId)) {\n this.touchEventsIds.set(mappedId, id);\n break;\n }\n }\n }\n\n private removeMappedTouchId(id: number): void {\n const mappedId: number = this.getMappedTouchEventId(id);\n if (!isNaN(mappedId)) {\n this.touchEventsIds.set(mappedId, NaN);\n }\n }\n\n public getMappedTouchEventId(touchEventId: number): number {\n for (const [key, value] of this.touchEventsIds.entries()) {\n if (value === touchEventId) {\n return key;\n }\n }\n\n return NaN;\n }\n\n public getVelocityX(pointerId: number): number {\n return this.trackedPointers.get(pointerId)?.velocityX as number;\n }\n public getVelocityY(pointerId: number): number {\n return this.trackedPointers.get(pointerId)?.velocityY as number;\n }\n\n /**\n * Returns X coordinate of last moved pointer\n */\n public getLastX(): number;\n\n /**\n *\n * @param pointerId\n * Returns X coordinate of given pointer\n */\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n public getLastX(pointerId: number): number;\n\n public getLastX(pointerId?: number): number {\n if (pointerId !== undefined) {\n return this.trackedPointers.get(pointerId)?.lastX as number;\n } else {\n return this.trackedPointers.get(this.lastMovedPointerId)?.lastX as number;\n }\n }\n\n /**\n * Returns Y coordinate of last moved pointer\n */\n public getLastY(): number;\n\n /**\n *\n * @param pointerId\n * Returns Y coordinate of given pointer\n */\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n public getLastY(pointerId: number): number;\n\n public getLastY(pointerId?: number): number {\n if (pointerId !== undefined) {\n return this.trackedPointers.get(pointerId)?.lastY as number;\n } else {\n return this.trackedPointers.get(this.lastMovedPointerId)?.lastY as number;\n }\n }\n\n // Some handlers use these methods to send average values in native event.\n // This may happen when pointers have already been removed from tracker (i.e. pointerup event).\n // In situation when NaN would be sent as a response, we return cached value.\n // That prevents handlers from crashing\n public getLastAvgX(): number {\n const avgX: number = this.getSumX() / this.trackedPointers.size;\n return isNaN(avgX) ? this.cachedAverages.x : avgX;\n }\n public getLastAvgY(): number {\n const avgY: number = this.getSumY() / this.trackedPointers.size;\n return isNaN(avgY) ? this.cachedAverages.y : avgY;\n }\n public getSumX(ignoredPointer?: number): number {\n let sumX = 0;\n\n this.trackedPointers.forEach((value, key) => {\n if (key !== ignoredPointer) {\n sumX += value.lastX;\n }\n });\n\n return sumX;\n }\n public getSumY(ignoredPointer?: number): number {\n let sumY = 0;\n\n this.trackedPointers.forEach((value, key) => {\n if (key !== ignoredPointer) {\n sumY += value.lastY;\n }\n });\n\n return sumY;\n }\n public getTrackedPointersCount(): number {\n return this.trackedPointers.size;\n }\n public getTrackedPointersID(): number[] {\n const keys: number[] = [];\n\n this.trackedPointers.forEach((_value, key) => {\n keys.push(key);\n });\n\n return keys;\n }\n\n public getData(): Map<number, TrackerElement> {\n return this.trackedPointers;\n }\n\n public resetTracker(): void {\n this.trackedPointers.clear();\n this.lastMovedPointerId = NaN;\n\n for (let i = 0; i < MAX_POINTERS; ++i) {\n this.touchEventsIds.set(i, NaN);\n }\n }\n\n public static shareCommonPointers(\n stPointers: number[],\n ndPointers: number[]\n ): boolean {\n return stPointers.some((pointerId) => ndPointers.includes(pointerId));\n }\n}\n"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "react-native-gesture-handler",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.7.0",
|
4
4
|
"description": "Experimental implementation of a new declarative API for gesture handling in react-native",
|
5
5
|
"scripts": {
|
6
6
|
"prepare": "bob build",
|
@@ -142,12 +142,8 @@
|
|
142
142
|
"src/fabric/*NativeComponent.js"
|
143
143
|
],
|
144
144
|
"codegenConfig": {
|
145
|
-
"
|
146
|
-
|
147
|
-
|
148
|
-
"type": "components",
|
149
|
-
"jsSrcsDir": "./src/fabric"
|
150
|
-
}
|
151
|
-
]
|
145
|
+
"name": "rngesturehandler_codegen",
|
146
|
+
"type": "components",
|
147
|
+
"jsSrcsDir": "./src/fabric"
|
152
148
|
}
|
153
149
|
}
|
@@ -143,7 +143,7 @@ export default class PointerTracker {
|
|
143
143
|
public getLastX(pointerId: number): number;
|
144
144
|
|
145
145
|
public getLastX(pointerId?: number): number {
|
146
|
-
if (pointerId) {
|
146
|
+
if (pointerId !== undefined) {
|
147
147
|
return this.trackedPointers.get(pointerId)?.lastX as number;
|
148
148
|
} else {
|
149
149
|
return this.trackedPointers.get(this.lastMovedPointerId)?.lastX as number;
|
@@ -164,7 +164,7 @@ export default class PointerTracker {
|
|
164
164
|
public getLastY(pointerId: number): number;
|
165
165
|
|
166
166
|
public getLastY(pointerId?: number): number {
|
167
|
-
if (pointerId) {
|
167
|
+
if (pointerId !== undefined) {
|
168
168
|
return this.trackedPointers.get(pointerId)?.lastY as number;
|
169
169
|
} else {
|
170
170
|
return this.trackedPointers.get(this.lastMovedPointerId)?.lastY as number;
|