react-native-gesture-handler 2.12.1 → 2.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (195) hide show
  1. package/RNGestureHandler.podspec +0 -15
  2. package/android/build.gradle +5 -76
  3. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +16 -1
  4. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +43 -18
  5. package/android/src/main/java/com/swmansion/gesturehandler/core/HoverGestureHandler.kt +120 -0
  6. package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +7 -0
  7. package/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt +5 -0
  8. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +43 -16
  9. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +21 -0
  10. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +9 -1
  11. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +10 -0
  12. package/ios/Handlers/RNHoverHandler.h +12 -0
  13. package/ios/Handlers/RNHoverHandler.m +152 -0
  14. package/ios/RNGestureHandlerButtonComponentView.mm +2 -0
  15. package/ios/RNGestureHandlerEvents.h +1 -0
  16. package/ios/RNGestureHandlerEvents.m +10 -0
  17. package/ios/RNGestureHandlerManager.mm +2 -0
  18. package/ios/RNManualActivationRecognizer.m +2 -1
  19. package/ios/RNRootViewGestureRecognizer.m +7 -2
  20. package/lib/commonjs/RNGestureHandlerModule.macos.js +3 -1
  21. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
  22. package/lib/commonjs/RNGestureHandlerModule.web.js +7 -2
  23. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  24. package/lib/commonjs/RNGestureHandlerModule.windows.js +3 -1
  25. package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -1
  26. package/lib/commonjs/components/DrawerLayout.js +1 -0
  27. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  28. package/lib/commonjs/components/touchables/GenericTouchable.js +1 -2
  29. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  30. package/lib/commonjs/components/touchables/TouchableHighlight.js.map +1 -1
  31. package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
  32. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  33. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -1
  34. package/lib/commonjs/components/touchables/index.js.map +1 -1
  35. package/lib/commonjs/handlers/createHandler.js +3 -3
  36. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  37. package/lib/commonjs/handlers/gestureHandlerCommon.js +1 -1
  38. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  39. package/lib/commonjs/handlers/gestures/GestureDetector.js +3 -1
  40. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  41. package/lib/commonjs/handlers/gestures/gesture.js +5 -0
  42. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  43. package/lib/commonjs/handlers/gestures/gestureObjects.js +5 -0
  44. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -1
  45. package/lib/commonjs/handlers/gestures/hoverGesture.js +74 -0
  46. package/lib/commonjs/handlers/gestures/hoverGesture.js.map +1 -0
  47. package/lib/commonjs/index.js +8 -0
  48. package/lib/commonjs/index.js.map +1 -1
  49. package/lib/commonjs/web/handlers/FlingGestureHandler.js +0 -10
  50. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  51. package/lib/commonjs/web/handlers/GestureHandler.js +61 -88
  52. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  53. package/lib/commonjs/web/handlers/HoverGestureHandler.js +62 -0
  54. package/lib/commonjs/web/handlers/HoverGestureHandler.js.map +1 -0
  55. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +6 -7
  56. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  57. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +12 -4
  58. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  59. package/lib/commonjs/web/handlers/PanGestureHandler.js +2 -7
  60. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  61. package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -10
  62. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  63. package/lib/commonjs/web/interfaces.js +1 -1
  64. package/lib/commonjs/web/interfaces.js.map +1 -1
  65. package/lib/commonjs/web/tools/EventManager.js +18 -4
  66. package/lib/commonjs/web/tools/EventManager.js.map +1 -1
  67. package/lib/commonjs/web/tools/GestureHandlerDelegate.js +6 -0
  68. package/lib/commonjs/web/tools/GestureHandlerDelegate.js.map +1 -0
  69. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +5 -7
  70. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  71. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +118 -0
  72. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -0
  73. package/lib/commonjs/web/tools/PointerEventManager.js +38 -5
  74. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
  75. package/lib/commonjs/web/tools/TouchEventManager.js +2 -2
  76. package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
  77. package/lib/module/RNGestureHandlerModule.macos.js +2 -1
  78. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  79. package/lib/module/RNGestureHandlerModule.web.js +6 -3
  80. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  81. package/lib/module/RNGestureHandlerModule.windows.js +2 -1
  82. package/lib/module/RNGestureHandlerModule.windows.js.map +1 -1
  83. package/lib/module/components/DrawerLayout.js +1 -0
  84. package/lib/module/components/DrawerLayout.js.map +1 -1
  85. package/lib/module/components/touchables/GenericTouchable.js +1 -2
  86. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  87. package/lib/module/components/touchables/TouchableHighlight.js.map +1 -1
  88. package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
  89. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  90. package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -1
  91. package/lib/module/components/touchables/index.js.map +1 -1
  92. package/lib/module/handlers/createHandler.js +3 -3
  93. package/lib/module/handlers/createHandler.js.map +1 -1
  94. package/lib/module/handlers/gestureHandlerCommon.js +1 -1
  95. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  96. package/lib/module/handlers/gestures/GestureDetector.js +2 -1
  97. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  98. package/lib/module/handlers/gestures/gesture.js +5 -0
  99. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  100. package/lib/module/handlers/gestures/gestureObjects.js +4 -0
  101. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
  102. package/lib/module/handlers/gestures/hoverGesture.js +62 -0
  103. package/lib/module/handlers/gestures/hoverGesture.js.map +1 -0
  104. package/lib/module/index.js +1 -0
  105. package/lib/module/index.js.map +1 -1
  106. package/lib/module/web/handlers/FlingGestureHandler.js +0 -10
  107. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  108. package/lib/module/web/handlers/GestureHandler.js +61 -84
  109. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  110. package/lib/module/web/handlers/HoverGestureHandler.js +47 -0
  111. package/lib/module/web/handlers/HoverGestureHandler.js.map +1 -0
  112. package/lib/module/web/handlers/LongPressGestureHandler.js +5 -7
  113. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  114. package/lib/module/web/handlers/NativeViewGestureHandler.js +11 -4
  115. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  116. package/lib/module/web/handlers/PanGestureHandler.js +2 -7
  117. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  118. package/lib/module/web/handlers/TapGestureHandler.js +0 -10
  119. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  120. package/lib/module/web/interfaces.js +1 -1
  121. package/lib/module/web/interfaces.js.map +1 -1
  122. package/lib/module/web/tools/EventManager.js +18 -4
  123. package/lib/module/web/tools/EventManager.js.map +1 -1
  124. package/lib/module/web/tools/GestureHandlerDelegate.js +2 -0
  125. package/lib/module/web/tools/GestureHandlerDelegate.js.map +1 -0
  126. package/lib/module/web/tools/GestureHandlerOrchestrator.js +5 -6
  127. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  128. package/lib/module/web/tools/GestureHandlerWebDelegate.js +102 -0
  129. package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -0
  130. package/lib/module/web/tools/PointerEventManager.js +39 -6
  131. package/lib/module/web/tools/PointerEventManager.js.map +1 -1
  132. package/lib/module/web/tools/TouchEventManager.js +2 -2
  133. package/lib/module/web/tools/TouchEventManager.js.map +1 -1
  134. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +1 -1
  135. package/lib/typescript/RNGestureHandlerModule.web.d.ts +3 -1
  136. package/lib/typescript/RNGestureHandlerModule.windows.d.ts +1 -1
  137. package/lib/typescript/components/DrawerLayout.d.ts +7 -1
  138. package/lib/typescript/components/touchables/GenericTouchable.d.ts +3 -2
  139. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +4 -3
  140. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +3 -2
  141. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +4 -5
  142. package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +1 -0
  143. package/lib/typescript/components/touchables/index.d.ts +3 -0
  144. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
  145. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -1
  146. package/lib/typescript/handlers/gestures/gesture.d.ts +2 -1
  147. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +2 -0
  148. package/lib/typescript/handlers/gestures/hoverGesture.d.ts +32 -0
  149. package/lib/typescript/index.d.ts +4 -0
  150. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +0 -6
  151. package/lib/typescript/web/handlers/GestureHandler.d.ts +12 -17
  152. package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +10 -0
  153. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +0 -4
  154. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +1 -1
  155. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +0 -4
  156. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +0 -6
  157. package/lib/typescript/web/interfaces.d.ts +4 -3
  158. package/lib/typescript/web/tools/EventManager.d.ts +9 -5
  159. package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +22 -0
  160. package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +21 -0
  161. package/lib/typescript/web/tools/NodeManager.d.ts +2 -2
  162. package/lib/typescript/web/tools/PointerEventManager.d.ts +1 -1
  163. package/lib/typescript/web/tools/TouchEventManager.d.ts +1 -1
  164. package/package.json +2 -2
  165. package/src/RNGestureHandlerModule.macos.ts +5 -1
  166. package/src/RNGestureHandlerModule.web.ts +7 -1
  167. package/src/RNGestureHandlerModule.windows.ts +5 -1
  168. package/src/components/DrawerLayout.tsx +9 -0
  169. package/src/components/touchables/GenericTouchable.tsx +4 -4
  170. package/src/components/touchables/TouchableHighlight.tsx +6 -3
  171. package/src/components/touchables/TouchableNativeFeedback.android.tsx +5 -4
  172. package/src/components/touchables/TouchableOpacity.tsx +6 -7
  173. package/src/components/touchables/TouchableWithoutFeedback.tsx +3 -1
  174. package/src/components/touchables/index.ts +3 -0
  175. package/src/handlers/createHandler.tsx +4 -2
  176. package/src/handlers/gestureHandlerCommon.ts +39 -0
  177. package/src/handlers/gestures/GestureDetector.tsx +2 -0
  178. package/src/handlers/gestures/gesture.ts +6 -0
  179. package/src/handlers/gestures/gestureObjects.ts +5 -0
  180. package/src/handlers/gestures/hoverGesture.ts +83 -0
  181. package/src/index.ts +8 -0
  182. package/src/web/handlers/FlingGestureHandler.ts +0 -11
  183. package/src/web/handlers/GestureHandler.ts +68 -88
  184. package/src/web/handlers/HoverGestureHandler.ts +43 -0
  185. package/src/web/handlers/LongPressGestureHandler.ts +5 -7
  186. package/src/web/handlers/NativeViewGestureHandler.ts +11 -4
  187. package/src/web/handlers/PanGestureHandler.ts +1 -6
  188. package/src/web/handlers/TapGestureHandler.ts +0 -11
  189. package/src/web/interfaces.ts +4 -2
  190. package/src/web/tools/EventManager.ts +15 -7
  191. package/src/web/tools/GestureHandlerDelegate.ts +23 -0
  192. package/src/web/tools/GestureHandlerOrchestrator.ts +7 -6
  193. package/src/web/tools/GestureHandlerWebDelegate.ts +115 -0
  194. package/src/web/tools/PointerEventManager.ts +46 -16
  195. package/src/web/tools/TouchEventManager.ts +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["PointerEventManager.ts"],"names":["EventTypes","MouseButtons","PointerType","EventManager","isPointerInBounds","PointerEventManager","Set","setListeners","view","addEventListener","event","pointerType","TOUCH","x","clientX","y","clientY","adaptedEvent","mapEvent","DOWN","target","setPointerCapture","pointerId","markAsInBounds","trackedPointers","add","activePointersCounter","eventType","ADDITIONAL_POINTER_DOWN","onPointerAdd","onPointerDown","UP","releasePointerCapture","markAsOutOfBounds","delete","ADDITIONAL_POINTER_UP","onPointerRemove","onPointerUp","MOUSE","buttons","LEFT","MOVE","inBounds","pointerIndex","pointersInBounds","indexOf","ENTER","onPointerEnter","onPointerMove","OUT","onPointerOut","onPointerOutOfBounds","CANCEL","onPointerCancel","clear","has","offsetX","offsetY","time","timeStamp","resetManager"],"mappings":"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","sourcesContent":["import {\n AdaptedEvent,\n EventTypes,\n MouseButtons,\n PointerType,\n} from '../interfaces';\nimport EventManager from './EventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default class PointerEventManager extends EventManager {\n private trackedPointers = new Set<number>();\n\n public setListeners(): void {\n this.view.addEventListener('pointerdown', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n if (\n !isPointerInBounds(this.view, { x: event.clientX, y: event.clientY })\n ) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.DOWN);\n const target = event.target as HTMLElement;\n\n target.setPointerCapture(adaptedEvent.pointerId);\n this.markAsInBounds(adaptedEvent.pointerId);\n this.trackedPointers.add(adaptedEvent.pointerId);\n\n if (++this.activePointersCounter > 1) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;\n this.onPointerAdd(adaptedEvent);\n } else {\n this.onPointerDown(adaptedEvent);\n }\n });\n\n this.view.addEventListener('pointerup', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n // When we call reset on gesture handlers, it also resets their event managers\n // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view\n // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view\n // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly\n if (this.activePointersCounter === 0) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.UP);\n const target = event.target as HTMLElement;\n\n target.releasePointerCapture(adaptedEvent.pointerId);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.trackedPointers.delete(adaptedEvent.pointerId);\n\n if (--this.activePointersCounter > 0) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP;\n this.onPointerRemove(adaptedEvent);\n } else {\n this.onPointerUp(adaptedEvent);\n }\n });\n\n this.view.addEventListener('pointermove', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n if (\n event.pointerType === PointerType.MOUSE &&\n event.buttons !== MouseButtons.LEFT\n ) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.MOVE);\n\n const inBounds: boolean = isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n });\n\n const pointerIndex: number = this.pointersInBounds.indexOf(\n adaptedEvent.pointerId\n );\n\n if (inBounds) {\n if (pointerIndex < 0) {\n adaptedEvent.eventType = EventTypes.ENTER;\n this.onPointerEnter(adaptedEvent);\n this.markAsInBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerMove(adaptedEvent);\n }\n } else {\n if (pointerIndex >= 0) {\n adaptedEvent.eventType = EventTypes.OUT;\n this.onPointerOut(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerOutOfBounds(adaptedEvent);\n }\n }\n });\n\n this.view.addEventListener('pointercancel', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.CANCEL\n );\n\n this.onPointerCancel(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.activePointersCounter = 0;\n this.trackedPointers.clear();\n });\n\n this.view.addEventListener(\n 'lostpointercapture',\n (event: PointerEvent): void => {\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.CANCEL\n );\n\n if (this.trackedPointers.has(adaptedEvent.pointerId)) {\n // in some cases the `pointerup` event is not fired, but `lostpointercapture` is\n // we simulate the `pointercancel` event here to make sure the gesture handler stops tracking it\n this.onPointerCancel(adaptedEvent);\n\n this.activePointersCounter = 0;\n this.trackedPointers.clear();\n }\n }\n );\n }\n\n protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent {\n return {\n x: event.clientX,\n y: event.clientY,\n offsetX: event.offsetX,\n offsetY: event.offsetY,\n pointerId: event.pointerId,\n eventType: eventType,\n pointerType: event.pointerType as PointerType,\n buttons: event.buttons,\n time: event.timeStamp,\n };\n }\n\n public resetManager(): void {\n super.resetManager();\n this.trackedPointers.clear();\n }\n}\n"]}
1
+ {"version":3,"sources":["PointerEventManager.ts"],"names":["EventTypes","PointerType","EventManager","isPointerInBounds","PointerEventManager","Set","setListeners","view","addEventListener","event","pointerType","TOUCH","x","clientX","y","clientY","adaptedEvent","mapEvent","DOWN","target","setPointerCapture","pointerId","markAsInBounds","trackedPointers","add","activePointersCounter","eventType","ADDITIONAL_POINTER_DOWN","onPointerAdd","onPointerDown","UP","releasePointerCapture","markAsOutOfBounds","delete","ADDITIONAL_POINTER_UP","onPointerRemove","onPointerUp","MOVE","hasPointerCapture","inBounds","pointerIndex","pointersInBounds","indexOf","ENTER","onPointerEnter","onPointerMove","LEAVE","onPointerLeave","onPointerOutOfBounds","CANCEL","onPointerCancel","clear","onPointerMoveOver","onPointerMoveOut","has","offsetX","offsetY","buttons","time","timeStamp","resetManager"],"mappings":"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","sourcesContent":["import { AdaptedEvent, EventTypes, PointerType } from '../interfaces';\nimport EventManager from './EventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default class PointerEventManager extends EventManager<HTMLElement> {\n private trackedPointers = new Set<number>();\n\n public setListeners(): void {\n this.view.addEventListener('pointerdown', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n if (\n !isPointerInBounds(this.view, { x: event.clientX, y: event.clientY })\n ) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.DOWN);\n const target = event.target as HTMLElement;\n\n target.setPointerCapture(adaptedEvent.pointerId);\n this.markAsInBounds(adaptedEvent.pointerId);\n this.trackedPointers.add(adaptedEvent.pointerId);\n\n if (++this.activePointersCounter > 1) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;\n this.onPointerAdd(adaptedEvent);\n } else {\n this.onPointerDown(adaptedEvent);\n }\n });\n\n this.view.addEventListener('pointerup', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n // When we call reset on gesture handlers, it also resets their event managers\n // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view\n // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view\n // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly\n if (this.activePointersCounter === 0) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.UP);\n const target = event.target as HTMLElement;\n\n target.releasePointerCapture(adaptedEvent.pointerId);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.trackedPointers.delete(adaptedEvent.pointerId);\n\n if (--this.activePointersCounter > 0) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP;\n this.onPointerRemove(adaptedEvent);\n } else {\n this.onPointerUp(adaptedEvent);\n }\n });\n\n this.view.addEventListener('pointermove', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.MOVE);\n const target = event.target as HTMLElement;\n\n // You may be wondering why are we setting pointer capture here, when we\n // already set it in `pointerdown` handler. Well, that's a great question,\n // for which I don't have an answer. Specification (https://www.w3.org/TR/pointerevents2/#dom-element-setpointercapture)\n // says that the requirement for `setPointerCapture` to work is that pointer\n // must be in 'active buttons state`, otherwise it will fail silently, which\n // is lovely. Obviously, when `pointerdown` is fired, one of the buttons\n // (when using mouse) is pressed, but that doesn't mean that `setPointerCapture`\n // will succeed, for some reason. Since it fails silently, we don't actually know\n // if it worked or not (there's `gotpointercapture` event, but the complexity of\n // incorporating it here seems stupid), so we just call it again here, every time\n // pointer moves until it succeeds.\n // God, I do love web development.\n if (!target.hasPointerCapture(event.pointerId)) {\n target.setPointerCapture(event.pointerId);\n }\n\n const inBounds: boolean = isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n });\n\n const pointerIndex: number = this.pointersInBounds.indexOf(\n adaptedEvent.pointerId\n );\n\n if (inBounds) {\n if (pointerIndex < 0) {\n adaptedEvent.eventType = EventTypes.ENTER;\n this.onPointerEnter(adaptedEvent);\n this.markAsInBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerMove(adaptedEvent);\n }\n } else {\n if (pointerIndex >= 0) {\n adaptedEvent.eventType = EventTypes.LEAVE;\n this.onPointerLeave(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerOutOfBounds(adaptedEvent);\n }\n }\n });\n\n this.view.addEventListener('pointercancel', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.CANCEL\n );\n\n this.onPointerCancel(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.activePointersCounter = 0;\n this.trackedPointers.clear();\n });\n\n // onPointerEnter and onPointerLeave are triggered by a custom logic responsible for\n // handling shouldCancelWhenOutside flag, and are unreliable unless the pointer is down.\n // We therefore use pointerenter and pointerleave events to handle the hover gesture,\n // mapping them to onPointerMoveOver and onPointerMoveOut respectively.\n\n this.view.addEventListener('pointerenter', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.ENTER);\n\n this.onPointerMoveOver(adaptedEvent);\n });\n\n this.view.addEventListener('pointerleave', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.LEAVE);\n\n this.onPointerMoveOut(adaptedEvent);\n });\n\n this.view.addEventListener(\n 'lostpointercapture',\n (event: PointerEvent): void => {\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.CANCEL\n );\n\n if (this.trackedPointers.has(adaptedEvent.pointerId)) {\n // in some cases the `pointerup` event is not fired, but `lostpointercapture` is\n // we simulate the `pointercancel` event here to make sure the gesture handler stops tracking it\n this.onPointerCancel(adaptedEvent);\n\n this.activePointersCounter = 0;\n this.trackedPointers.clear();\n }\n }\n );\n }\n\n protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent {\n return {\n x: event.clientX,\n y: event.clientY,\n offsetX: event.offsetX,\n offsetY: event.offsetY,\n pointerId: event.pointerId,\n eventType: eventType,\n pointerType: event.pointerType as PointerType,\n buttons: event.buttons,\n time: event.timeStamp,\n };\n }\n\n public resetManager(): void {\n super.resetManager();\n this.trackedPointers.clear();\n }\n}\n"]}
@@ -50,8 +50,8 @@ export default class TouchEventManager extends EventManager {
50
50
  }
51
51
  } else {
52
52
  if (pointerIndex >= 0) {
53
- adaptedEvent.eventType = EventTypes.OUT;
54
- this.onPointerOut(adaptedEvent);
53
+ adaptedEvent.eventType = EventTypes.LEAVE;
54
+ this.onPointerLeave(adaptedEvent);
55
55
  this.markAsOutOfBounds(adaptedEvent.pointerId);
56
56
  } else {
57
57
  this.onPointerOutOfBounds(adaptedEvent);
@@ -1 +1 @@
1
- {"version":3,"sources":["TouchEventManager.ts"],"names":["EventTypes","MouseButtons","PointerType","TouchEventType","EventManager","isPointerInBounds","TouchEventManager","setListeners","view","addEventListener","event","i","changedTouches","length","adaptedEvent","mapEvent","DOWN","x","y","touchType","markAsInBounds","pointerId","activePointersCounter","eventType","ADDITIONAL_POINTER_DOWN","onPointerAdd","onPointerDown","MOVE","inBounds","pointerIndex","pointersInBounds","indexOf","ENTER","onPointerEnter","onPointerMove","OUT","onPointerOut","markAsOutOfBounds","onPointerOutOfBounds","UP","ADDITIONAL_POINTER_UP","onPointerRemove","onPointerUp","CANCEL","CANCELLED","onPointerCancel","index","touchEventType","rect","getBoundingClientRect","clientX","clientY","offsetX","left","offsetY","top","identifier","pointerType","TOUCH","buttons","NONE","time","timeStamp","allTouches","touches"],"mappings":"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","sourcesContent":["import {\n AdaptedEvent,\n EventTypes,\n MouseButtons,\n PointerType,\n TouchEventType,\n} from '../interfaces';\nimport EventManager from './EventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default class TouchEventManager extends EventManager {\n public setListeners(): void {\n this.view.addEventListener('touchstart', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.DOWN,\n i,\n TouchEventType.DOWN\n );\n\n // Here we skip stylus, because in case of anything different than touch we want to handle it by using PointerEvents\n // If we leave stylus to send touch events, handlers will receive every action twice\n if (\n !isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n }) ||\n //@ts-ignore touchType field does exist\n event.changedTouches[i].touchType === 'stylus'\n ) {\n continue;\n }\n\n this.markAsInBounds(adaptedEvent.pointerId);\n\n if (++this.activePointersCounter > 1) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;\n this.onPointerAdd(adaptedEvent);\n } else {\n this.onPointerDown(adaptedEvent);\n }\n }\n });\n\n this.view.addEventListener('touchmove', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.MOVE,\n i,\n TouchEventType.MOVE\n );\n //@ts-ignore touchType field does exist\n if (event.changedTouches[i].touchType === 'stylus') {\n continue;\n }\n\n const inBounds: boolean = isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n });\n\n const pointerIndex: number = this.pointersInBounds.indexOf(\n adaptedEvent.pointerId\n );\n\n if (inBounds) {\n if (pointerIndex < 0) {\n adaptedEvent.eventType = EventTypes.ENTER;\n this.onPointerEnter(adaptedEvent);\n this.markAsInBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerMove(adaptedEvent);\n }\n } else {\n if (pointerIndex >= 0) {\n adaptedEvent.eventType = EventTypes.OUT;\n this.onPointerOut(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerOutOfBounds(adaptedEvent);\n }\n }\n }\n });\n\n this.view.addEventListener('touchend', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n // When we call reset on gesture handlers, it also resets their event managers\n // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view\n // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view\n // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly\n if (this.activePointersCounter === 0) {\n break;\n }\n\n //@ts-ignore touchType field does exist\n if (event.changedTouches[i].touchType === 'stylus') {\n continue;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.UP,\n i,\n TouchEventType.UP\n );\n\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n\n if (--this.activePointersCounter > 0) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP;\n this.onPointerRemove(adaptedEvent);\n } else {\n this.onPointerUp(adaptedEvent);\n }\n }\n });\n\n this.view.addEventListener('touchcancel', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.CANCEL,\n i,\n TouchEventType.CANCELLED\n );\n\n //@ts-ignore touchType field does exist\n if (event.changedTouches[i].touchType === 'stylus') {\n continue;\n }\n\n this.onPointerCancel(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.activePointersCounter = 0;\n }\n });\n }\n\n protected mapEvent(\n event: TouchEvent,\n eventType: EventTypes,\n index: number,\n touchEventType: TouchEventType\n ): AdaptedEvent {\n const rect = this.view.getBoundingClientRect();\n const clientX = event.changedTouches[index].clientX;\n const clientY = event.changedTouches[index].clientY;\n\n return {\n x: clientX,\n y: clientY,\n offsetX: clientX - rect.left,\n offsetY: clientY - rect.top,\n pointerId: event.changedTouches[index].identifier,\n eventType: eventType,\n pointerType: PointerType.TOUCH,\n buttons: MouseButtons.NONE,\n time: event.timeStamp,\n allTouches: event.touches,\n changedTouches: event.changedTouches,\n touchEventType: touchEventType,\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["TouchEventManager.ts"],"names":["EventTypes","MouseButtons","PointerType","TouchEventType","EventManager","isPointerInBounds","TouchEventManager","setListeners","view","addEventListener","event","i","changedTouches","length","adaptedEvent","mapEvent","DOWN","x","y","touchType","markAsInBounds","pointerId","activePointersCounter","eventType","ADDITIONAL_POINTER_DOWN","onPointerAdd","onPointerDown","MOVE","inBounds","pointerIndex","pointersInBounds","indexOf","ENTER","onPointerEnter","onPointerMove","LEAVE","onPointerLeave","markAsOutOfBounds","onPointerOutOfBounds","UP","ADDITIONAL_POINTER_UP","onPointerRemove","onPointerUp","CANCEL","CANCELLED","onPointerCancel","index","touchEventType","rect","getBoundingClientRect","clientX","clientY","offsetX","left","offsetY","top","identifier","pointerType","TOUCH","buttons","NONE","time","timeStamp","allTouches","touches"],"mappings":"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","sourcesContent":["import {\n AdaptedEvent,\n EventTypes,\n MouseButtons,\n PointerType,\n TouchEventType,\n} from '../interfaces';\nimport EventManager from './EventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default class TouchEventManager extends EventManager<HTMLElement> {\n public setListeners(): void {\n this.view.addEventListener('touchstart', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.DOWN,\n i,\n TouchEventType.DOWN\n );\n\n // Here we skip stylus, because in case of anything different than touch we want to handle it by using PointerEvents\n // If we leave stylus to send touch events, handlers will receive every action twice\n if (\n !isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n }) ||\n //@ts-ignore touchType field does exist\n event.changedTouches[i].touchType === 'stylus'\n ) {\n continue;\n }\n\n this.markAsInBounds(adaptedEvent.pointerId);\n\n if (++this.activePointersCounter > 1) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;\n this.onPointerAdd(adaptedEvent);\n } else {\n this.onPointerDown(adaptedEvent);\n }\n }\n });\n\n this.view.addEventListener('touchmove', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.MOVE,\n i,\n TouchEventType.MOVE\n );\n //@ts-ignore touchType field does exist\n if (event.changedTouches[i].touchType === 'stylus') {\n continue;\n }\n\n const inBounds: boolean = isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n });\n\n const pointerIndex: number = this.pointersInBounds.indexOf(\n adaptedEvent.pointerId\n );\n\n if (inBounds) {\n if (pointerIndex < 0) {\n adaptedEvent.eventType = EventTypes.ENTER;\n this.onPointerEnter(adaptedEvent);\n this.markAsInBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerMove(adaptedEvent);\n }\n } else {\n if (pointerIndex >= 0) {\n adaptedEvent.eventType = EventTypes.LEAVE;\n this.onPointerLeave(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerOutOfBounds(adaptedEvent);\n }\n }\n }\n });\n\n this.view.addEventListener('touchend', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n // When we call reset on gesture handlers, it also resets their event managers\n // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view\n // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view\n // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly\n if (this.activePointersCounter === 0) {\n break;\n }\n\n //@ts-ignore touchType field does exist\n if (event.changedTouches[i].touchType === 'stylus') {\n continue;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.UP,\n i,\n TouchEventType.UP\n );\n\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n\n if (--this.activePointersCounter > 0) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP;\n this.onPointerRemove(adaptedEvent);\n } else {\n this.onPointerUp(adaptedEvent);\n }\n }\n });\n\n this.view.addEventListener('touchcancel', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.CANCEL,\n i,\n TouchEventType.CANCELLED\n );\n\n //@ts-ignore touchType field does exist\n if (event.changedTouches[i].touchType === 'stylus') {\n continue;\n }\n\n this.onPointerCancel(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.activePointersCounter = 0;\n }\n });\n }\n\n protected mapEvent(\n event: TouchEvent,\n eventType: EventTypes,\n index: number,\n touchEventType: TouchEventType\n ): AdaptedEvent {\n const rect = this.view.getBoundingClientRect();\n const clientX = event.changedTouches[index].clientX;\n const clientY = event.changedTouches[index].clientY;\n\n return {\n x: clientX,\n y: clientY,\n offsetX: clientX - rect.left,\n offsetY: clientY - rect.top,\n pointerId: event.changedTouches[index].identifier,\n eventType: eventType,\n pointerType: PointerType.TOUCH,\n buttons: MouseButtons.NONE,\n time: event.timeStamp,\n allTouches: event.touches,\n changedTouches: event.changedTouches,\n touchEventType: touchEventType,\n };\n }\n}\n"]}
@@ -40,7 +40,7 @@ declare const _default: {
40
40
  createGestureHandler<T>(handlerName: keyof typeof Gestures, handlerTag: number, config: T): void;
41
41
  attachGestureHandler(handlerTag: number, newView: number, _actionType: ActionType, propsRef: React.RefObject<unknown>): void;
42
42
  updateGestureHandler(handlerTag: number, newConfig: Config): void;
43
- getGestureHandlerNode(handlerTag: number): NativeViewGestureHandler | PanGestureHandler | TapGestureHandler | LongPressGestureHandler | PinchGestureHandler | RotationGestureHandler | FlingGestureHandler | ManualGestureHandler | HammerNativeViewGestureHandler | HammerPanGestureHandler | HammerTapGestureHandler | HammerLongPressGestureHandler | HammerPinchGestureHandler | HammerRotationGestureHandler | HammerFlingGestureHandler;
43
+ getGestureHandlerNode(handlerTag: number): NativeViewGestureHandler | PanGestureHandler | TapGestureHandler | LongPressGestureHandler | PinchGestureHandler | RotationGestureHandler | FlingGestureHandler | ManualGestureHandler | import("./web/handlers/HoverGestureHandler").default | HammerNativeViewGestureHandler | HammerPanGestureHandler | HammerTapGestureHandler | HammerLongPressGestureHandler | HammerPinchGestureHandler | HammerRotationGestureHandler | HammerFlingGestureHandler;
44
44
  dropGestureHandler(handlerTag: number): void;
45
45
  flushOperations(): void;
46
46
  };
@@ -8,6 +8,7 @@ import RotationGestureHandler from './web/handlers/RotationGestureHandler';
8
8
  import FlingGestureHandler from './web/handlers/FlingGestureHandler';
9
9
  import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler';
10
10
  import ManualGestureHandler from './web/handlers/ManualGestureHandler';
11
+ import HoverGestureHandler from './web/handlers/HoverGestureHandler';
11
12
  import HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler';
12
13
  import HammerPanGestureHandler from './web_hammer/PanGestureHandler';
13
14
  import HammerTapGestureHandler from './web_hammer/TapGestureHandler';
@@ -25,6 +26,7 @@ export declare const Gestures: {
25
26
  RotationGestureHandler: typeof RotationGestureHandler;
26
27
  FlingGestureHandler: typeof FlingGestureHandler;
27
28
  ManualGestureHandler: typeof ManualGestureHandler;
29
+ HoverGestureHandler: typeof HoverGestureHandler;
28
30
  };
29
31
  export declare const HammerGestures: {
30
32
  NativeViewGestureHandler: typeof HammerNativeViewGestureHandler;
@@ -41,7 +43,7 @@ declare const _default: {
41
43
  createGestureHandler<T>(handlerName: keyof typeof Gestures, handlerTag: number, config: T): void;
42
44
  attachGestureHandler(handlerTag: number, newView: any, _actionType: ActionType, propsRef: React.RefObject<unknown>): void;
43
45
  updateGestureHandler(handlerTag: number, newConfig: Config): void;
44
- getGestureHandlerNode(handlerTag: number): NativeViewGestureHandler | PanGestureHandler | TapGestureHandler | LongPressGestureHandler | PinchGestureHandler | RotationGestureHandler | FlingGestureHandler | ManualGestureHandler | HammerNativeViewGestureHandler | HammerPanGestureHandler | HammerTapGestureHandler | HammerLongPressGestureHandler | HammerPinchGestureHandler | HammerRotationGestureHandler | HammerFlingGestureHandler;
46
+ getGestureHandlerNode(handlerTag: number): NativeViewGestureHandler | PanGestureHandler | TapGestureHandler | LongPressGestureHandler | PinchGestureHandler | RotationGestureHandler | FlingGestureHandler | ManualGestureHandler | HoverGestureHandler | HammerNativeViewGestureHandler | HammerPanGestureHandler | HammerTapGestureHandler | HammerLongPressGestureHandler | HammerPinchGestureHandler | HammerRotationGestureHandler | HammerFlingGestureHandler;
45
47
  dropGestureHandler(handlerTag: number): void;
46
48
  flushOperations(): void;
47
49
  };
@@ -41,7 +41,7 @@ declare const _default: {
41
41
  createGestureHandler<T>(handlerName: keyof typeof Gestures, handlerTag: number, config: T): void;
42
42
  attachGestureHandler(handlerTag: number, newView: any, _actionType: ActionType, propsRef: React.RefObject<unknown>): void;
43
43
  updateGestureHandler(handlerTag: number, newConfig: Config): void;
44
- getGestureHandlerNode(handlerTag: number): NativeViewGestureHandler | PanGestureHandler | TapGestureHandler | LongPressGestureHandler | PinchGestureHandler | RotationGestureHandler | FlingGestureHandler | ManualGestureHandler | HammerNativeViewGestureHandler | HammerPanGestureHandler | HammerTapGestureHandler | HammerLongPressGestureHandler | HammerPinchGestureHandler | HammerRotationGestureHandler | HammerFlingGestureHandler;
44
+ getGestureHandlerNode(handlerTag: number): NativeViewGestureHandler | PanGestureHandler | TapGestureHandler | LongPressGestureHandler | PinchGestureHandler | RotationGestureHandler | FlingGestureHandler | ManualGestureHandler | import("./web/handlers/HoverGestureHandler").default | HammerNativeViewGestureHandler | HammerPanGestureHandler | HammerTapGestureHandler | HammerLongPressGestureHandler | HammerPinchGestureHandler | HammerRotationGestureHandler | HammerFlingGestureHandler;
45
45
  dropGestureHandler(handlerTag: number): void;
46
46
  flushOperations(): void;
47
47
  };
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { Component } from 'react';
3
3
  import { Animated, StatusBarAnimation, StyleProp, ViewStyle } from 'react-native';
4
- import { UserSelect } from '../handlers/gestureHandlerCommon';
4
+ import { UserSelect, ActiveCursor } from '../handlers/gestureHandlerCommon';
5
5
  import { PanGestureHandler } from '../handlers/PanGestureHandler';
6
6
  export declare type DrawerPosition = 'left' | 'right';
7
7
  export declare type DrawerState = 'Idle' | 'Dragging' | 'Settling';
@@ -87,6 +87,12 @@ export interface DrawerLayoutProps {
87
87
  * Values: 'none'|'text'|'auto'
88
88
  */
89
89
  userSelect?: UserSelect;
90
+ /**
91
+ * @default 'auto'
92
+ * Defines which cursor property should be used when gesture activates.
93
+ * Values: see CSS cursor values
94
+ */
95
+ activeCursor?: ActiveCursor;
90
96
  }
91
97
  export declare type DrawerLayoutState = {
92
98
  dragX: Animated.Value;
@@ -1,5 +1,5 @@
1
1
  import { Component } from 'react';
2
- import { StyleProp, ViewStyle, TouchableWithoutFeedbackProps } from 'react-native';
2
+ import { StyleProp, ViewStyle, TouchableWithoutFeedbackProps, Insets } from 'react-native';
3
3
  import { GestureEvent, HandlerStateChangeEvent } from '../../handlers/gestureHandlerCommon';
4
4
  import { NativeViewGestureHandlerPayload } from '../../handlers/NativeViewGestureHandler';
5
5
  import { TouchableNativeFeedbackExtraProps } from './TouchableNativeFeedback.android';
@@ -16,7 +16,7 @@ export declare const TOUCHABLE_STATE: {
16
16
  readonly MOVED_OUTSIDE: 2;
17
17
  };
18
18
  declare type TouchableState = typeof TOUCHABLE_STATE[keyof typeof TOUCHABLE_STATE];
19
- export interface GenericTouchableProps extends TouchableWithoutFeedbackProps {
19
+ export interface GenericTouchableProps extends Omit<TouchableWithoutFeedbackProps, 'hitSlop'> {
20
20
  onPress?: () => void;
21
21
  onPressIn?: () => void;
22
22
  onPressOut?: () => void;
@@ -25,6 +25,7 @@ export interface GenericTouchableProps extends TouchableWithoutFeedbackProps {
25
25
  shouldActivateOnStart?: boolean;
26
26
  disallowInterruption?: boolean;
27
27
  containerStyle?: StyleProp<ViewStyle>;
28
+ hitSlop?: Insets | number;
28
29
  }
29
30
  interface InternalProps {
30
31
  extraButtonProps: TouchableNativeFeedbackExtraProps;
@@ -1,6 +1,6 @@
1
1
  import { Component } from 'react';
2
2
  import { GenericTouchableProps } from './GenericTouchable';
3
- import { TouchableHighlightProps, ColorValue } from 'react-native';
3
+ import { TouchableHighlightProps as RNTouchableHighlightProps, ColorValue } from 'react-native';
4
4
  interface State {
5
5
  extraChildStyle: null | {
6
6
  opacity?: number;
@@ -9,10 +9,11 @@ interface State {
9
9
  backgroundColor?: ColorValue;
10
10
  };
11
11
  }
12
+ export declare type TouchableHighlightProps = RNTouchableHighlightProps & GenericTouchableProps;
12
13
  /**
13
14
  * TouchableHighlight follows RN's implementation
14
15
  */
15
- export default class TouchableHighlight extends Component<TouchableHighlightProps & GenericTouchableProps, State> {
16
+ export default class TouchableHighlight extends Component<TouchableHighlightProps, State> {
16
17
  static defaultProps: {
17
18
  activeOpacity: number;
18
19
  delayPressOut: number;
@@ -23,7 +24,7 @@ export default class TouchableHighlight extends Component<TouchableHighlightProp
23
24
  exclusive: boolean;
24
25
  };
25
26
  };
26
- constructor(props: TouchableHighlightProps & GenericTouchableProps);
27
+ constructor(props: TouchableHighlightProps);
27
28
  showUnderlay: () => void;
28
29
  hasPressHandler: () => (((event: import("react-native").GestureResponderEvent) => void) & (() => void)) | undefined;
29
30
  hideUnderlay: () => void;
@@ -1,4 +1,4 @@
1
- import { TouchableNativeFeedbackProps, ColorValue } from 'react-native';
1
+ import { TouchableNativeFeedbackProps as RNTouchableNativeFeedbackProps, ColorValue } from 'react-native';
2
2
  import { Component } from 'react';
3
3
  import { GenericTouchableProps } from './GenericTouchable';
4
4
  export declare type TouchableNativeFeedbackExtraProps = {
@@ -7,13 +7,14 @@ export declare type TouchableNativeFeedbackExtraProps = {
7
7
  rippleRadius?: number | null;
8
8
  foreground?: boolean;
9
9
  };
10
+ export declare type TouchableNativeFeedbackProps = RNTouchableNativeFeedbackProps & GenericTouchableProps;
10
11
  /**
11
12
  * TouchableNativeFeedback behaves slightly different than RN's TouchableNativeFeedback.
12
13
  * There's small difference with handling long press ripple since RN's implementation calls
13
14
  * ripple animation via bridge. This solution leaves all animations' handling for native components so
14
15
  * it follows native behaviours.
15
16
  */
16
- export default class TouchableNativeFeedback extends Component<TouchableNativeFeedbackProps & GenericTouchableProps> {
17
+ export default class TouchableNativeFeedback extends Component<TouchableNativeFeedbackProps> {
17
18
  static defaultProps: {
18
19
  useForeground: boolean;
19
20
  extraButtonProps: {
@@ -1,13 +1,13 @@
1
- import { Animated, TouchableOpacityProps } from 'react-native';
1
+ import { Animated, TouchableOpacityProps as RNTouchableOpacityProps } from 'react-native';
2
2
  import { GenericTouchableProps } from './GenericTouchable';
3
3
  import { Component } from 'react';
4
- interface GHTouchableOpacityProps {
4
+ export declare type TouchableOpacityProps = RNTouchableOpacityProps & GenericTouchableProps & {
5
5
  useNativeAnimations?: boolean;
6
- }
6
+ };
7
7
  /**
8
8
  * TouchableOpacity bases on timing animation which has been used in RN's core
9
9
  */
10
- export default class TouchableOpacity extends Component<TouchableOpacityProps & GenericTouchableProps & GHTouchableOpacityProps> {
10
+ export default class TouchableOpacity extends Component<TouchableOpacityProps> {
11
11
  static defaultProps: {
12
12
  activeOpacity: number;
13
13
  delayLongPress: number;
@@ -22,4 +22,3 @@ export default class TouchableOpacity extends Component<TouchableOpacityProps &
22
22
  onStateChange: (_from: number, to: number) => void;
23
23
  render(): JSX.Element;
24
24
  }
25
- export {};
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import GenericTouchable, { GenericTouchableProps } from './GenericTouchable';
3
+ export declare type TouchableWithoutFeedbackProps = GenericTouchable;
3
4
  declare const TouchableWithoutFeedback: React.ForwardRefExoticComponent<GenericTouchableProps & {
4
5
  children?: React.ReactNode;
5
6
  } & React.RefAttributes<GenericTouchable>>;
@@ -1,3 +1,6 @@
1
+ export type { TouchableHighlightProps } from './TouchableHighlight';
2
+ export type { TouchableOpacityProps } from './TouchableOpacity';
3
+ export type { TouchableWithoutFeedbackProps } from './TouchableWithoutFeedback';
1
4
  export { default as TouchableNativeFeedback } from './TouchableNativeFeedback';
2
5
  export { default as TouchableWithoutFeedback } from './TouchableWithoutFeedback';
3
6
  export { default as TouchableOpacity } from './TouchableOpacity';
@@ -22,7 +22,7 @@ export declare type NativeViewGestureHandlerPayload = {
22
22
  */
23
23
  pointerInside: boolean;
24
24
  };
25
- export declare const nativeViewProps: readonly ["id", "enabled", "shouldCancelWhenOutside", "hitSlop", "cancelsTouchesInView", "userSelect", "waitFor", "simultaneousHandlers", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange", "shouldActivateOnStart", "disallowInterruption"];
25
+ export declare const nativeViewProps: readonly ["id", "enabled", "shouldCancelWhenOutside", "hitSlop", "cancelsTouchesInView", "userSelect", "activeCursor", "waitFor", "simultaneousHandlers", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange", "shouldActivateOnStart", "disallowInterruption"];
26
26
  export declare const nativeViewHandlerName = "NativeViewGestureHandler";
27
27
  export declare type NativeViewGestureHandler = typeof NativeViewGestureHandler;
28
28
  export declare const NativeViewGestureHandler: import("react").ComponentType<NativeViewGestureHandlerProps & import("react").RefAttributes<any>>;
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { State } from '../State';
3
3
  import { TouchEventType } from '../TouchEventType';
4
4
  import { ValueOf } from '../typeUtils';
5
- export declare const baseGestureHandlerProps: readonly ["id", "enabled", "shouldCancelWhenOutside", "hitSlop", "cancelsTouchesInView", "userSelect", "waitFor", "simultaneousHandlers", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange"];
5
+ export declare const baseGestureHandlerProps: readonly ["id", "enabled", "shouldCancelWhenOutside", "hitSlop", "cancelsTouchesInView", "userSelect", "activeCursor", "waitFor", "simultaneousHandlers", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange"];
6
6
  export declare const baseGestureHandlerWithMonitorProps: string[];
7
7
  export interface GestureEventPayload {
8
8
  handlerTag: number;
@@ -14,6 +14,7 @@ export interface HandlerStateChangeEventPayload extends GestureEventPayload {
14
14
  }
15
15
  export declare type HitSlop = number | Partial<Record<'left' | 'right' | 'top' | 'bottom' | 'vertical' | 'horizontal', number>> | Record<'width' | 'left', number> | Record<'width' | 'right', number> | Record<'height' | 'top', number> | Record<'height' | 'bottom', number>;
16
16
  export declare type UserSelect = 'none' | 'auto' | 'text';
17
+ export declare type ActiveCursor = 'auto' | 'default' | 'none' | 'context-menu' | 'help' | 'pointer' | 'progress' | 'wait' | 'cell' | 'crosshair' | 'text' | 'vertical-text' | 'alias' | 'copy' | 'move' | 'no-drop' | 'not-allowed' | 'grab' | 'grabbing' | 'e-resize' | 'n-resize' | 'ne-resize' | 'nw-resize' | 's-resize' | 'se-resize' | 'sw-resize' | 'w-resize' | 'ew-resize' | 'ns-resize' | 'nesw-resize' | 'nwse-resize' | 'col-resize' | 'row-resize' | 'all-scroll' | 'zoom-in' | 'zoom-out';
17
18
  export interface GestureEvent<ExtraEventPayloadT = Record<string, unknown>> {
18
19
  nativeEvent: Readonly<GestureEventPayload & ExtraEventPayloadT>;
19
20
  }
@@ -42,6 +43,7 @@ export declare type CommonGestureConfig = {
42
43
  shouldCancelWhenOutside?: boolean;
43
44
  hitSlop?: HitSlop;
44
45
  userSelect?: UserSelect;
46
+ activeCursor?: ActiveCursor;
45
47
  };
46
48
  export declare type BaseGestureHandlerProps<ExtraEventPayloadT extends Record<string, unknown> = Record<string, unknown>> = CommonGestureConfig & {
47
49
  id?: string;
@@ -1,6 +1,6 @@
1
1
  import { FlingGestureHandlerEventPayload } from '../FlingGestureHandler';
2
2
  import { ForceTouchGestureHandlerEventPayload } from '../ForceTouchGestureHandler';
3
- import { HitSlop, CommonGestureConfig, GestureTouchEvent, GestureStateChangeEvent, GestureUpdateEvent } from '../gestureHandlerCommon';
3
+ import { HitSlop, CommonGestureConfig, GestureTouchEvent, GestureStateChangeEvent, GestureUpdateEvent, ActiveCursor } from '../gestureHandlerCommon';
4
4
  import { GestureStateManagerType } from './gestureStateManager';
5
5
  import { LongPressGestureHandlerEventPayload } from '../LongPressGestureHandler';
6
6
  import { PanGestureHandlerEventPayload } from '../PanGestureHandler';
@@ -89,6 +89,7 @@ export declare abstract class BaseGesture<EventPayloadT extends Record<string, u
89
89
  enabled(enabled: boolean): this;
90
90
  shouldCancelWhenOutside(value: boolean): this;
91
91
  hitSlop(hitSlop: HitSlop): this;
92
+ activeCursor(activeCursor: ActiveCursor): this;
92
93
  runOnJS(runOnJS: boolean): this;
93
94
  simultaneousWithExternalGesture(...gestures: Exclude<GestureRef, number>[]): this;
94
95
  requireExternalGestureToFail(...gestures: Exclude<GestureRef, number>[]): this;
@@ -9,6 +9,7 @@ import { RotationGesture } from './rotationGesture';
9
9
  import { TapGesture } from './tapGesture';
10
10
  import { NativeGesture } from './nativeGesture';
11
11
  import { ManualGesture } from './manualGesture';
12
+ import { HoverGesture } from './hoverGesture';
12
13
  export declare const GestureObjects: {
13
14
  Tap: () => TapGesture;
14
15
  Pan: () => PanGesture;
@@ -19,6 +20,7 @@ export declare const GestureObjects: {
19
20
  ForceTouch: () => ForceTouchGesture;
20
21
  Native: () => NativeGesture;
21
22
  Manual: () => ManualGesture;
23
+ Hover: () => HoverGesture;
22
24
  /**
23
25
  * Builds a composed gesture consisting of gestures provided as parameters.
24
26
  * The first one that becomes active cancels the rest of gestures.
@@ -0,0 +1,32 @@
1
+ import { BaseGestureConfig, ContinousBaseGesture } from './gesture';
2
+ import { GestureUpdateEvent } from '../gestureHandlerCommon';
3
+ export declare type HoverGestureHandlerEventPayload = {
4
+ x: number;
5
+ y: number;
6
+ absoluteX: number;
7
+ absoluteY: number;
8
+ };
9
+ export declare type HoverGestureChangeEventPayload = {
10
+ changeX: number;
11
+ changeY: number;
12
+ };
13
+ export declare enum HoverEffect {
14
+ NONE = 0,
15
+ LIFT = 1,
16
+ HIGHLIGHT = 2
17
+ }
18
+ export interface HoverGestureConfig {
19
+ hoverEffect?: HoverEffect;
20
+ }
21
+ export declare const hoverGestureHandlerProps: readonly ["hoverEffect"];
22
+ export declare class HoverGesture extends ContinousBaseGesture<HoverGestureHandlerEventPayload, HoverGestureChangeEventPayload> {
23
+ config: BaseGestureConfig & HoverGestureConfig;
24
+ constructor();
25
+ /**
26
+ * Sets the visual hover effect.
27
+ * iOS only
28
+ */
29
+ effect(effect: HoverEffect): this;
30
+ onChange(callback: (event: GestureUpdateEvent<HoverGestureHandlerEventPayload & HoverGestureChangeEventPayload>) => void): this;
31
+ }
32
+ export declare type HoverGestureType = InstanceType<typeof HoverGesture>;
@@ -34,14 +34,18 @@ export type { RotationGestureType as RotationGesture } from './handlers/gestures
34
34
  export type { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture';
35
35
  export type { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture';
36
36
  export type { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture';
37
+ export type { HoverGestureType as HoverGesture } from './handlers/gestures/hoverGesture';
37
38
  export type { ComposedGestureType as ComposedGesture, RaceGestureType as RaceGesture, SimultaneousGestureType as SimultaneousGesture, ExclusiveGestureType as ExclusiveGesture, } from './handlers/gestures/gestureComposition';
38
39
  export type { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager';
39
40
  export { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler';
40
41
  export type { RawButtonProps, BaseButtonProps, RectButtonProps, BorderlessButtonProps, } from './components/GestureButtons';
41
42
  export { RawButton, BaseButton, RectButton, BorderlessButton, PureNativeButton, } from './components/GestureButtons';
43
+ export type { TouchableHighlightProps, TouchableOpacityProps, TouchableWithoutFeedbackProps, } from './components/touchables';
42
44
  export { TouchableHighlight, TouchableNativeFeedback, TouchableOpacity, TouchableWithoutFeedback, } from './components/touchables';
43
45
  export { ScrollView, Switch, TextInput, DrawerLayoutAndroid, FlatList, RefreshControl, } from './components/GestureComponents';
46
+ export { HoverEffect } from './handlers/gestures/hoverGesture';
44
47
  export type { GestureHandlerGestureEvent, GestureHandlerStateChangeEvent, GestureHandlerGestureEventNativeEvent, GestureHandlerStateChangeNativeEvent, NativeViewGestureHandlerGestureEvent, NativeViewGestureHandlerStateChangeEvent, TapGestureHandlerGestureEvent, TapGestureHandlerStateChangeEvent, ForceTouchGestureHandlerGestureEvent, ForceTouchGestureHandlerStateChangeEvent, LongPressGestureHandlerGestureEvent, LongPressGestureHandlerStateChangeEvent, PanGestureHandlerGestureEvent, PanGestureHandlerStateChangeEvent, PinchGestureHandlerGestureEvent, PinchGestureHandlerStateChangeEvent, RotationGestureHandlerGestureEvent, RotationGestureHandlerStateChangeEvent, FlingGestureHandlerGestureEvent, FlingGestureHandlerStateChangeEvent, NativeViewGestureHandlerProperties, TapGestureHandlerProperties, LongPressGestureHandlerProperties, PanGestureHandlerProperties, PinchGestureHandlerProperties, RotationGestureHandlerProperties, FlingGestureHandlerProperties, ForceTouchGestureHandlerProperties, RawButtonProperties, BaseButtonProperties, RectButtonProperties, BorderlessButtonProperties, } from './handlers/gestureHandlerTypesCompat';
48
+ export type { SwipeableProps } from './components/Swipeable';
45
49
  export { default as Swipeable } from './components/Swipeable';
46
50
  export type { DrawerLayoutProps, DrawerPosition, DrawerState, DrawerType, DrawerLockMode, DrawerKeyboardDismissMode, } from './components/DrawerLayout';
47
51
  export { default as DrawerLayout } from './components/DrawerLayout';
@@ -12,12 +12,6 @@ export default class FlingGestureHandler extends GestureHandler {
12
12
  private keyPointer;
13
13
  init(ref: number, propsRef: React.RefObject<unknown>): void;
14
14
  updateGestureConfig({ enabled, ...props }: Config): void;
15
- protected transformNativeEvent(): {
16
- x: number;
17
- y: number;
18
- absoluteX: number;
19
- absoluteY: number;
20
- };
21
15
  private startFling;
22
16
  private tryEndFling;
23
17
  private endFling;
@@ -2,28 +2,27 @@ import { State } from '../../State';
2
2
  import { Config, AdaptedEvent, PointerType } from '../interfaces';
3
3
  import EventManager from '../tools/EventManager';
4
4
  import PointerTracker from '../tools/PointerTracker';
5
+ import { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';
5
6
  export default abstract class GestureHandler {
6
7
  private lastSentState;
7
8
  protected currentState: State;
8
9
  protected shouldCancellWhenOutside: boolean;
9
10
  protected hasCustomActivationCriteria: boolean;
10
11
  protected enabled: boolean;
11
- private ref;
12
+ private viewRef;
12
13
  private propsRef;
13
14
  private handlerTag;
14
15
  protected config: Config;
15
- protected view: HTMLElement;
16
- protected eventManagers: EventManager[];
17
16
  protected tracker: PointerTracker;
18
17
  protected activationIndex: number;
19
18
  protected awaiting: boolean;
20
19
  protected active: boolean;
21
20
  protected shouldResetProgress: boolean;
22
21
  protected pointerType: PointerType;
23
- constructor();
24
- protected init(ref: number, propsRef: React.RefObject<unknown>): void;
25
- private setView;
26
- private addEventManager;
22
+ protected delegate: GestureHandlerDelegate<unknown>;
23
+ constructor(delegate: GestureHandlerDelegate<unknown>);
24
+ protected init(viewRef: number, propsRef: React.RefObject<unknown>): void;
25
+ attachEventManager(manager: EventManager<unknown>): void;
27
26
  protected onCancel(): void;
28
27
  protected onReset(): void;
29
28
  protected resetProgress(): void;
@@ -58,32 +57,28 @@ export default abstract class GestureHandler {
58
57
  protected onPointerUp(event: AdaptedEvent): void;
59
58
  protected onPointerRemove(event: AdaptedEvent): void;
60
59
  protected onPointerMove(event: AdaptedEvent): void;
61
- protected onPointerOut(event: AdaptedEvent): void;
60
+ protected onPointerLeave(event: AdaptedEvent): void;
62
61
  protected onPointerEnter(event: AdaptedEvent): void;
63
62
  protected onPointerCancel(event: AdaptedEvent): void;
64
63
  protected onPointerOutOfBounds(event: AdaptedEvent): void;
64
+ protected onPointerMoveOver(_event: AdaptedEvent): void;
65
+ protected onPointerMoveOut(_event: AdaptedEvent): void;
65
66
  private tryToSendMoveEvent;
66
67
  sendTouchEvent(event: AdaptedEvent): void;
67
68
  sendEvent: (newState: State, oldState: State) => void;
68
69
  private transformEventData;
69
70
  private transformTouchEvent;
70
71
  private cancelTouches;
71
- protected transformNativeEvent(): {};
72
+ protected transformNativeEvent(): Record<string, unknown>;
72
73
  updateGestureConfig({ enabled, ...props }: Config): void;
73
74
  protected checkCustomActivationCriteria(criterias: string[]): void;
74
75
  private validateHitSlops;
75
76
  private checkHitSlop;
76
- isPointerInBounds({ x, y }: {
77
- x: number;
78
- y: number;
79
- }): boolean;
80
77
  protected resetConfig(): void;
81
78
  getTag(): number;
82
79
  setTag(tag: number): void;
83
- protected getConfig(): Config;
84
- getShouldEnableGestureOnSetup(): boolean;
85
- getView(): HTMLElement;
86
- getEventManagers(): EventManager[];
80
+ getConfig(): Config;
81
+ getDelegate(): GestureHandlerDelegate<unknown>;
87
82
  getTracker(): PointerTracker;
88
83
  getTrackedPointersID(): number[];
89
84
  getState(): State;
@@ -0,0 +1,10 @@
1
+ import { AdaptedEvent, Config } from '../interfaces';
2
+ import GestureHandler from './GestureHandler';
3
+ export default class HoverGestureHandler extends GestureHandler {
4
+ init(ref: number, propsRef: React.RefObject<unknown>): void;
5
+ updateGestureConfig({ enabled, ...props }: Config): void;
6
+ protected onPointerMoveOver(event: AdaptedEvent): void;
7
+ protected onPointerMoveOut(event: AdaptedEvent): void;
8
+ protected onPointerMove(event: AdaptedEvent): void;
9
+ protected onPointerCancel(event: AdaptedEvent): void;
10
+ }
@@ -12,10 +12,6 @@ export default class LongPressGestureHandler extends GestureHandler {
12
12
  private activationTimeout;
13
13
  init(ref: number, propsRef: React.RefObject<unknown>): void;
14
14
  protected transformNativeEvent(): {
15
- x: number;
16
- y: number;
17
- absoluteX: number;
18
- absoluteY: number;
19
15
  duration: number;
20
16
  };
21
17
  updateGestureConfig({ enabled, ...props }: Config): void;
@@ -14,7 +14,7 @@ export default class NativeViewGestureHandler extends GestureHandler {
14
14
  protected onPointerAdd(event: AdaptedEvent): void;
15
15
  private newPointerAction;
16
16
  protected onPointerMove(event: AdaptedEvent): void;
17
- protected onPointerOut(): void;
17
+ protected onPointerLeave(): void;
18
18
  protected onPointerUp(event: AdaptedEvent): void;
19
19
  protected onPointerRemove(event: AdaptedEvent): void;
20
20
  private onUp;
@@ -32,12 +32,8 @@ export default class PanGestureHandler extends GestureHandler {
32
32
  protected transformNativeEvent(): {
33
33
  translationX: number;
34
34
  translationY: number;
35
- absoluteX: number;
36
- absoluteY: number;
37
35
  velocityX: number;
38
36
  velocityY: number;
39
- x: number;
40
- y: number;
41
37
  };
42
38
  private getTranslationX;
43
39
  private getTranslationY;
@@ -21,12 +21,6 @@ export default class TapGestureHandler extends GestureHandler {
21
21
  init(ref: number, propsRef: React.RefObject<unknown>): void;
22
22
  updateGestureConfig({ enabled, ...props }: Config): void;
23
23
  protected resetConfig(): void;
24
- protected transformNativeEvent(): {
25
- x: number;
26
- y: number;
27
- absoluteX: number;
28
- absoluteY: number;
29
- };
30
24
  private clearTimeouts;
31
25
  private startTap;
32
26
  private endTap;