react-native-gesture-handler 2.6.2 → 2.7.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.
Files changed (64) hide show
  1. package/android/build.gradle +0 -8
  2. package/android/gradle.properties +1 -1
  3. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt +7 -7
  4. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +46 -26
  5. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +76 -29
  6. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt +4 -6
  7. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +6 -6
  8. package/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt +1 -1
  9. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +1 -1
  10. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +11 -11
  11. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +17 -9
  12. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt +15 -8
  13. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt +10 -10
  14. package/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +1 -1
  15. package/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +1 -1
  16. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +31 -12
  17. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +2 -2
  18. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +1 -1
  19. package/ios/RNGestureHandlerButtonComponentView.mm +4 -4
  20. package/lib/commonjs/handlers/gestures/GestureDetector.js +9 -2
  21. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  22. package/lib/commonjs/handlers/gestures/gestureComposition.js +15 -4
  23. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
  24. package/lib/commonjs/web/handlers/FlingGestureHandler.js +18 -14
  25. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  26. package/lib/commonjs/web/handlers/GestureHandler.js +8 -4
  27. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  28. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +2 -0
  29. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  30. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +1 -4
  31. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  32. package/lib/commonjs/web/handlers/PanGestureHandler.js +2 -2
  33. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  34. package/lib/commonjs/web/tools/PointerTracker.js +2 -2
  35. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  36. package/lib/module/handlers/gestures/GestureDetector.js +9 -2
  37. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  38. package/lib/module/handlers/gestures/gestureComposition.js +15 -4
  39. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
  40. package/lib/module/web/handlers/FlingGestureHandler.js +18 -14
  41. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  42. package/lib/module/web/handlers/GestureHandler.js +8 -3
  43. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  44. package/lib/module/web/handlers/LongPressGestureHandler.js +2 -0
  45. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  46. package/lib/module/web/handlers/NativeViewGestureHandler.js +1 -4
  47. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  48. package/lib/module/web/handlers/PanGestureHandler.js +2 -2
  49. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  50. package/lib/module/web/tools/PointerTracker.js +2 -2
  51. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  52. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +1 -0
  53. package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
  54. package/package.json +4 -8
  55. package/src/handlers/gestures/GestureDetector.tsx +10 -3
  56. package/src/handlers/gestures/gestureComposition.ts +19 -6
  57. package/src/web/handlers/FlingGestureHandler.ts +26 -17
  58. package/src/web/handlers/GestureHandler.ts +13 -6
  59. package/src/web/handlers/LongPressGestureHandler.ts +2 -0
  60. package/src/web/handlers/NativeViewGestureHandler.ts +1 -4
  61. package/src/web/handlers/PanGestureHandler.ts +2 -2
  62. package/src/web/tools/PointerTracker.ts +2 -2
  63. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  64. package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +0 -19
@@ -1 +1 @@
1
- {"version":3,"sources":["PanGestureHandler.ts"],"names":["PixelRatio","State","DEFAULT_TOUCH_SLOP","GestureHandler","DEFAULT_MIN_POINTERS","DEFAULT_MAX_POINTERS","DEFAULT_MIN_DIST_SQ","PanGestureHandler","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","init","ref","propsRef","updateGestureConfig","enabled","props","resetConfig","checkCustomActivationCriteria","customActivationProperties","config","minDist","undefined","minDistSq","hasCustomActivationCriteria","minPointers","maxPointers","minVelocity","minVelocityX","minVelocityY","activateAfterLongPress","shouldCancelWhenOutside","setShouldCancelWhenOutside","activeOffsetXStart","activeOffsetXEnd","failOffsetXStart","failOffsetXEnd","activeOffsetYStart","activeOffsetYEnd","failOffsetYStart","failOffsetYEnd","minVelocitySq","transformNativeEvent","rect","view","getBoundingClientRect","ratio","get","translationX","getTranslationX","translationY","getTranslationY","isNaN","absoluteX","tracker","getLastAvgX","absoluteY","getLastAvgY","velocityX","velocityY","x","left","y","top","lastX","startX","offsetX","lastY","startY","offsetY","clearActivationTimeout","clearTimeout","activationTimeout","onPointerDown","event","addToTracker","tryBegin","checkBegan","onPointerAdd","getTrackedPointersCount","currentState","ACTIVE","cancel","fail","onPointerUp","removeFromTracker","pointerId","end","resetProgress","onPointerRemove","onPointerMove","track","getVelocityX","getVelocityY","onPointerCancel","reset","onPointerOutOfBounds","getShouldCancelWhenOutside","shouldActivate","dx","dy","distanceSq","vx","vy","velocitySq","shouldFail","UNDETERMINED","begin","setTimeout","activate","BEGAN","force","onCancel","onReset"],"mappings":"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","sourcesContent":["import { PixelRatio } from 'react-native';\nimport { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_POINTERS = 1;\nconst DEFAULT_MAX_POINTERS = 10;\nconst DEFAULT_MIN_DIST_SQ = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\nexport default class PanGestureHandler extends GestureHandler {\n private readonly customActivationProperties: string[] = [\n 'activeOffsetXStart',\n 'activeOffsetXEnd',\n 'failOffsetXStart',\n 'failOffsetXEnd',\n 'activeOffsetYStart',\n 'activeOffsetYEnd',\n 'failOffsetYStart',\n 'failOffsetYEnd',\n 'minVelocityX',\n 'minVelocityY',\n ];\n\n public velocityX = 0;\n public velocityY = 0;\n\n private minDistSq = DEFAULT_MIN_DIST_SQ;\n\n private activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n private activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetXStart = Number.MIN_SAFE_INTEGER;\n private failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n private activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n private activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetYStart = Number.MIN_SAFE_INTEGER;\n private failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n private minVelocityX = Number.MAX_SAFE_INTEGER;\n private minVelocityY = Number.MAX_SAFE_INTEGER;\n private minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n private minPointers = DEFAULT_MIN_POINTERS;\n private maxPointers = DEFAULT_MAX_POINTERS;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private activateAfterLongPress = 0;\n private activationTimeout = 0;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.resetConfig();\n\n super.updateGestureConfig({ enabled: enabled, ...props });\n this.checkCustomActivationCriteria(this.customActivationProperties);\n\n this.enabled = enabled;\n\n if (this.config.minDist !== undefined) {\n this.minDistSq = this.config.minDist * this.config.minDist;\n } else if (this.hasCustomActivationCriteria) {\n this.minDistSq = Number.MAX_SAFE_INTEGER;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minPointers = this.config.minPointers;\n }\n\n if (this.config.maxPointers !== undefined) {\n this.maxPointers = this.config.maxPointers;\n }\n\n if (this.config.minVelocity !== undefined) {\n this.minVelocityX = this.config.minVelocity;\n this.minVelocityY = this.config.minVelocity;\n }\n\n if (this.config.minVelocityX !== undefined) {\n this.minVelocityX = this.config.minVelocityX;\n }\n\n if (this.config.minVelocityY !== undefined) {\n this.minVelocityY = this.config.minVelocityY;\n }\n\n if (this.config.activateAfterLongPress !== undefined) {\n this.activateAfterLongPress = this.config.activateAfterLongPress;\n }\n\n if (this.config.shouldCancelWhenOutside) {\n this.setShouldCancelWhenOutside(false);\n }\n\n if (this.config.activeOffsetXStart !== undefined) {\n this.activeOffsetXStart = this.config.activeOffsetXStart;\n\n if (this.config.activeOffsetXEnd === undefined) {\n this.activeOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetXEnd !== undefined) {\n this.activeOffsetXEnd = this.config.activeOffsetXEnd;\n\n if (this.config.activeOffsetXStart === undefined) {\n this.activeOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXStart !== undefined) {\n this.failOffsetXStart = this.config.failOffsetXStart;\n\n if (this.config.failOffsetXEnd === undefined) {\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXEnd !== undefined) {\n this.failOffsetXEnd = this.config.failOffsetXEnd;\n\n if (this.config.failOffsetXStart === undefined) {\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYStart !== undefined) {\n this.activeOffsetYStart = this.config.activeOffsetYStart;\n\n if (this.config.activeOffsetYEnd === undefined) {\n this.activeOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYEnd !== undefined) {\n this.activeOffsetYEnd = this.config.activeOffsetYEnd;\n\n if (this.config.activeOffsetYStart === undefined) {\n this.activeOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYStart !== undefined) {\n this.failOffsetYStart = this.config.failOffsetYStart;\n\n if (this.config.failOffsetYEnd === undefined) {\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYEnd !== undefined) {\n this.failOffsetYEnd = this.config.failOffsetYEnd;\n\n if (this.config.failOffsetYStart === undefined) {\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n this.activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n this.activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n this.activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n this.minVelocityX = Number.MAX_SAFE_INTEGER;\n this.minVelocityY = Number.MAX_SAFE_INTEGER;\n this.minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n this.minDistSq = DEFAULT_MIN_DIST_SQ;\n\n this.minPointers = DEFAULT_MIN_POINTERS;\n this.maxPointers = DEFAULT_MAX_POINTERS;\n\n this.activateAfterLongPress = 0;\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n const ratio = PixelRatio.get();\n\n const translationX: number = this.getTranslationX();\n const translationY: number = this.getTranslationY();\n\n return {\n translationX: isNaN(translationX) ? 0 : translationX,\n translationY: isNaN(translationY) ? 0 : translationY,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n velocityX: this.velocityX * ratio * 10,\n velocityY: this.velocityY * ratio * 10,\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n };\n }\n\n private getTranslationX(): number {\n return this.lastX - this.startX + this.offsetX;\n }\n private getTranslationY(): number {\n return this.lastY - this.startY + this.offsetY;\n }\n\n private clearActivationTimeout(): void {\n clearTimeout(this.activationTimeout);\n }\n\n //EventsHandling\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.tryBegin(event);\n this.checkBegan();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.tryBegin(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (this.tracker.getTrackedPointersCount() > this.maxPointers) {\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n } else {\n this.checkBegan();\n }\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n\n if (this.currentState === State.ACTIVE) {\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n }\n\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.resetProgress();\n this.fail();\n }\n }\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (\n !(\n this.currentState === State.ACTIVE &&\n this.tracker.getTrackedPointersCount() < this.minPointers\n )\n ) {\n this.checkBegan();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n\n this.checkBegan();\n\n super.onPointerMove(event);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.getShouldCancelWhenOutside()) {\n return;\n }\n\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n\n this.checkBegan();\n\n if (this.currentState === State.ACTIVE) {\n super.onPointerOutOfBounds(event);\n }\n }\n\n private shouldActivate(): boolean {\n const dx: number = this.getTranslationX();\n\n if (\n this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER &&\n dx < this.activeOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetXEnd !== Number.MIN_SAFE_INTEGER &&\n dx > this.activeOffsetXEnd\n ) {\n return true;\n }\n\n const dy: number = this.getTranslationY();\n\n if (\n this.activeOffsetYStart !== Number.MAX_SAFE_INTEGER &&\n dy < this.activeOffsetYStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetYEnd !== Number.MIN_SAFE_INTEGER &&\n dy > this.activeOffsetYEnd\n ) {\n return true;\n }\n\n const distanceSq: number = dx * dx + dy * dy;\n\n if (\n this.minDistSq !== Number.MAX_SAFE_INTEGER &&\n distanceSq >= this.minDistSq\n ) {\n return true;\n }\n\n const vx: number = this.velocityX;\n\n if (\n this.minVelocityX !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityX < 0 && vx <= this.minVelocityX) ||\n (this.minVelocityX >= 0 && this.minVelocityX <= vx))\n ) {\n return true;\n }\n\n const vy: number = this.velocityY;\n if (\n this.minVelocityY !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityY < 0 && vy <= this.minVelocityY) ||\n (this.minVelocityY >= 0 && this.minVelocityY <= vy))\n ) {\n return true;\n }\n\n const velocitySq: number = vx * vx + vy * vy;\n\n return (\n this.minVelocitySq !== Number.MAX_SAFE_INTEGER &&\n velocitySq >= this.minVelocitySq\n );\n }\n\n private shouldFail(): boolean {\n const dx: number = this.getTranslationX();\n const dy: number = this.getTranslationY();\n const distanceSq = dx * dx + dy * dy;\n\n if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) {\n this.clearActivationTimeout();\n return true;\n }\n\n if (\n this.failOffsetXStart !== Number.MIN_SAFE_INTEGER &&\n dx < this.failOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.failOffsetXEnd !== Number.MAX_SAFE_INTEGER &&\n dx > this.failOffsetXEnd\n ) {\n return true;\n }\n\n if (\n this.failOffsetYStart !== Number.MIN_SAFE_INTEGER &&\n dy < this.failOffsetYStart\n ) {\n return true;\n }\n\n return (\n this.failOffsetYEnd !== Number.MAX_SAFE_INTEGER &&\n dy > this.failOffsetYEnd\n );\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (\n this.currentState === State.UNDETERMINED &&\n this.tracker.getTrackedPointersCount() >= this.minPointers\n ) {\n this.resetProgress();\n this.offsetX = 0;\n this.offsetY = 0;\n this.velocityX = 0;\n this.velocityY = 0;\n\n this.begin();\n\n if (this.activateAfterLongPress > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.activateAfterLongPress);\n }\n } else {\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n }\n }\n\n private checkBegan(): void {\n if (this.currentState === State.BEGAN) {\n if (this.shouldFail()) {\n this.fail();\n } else if (this.shouldActivate()) {\n this.activate();\n }\n }\n }\n\n public activate(force = false): void {\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n\n super.activate(force);\n }\n\n protected onCancel(): void {\n this.clearActivationTimeout();\n }\n\n protected onReset(): void {\n this.clearActivationTimeout();\n }\n\n protected resetProgress(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n }\n}\n"]}
1
+ {"version":3,"sources":["PanGestureHandler.ts"],"names":["PixelRatio","State","DEFAULT_TOUCH_SLOP","GestureHandler","DEFAULT_MIN_POINTERS","DEFAULT_MAX_POINTERS","DEFAULT_MIN_DIST_SQ","PanGestureHandler","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","init","ref","propsRef","updateGestureConfig","enabled","props","resetConfig","checkCustomActivationCriteria","customActivationProperties","config","minDist","undefined","minDistSq","hasCustomActivationCriteria","minPointers","maxPointers","minVelocity","minVelocityX","minVelocityY","activateAfterLongPress","shouldCancelWhenOutside","setShouldCancelWhenOutside","activeOffsetXStart","activeOffsetXEnd","failOffsetXStart","failOffsetXEnd","activeOffsetYStart","activeOffsetYEnd","failOffsetYStart","failOffsetYEnd","minVelocitySq","transformNativeEvent","rect","view","getBoundingClientRect","ratio","get","translationX","getTranslationX","translationY","getTranslationY","isNaN","absoluteX","tracker","getLastAvgX","absoluteY","getLastAvgY","velocityX","velocityY","x","left","y","top","lastX","startX","offsetX","lastY","startY","offsetY","clearActivationTimeout","clearTimeout","activationTimeout","onPointerDown","event","addToTracker","tryBegin","checkBegan","onPointerAdd","getTrackedPointersCount","currentState","ACTIVE","cancel","fail","onPointerUp","removeFromTracker","pointerId","end","resetProgress","onPointerRemove","onPointerMove","track","getVelocityX","getVelocityY","onPointerCancel","reset","onPointerOutOfBounds","getShouldCancelWhenOutside","shouldActivate","dx","dy","distanceSq","vx","vy","velocitySq","shouldFail","UNDETERMINED","begin","setTimeout","activate","BEGAN","force","onCancel","onReset"],"mappings":";;AAAA,SAASA,UAAT,QAA2B,cAA3B;AACA,SAASC,KAAT,QAAsB,aAAtB;AACA,SAASC,kBAAT,QAAmC,cAAnC;AAGA,OAAOC,cAAP,MAA2B,kBAA3B;AAEA,MAAMC,oBAAoB,GAAG,CAA7B;AACA,MAAMC,oBAAoB,GAAG,EAA7B;AACA,MAAMC,mBAAmB,GAAGJ,kBAAkB,GAAGA,kBAAjD;AAEA,eAAe,MAAMK,iBAAN,SAAgCJ,cAAhC,CAA+C;AAAA;AAAA;;AAAA,wDACJ,CACtD,oBADsD,EAEtD,kBAFsD,EAGtD,kBAHsD,EAItD,gBAJsD,EAKtD,oBALsD,EAMtD,kBANsD,EAOtD,kBAPsD,EAQtD,gBARsD,EAStD,cATsD,EAUtD,cAVsD,CADI;;AAAA,uCAczC,CAdyC;;AAAA,uCAezC,CAfyC;;AAAA,uCAiBxCG,mBAjBwC;;AAAA,gDAmB/B,CAACE,MAAM,CAACC,gBAnBuB;;AAAA,8CAoBjCD,MAAM,CAACE,gBApB0B;;AAAA,8CAqBjCF,MAAM,CAACE,gBArB0B;;AAAA,4CAsBnCF,MAAM,CAACC,gBAtB4B;;AAAA,gDAwB/BD,MAAM,CAACC,gBAxBwB;;AAAA,8CAyBjCD,MAAM,CAACE,gBAzB0B;;AAAA,8CA0BjCF,MAAM,CAACE,gBA1B0B;;AAAA,4CA2BnCF,MAAM,CAACC,gBA3B4B;;AAAA,0CA6BrCD,MAAM,CAACC,gBA7B8B;;AAAA,0CA8BrCD,MAAM,CAACC,gBA9B8B;;AAAA,2CA+BpCD,MAAM,CAACC,gBA/B6B;;AAAA,yCAiCtCL,oBAjCsC;;AAAA,yCAkCtCC,oBAlCsC;;AAAA,oCAoC3C,CApC2C;;AAAA,oCAqC3C,CArC2C;;AAAA,qCAsC1C,CAtC0C;;AAAA,qCAuC1C,CAvC0C;;AAAA,mCAwC5C,CAxC4C;;AAAA,mCAyC5C,CAzC4C;;AAAA,oDA2C3B,CA3C2B;;AAAA,+CA4ChC,CA5CgC;AAAA;;AA8CrDM,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAwD;AACjE,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,SAAKC,WAAL;AAEA,UAAMH,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;AACA,SAAKE,6BAAL,CAAmC,KAAKC,0BAAxC;AAEA,SAAKJ,OAAL,GAAeA,OAAf;;AAEA,QAAI,KAAKK,MAAL,CAAYC,OAAZ,KAAwBC,SAA5B,EAAuC;AACrC,WAAKC,SAAL,GAAiB,KAAKH,MAAL,CAAYC,OAAZ,GAAsB,KAAKD,MAAL,CAAYC,OAAnD;AACD,KAFD,MAEO,IAAI,KAAKG,2BAAT,EAAsC;AAC3C,WAAKD,SAAL,GAAiBf,MAAM,CAACC,gBAAxB;AACD;;AAED,QAAI,KAAKW,MAAL,CAAYK,WAAZ,KAA4BH,SAAhC,EAA2C;AACzC,WAAKG,WAAL,GAAmB,KAAKL,MAAL,CAAYK,WAA/B;AACD;;AAED,QAAI,KAAKL,MAAL,CAAYM,WAAZ,KAA4BJ,SAAhC,EAA2C;AACzC,WAAKI,WAAL,GAAmB,KAAKN,MAAL,CAAYM,WAA/B;AACD;;AAED,QAAI,KAAKN,MAAL,CAAYO,WAAZ,KAA4BL,SAAhC,EAA2C;AACzC,WAAKM,YAAL,GAAoB,KAAKR,MAAL,CAAYO,WAAhC;AACA,WAAKE,YAAL,GAAoB,KAAKT,MAAL,CAAYO,WAAhC;AACD;;AAED,QAAI,KAAKP,MAAL,CAAYQ,YAAZ,KAA6BN,SAAjC,EAA4C;AAC1C,WAAKM,YAAL,GAAoB,KAAKR,MAAL,CAAYQ,YAAhC;AACD;;AAED,QAAI,KAAKR,MAAL,CAAYS,YAAZ,KAA6BP,SAAjC,EAA4C;AAC1C,WAAKO,YAAL,GAAoB,KAAKT,MAAL,CAAYS,YAAhC;AACD;;AAED,QAAI,KAAKT,MAAL,CAAYU,sBAAZ,KAAuCR,SAA3C,EAAsD;AACpD,WAAKQ,sBAAL,GAA8B,KAAKV,MAAL,CAAYU,sBAA1C;AACD;;AAED,QAAI,KAAKV,MAAL,CAAYW,uBAAZ,KAAwCT,SAA5C,EAAuD;AACrD,WAAKU,0BAAL,CAAgC,KAAKZ,MAAL,CAAYW,uBAA5C;AACD;;AAED,QAAI,KAAKX,MAAL,CAAYa,kBAAZ,KAAmCX,SAAvC,EAAkD;AAChD,WAAKW,kBAAL,GAA0B,KAAKb,MAAL,CAAYa,kBAAtC;;AAEA,UAAI,KAAKb,MAAL,CAAYc,gBAAZ,KAAiCZ,SAArC,EAAgD;AAC9C,aAAKY,gBAAL,GAAwB1B,MAAM,CAACC,gBAA/B;AACD;AACF;;AAED,QAAI,KAAKW,MAAL,CAAYc,gBAAZ,KAAiCZ,SAArC,EAAgD;AAC9C,WAAKY,gBAAL,GAAwB,KAAKd,MAAL,CAAYc,gBAApC;;AAEA,UAAI,KAAKd,MAAL,CAAYa,kBAAZ,KAAmCX,SAAvC,EAAkD;AAChD,aAAKW,kBAAL,GAA0BzB,MAAM,CAACE,gBAAjC;AACD;AACF;;AAED,QAAI,KAAKU,MAAL,CAAYe,gBAAZ,KAAiCb,SAArC,EAAgD;AAC9C,WAAKa,gBAAL,GAAwB,KAAKf,MAAL,CAAYe,gBAApC;;AAEA,UAAI,KAAKf,MAAL,CAAYgB,cAAZ,KAA+Bd,SAAnC,EAA8C;AAC5C,aAAKc,cAAL,GAAsB5B,MAAM,CAACC,gBAA7B;AACD;AACF;;AAED,QAAI,KAAKW,MAAL,CAAYgB,cAAZ,KAA+Bd,SAAnC,EAA8C;AAC5C,WAAKc,cAAL,GAAsB,KAAKhB,MAAL,CAAYgB,cAAlC;;AAEA,UAAI,KAAKhB,MAAL,CAAYe,gBAAZ,KAAiCb,SAArC,EAAgD;AAC9C,aAAKa,gBAAL,GAAwB3B,MAAM,CAACE,gBAA/B;AACD;AACF;;AAED,QAAI,KAAKU,MAAL,CAAYiB,kBAAZ,KAAmCf,SAAvC,EAAkD;AAChD,WAAKe,kBAAL,GAA0B,KAAKjB,MAAL,CAAYiB,kBAAtC;;AAEA,UAAI,KAAKjB,MAAL,CAAYkB,gBAAZ,KAAiChB,SAArC,EAAgD;AAC9C,aAAKgB,gBAAL,GAAwB9B,MAAM,CAACC,gBAA/B;AACD;AACF;;AAED,QAAI,KAAKW,MAAL,CAAYkB,gBAAZ,KAAiChB,SAArC,EAAgD;AAC9C,WAAKgB,gBAAL,GAAwB,KAAKlB,MAAL,CAAYkB,gBAApC;;AAEA,UAAI,KAAKlB,MAAL,CAAYiB,kBAAZ,KAAmCf,SAAvC,EAAkD;AAChD,aAAKe,kBAAL,GAA0B7B,MAAM,CAACE,gBAAjC;AACD;AACF;;AAED,QAAI,KAAKU,MAAL,CAAYmB,gBAAZ,KAAiCjB,SAArC,EAAgD;AAC9C,WAAKiB,gBAAL,GAAwB,KAAKnB,MAAL,CAAYmB,gBAApC;;AAEA,UAAI,KAAKnB,MAAL,CAAYoB,cAAZ,KAA+BlB,SAAnC,EAA8C;AAC5C,aAAKkB,cAAL,GAAsBhC,MAAM,CAACC,gBAA7B;AACD;AACF;;AAED,QAAI,KAAKW,MAAL,CAAYoB,cAAZ,KAA+BlB,SAAnC,EAA8C;AAC5C,WAAKkB,cAAL,GAAsB,KAAKpB,MAAL,CAAYoB,cAAlC;;AAEA,UAAI,KAAKpB,MAAL,CAAYmB,gBAAZ,KAAiCjB,SAArC,EAAgD;AAC9C,aAAKiB,gBAAL,GAAwB/B,MAAM,CAACE,gBAA/B;AACD;AACF;AACF;;AAESO,EAAAA,WAAW,GAAS;AAC5B,UAAMA,WAAN;AAEA,SAAKgB,kBAAL,GAA0B,CAACzB,MAAM,CAACC,gBAAlC;AACA,SAAKyB,gBAAL,GAAwB1B,MAAM,CAACE,gBAA/B;AACA,SAAKyB,gBAAL,GAAwB3B,MAAM,CAACE,gBAA/B;AACA,SAAK0B,cAAL,GAAsB5B,MAAM,CAACC,gBAA7B;AAEA,SAAK4B,kBAAL,GAA0B7B,MAAM,CAACC,gBAAjC;AACA,SAAK6B,gBAAL,GAAwB9B,MAAM,CAACE,gBAA/B;AACA,SAAK6B,gBAAL,GAAwB/B,MAAM,CAACE,gBAA/B;AACA,SAAK8B,cAAL,GAAsBhC,MAAM,CAACC,gBAA7B;AAEA,SAAKmB,YAAL,GAAoBpB,MAAM,CAACC,gBAA3B;AACA,SAAKoB,YAAL,GAAoBrB,MAAM,CAACC,gBAA3B;AACA,SAAKgC,aAAL,GAAqBjC,MAAM,CAACC,gBAA5B;AAEA,SAAKc,SAAL,GAAiBjB,mBAAjB;AAEA,SAAKmB,WAAL,GAAmBrB,oBAAnB;AACA,SAAKsB,WAAL,GAAmBrB,oBAAnB;AAEA,SAAKyB,sBAAL,GAA8B,CAA9B;AACD;;AAESY,EAAAA,oBAAoB,GAAG;AAC/B,UAAMC,IAAa,GAAG,KAAKC,IAAL,CAAUC,qBAAV,EAAtB;AACA,UAAMC,KAAK,GAAG9C,UAAU,CAAC+C,GAAX,EAAd;AAEA,UAAMC,YAAoB,GAAG,KAAKC,eAAL,EAA7B;AACA,UAAMC,YAAoB,GAAG,KAAKC,eAAL,EAA7B;AAEA,WAAO;AACLH,MAAAA,YAAY,EAAEI,KAAK,CAACJ,YAAD,CAAL,GAAsB,CAAtB,GAA0BA,YADnC;AAELE,MAAAA,YAAY,EAAEE,KAAK,CAACF,YAAD,CAAL,GAAsB,CAAtB,GAA0BA,YAFnC;AAGLG,MAAAA,SAAS,EAAE,KAAKC,OAAL,CAAaC,WAAb,EAHN;AAILC,MAAAA,SAAS,EAAE,KAAKF,OAAL,CAAaG,WAAb,EAJN;AAKLC,MAAAA,SAAS,EAAE,KAAKA,SAAL,GAAiBZ,KAAjB,GAAyB,EAL/B;AAMLa,MAAAA,SAAS,EAAE,KAAKA,SAAL,GAAiBb,KAAjB,GAAyB,EAN/B;AAOLc,MAAAA,CAAC,EAAE,KAAKN,OAAL,CAAaC,WAAb,KAA6BZ,IAAI,CAACkB,IAPhC;AAQLC,MAAAA,CAAC,EAAE,KAAKR,OAAL,CAAaG,WAAb,KAA6Bd,IAAI,CAACoB;AARhC,KAAP;AAUD;;AAEOd,EAAAA,eAAe,GAAW;AAChC,WAAO,KAAKe,KAAL,GAAa,KAAKC,MAAlB,GAA2B,KAAKC,OAAvC;AACD;;AACOf,EAAAA,eAAe,GAAW;AAChC,WAAO,KAAKgB,KAAL,GAAa,KAAKC,MAAlB,GAA2B,KAAKC,OAAvC;AACD;;AAEOC,EAAAA,sBAAsB,GAAS;AACrCC,IAAAA,YAAY,CAAC,KAAKC,iBAAN,CAAZ;AACD,GAnN2D,CAqN5D;;;AACUC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKpB,OAAL,CAAaqB,YAAb,CAA0BD,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AAEA,SAAKV,KAAL,GAAa,KAAKV,OAAL,CAAaC,WAAb,EAAb;AACA,SAAKY,KAAL,GAAa,KAAKb,OAAL,CAAaG,WAAb,EAAb;AAEA,SAAKmB,QAAL,CAAcF,KAAd;AACA,SAAKG,UAAL;AACD;;AAESC,EAAAA,YAAY,CAACJ,KAAD,EAA4B;AAChD,SAAKpB,OAAL,CAAaqB,YAAb,CAA0BD,KAA1B;AACA,UAAMI,YAAN,CAAmBJ,KAAnB;AACA,SAAKE,QAAL,CAAcF,KAAd;AAEA,SAAKR,OAAL,IAAgB,KAAKF,KAAL,GAAa,KAAKC,MAAlC;AACA,SAAKI,OAAL,IAAgB,KAAKF,KAAL,GAAa,KAAKC,MAAlC;AAEA,SAAKJ,KAAL,GAAa,KAAKV,OAAL,CAAaC,WAAb,EAAb;AACA,SAAKY,KAAL,GAAa,KAAKb,OAAL,CAAaG,WAAb,EAAb;AAEA,SAAKQ,MAAL,GAAc,KAAKD,KAAnB;AACA,SAAKI,MAAL,GAAc,KAAKD,KAAnB;;AAEA,QAAI,KAAKb,OAAL,CAAayB,uBAAb,KAAyC,KAAKrD,WAAlD,EAA+D;AAC7D,UAAI,KAAKsD,YAAL,KAAsB/E,KAAK,CAACgF,MAAhC,EAAwC;AACtC,aAAKC,MAAL;AACD,OAFD,MAEO;AACL,aAAKC,IAAL;AACD;AACF,KAND,MAMO;AACL,WAAKN,UAAL;AACD;AACF;;AAESO,EAAAA,WAAW,CAACV,KAAD,EAA4B;AAC/C,UAAMU,WAAN,CAAkBV,KAAlB;;AAEA,QAAI,KAAKM,YAAL,KAAsB/E,KAAK,CAACgF,MAAhC,EAAwC;AACtC,WAAKjB,KAAL,GAAa,KAAKV,OAAL,CAAaC,WAAb,EAAb;AACA,WAAKY,KAAL,GAAa,KAAKb,OAAL,CAAaG,WAAb,EAAb;AACD;;AAED,SAAKH,OAAL,CAAa+B,iBAAb,CAA+BX,KAAK,CAACY,SAArC;;AAEA,QAAI,KAAKN,YAAL,KAAsB/E,KAAK,CAACgF,MAAhC,EAAwC;AACtC,WAAKM,GAAL;AACD,KAFD,MAEO;AACL,WAAKC,aAAL;AACA,WAAKL,IAAL;AACD;AACF;;AACSM,EAAAA,eAAe,CAACf,KAAD,EAA4B;AACnD,UAAMe,eAAN,CAAsBf,KAAtB;AACA,SAAKpB,OAAL,CAAa+B,iBAAb,CAA+BX,KAAK,CAACY,SAArC;AAEA,SAAKpB,OAAL,IAAgB,KAAKF,KAAL,GAAa,KAAKC,MAAlC;AACA,SAAKI,OAAL,IAAgB,KAAKF,KAAL,GAAa,KAAKC,MAAlC;AAEA,SAAKJ,KAAL,GAAa,KAAKV,OAAL,CAAaC,WAAb,EAAb;AACA,SAAKY,KAAL,GAAa,KAAKb,OAAL,CAAaG,WAAb,EAAb;AAEA,SAAKQ,MAAL,GAAc,KAAKD,KAAnB;AACA,SAAKI,MAAL,GAAc,KAAKD,KAAnB;;AAEA,QACE,EACE,KAAKa,YAAL,KAAsB/E,KAAK,CAACgF,MAA5B,IACA,KAAK3B,OAAL,CAAayB,uBAAb,KAAyC,KAAKtD,WAFhD,CADF,EAKE;AACA,WAAKoD,UAAL;AACD;AACF;;AAESa,EAAAA,aAAa,CAAChB,KAAD,EAA4B;AACjD,SAAKpB,OAAL,CAAaqC,KAAb,CAAmBjB,KAAnB;AAEA,SAAKV,KAAL,GAAa,KAAKV,OAAL,CAAaC,WAAb,EAAb;AACA,SAAKY,KAAL,GAAa,KAAKb,OAAL,CAAaG,WAAb,EAAb;AACA,SAAKC,SAAL,GAAiB,KAAKJ,OAAL,CAAasC,YAAb,CAA0BlB,KAAK,CAACY,SAAhC,CAAjB;AACA,SAAK3B,SAAL,GAAiB,KAAKL,OAAL,CAAauC,YAAb,CAA0BnB,KAAK,CAACY,SAAhC,CAAjB;AAEA,SAAKT,UAAL;AAEA,UAAMa,aAAN,CAAoBhB,KAApB;AACD;;AAESoB,EAAAA,eAAe,CAACpB,KAAD,EAA4B;AACnD,UAAMoB,eAAN,CAAsBpB,KAAtB;AAEA,SAAKqB,KAAL;AACD;;AACSC,EAAAA,oBAAoB,CAACtB,KAAD,EAA4B;AACxD,QAAI,KAAKuB,0BAAL,EAAJ,EAAuC;AACrC;AACD;;AAED,SAAK3C,OAAL,CAAaqC,KAAb,CAAmBjB,KAAnB;AAEA,SAAKV,KAAL,GAAa,KAAKV,OAAL,CAAaC,WAAb,EAAb;AACA,SAAKY,KAAL,GAAa,KAAKb,OAAL,CAAaG,WAAb,EAAb;AACA,SAAKC,SAAL,GAAiB,KAAKJ,OAAL,CAAasC,YAAb,CAA0BlB,KAAK,CAACY,SAAhC,CAAjB;AACA,SAAK3B,SAAL,GAAiB,KAAKL,OAAL,CAAauC,YAAb,CAA0BnB,KAAK,CAACY,SAAhC,CAAjB;AAEA,SAAKT,UAAL;;AAEA,QAAI,KAAKG,YAAL,KAAsB/E,KAAK,CAACgF,MAAhC,EAAwC;AACtC,YAAMe,oBAAN,CAA2BtB,KAA3B;AACD;AACF;;AAEOwB,EAAAA,cAAc,GAAY;AAChC,UAAMC,EAAU,GAAG,KAAKlD,eAAL,EAAnB;;AAEA,QACE,KAAKhB,kBAAL,KAA4BzB,MAAM,CAACC,gBAAnC,IACA0F,EAAE,GAAG,KAAKlE,kBAFZ,EAGE;AACA,aAAO,IAAP;AACD;;AAED,QACE,KAAKC,gBAAL,KAA0B1B,MAAM,CAACE,gBAAjC,IACAyF,EAAE,GAAG,KAAKjE,gBAFZ,EAGE;AACA,aAAO,IAAP;AACD;;AAED,UAAMkE,EAAU,GAAG,KAAKjD,eAAL,EAAnB;;AAEA,QACE,KAAKd,kBAAL,KAA4B7B,MAAM,CAACC,gBAAnC,IACA2F,EAAE,GAAG,KAAK/D,kBAFZ,EAGE;AACA,aAAO,IAAP;AACD;;AAED,QACE,KAAKC,gBAAL,KAA0B9B,MAAM,CAACE,gBAAjC,IACA0F,EAAE,GAAG,KAAK9D,gBAFZ,EAGE;AACA,aAAO,IAAP;AACD;;AAED,UAAM+D,UAAkB,GAAGF,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAA1C;;AAEA,QACE,KAAK7E,SAAL,KAAmBf,MAAM,CAACC,gBAA1B,IACA4F,UAAU,IAAI,KAAK9E,SAFrB,EAGE;AACA,aAAO,IAAP;AACD;;AAED,UAAM+E,EAAU,GAAG,KAAK5C,SAAxB;;AAEA,QACE,KAAK9B,YAAL,KAAsBpB,MAAM,CAACC,gBAA7B,KACE,KAAKmB,YAAL,GAAoB,CAApB,IAAyB0E,EAAE,IAAI,KAAK1E,YAArC,IACE,KAAKA,YAAL,IAAqB,CAArB,IAA0B,KAAKA,YAAL,IAAqB0E,EAFlD,CADF,EAIE;AACA,aAAO,IAAP;AACD;;AAED,UAAMC,EAAU,GAAG,KAAK5C,SAAxB;;AACA,QACE,KAAK9B,YAAL,KAAsBrB,MAAM,CAACC,gBAA7B,KACE,KAAKoB,YAAL,GAAoB,CAApB,IAAyB0E,EAAE,IAAI,KAAK1E,YAArC,IACE,KAAKA,YAAL,IAAqB,CAArB,IAA0B,KAAKA,YAAL,IAAqB0E,EAFlD,CADF,EAIE;AACA,aAAO,IAAP;AACD;;AAED,UAAMC,UAAkB,GAAGF,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAA1C;AAEA,WACE,KAAK9D,aAAL,KAAuBjC,MAAM,CAACC,gBAA9B,IACA+F,UAAU,IAAI,KAAK/D,aAFrB;AAID;;AAEOgE,EAAAA,UAAU,GAAY;AAC5B,UAAMN,EAAU,GAAG,KAAKlD,eAAL,EAAnB;AACA,UAAMmD,EAAU,GAAG,KAAKjD,eAAL,EAAnB;AACA,UAAMkD,UAAU,GAAGF,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAlC;;AAEA,QAAI,KAAKtE,sBAAL,GAA8B,CAA9B,IAAmCuE,UAAU,GAAG/F,mBAApD,EAAyE;AACvE,WAAKgE,sBAAL;AACA,aAAO,IAAP;AACD;;AAED,QACE,KAAKnC,gBAAL,KAA0B3B,MAAM,CAACE,gBAAjC,IACAyF,EAAE,GAAG,KAAKhE,gBAFZ,EAGE;AACA,aAAO,IAAP;AACD;;AAED,QACE,KAAKC,cAAL,KAAwB5B,MAAM,CAACC,gBAA/B,IACA0F,EAAE,GAAG,KAAK/D,cAFZ,EAGE;AACA,aAAO,IAAP;AACD;;AAED,QACE,KAAKG,gBAAL,KAA0B/B,MAAM,CAACE,gBAAjC,IACA0F,EAAE,GAAG,KAAK7D,gBAFZ,EAGE;AACA,aAAO,IAAP;AACD;;AAED,WACE,KAAKC,cAAL,KAAwBhC,MAAM,CAACC,gBAA/B,IACA2F,EAAE,GAAG,KAAK5D,cAFZ;AAID;;AAEOoC,EAAAA,QAAQ,CAACF,KAAD,EAA4B;AAC1C,QACE,KAAKM,YAAL,KAAsB/E,KAAK,CAACyG,YAA5B,IACA,KAAKpD,OAAL,CAAayB,uBAAb,MAA0C,KAAKtD,WAFjD,EAGE;AACA,WAAK+D,aAAL;AACA,WAAKtB,OAAL,GAAe,CAAf;AACA,WAAKG,OAAL,GAAe,CAAf;AACA,WAAKX,SAAL,GAAiB,CAAjB;AACA,WAAKC,SAAL,GAAiB,CAAjB;AAEA,WAAKgD,KAAL;;AAEA,UAAI,KAAK7E,sBAAL,GAA8B,CAAlC,EAAqC;AACnC,aAAK0C,iBAAL,GAAyBoC,UAAU,CAAC,MAAM;AACxC,eAAKC,QAAL;AACD,SAFkC,EAEhC,KAAK/E,sBAF2B,CAAnC;AAGD;AACF,KAjBD,MAiBO;AACL,WAAK4B,SAAL,GAAiB,KAAKJ,OAAL,CAAasC,YAAb,CAA0BlB,KAAK,CAACY,SAAhC,CAAjB;AACA,WAAK3B,SAAL,GAAiB,KAAKL,OAAL,CAAauC,YAAb,CAA0BnB,KAAK,CAACY,SAAhC,CAAjB;AACD;AACF;;AAEOT,EAAAA,UAAU,GAAS;AACzB,QAAI,KAAKG,YAAL,KAAsB/E,KAAK,CAAC6G,KAAhC,EAAuC;AACrC,UAAI,KAAKL,UAAL,EAAJ,EAAuB;AACrB,aAAKtB,IAAL;AACD,OAFD,MAEO,IAAI,KAAKe,cAAL,EAAJ,EAA2B;AAChC,aAAKW,QAAL;AACD;AACF;AACF;;AAEMA,EAAAA,QAAQ,CAACE,KAAK,GAAG,KAAT,EAAsB;AACnC,QAAI,KAAK/B,YAAL,KAAsB/E,KAAK,CAACgF,MAAhC,EAAwC;AACtC,WAAKO,aAAL;AACD;;AAED,UAAMqB,QAAN,CAAeE,KAAf;AACD;;AAESC,EAAAA,QAAQ,GAAS;AACzB,SAAK1C,sBAAL;AACD;;AAES2C,EAAAA,OAAO,GAAS;AACxB,SAAK3C,sBAAL;AACD;;AAESkB,EAAAA,aAAa,GAAS;AAC9B,QAAI,KAAKR,YAAL,KAAsB/E,KAAK,CAACgF,MAAhC,EAAwC;AACtC;AACD;;AAED,SAAKhB,MAAL,GAAc,KAAKD,KAAnB;AACA,SAAKI,MAAL,GAAc,KAAKD,KAAnB;AACD;;AA1e2D","sourcesContent":["import { PixelRatio } from 'react-native';\nimport { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_POINTERS = 1;\nconst DEFAULT_MAX_POINTERS = 10;\nconst DEFAULT_MIN_DIST_SQ = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\nexport default class PanGestureHandler extends GestureHandler {\n private readonly customActivationProperties: string[] = [\n 'activeOffsetXStart',\n 'activeOffsetXEnd',\n 'failOffsetXStart',\n 'failOffsetXEnd',\n 'activeOffsetYStart',\n 'activeOffsetYEnd',\n 'failOffsetYStart',\n 'failOffsetYEnd',\n 'minVelocityX',\n 'minVelocityY',\n ];\n\n public velocityX = 0;\n public velocityY = 0;\n\n private minDistSq = DEFAULT_MIN_DIST_SQ;\n\n private activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n private activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetXStart = Number.MIN_SAFE_INTEGER;\n private failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n private activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n private activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetYStart = Number.MIN_SAFE_INTEGER;\n private failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n private minVelocityX = Number.MAX_SAFE_INTEGER;\n private minVelocityY = Number.MAX_SAFE_INTEGER;\n private minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n private minPointers = DEFAULT_MIN_POINTERS;\n private maxPointers = DEFAULT_MAX_POINTERS;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private activateAfterLongPress = 0;\n private activationTimeout = 0;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.resetConfig();\n\n super.updateGestureConfig({ enabled: enabled, ...props });\n this.checkCustomActivationCriteria(this.customActivationProperties);\n\n this.enabled = enabled;\n\n if (this.config.minDist !== undefined) {\n this.minDistSq = this.config.minDist * this.config.minDist;\n } else if (this.hasCustomActivationCriteria) {\n this.minDistSq = Number.MAX_SAFE_INTEGER;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minPointers = this.config.minPointers;\n }\n\n if (this.config.maxPointers !== undefined) {\n this.maxPointers = this.config.maxPointers;\n }\n\n if (this.config.minVelocity !== undefined) {\n this.minVelocityX = this.config.minVelocity;\n this.minVelocityY = this.config.minVelocity;\n }\n\n if (this.config.minVelocityX !== undefined) {\n this.minVelocityX = this.config.minVelocityX;\n }\n\n if (this.config.minVelocityY !== undefined) {\n this.minVelocityY = this.config.minVelocityY;\n }\n\n if (this.config.activateAfterLongPress !== undefined) {\n this.activateAfterLongPress = this.config.activateAfterLongPress;\n }\n\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n\n if (this.config.activeOffsetXStart !== undefined) {\n this.activeOffsetXStart = this.config.activeOffsetXStart;\n\n if (this.config.activeOffsetXEnd === undefined) {\n this.activeOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetXEnd !== undefined) {\n this.activeOffsetXEnd = this.config.activeOffsetXEnd;\n\n if (this.config.activeOffsetXStart === undefined) {\n this.activeOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXStart !== undefined) {\n this.failOffsetXStart = this.config.failOffsetXStart;\n\n if (this.config.failOffsetXEnd === undefined) {\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXEnd !== undefined) {\n this.failOffsetXEnd = this.config.failOffsetXEnd;\n\n if (this.config.failOffsetXStart === undefined) {\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYStart !== undefined) {\n this.activeOffsetYStart = this.config.activeOffsetYStart;\n\n if (this.config.activeOffsetYEnd === undefined) {\n this.activeOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYEnd !== undefined) {\n this.activeOffsetYEnd = this.config.activeOffsetYEnd;\n\n if (this.config.activeOffsetYStart === undefined) {\n this.activeOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYStart !== undefined) {\n this.failOffsetYStart = this.config.failOffsetYStart;\n\n if (this.config.failOffsetYEnd === undefined) {\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYEnd !== undefined) {\n this.failOffsetYEnd = this.config.failOffsetYEnd;\n\n if (this.config.failOffsetYStart === undefined) {\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n this.activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n this.activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n this.activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n this.minVelocityX = Number.MAX_SAFE_INTEGER;\n this.minVelocityY = Number.MAX_SAFE_INTEGER;\n this.minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n this.minDistSq = DEFAULT_MIN_DIST_SQ;\n\n this.minPointers = DEFAULT_MIN_POINTERS;\n this.maxPointers = DEFAULT_MAX_POINTERS;\n\n this.activateAfterLongPress = 0;\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n const ratio = PixelRatio.get();\n\n const translationX: number = this.getTranslationX();\n const translationY: number = this.getTranslationY();\n\n return {\n translationX: isNaN(translationX) ? 0 : translationX,\n translationY: isNaN(translationY) ? 0 : translationY,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n velocityX: this.velocityX * ratio * 10,\n velocityY: this.velocityY * ratio * 10,\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n };\n }\n\n private getTranslationX(): number {\n return this.lastX - this.startX + this.offsetX;\n }\n private getTranslationY(): number {\n return this.lastY - this.startY + this.offsetY;\n }\n\n private clearActivationTimeout(): void {\n clearTimeout(this.activationTimeout);\n }\n\n //EventsHandling\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.tryBegin(event);\n this.checkBegan();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.tryBegin(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (this.tracker.getTrackedPointersCount() > this.maxPointers) {\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n } else {\n this.checkBegan();\n }\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n\n if (this.currentState === State.ACTIVE) {\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n }\n\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.resetProgress();\n this.fail();\n }\n }\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (\n !(\n this.currentState === State.ACTIVE &&\n this.tracker.getTrackedPointersCount() < this.minPointers\n )\n ) {\n this.checkBegan();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n\n this.checkBegan();\n\n super.onPointerMove(event);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.getShouldCancelWhenOutside()) {\n return;\n }\n\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n\n this.checkBegan();\n\n if (this.currentState === State.ACTIVE) {\n super.onPointerOutOfBounds(event);\n }\n }\n\n private shouldActivate(): boolean {\n const dx: number = this.getTranslationX();\n\n if (\n this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER &&\n dx < this.activeOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetXEnd !== Number.MIN_SAFE_INTEGER &&\n dx > this.activeOffsetXEnd\n ) {\n return true;\n }\n\n const dy: number = this.getTranslationY();\n\n if (\n this.activeOffsetYStart !== Number.MAX_SAFE_INTEGER &&\n dy < this.activeOffsetYStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetYEnd !== Number.MIN_SAFE_INTEGER &&\n dy > this.activeOffsetYEnd\n ) {\n return true;\n }\n\n const distanceSq: number = dx * dx + dy * dy;\n\n if (\n this.minDistSq !== Number.MAX_SAFE_INTEGER &&\n distanceSq >= this.minDistSq\n ) {\n return true;\n }\n\n const vx: number = this.velocityX;\n\n if (\n this.minVelocityX !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityX < 0 && vx <= this.minVelocityX) ||\n (this.minVelocityX >= 0 && this.minVelocityX <= vx))\n ) {\n return true;\n }\n\n const vy: number = this.velocityY;\n if (\n this.minVelocityY !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityY < 0 && vy <= this.minVelocityY) ||\n (this.minVelocityY >= 0 && this.minVelocityY <= vy))\n ) {\n return true;\n }\n\n const velocitySq: number = vx * vx + vy * vy;\n\n return (\n this.minVelocitySq !== Number.MAX_SAFE_INTEGER &&\n velocitySq >= this.minVelocitySq\n );\n }\n\n private shouldFail(): boolean {\n const dx: number = this.getTranslationX();\n const dy: number = this.getTranslationY();\n const distanceSq = dx * dx + dy * dy;\n\n if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) {\n this.clearActivationTimeout();\n return true;\n }\n\n if (\n this.failOffsetXStart !== Number.MIN_SAFE_INTEGER &&\n dx < this.failOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.failOffsetXEnd !== Number.MAX_SAFE_INTEGER &&\n dx > this.failOffsetXEnd\n ) {\n return true;\n }\n\n if (\n this.failOffsetYStart !== Number.MIN_SAFE_INTEGER &&\n dy < this.failOffsetYStart\n ) {\n return true;\n }\n\n return (\n this.failOffsetYEnd !== Number.MAX_SAFE_INTEGER &&\n dy > this.failOffsetYEnd\n );\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (\n this.currentState === State.UNDETERMINED &&\n this.tracker.getTrackedPointersCount() >= this.minPointers\n ) {\n this.resetProgress();\n this.offsetX = 0;\n this.offsetY = 0;\n this.velocityX = 0;\n this.velocityY = 0;\n\n this.begin();\n\n if (this.activateAfterLongPress > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.activateAfterLongPress);\n }\n } else {\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n }\n }\n\n private checkBegan(): void {\n if (this.currentState === State.BEGAN) {\n if (this.shouldFail()) {\n this.fail();\n } else if (this.shouldActivate()) {\n this.activate();\n }\n }\n }\n\n public activate(force = false): void {\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n\n super.activate(force);\n }\n\n protected onCancel(): void {\n this.clearActivationTimeout();\n }\n\n protected onReset(): void {\n this.clearActivationTimeout();\n }\n\n protected resetProgress(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n }\n}\n"]}
@@ -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"]}
@@ -9,6 +9,7 @@ export default class FlingGestureHandler extends GestureHandler {
9
9
  private startX;
10
10
  private startY;
11
11
  private maxNumberOfPointersSimultaneously;
12
+ private keyPointer;
12
13
  init(ref: number, propsRef: React.RefObject<unknown>): void;
13
14
  updateGestureConfig({ enabled, ...props }: Config): void;
14
15
  protected transformNativeEvent(): {
@@ -88,6 +88,7 @@ export default abstract class GestureHandler {
88
88
  getTrackedPointersID(): number[];
89
89
  getState(): State;
90
90
  isEnabled(): boolean;
91
+ private isFinished;
91
92
  protected setShouldCancelWhenOutside(shouldCancel: boolean): void;
92
93
  protected getShouldCancelWhenOutside(): boolean;
93
94
  getPointerType(): PointerType;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-gesture-handler",
3
- "version": "2.6.2",
3
+ "version": "2.7.1",
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
- "libraries": [
146
- {
147
- "name": "rngesturehandler",
148
- "type": "components",
149
- "jsSrcsDir": "./src/fabric"
150
- }
151
- ]
145
+ "name": "rngesturehandler_codegen",
146
+ "type": "components",
147
+ "jsSrcsDir": "./src/fabric"
152
148
  }
153
149
  }
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useRef } from 'react';
1
+ import React, { useEffect, useRef, RefObject } from 'react';
2
2
  import {
3
3
  GestureType,
4
4
  HandlerCallbacks,
@@ -226,7 +226,8 @@ function attachHandlers({
226
226
  function updateHandlers(
227
227
  preparedGesture: GestureConfigReference,
228
228
  gestureConfig: ComposedGesture | GestureType | undefined,
229
- gesture: GestureType[]
229
+ gesture: GestureType[],
230
+ mountedRef: RefObject<boolean>
230
231
  ) {
231
232
  gestureConfig?.prepare();
232
233
 
@@ -246,6 +247,9 @@ function updateHandlers(
246
247
  // and handlerTags in BaseGesture references should be updated in the loop above (we need to wait
247
248
  // in case of external relations)
248
249
  setImmediate(() => {
250
+ if (!mountedRef.current) {
251
+ return;
252
+ }
249
253
  for (let i = 0; i < gesture.length; i++) {
250
254
  const handler = preparedGesture.config[i];
251
255
 
@@ -575,6 +579,7 @@ export const GestureDetector = (props: GestureDetectorProps) => {
575
579
  const useReanimatedHook = gesture.some((g) => g.shouldUseReanimated);
576
580
  const viewRef = useRef(null);
577
581
  const firstRenderRef = useRef(true);
582
+ const mountedRef = useRef(false);
578
583
  const webEventHandlersRef = useRef<WebEventHandler>({
579
584
  onGestureHandlerEvent: (e: HandlerStateChangeEvent<unknown>) => {
580
585
  onGestureHandlerEvent(e.nativeEvent);
@@ -619,6 +624,7 @@ export const GestureDetector = (props: GestureDetectorProps) => {
619
624
 
620
625
  useEffect(() => {
621
626
  firstRenderRef.current = true;
627
+ mountedRef.current = true;
622
628
  const viewTag = findNodeHandle(viewRef.current) as number;
623
629
 
624
630
  validateDetectorChildren(viewRef.current);
@@ -631,6 +637,7 @@ export const GestureDetector = (props: GestureDetectorProps) => {
631
637
  });
632
638
 
633
639
  return () => {
640
+ mountedRef.current = false;
634
641
  dropHandlers(preparedGesture);
635
642
  };
636
643
  }, []);
@@ -650,7 +657,7 @@ export const GestureDetector = (props: GestureDetectorProps) => {
650
657
  webEventHandlersRef,
651
658
  });
652
659
  } else {
653
- updateHandlers(preparedGesture, gestureConfig, gesture);
660
+ updateHandlers(preparedGesture, gestureConfig, gesture, mountedRef);
654
661
  }
655
662
  } else {
656
663
  firstRenderRef.current = false;
@@ -69,14 +69,24 @@ export class ComposedGesture extends Gesture {
69
69
 
70
70
  export class SimultaneousGesture extends ComposedGesture {
71
71
  prepare() {
72
- const simultaneousArray = this.gestures
73
- .flatMap((gesture) => gesture.toGestureArray())
74
- .concat(this.simultaneousGestures);
72
+ // this piece of magic works something like this:
73
+ // for every gesture in the array
74
+ const simultaneousArrays = this.gestures.map((gesture) =>
75
+ // we take the array it's in
76
+ this.gestures
77
+ // and make a copy without it
78
+ .filter((x) => x !== gesture)
79
+ // then we flatmap the result to get list of raw (not composed) gestures
80
+ // this way we don't make the gestures simultaneous with themselves, which is
81
+ // important when the gesture is `ExclusiveGesture` - we don't want to make
82
+ // exclusive gestures simultaneous
83
+ .flatMap((x) => x.toGestureArray())
84
+ );
75
85
 
76
- for (const gesture of this.gestures) {
86
+ for (let i = 0; i < this.gestures.length; i++) {
77
87
  this.prepareSingleGesture(
78
- gesture,
79
- simultaneousArray,
88
+ this.gestures[i],
89
+ simultaneousArrays[i],
80
90
  this.requireGesturesToFail
81
91
  );
82
92
  }
@@ -85,6 +95,8 @@ export class SimultaneousGesture extends ComposedGesture {
85
95
 
86
96
  export class ExclusiveGesture extends ComposedGesture {
87
97
  prepare() {
98
+ // transforms the array of gestures into array of grouped raw (not composed) gestures
99
+ // i.e. [gesture1, gesture2, ComposedGesture(gesture3, gesture4)] -> [[gesture1], [gesture2], [gesture3, gesture4]]
88
100
  const gestureArrays = this.gestures.map((gesture) =>
89
101
  gesture.toGestureArray()
90
102
  );
@@ -98,6 +110,7 @@ export class ExclusiveGesture extends ComposedGesture {
98
110
  this.requireGesturesToFail.concat(requireToFail)
99
111
  );
100
112
 
113
+ // every group gets to wait for all groups before it
101
114
  requireToFail = requireToFail.concat(gestureArrays[i]);
102
115
  }
103
116
  }
@@ -21,6 +21,7 @@ export default class FlingGestureHandler extends GestureHandler {
21
21
  private startY = 0;
22
22
 
23
23
  private maxNumberOfPointersSimultaneously = 0;
24
+ private keyPointer = NaN;
24
25
 
25
26
  public init(ref: number, propsRef: React.RefObject<unknown>): void {
26
27
  super.init(ref, propsRef);
@@ -51,9 +52,9 @@ export default class FlingGestureHandler extends GestureHandler {
51
52
  };
52
53
  }
53
54
 
54
- private startFling(event: AdaptedEvent): void {
55
- this.startX = event.x;
56
- this.startY = event.y;
55
+ private startFling(): void {
56
+ this.startX = this.tracker.getLastX(this.keyPointer);
57
+ this.startY = this.tracker.getLastY(this.keyPointer);
57
58
 
58
59
  this.begin();
59
60
 
@@ -62,18 +63,22 @@ export default class FlingGestureHandler extends GestureHandler {
62
63
  this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);
63
64
  }
64
65
 
65
- private tryEndFling(event: AdaptedEvent): boolean {
66
+ private tryEndFling(): boolean {
66
67
  if (
67
68
  this.maxNumberOfPointersSimultaneously ===
68
69
  this.numberOfPointersRequired &&
69
70
  ((this.direction & Direction.RIGHT &&
70
- event.x - this.startX > this.minAcceptableDelta) ||
71
+ this.tracker.getLastX(this.keyPointer) - this.startX >
72
+ this.minAcceptableDelta) ||
71
73
  (this.direction & Direction.LEFT &&
72
- this.startX - event.x > this.minAcceptableDelta) ||
74
+ this.startX - this.tracker.getLastX(this.keyPointer) >
75
+ this.minAcceptableDelta) ||
73
76
  (this.direction & Direction.UP &&
74
- this.startY - event.y > this.minAcceptableDelta) ||
77
+ this.startY - this.tracker.getLastY(this.keyPointer) >
78
+ this.minAcceptableDelta) ||
75
79
  (this.direction & Direction.DOWN &&
76
- event.y - this.startY > this.minAcceptableDelta))
80
+ this.tracker.getLastY(this.keyPointer) - this.startY >
81
+ this.minAcceptableDelta))
77
82
  ) {
78
83
  clearTimeout(this.delayTimeout);
79
84
  this.activate();
@@ -84,34 +89,36 @@ export default class FlingGestureHandler extends GestureHandler {
84
89
  return false;
85
90
  }
86
91
 
87
- private endFling(event: AdaptedEvent) {
88
- if (!this.tryEndFling(event)) {
92
+ private endFling() {
93
+ if (!this.tryEndFling()) {
89
94
  this.fail();
90
95
  }
91
96
  }
92
97
 
93
98
  protected onPointerDown(event: AdaptedEvent): void {
94
99
  this.tracker.addToTracker(event);
100
+ this.keyPointer = event.pointerId;
101
+
95
102
  super.onPointerDown(event);
96
- this.newPointerAction(event);
103
+ this.newPointerAction();
97
104
  }
98
105
 
99
106
  protected onPointerAdd(event: AdaptedEvent): void {
100
107
  this.tracker.addToTracker(event);
101
108
  super.onPointerAdd(event);
102
- this.newPointerAction(event);
109
+ this.newPointerAction();
103
110
  }
104
111
 
105
- private newPointerAction(event: AdaptedEvent): void {
112
+ private newPointerAction(): void {
106
113
  if (this.currentState === State.UNDETERMINED) {
107
- this.startFling(event);
114
+ this.startFling();
108
115
  }
109
116
 
110
117
  if (this.currentState !== State.BEGAN) {
111
118
  return;
112
119
  }
113
120
 
114
- this.tryEndFling(event);
121
+ this.tryEndFling();
115
122
 
116
123
  if (
117
124
  this.tracker.getTrackedPointersCount() >
@@ -128,7 +135,7 @@ export default class FlingGestureHandler extends GestureHandler {
128
135
  return;
129
136
  }
130
137
 
131
- this.tryEndFling(event);
138
+ this.tryEndFling();
132
139
 
133
140
  super.onPointerMove(event);
134
141
  }
@@ -136,6 +143,8 @@ export default class FlingGestureHandler extends GestureHandler {
136
143
  protected onPointerUp(event: AdaptedEvent): void {
137
144
  super.onPointerUp(event);
138
145
  this.onUp(event);
146
+
147
+ this.keyPointer = NaN;
139
148
  }
140
149
 
141
150
  protected onPointerRemove(event: AdaptedEvent): void {
@@ -148,7 +157,7 @@ export default class FlingGestureHandler extends GestureHandler {
148
157
  if (this.currentState !== State.BEGAN) {
149
158
  return;
150
159
  }
151
- this.endFling(event);
160
+ this.endFling();
152
161
  }
153
162
 
154
163
  protected onPointerCancel(event: AdaptedEvent): void {
@@ -121,18 +121,17 @@ export default abstract class GestureHandler {
121
121
  return;
122
122
  }
123
123
 
124
+ const oldState = this.currentState;
125
+ this.currentState = newState;
126
+
124
127
  if (
125
128
  this.tracker.getTrackedPointersCount() > 0 &&
126
- (newState === State.END ||
127
- newState === State.CANCELLED ||
128
- newState === State.FAILED)
129
+ this.config.needsPointerData &&
130
+ this.isFinished()
129
131
  ) {
130
132
  this.cancelTouches();
131
133
  }
132
134
 
133
- const oldState = this.currentState;
134
- this.currentState = newState;
135
-
136
135
  GestureHandlerOrchestrator.getInstance().onHandlerStateChange(
137
136
  this,
138
137
  newState,
@@ -774,6 +773,14 @@ export default abstract class GestureHandler {
774
773
  return this.enabled;
775
774
  }
776
775
 
776
+ private isFinished(): boolean {
777
+ return (
778
+ this.currentState === State.END ||
779
+ this.currentState === State.FAILED ||
780
+ this.currentState === State.CANCELLED
781
+ );
782
+ }
783
+
777
784
  protected setShouldCancelWhenOutside(shouldCancel: boolean) {
778
785
  this.shouldCancellWhenOutside = shouldCancel;
779
786
  }
@@ -23,6 +23,8 @@ export default class LongPressGestureHandler extends GestureHandler {
23
23
  public init(ref: number, propsRef: React.RefObject<unknown>) {
24
24
  super.init(ref, propsRef);
25
25
  this.setShouldCancelWhenOutside(true);
26
+
27
+ this.view.oncontextmenu = () => false;
26
28
  }
27
29
 
28
30
  protected transformNativeEvent() {
@@ -29,11 +29,8 @@ export default class NativeViewGestureHandler extends GestureHandler {
29
29
  this.buttonRole = true;
30
30
  } else {
31
31
  this.buttonRole = false;
32
- }
33
-
34
- if (this.view.tagName.toLowerCase() === 'input') {
35
- //Enables text input on Safari
36
32
  this.view.style['webkitUserSelect'] = 'auto';
33
+ this.view.style['userSelect'] = 'auto';
37
34
  }
38
35
  }
39
36
 
@@ -98,8 +98,8 @@ export default class PanGestureHandler extends GestureHandler {
98
98
  this.activateAfterLongPress = this.config.activateAfterLongPress;
99
99
  }
100
100
 
101
- if (this.config.shouldCancelWhenOutside) {
102
- this.setShouldCancelWhenOutside(false);
101
+ if (this.config.shouldCancelWhenOutside !== undefined) {
102
+ this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);
103
103
  }
104
104
 
105
105
  if (this.config.activeOffsetXStart !== undefined) {
@@ -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;
@@ -1,19 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
- <plist version="1.0">
4
- <dict>
5
- <key>SchemeUserState</key>
6
- <dict>
7
- <key>RNGestureHandler-tvOS.xcscheme_^#shared#^_</key>
8
- <dict>
9
- <key>orderHint</key>
10
- <integer>0</integer>
11
- </dict>
12
- <key>RNGestureHandler.xcscheme_^#shared#^_</key>
13
- <dict>
14
- <key>orderHint</key>
15
- <integer>1</integer>
16
- </dict>
17
- </dict>
18
- </dict>
19
- </plist>