react-native-gesture-handler 2.6.0 → 2.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (196) hide show
  1. package/android/build.gradle +2 -2
  2. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  3. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  4. package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
  5. package/lib/commonjs/EnableExperimentalWebImplementation.js +7 -0
  6. package/lib/commonjs/EnableExperimentalWebImplementation.js.map +1 -1
  7. package/lib/commonjs/RNGestureHandlerModule.js +1 -1
  8. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  9. package/lib/commonjs/RNGestureHandlerModule.macos.js +22 -13
  10. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
  11. package/lib/commonjs/RNGestureHandlerModule.web.js +23 -10
  12. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  13. package/lib/commonjs/components/GestureComponents.js +6 -4
  14. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  15. package/lib/commonjs/components/GestureComponents.web.js +1 -1
  16. package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
  17. package/lib/commonjs/components/Swipeable.js +4 -4
  18. package/lib/commonjs/components/Swipeable.js.map +1 -1
  19. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
  20. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  21. package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -5
  22. package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  23. package/lib/commonjs/handlers/gestures/GestureDetector.js +4 -2
  24. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  25. package/lib/commonjs/handlers/gestures/eventReceiver.js +14 -20
  26. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
  27. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +32 -0
  28. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -0
  29. package/lib/commonjs/utils.js +10 -6
  30. package/lib/commonjs/utils.js.map +1 -1
  31. package/lib/commonjs/web/detectors/RotationGestureDetector.js +13 -17
  32. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  33. package/lib/commonjs/web/detectors/ScaleGestureDetector.js +3 -14
  34. package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
  35. package/lib/commonjs/web/handlers/FlingGestureHandler.js +37 -12
  36. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  37. package/lib/commonjs/web/handlers/GestureHandler.js +330 -79
  38. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  39. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +23 -18
  40. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  41. package/lib/commonjs/web/handlers/ManualGestureHandler.js +51 -0
  42. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -0
  43. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +81 -22
  44. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  45. package/lib/commonjs/web/handlers/PanGestureHandler.js +57 -40
  46. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  47. package/lib/commonjs/web/handlers/PinchGestureHandler.js +43 -34
  48. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  49. package/lib/commonjs/web/handlers/RotationGestureHandler.js +45 -39
  50. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  51. package/lib/commonjs/web/handlers/TapGestureHandler.js +52 -50
  52. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  53. package/lib/commonjs/web/interfaces.js +22 -1
  54. package/lib/commonjs/web/interfaces.js.map +1 -1
  55. package/lib/commonjs/web/tools/EventManager.js +40 -96
  56. package/lib/commonjs/web/tools/EventManager.js.map +1 -1
  57. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +109 -30
  58. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  59. package/lib/commonjs/web/tools/InteractionManager.js +24 -10
  60. package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
  61. package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
  62. package/lib/commonjs/web/tools/PointerEventManager.js +130 -0
  63. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -0
  64. package/lib/commonjs/web/tools/PointerTracker.js +97 -7
  65. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  66. package/lib/commonjs/web/tools/TouchEventManager.js +138 -0
  67. package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -0
  68. package/lib/commonjs/web/utils.js +15 -0
  69. package/lib/commonjs/web/utils.js.map +1 -0
  70. package/lib/module/EnableExperimentalWebImplementation.js +5 -0
  71. package/lib/module/EnableExperimentalWebImplementation.js.map +1 -1
  72. package/lib/module/RNGestureHandlerModule.js +1 -1
  73. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  74. package/lib/module/RNGestureHandlerModule.macos.js +21 -14
  75. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  76. package/lib/module/RNGestureHandlerModule.web.js +22 -11
  77. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  78. package/lib/module/components/GestureComponents.js +6 -4
  79. package/lib/module/components/GestureComponents.js.map +1 -1
  80. package/lib/module/components/GestureComponents.web.js +1 -1
  81. package/lib/module/components/GestureComponents.web.js.map +1 -1
  82. package/lib/module/components/Swipeable.js +4 -4
  83. package/lib/module/components/Swipeable.js.map +1 -1
  84. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
  85. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  86. package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -4
  87. package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  88. package/lib/module/handlers/gestures/GestureDetector.js +5 -3
  89. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  90. package/lib/module/handlers/gestures/eventReceiver.js +14 -20
  91. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
  92. package/lib/module/handlers/gestures/gestureStateManager.web.js +21 -0
  93. package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -0
  94. package/lib/module/utils.js +7 -6
  95. package/lib/module/utils.js.map +1 -1
  96. package/lib/module/web/detectors/RotationGestureDetector.js +13 -17
  97. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  98. package/lib/module/web/detectors/ScaleGestureDetector.js +3 -14
  99. package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
  100. package/lib/module/web/handlers/FlingGestureHandler.js +37 -12
  101. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  102. package/lib/module/web/handlers/GestureHandler.js +324 -79
  103. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  104. package/lib/module/web/handlers/LongPressGestureHandler.js +23 -18
  105. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  106. package/lib/module/web/handlers/ManualGestureHandler.js +39 -0
  107. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -0
  108. package/lib/module/web/handlers/NativeViewGestureHandler.js +80 -22
  109. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  110. package/lib/module/web/handlers/PanGestureHandler.js +57 -41
  111. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  112. package/lib/module/web/handlers/PinchGestureHandler.js +43 -33
  113. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  114. package/lib/module/web/handlers/RotationGestureHandler.js +45 -38
  115. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  116. package/lib/module/web/handlers/TapGestureHandler.js +52 -50
  117. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  118. package/lib/module/web/interfaces.js +19 -0
  119. package/lib/module/web/interfaces.js.map +1 -1
  120. package/lib/module/web/tools/EventManager.js +39 -95
  121. package/lib/module/web/tools/EventManager.js.map +1 -1
  122. package/lib/module/web/tools/GestureHandlerOrchestrator.js +107 -30
  123. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  124. package/lib/module/web/tools/InteractionManager.js +24 -10
  125. package/lib/module/web/tools/InteractionManager.js.map +1 -1
  126. package/lib/module/web/tools/NodeManager.js.map +1 -1
  127. package/lib/module/web/tools/PointerEventManager.js +116 -0
  128. package/lib/module/web/tools/PointerEventManager.js.map +1 -0
  129. package/lib/module/web/tools/PointerTracker.js +97 -7
  130. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  131. package/lib/module/web/tools/TouchEventManager.js +124 -0
  132. package/lib/module/web/tools/TouchEventManager.js.map +1 -0
  133. package/lib/module/web/utils.js +8 -0
  134. package/lib/module/web/utils.js.map +1 -0
  135. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +6 -3
  136. package/lib/typescript/RNGestureHandlerModule.web.d.ts +5 -2
  137. package/lib/typescript/components/Swipeable.d.ts +3 -3
  138. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +1 -1
  139. package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +3 -3
  140. package/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts +3 -2
  141. package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +4 -0
  142. package/lib/typescript/utils.d.ts +4 -0
  143. package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +7 -7
  144. package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +6 -7
  145. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +12 -10
  146. package/lib/typescript/web/handlers/GestureHandler.d.ts +42 -32
  147. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +6 -9
  148. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +11 -0
  149. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +15 -6
  150. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +15 -23
  151. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +11 -12
  152. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +12 -12
  153. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +11 -14
  154. package/lib/typescript/web/interfaces.d.ts +50 -10
  155. package/lib/typescript/web/tools/EventManager.d.ts +28 -26
  156. package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +4 -2
  157. package/lib/typescript/web/tools/InteractionManager.d.ts +3 -0
  158. package/lib/typescript/web/tools/NodeManager.d.ts +3 -3
  159. package/lib/typescript/web/tools/PointerEventManager.d.ts +6 -0
  160. package/lib/typescript/web/tools/PointerTracker.d.ts +29 -5
  161. package/lib/typescript/web/tools/TouchEventManager.d.ts +6 -0
  162. package/lib/typescript/web/utils.d.ts +4 -0
  163. package/package.json +2 -2
  164. package/src/EnableExperimentalWebImplementation.ts +9 -0
  165. package/src/RNGestureHandlerModule.macos.ts +28 -13
  166. package/src/RNGestureHandlerModule.ts +4 -1
  167. package/src/RNGestureHandlerModule.web.ts +20 -7
  168. package/src/components/GestureComponents.tsx +12 -16
  169. package/src/components/GestureComponents.web.tsx +1 -1
  170. package/src/components/Swipeable.tsx +11 -7
  171. package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +2 -12
  172. package/src/fabric/RNGestureHandlerRootViewNativeComponent.ts +2 -8
  173. package/src/handlers/gestures/GestureDetector.tsx +8 -4
  174. package/src/handlers/gestures/eventReceiver.ts +23 -24
  175. package/src/handlers/gestures/gestureStateManager.web.ts +24 -0
  176. package/src/utils.ts +6 -6
  177. package/src/web/detectors/RotationGestureDetector.ts +20 -52
  178. package/src/web/detectors/ScaleGestureDetector.ts +9 -45
  179. package/src/web/handlers/FlingGestureHandler.ts +45 -22
  180. package/src/web/handlers/GestureHandler.ts +365 -97
  181. package/src/web/handlers/LongPressGestureHandler.ts +30 -24
  182. package/src/web/handlers/ManualGestureHandler.ts +39 -0
  183. package/src/web/handlers/NativeViewGestureHandler.ts +81 -24
  184. package/src/web/handlers/PanGestureHandler.ts +68 -53
  185. package/src/web/handlers/PinchGestureHandler.ts +47 -44
  186. package/src/web/handlers/RotationGestureHandler.ts +52 -51
  187. package/src/web/handlers/TapGestureHandler.ts +74 -56
  188. package/src/web/interfaces.ts +57 -10
  189. package/src/web/tools/EventManager.ts +58 -148
  190. package/src/web/tools/GestureHandlerOrchestrator.ts +115 -47
  191. package/src/web/tools/InteractionManager.ts +25 -9
  192. package/src/web/tools/NodeManager.ts +6 -6
  193. package/src/web/tools/PointerEventManager.ts +134 -0
  194. package/src/web/tools/PointerTracker.ts +120 -10
  195. package/src/web/tools/TouchEventManager.ts +167 -0
  196. package/src/web/utils.ts +8 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["GestureHandler.ts"],"names":["findNodeHandle","State","EventManager","GestureHandlerOrchestrator","PointerTracker","GestureHandler","constructor","UNDETERMINED","enabled","event","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","hasCustomActivationCriteria","init","ref","setView","setEventManager","view","style","eventManager","setOnPointerDown","onPointerDown","bind","setOnPointerUp","onPointerUp","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerOut","onPointerOut","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setListeners","setInteractionManager","manager","interactionManager","onCancel","onReset","resetProgress","reset","tracker","resetTracker","moveToState","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","FAILED","cancel","CANCELLED","activate","_force","end","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","_event","recordHandlerIfNotPresent","onPointerAdd","onPointerRemove","tryToSendMoveEvent","out","shouldCancellWhenOutside","sendEvent","numberOfPointers","getTrackedPointersCount","state","pointerInside","isPointerInBounds","x","y","transformNativeEvent","handlerTag","target","timeStamp","Date","now","updateGestureConfig","props","config","validateHitSlops","checkCustomActivationCriteria","criterias","key","indexOf","hitSlop","left","right","width","Error","height","top","bottom","getBoundingClientRect","horizontal","vertical","offsetX","offsetY","resetConfig","getTag","setTag","tag","getConfig","getShouldEnableGestureOnSetup","getView","getEventManager","getTracker","getTrackedPointersID","getState","setShouldCancelWhenOutside","flag","getShouldCancelWhenOutside","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { findNodeHandle } from 'react-native';\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedPointerEvent,\n PropsRef,\n ResultEvent,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerTracker from '../tools/PointerTracker';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria: boolean;\n protected enabled = false;\n\n private ref!: number;\n private propsRef!: React.RefObject<unknown>;\n protected config: Config = { enabled: false };\n private handlerTag!: number;\n protected view: HTMLElement | null = null;\n\n protected eventManager!: EventManager;\n protected tracker: PointerTracker = new PointerTracker();\n protected interactionManager!: InteractionManager;\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n\n public constructor() {\n this.hasCustomActivationCriteria = false;\n }\n\n //\n // Initializing handler\n //\n\n protected init(ref: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.ref = ref;\n\n this.currentState = State.UNDETERMINED;\n\n this.setView(ref);\n this.setEventManager();\n }\n\n private setView(ref: number) {\n if (!ref) {\n this.view = null;\n return;\n }\n\n this.view = (findNodeHandle(ref) as unknown) as HTMLElement;\n this.view.style['touchAction'] = 'none';\n this.view.style['webkitUserSelect'] = 'none';\n this.view.style['userSelect'] = 'none';\n\n //@ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = 'none';\n }\n\n private setEventManager(): void {\n if (!this.view) {\n return;\n }\n\n this.eventManager = new EventManager(this.view);\n\n this.eventManager.setOnPointerDown(this.onPointerDown.bind(this));\n this.eventManager.setOnPointerUp(this.onPointerUp.bind(this));\n this.eventManager.setOnPointerMove(this.onPointerMove.bind(this));\n this.eventManager.setOnPointerEnter(this.onPointerEnter.bind(this));\n this.eventManager.setOnPointerOut(this.onPointerOut.bind(this));\n this.eventManager.setOnPointerCancel(this.onPointerCancel.bind(this));\n this.eventManager.setOnPointerOutOfBounds(\n this.onPointerOutOfBounds.bind(this)\n );\n\n this.eventManager.setListeners();\n }\n\n public setInteractionManager(manager: InteractionManager): void {\n this.interactionManager = manager;\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, event: AdaptedPointerEvent) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n event\n );\n\n this.onStateChange(newState, oldState);\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(event: AdaptedPointerEvent): void {\n if (!this.checkHitSlop(event)) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN, event);\n }\n }\n\n public fail(event: AdaptedPointerEvent): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.FAILED, event);\n }\n\n this.resetProgress();\n }\n\n public cancel(event: AdaptedPointerEvent): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n this.moveToState(State.CANCELLED, event);\n }\n }\n\n protected activate(event: AdaptedPointerEvent, _force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.ACTIVE, event);\n }\n }\n\n public end(event: AdaptedPointerEvent) {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n this.moveToState(State.END, event);\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return this.interactionManager.shouldWaitForHandlerFailure(this, handler);\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return this.interactionManager.shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return this.interactionManager.shouldRecognizeSimultaneously(this, handler);\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return this.interactionManager.shouldHandlerBeCancelledBy(this, handler);\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(_event: AdaptedPointerEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(_event: AdaptedPointerEvent): void {}\n protected onPointerUp(_event: AdaptedPointerEvent): void {}\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(_event: AdaptedPointerEvent): void {}\n protected onPointerMove(event: AdaptedPointerEvent): void {\n this.tryToSendMoveEvent(event, false);\n }\n protected onPointerOut(_event: AdaptedPointerEvent): void {}\n protected onPointerEnter(_event: AdaptedPointerEvent): void {}\n protected onPointerCancel(_event: AdaptedPointerEvent): void {}\n protected onPointerOutOfBounds(event: AdaptedPointerEvent): void {\n this.tryToSendMoveEvent(event, true);\n }\n private tryToSendMoveEvent(event: AdaptedPointerEvent, out: boolean): void {\n if (\n this.currentState === State.ACTIVE &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(event, this.currentState, this.currentState);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (\n event: AdaptedPointerEvent,\n newState: State,\n oldState: State\n ): void => {\n const {\n onGestureHandlerEvent,\n onGestureHandlerStateChange,\n }: PropsRef = this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n event,\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(\n event: AdaptedPointerEvent,\n newState: State,\n oldState: State\n ): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: this.eventManager?.isPointerInBounds({\n x: event.x,\n y: event.y,\n }),\n ...this.transformNativeEvent(event),\n handlerTag: this.handlerTag,\n target: this.ref,\n oldState: newState !== oldState ? oldState : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n protected transformNativeEvent(_event: AdaptedPointerEvent) {\n return {};\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }): void {\n this.config = { enabled, ...props };\n this.validateHitSlops();\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(event: AdaptedPointerEvent): boolean {\n if (!this.config.hitSlop || !this.view) {\n return true;\n }\n\n const width = this.view.getBoundingClientRect().width;\n const height = this.view.getBoundingClientRect().height;\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n if (\n event.offsetX >= left &&\n event.offsetX <= right &&\n event.offsetY >= top &&\n event.offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n protected getConfig() {\n return this.config;\n }\n\n public getShouldEnableGestureOnSetup(): boolean {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n\n public getView(): HTMLElement | null {\n return this.view;\n }\n\n public getEventManager(): EventManager {\n return this.eventManager;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n protected setShouldCancelWhenOutside(flag: boolean) {\n this.shouldCancellWhenOutside = flag;\n }\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent) => void)\n | { __getHandler: () => (event: ResultEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
1
+ {"version":3,"sources":["GestureHandler.ts"],"names":["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"]}
@@ -31,12 +31,13 @@ export default class LongPressGestureHandler extends GestureHandler {
31
31
  this.setShouldCancelWhenOutside(true);
32
32
  }
33
33
 
34
- transformNativeEvent(event) {
34
+ transformNativeEvent() {
35
+ const rect = this.view.getBoundingClientRect();
35
36
  return {
36
- x: event.offsetX,
37
- y: event.offsetY,
38
- absoluteX: event.x,
39
- absoluteY: event.y,
37
+ x: this.tracker.getLastAvgX() - rect.left,
38
+ y: this.tracker.getLastAvgY() - rect.top,
39
+ absoluteX: this.tracker.getLastAvgX(),
40
+ absoluteY: this.tracker.getLastAvgY(),
40
41
  duration: Date.now() - this.startTime
41
42
  };
42
43
  }
@@ -71,26 +72,30 @@ export default class LongPressGestureHandler extends GestureHandler {
71
72
  }
72
73
 
73
74
  onPointerDown(event) {
75
+ this.tracker.addToTracker(event);
74
76
  super.onPointerDown(event);
75
77
  this.tryBegin(event);
76
- this.tryActivate(event);
78
+ this.tryActivate();
79
+ this.checkDistanceFail(event);
80
+ }
81
+
82
+ onPointerMove(event) {
83
+ super.onPointerMove(event);
84
+ this.tracker.track(event);
77
85
  this.checkDistanceFail(event);
78
86
  }
79
87
 
80
88
  onPointerUp(event) {
81
89
  super.onPointerUp(event);
90
+ this.tracker.removeFromTracker(event.pointerId);
82
91
 
83
92
  if (this.currentState === State.ACTIVE) {
84
- this.end(event);
93
+ this.end();
85
94
  } else {
86
- this.fail(event);
95
+ this.fail();
87
96
  }
88
97
  }
89
98
 
90
- onPointerMove(event) {
91
- this.checkDistanceFail(event);
92
- }
93
-
94
99
  tryBegin(event) {
95
100
  if (this.currentState !== State.UNDETERMINED) {
96
101
  return;
@@ -98,18 +103,18 @@ export default class LongPressGestureHandler extends GestureHandler {
98
103
 
99
104
  this.previousTime = Date.now();
100
105
  this.startTime = this.previousTime;
101
- this.begin(event);
106
+ this.begin();
102
107
  this.startX = event.x;
103
108
  this.startY = event.y;
104
109
  }
105
110
 
106
- tryActivate(event) {
111
+ tryActivate() {
107
112
  if (this.minDurationMs > 0) {
108
113
  this.activationTimeout = setTimeout(() => {
109
- this.activate(event);
114
+ this.activate();
110
115
  }, this.minDurationMs);
111
116
  } else if (this.minDurationMs === 0) {
112
- this.activate(event);
117
+ this.activate();
113
118
  }
114
119
  }
115
120
 
@@ -123,9 +128,9 @@ export default class LongPressGestureHandler extends GestureHandler {
123
128
  }
124
129
 
125
130
  if (this.currentState === State.ACTIVE) {
126
- this.cancel(event);
131
+ this.cancel();
127
132
  } else {
128
- this.fail(event);
133
+ this.fail();
129
134
  }
130
135
  }
131
136
 
@@ -1 +1 @@
1
- {"version":3,"sources":["LongPressGestureHandler.ts"],"names":["State","GestureHandler","DEFAULT_MIN_DURATION_MS","DEFAULT_MAX_DIST_DP","SCALING_FACTOR","LongPressGestureHandler","defaultMaxDistSq","init","ref","propsRef","setShouldCancelWhenOutside","transformNativeEvent","event","x","offsetX","y","offsetY","absoluteX","absoluteY","duration","Date","now","startTime","updateGestureConfig","enabled","props","config","minDurationMs","undefined","maxDist","maxDistSq","resetConfig","onStateChange","_newState","_oldState","clearTimeout","activationTimeout","onPointerDown","tryBegin","tryActivate","checkDistanceFail","onPointerUp","currentState","ACTIVE","end","fail","onPointerMove","UNDETERMINED","previousTime","begin","startX","startY","setTimeout","activate","dx","dy","distSq","cancel"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedPointerEvent } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_DURATION_MS = 500;\nconst DEFAULT_MAX_DIST_DP = 10;\nconst SCALING_FACTOR = 10;\n\nexport default class LongPressGestureHandler extends GestureHandler {\n private minDurationMs = DEFAULT_MIN_DURATION_MS;\n private defaultMaxDistSq = DEFAULT_MAX_DIST_DP * SCALING_FACTOR;\n\n private maxDistSq = this.defaultMaxDistSq;\n private startX = 0;\n private startY = 0;\n\n private startTime = 0;\n private previousTime = 0;\n\n private activationTimeout: number | undefined;\n\n public init(ref: number, propsRef: React.RefObject<unknown>) {\n super.init(ref, propsRef);\n this.setShouldCancelWhenOutside(true);\n }\n\n protected transformNativeEvent(event: AdaptedPointerEvent) {\n return {\n x: event.offsetX,\n y: event.offsetY,\n absoluteX: event.x,\n absoluteY: event.y,\n duration: Date.now() - this.startTime,\n };\n }\n\n public updateGestureConfig({ enabled = true, ...props }): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n this.enabled = enabled;\n\n if (this.config.minDurationMs !== undefined) {\n this.minDurationMs = this.config.minDurationMs;\n }\n\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.minDurationMs = DEFAULT_MIN_DURATION_MS;\n this.maxDistSq = this.defaultMaxDistSq;\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {\n clearTimeout(this.activationTimeout);\n }\n\n protected onPointerDown(event: AdaptedPointerEvent): void {\n super.onPointerDown(event);\n this.tryBegin(event);\n this.tryActivate(event);\n this.checkDistanceFail(event);\n }\n\n protected onPointerUp(event: AdaptedPointerEvent): void {\n super.onPointerUp(event);\n\n if (this.currentState === State.ACTIVE) {\n this.end(event);\n } else {\n this.fail(event);\n }\n }\n\n protected onPointerMove(event: AdaptedPointerEvent): void {\n this.checkDistanceFail(event);\n }\n\n private tryBegin(event: AdaptedPointerEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.previousTime = Date.now();\n this.startTime = this.previousTime;\n\n this.begin(event);\n\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private tryActivate(event: AdaptedPointerEvent): void {\n if (this.minDurationMs > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate(event);\n }, this.minDurationMs);\n } else if (this.minDurationMs === 0) {\n this.activate(event);\n }\n }\n\n private checkDistanceFail(event: AdaptedPointerEvent): void {\n const dx = event.x - this.startX;\n const dy = event.y - this.startY;\n const distSq = dx * dx + dy * dy;\n\n if (distSq <= this.maxDistSq) {\n return;\n }\n\n if (this.currentState === State.ACTIVE) {\n this.cancel(event);\n } else {\n this.fail(event);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["LongPressGestureHandler.ts"],"names":["State","GestureHandler","DEFAULT_MIN_DURATION_MS","DEFAULT_MAX_DIST_DP","SCALING_FACTOR","LongPressGestureHandler","defaultMaxDistSq","init","ref","propsRef","setShouldCancelWhenOutside","transformNativeEvent","rect","view","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","duration","Date","now","startTime","updateGestureConfig","enabled","props","config","minDurationMs","undefined","maxDist","maxDistSq","resetConfig","onStateChange","_newState","_oldState","clearTimeout","activationTimeout","onPointerDown","event","addToTracker","tryBegin","tryActivate","checkDistanceFail","onPointerMove","track","onPointerUp","removeFromTracker","pointerId","currentState","ACTIVE","end","fail","UNDETERMINED","previousTime","begin","startX","startY","setTimeout","activate","dx","dy","distSq","cancel"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_DURATION_MS = 500;\nconst DEFAULT_MAX_DIST_DP = 10;\nconst SCALING_FACTOR = 10;\n\nexport default class LongPressGestureHandler extends GestureHandler {\n private minDurationMs = DEFAULT_MIN_DURATION_MS;\n private defaultMaxDistSq = DEFAULT_MAX_DIST_DP * SCALING_FACTOR;\n\n private maxDistSq = this.defaultMaxDistSq;\n private startX = 0;\n private startY = 0;\n\n private startTime = 0;\n private previousTime = 0;\n\n private activationTimeout: number | undefined;\n\n public init(ref: number, propsRef: React.RefObject<unknown>) {\n super.init(ref, propsRef);\n this.setShouldCancelWhenOutside(true);\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return {\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n duration: Date.now() - this.startTime,\n };\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n this.enabled = enabled;\n\n if (this.config.minDurationMs !== undefined) {\n this.minDurationMs = this.config.minDurationMs;\n }\n\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.minDurationMs = DEFAULT_MIN_DURATION_MS;\n this.maxDistSq = this.defaultMaxDistSq;\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {\n clearTimeout(this.activationTimeout);\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.tryBegin(event);\n this.tryActivate();\n this.checkDistanceFail(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n super.onPointerMove(event);\n this.tracker.track(event);\n this.checkDistanceFail(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.previousTime = Date.now();\n this.startTime = this.previousTime;\n\n this.begin();\n\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private tryActivate(): void {\n if (this.minDurationMs > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.minDurationMs);\n } else if (this.minDurationMs === 0) {\n this.activate();\n }\n }\n\n private checkDistanceFail(event: AdaptedEvent): void {\n const dx = event.x - this.startX;\n const dy = event.y - this.startY;\n const distSq = dx * dx + dy * dy;\n\n if (distSq <= this.maxDistSq) {\n return;\n }\n\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n }\n}\n"]}
@@ -0,0 +1,39 @@
1
+ import GestureHandler from './GestureHandler';
2
+ export default class ManualGestureHandler extends GestureHandler {
3
+ init(ref, propsRef) {
4
+ super.init(ref, propsRef);
5
+ }
6
+
7
+ onPointerDown(event) {
8
+ this.tracker.addToTracker(event);
9
+ super.onPointerDown(event);
10
+ this.begin();
11
+ }
12
+
13
+ onPointerAdd(event) {
14
+ this.tracker.addToTracker(event);
15
+ super.onPointerAdd(event);
16
+ }
17
+
18
+ onPointerMove(event) {
19
+ this.tracker.track(event);
20
+ super.onPointerMove(event);
21
+ }
22
+
23
+ onPointerUp(event) {
24
+ super.onPointerUp(event);
25
+ this.tracker.removeFromTracker(event.pointerId);
26
+ }
27
+
28
+ onPointerRemove(event) {
29
+ super.onPointerRemove(event);
30
+ this.tracker.removeFromTracker(event.pointerId);
31
+ }
32
+
33
+ onPointerCancel(event) {
34
+ super.onPointerCancel(event);
35
+ this.reset();
36
+ }
37
+
38
+ }
39
+ //# sourceMappingURL=ManualGestureHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ManualGestureHandler.ts"],"names":["GestureHandler","ManualGestureHandler","init","ref","propsRef","onPointerDown","event","tracker","addToTracker","begin","onPointerAdd","onPointerMove","track","onPointerUp","removeFromTracker","pointerId","onPointerRemove","onPointerCancel","reset"],"mappings":"AACA,OAAOA,cAAP,MAA2B,kBAA3B;AAEA,eAAe,MAAMC,oBAAN,SAAmCD,cAAnC,CAAkD;AACxDE,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAkD;AAC3D,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAESC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACA,SAAKG,KAAL;AACD;;AAESC,EAAAA,YAAY,CAACJ,KAAD,EAA4B;AAChD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMI,YAAN,CAAmBJ,KAAnB;AACD;;AAESK,EAAAA,aAAa,CAACL,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaK,KAAb,CAAmBN,KAAnB;AACA,UAAMK,aAAN,CAAoBL,KAApB;AACD;;AAESO,EAAAA,WAAW,CAACP,KAAD,EAA4B;AAC/C,UAAMO,WAAN,CAAkBP,KAAlB;AACA,SAAKC,OAAL,CAAaO,iBAAb,CAA+BR,KAAK,CAACS,SAArC;AACD;;AAESC,EAAAA,eAAe,CAACV,KAAD,EAA4B;AACnD,UAAMU,eAAN,CAAsBV,KAAtB;AACA,SAAKC,OAAL,CAAaO,iBAAb,CAA+BR,KAAK,CAACS,SAArC;AACD;;AAESE,EAAAA,eAAe,CAACX,KAAD,EAA4B;AACnD,UAAMW,eAAN,CAAsBX,KAAtB;AACA,SAAKY,KAAL;AACD;;AAlC8D","sourcesContent":["import { AdaptedEvent } from '../interfaces';\nimport GestureHandler from './GestureHandler';\n\nexport default class ManualGestureHandler extends GestureHandler {\n public init(ref: number, propsRef: React.RefObject<unknown>) {\n super.init(ref, propsRef);\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.begin();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n super.onPointerMove(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.reset();\n }\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
2
 
3
3
  import { State } from '../../State';
4
+ import { DEFAULT_TOUCH_SLOP } from '../constants';
4
5
  import GestureHandler from './GestureHandler';
5
6
  export default class NativeViewGestureHandler extends GestureHandler {
6
7
  constructor(...args) {
@@ -8,20 +9,21 @@ export default class NativeViewGestureHandler extends GestureHandler {
8
9
 
9
10
  _defineProperty(this, "buttonRole", void 0);
10
11
 
12
+ _defineProperty(this, "shouldActivateOnStart", false);
13
+
11
14
  _defineProperty(this, "disallowInterruption", false);
15
+
16
+ _defineProperty(this, "startX", 0);
17
+
18
+ _defineProperty(this, "startY", 0);
19
+
20
+ _defineProperty(this, "minDistSq", DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP);
12
21
  }
13
22
 
14
23
  init(ref, propsRef) {
15
24
  super.init(ref, propsRef);
16
25
  this.setShouldCancelWhenOutside(true);
17
-
18
- if (!this.view) {
19
- return;
20
- }
21
-
22
- this.view.style['touchAction'] = 'auto';
23
- this.view.style['webkitUserSelect'] = 'auto';
24
- this.view.style['userSelect'] = 'auto'; //@ts-ignore Turns on defualt touch behavior on Safari
26
+ this.view.style['touchAction'] = 'auto'; //@ts-ignore Turns on defualt touch behavior on Safari
25
27
 
26
28
  this.view.style['WebkitTouchCallout'] = 'auto';
27
29
 
@@ -30,6 +32,29 @@ export default class NativeViewGestureHandler extends GestureHandler {
30
32
  } else {
31
33
  this.buttonRole = false;
32
34
  }
35
+
36
+ if (this.view.tagName.toLowerCase() === 'input') {
37
+ //Enables text input on Safari
38
+ this.view.style['webkitUserSelect'] = 'auto';
39
+ }
40
+ }
41
+
42
+ updateGestureConfig({
43
+ enabled = true,
44
+ ...props
45
+ }) {
46
+ super.updateGestureConfig({
47
+ enabled: enabled,
48
+ ...props
49
+ });
50
+
51
+ if (this.config.shouldActivateOnStart !== undefined) {
52
+ this.shouldActivateOnStart = this.config.shouldActivateOnStart;
53
+ }
54
+
55
+ if (this.config.disallowInterruption !== undefined) {
56
+ this.disallowInterruption = this.config.disallowInterruption;
57
+ }
33
58
  }
34
59
 
35
60
  resetConfig() {
@@ -37,39 +62,72 @@ export default class NativeViewGestureHandler extends GestureHandler {
37
62
  }
38
63
 
39
64
  onPointerDown(event) {
65
+ this.tracker.addToTracker(event);
40
66
  super.onPointerDown(event);
67
+ this.newPointerAction();
68
+ }
69
+
70
+ onPointerAdd(event) {
41
71
  this.tracker.addToTracker(event);
72
+ super.onPointerAdd(event);
73
+ this.newPointerAction();
74
+ }
42
75
 
43
- if (this.currentState === State.UNDETERMINED) {
44
- this.begin(event);
76
+ newPointerAction() {
77
+ this.startX = this.tracker.getLastAvgX();
78
+ this.startY = this.tracker.getLastAvgY();
45
79
 
46
- if (this.buttonRole) {
47
- this.activate(event);
48
- }
80
+ if (this.currentState !== State.UNDETERMINED) {
81
+ return;
82
+ }
83
+
84
+ this.begin();
85
+
86
+ if (this.buttonRole) {
87
+ this.activate();
49
88
  }
50
89
  }
51
90
 
52
- onPointerMove(_event) {//
91
+ onPointerMove(event) {
92
+ this.tracker.track(event);
93
+ const dx = this.startX - this.tracker.getLastAvgX();
94
+ const dy = this.startY - this.tracker.getLastAvgY();
95
+ const distSq = dx * dx + dy * dy;
96
+
97
+ if (!this.buttonRole && distSq >= this.minDistSq && this.currentState === State.BEGAN) {
98
+ this.activate();
99
+ }
53
100
  }
54
101
 
55
- onPointerOut(event) {
56
- this.cancel(event);
102
+ onPointerOut() {
103
+ this.cancel();
57
104
  }
58
105
 
59
106
  onPointerUp(event) {
60
- this.tracker.removeFromTracker(event.pointerId);
107
+ super.onPointerUp(event);
108
+ this.onUp(event);
109
+ }
61
110
 
62
- if (!this.buttonRole) {
63
- this.activate(event);
64
- }
111
+ onPointerRemove(event) {
112
+ super.onPointerRemove(event);
113
+ this.onUp(event);
114
+ }
115
+
116
+ onUp(event) {
117
+ this.tracker.removeFromTracker(event.pointerId);
65
118
 
66
119
  if (this.tracker.getTrackedPointersCount() === 0) {
67
- this.end(event);
120
+ if (this.currentState === State.ACTIVE) {
121
+ this.end();
122
+ } else {
123
+ this.fail();
124
+ }
68
125
  }
69
126
  }
70
127
 
71
128
  onPointerCancel(event) {
72
- this.cancel(event);
129
+ super.onPointerCancel(event);
130
+ this.cancel();
73
131
  this.reset();
74
132
  }
75
133
 
@@ -1 +1 @@
1
- {"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["State","GestureHandler","NativeViewGestureHandler","init","ref","propsRef","setShouldCancelWhenOutside","view","style","hasAttribute","buttonRole","resetConfig","onPointerDown","event","tracker","addToTracker","currentState","UNDETERMINED","begin","activate","onPointerMove","_event","onPointerOut","cancel","onPointerUp","removeFromTracker","pointerId","getTrackedPointersCount","end","onPointerCancel","reset","shouldRecognizeSimultaneously","handler","getState","ACTIVE","disallowsInterruption","canBeInterrupted","disallowInterruption","getTag","shouldBeCancelledByOther","_handler"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedPointerEvent } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nexport default class NativeViewGestureHandler extends GestureHandler {\n private buttonRole!: boolean;\n\n private disallowInterruption = false;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(true);\n\n if (!this.view) {\n return;\n }\n\n this.view.style['touchAction'] = 'auto';\n this.view.style['webkitUserSelect'] = 'auto';\n this.view.style['userSelect'] = 'auto';\n\n //@ts-ignore Turns on defualt touch behavior on Safari\n this.view.style['WebkitTouchCallout'] = 'auto';\n\n if (this.view.hasAttribute('role')) {\n this.buttonRole = true;\n } else {\n this.buttonRole = false;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n }\n\n protected onPointerDown(event: AdaptedPointerEvent): void {\n super.onPointerDown(event);\n this.tracker.addToTracker(event);\n\n if (this.currentState === State.UNDETERMINED) {\n this.begin(event);\n if (this.buttonRole) {\n this.activate(event);\n }\n }\n }\n\n protected onPointerMove(_event: AdaptedPointerEvent): void {\n //\n }\n\n protected onPointerOut(event: AdaptedPointerEvent): void {\n this.cancel(event);\n }\n\n protected onPointerUp(event: AdaptedPointerEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n if (!this.buttonRole) {\n this.activate(event);\n }\n if (this.tracker.getTrackedPointersCount() === 0) {\n this.end(event);\n }\n }\n\n protected onPointerCancel(event: AdaptedPointerEvent): void {\n this.cancel(event);\n this.reset();\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (super.shouldRecognizeSimultaneously(handler)) {\n return true;\n }\n\n if (\n handler instanceof NativeViewGestureHandler &&\n handler.getState() === State.ACTIVE &&\n handler.disallowsInterruption()\n ) {\n return false;\n }\n\n const canBeInterrupted = !this.disallowInterruption;\n\n if (\n this.currentState === State.ACTIVE &&\n handler.getState() === State.ACTIVE &&\n canBeInterrupted\n ) {\n return false;\n }\n\n return (\n this.currentState === State.ACTIVE &&\n canBeInterrupted &&\n handler.getTag() > 0\n );\n }\n\n public shouldBeCancelledByOther(_handler: GestureHandler): boolean {\n return !this.disallowInterruption;\n }\n\n public disallowsInterruption(): boolean {\n return this.disallowInterruption;\n }\n}\n"]}
1
+ {"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["State","DEFAULT_TOUCH_SLOP","GestureHandler","NativeViewGestureHandler","init","ref","propsRef","setShouldCancelWhenOutside","view","style","hasAttribute","buttonRole","tagName","toLowerCase","updateGestureConfig","enabled","props","config","shouldActivateOnStart","undefined","disallowInterruption","resetConfig","onPointerDown","event","tracker","addToTracker","newPointerAction","onPointerAdd","startX","getLastAvgX","startY","getLastAvgY","currentState","UNDETERMINED","begin","activate","onPointerMove","track","dx","dy","distSq","minDistSq","BEGAN","onPointerOut","cancel","onPointerUp","onUp","onPointerRemove","removeFromTracker","pointerId","getTrackedPointersCount","ACTIVE","end","fail","onPointerCancel","reset","shouldRecognizeSimultaneously","handler","getState","disallowsInterruption","canBeInterrupted","getTag","shouldBeCancelledByOther","_handler"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nexport default class NativeViewGestureHandler extends GestureHandler {\n private buttonRole!: boolean;\n\n //TODO: Implement logic for activation on start\n //@ts-ignore Logic yet to be implemented\n private shouldActivateOnStart = false;\n private disallowInterruption = false;\n\n private startX = 0;\n private startY = 0;\n private minDistSq = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(true);\n\n this.view.style['touchAction'] = 'auto';\n\n //@ts-ignore Turns on defualt touch behavior on Safari\n this.view.style['WebkitTouchCallout'] = 'auto';\n\n if (this.view.hasAttribute('role')) {\n this.buttonRole = true;\n } else {\n this.buttonRole = false;\n }\n\n if (this.view.tagName.toLowerCase() === 'input') {\n //Enables text input on Safari\n this.view.style['webkitUserSelect'] = 'auto';\n }\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.shouldActivateOnStart !== undefined) {\n this.shouldActivateOnStart = this.config.shouldActivateOnStart;\n }\n if (this.config.disallowInterruption !== undefined) {\n this.disallowInterruption = this.config.disallowInterruption;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n this.startX = this.tracker.getLastAvgX();\n this.startY = this.tracker.getLastAvgY();\n\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.begin();\n if (this.buttonRole) {\n this.activate();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n const dx = this.startX - this.tracker.getLastAvgX();\n const dy = this.startY - this.tracker.getLastAvgY();\n const distSq = dx * dx + dy * dy;\n\n if (\n !this.buttonRole &&\n distSq >= this.minDistSq &&\n this.currentState === State.BEGAN\n ) {\n this.activate();\n }\n }\n\n protected onPointerOut(): void {\n this.cancel();\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.tracker.getTrackedPointersCount() === 0) {\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.cancel();\n this.reset();\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (super.shouldRecognizeSimultaneously(handler)) {\n return true;\n }\n\n if (\n handler instanceof NativeViewGestureHandler &&\n handler.getState() === State.ACTIVE &&\n handler.disallowsInterruption()\n ) {\n return false;\n }\n\n const canBeInterrupted = !this.disallowInterruption;\n\n if (\n this.currentState === State.ACTIVE &&\n handler.getState() === State.ACTIVE &&\n canBeInterrupted\n ) {\n return false;\n }\n\n return (\n this.currentState === State.ACTIVE &&\n canBeInterrupted &&\n handler.getTag() > 0\n );\n }\n\n public shouldBeCancelledByOther(_handler: GestureHandler): boolean {\n return !this.disallowInterruption;\n }\n\n public disallowsInterruption(): boolean {\n return this.disallowInterruption;\n }\n}\n"]}