react-native-gesture-handler 2.18.1 → 2.20.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (210) hide show
  1. package/README.md +1 -0
  2. package/android/build.gradle +11 -29
  3. package/android/fabric/src/main/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +1 -1
  4. package/android/paper/src/main/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +1 -1
  5. package/android/src/main/AndroidManifest.xml +1 -3
  6. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +21 -21
  7. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +2 -2
  8. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureUtils.kt +1 -0
  9. package/android/src/main/java/com/swmansion/gesturehandler/core/HoverGestureHandler.kt +16 -0
  10. package/android/src/main/java/com/swmansion/gesturehandler/core/LongPressGestureHandler.kt +80 -4
  11. package/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt +8 -0
  12. package/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt +2 -1
  13. package/android/src/main/java/com/swmansion/gesturehandler/core/ScaleGestureDetector.java +10 -0
  14. package/android/src/main/java/com/swmansion/gesturehandler/core/StylusData.kt +103 -0
  15. package/android/src/main/java/com/swmansion/gesturehandler/core/Vector.kt +2 -2
  16. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +24 -15
  17. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +3 -0
  18. package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/HoverGestureHandlerEventDataBuilder.kt +7 -0
  19. package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/PanGestureHandlerEventDataBuilder.kt +7 -0
  20. package/android/src/main/jni/CMakeLists.txt +18 -9
  21. package/apple/Handlers/RNFlingHandler.h +1 -0
  22. package/apple/Handlers/RNFlingHandler.m +153 -19
  23. package/apple/Handlers/RNHoverHandler.m +44 -2
  24. package/apple/Handlers/RNLongPressHandler.m +111 -20
  25. package/apple/Handlers/RNManualHandler.m +53 -29
  26. package/apple/Handlers/RNNativeViewHandler.mm +22 -15
  27. package/apple/Handlers/RNPanHandler.m +57 -7
  28. package/apple/Handlers/RNRotationHandler.m +1 -1
  29. package/apple/RNGHStylusData.h +77 -0
  30. package/apple/RNGHStylusData.m +37 -0
  31. package/apple/RNGHUIKit.h +2 -0
  32. package/apple/RNGHVector.h +31 -0
  33. package/apple/RNGHVector.m +67 -0
  34. package/apple/RNGestureHandler.h +7 -0
  35. package/apple/{RNGestureHandler.m → RNGestureHandler.mm} +63 -1
  36. package/apple/RNGestureHandlerButtonComponentView.mm +41 -0
  37. package/apple/RNGestureHandlerDirection.h +25 -0
  38. package/apple/RNGestureHandlerEvents.h +3 -1
  39. package/apple/RNGestureHandlerEvents.m +11 -3
  40. package/lib/commonjs/PointerType.js +2 -1
  41. package/lib/commonjs/PointerType.js.map +1 -1
  42. package/lib/commonjs/components/GestureButtons.js +5 -1
  43. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  44. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  45. package/lib/commonjs/components/Pressable/Pressable.js +66 -78
  46. package/lib/commonjs/components/Pressable/Pressable.js.map +1 -1
  47. package/lib/commonjs/components/Pressable/index.js +0 -8
  48. package/lib/commonjs/components/Pressable/index.js.map +1 -1
  49. package/lib/commonjs/components/Pressable/utils.js +1 -23
  50. package/lib/commonjs/components/Pressable/utils.js.map +1 -1
  51. package/lib/commonjs/components/ReanimatedSwipeable.js +60 -41
  52. package/lib/commonjs/components/ReanimatedSwipeable.js.map +1 -1
  53. package/lib/commonjs/handlers/GestureHandlerEventPayload.js +4 -0
  54. package/lib/commonjs/handlers/LongPressGestureHandler.js +1 -1
  55. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
  56. package/lib/commonjs/handlers/createHandler.js +2 -1
  57. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  58. package/lib/commonjs/handlers/gestures/GestureDetector/utils.js +1 -1
  59. package/lib/commonjs/handlers/gestures/GestureDetector/utils.js.map +1 -1
  60. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  61. package/lib/commonjs/handlers/gestures/hoverGesture.js.map +1 -1
  62. package/lib/commonjs/handlers/gestures/longPressGesture.js +10 -0
  63. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
  64. package/lib/commonjs/jestUtils/jestUtils.js +12 -4
  65. package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
  66. package/lib/commonjs/mocks.js +16 -3
  67. package/lib/commonjs/mocks.js.map +1 -1
  68. package/lib/commonjs/utils.js +4 -0
  69. package/lib/commonjs/utils.js.map +1 -1
  70. package/lib/commonjs/web/constants.js +3 -3
  71. package/lib/commonjs/web/constants.js.map +1 -1
  72. package/lib/commonjs/web/handlers/GestureHandler.js +2 -3
  73. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  74. package/lib/commonjs/web/handlers/HoverGestureHandler.js +18 -1
  75. package/lib/commonjs/web/handlers/HoverGestureHandler.js.map +1 -1
  76. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +43 -9
  77. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  78. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +14 -3
  79. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  80. package/lib/commonjs/web/handlers/PanGestureHandler.js +12 -1
  81. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  82. package/lib/commonjs/web/interfaces.js.map +1 -1
  83. package/lib/commonjs/web/tools/EventManager.js.map +1 -1
  84. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +55 -11
  85. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  86. package/lib/commonjs/web/tools/KeyboardEventManager.js +110 -0
  87. package/lib/commonjs/web/tools/KeyboardEventManager.js.map +1 -0
  88. package/lib/commonjs/web/tools/PointerEventManager.js +3 -37
  89. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
  90. package/lib/commonjs/web/tools/Vector.js +4 -2
  91. package/lib/commonjs/web/tools/Vector.js.map +1 -1
  92. package/lib/commonjs/web/utils.js +187 -13
  93. package/lib/commonjs/web/utils.js.map +1 -1
  94. package/lib/module/PointerType.js +2 -1
  95. package/lib/module/PointerType.js.map +1 -1
  96. package/lib/module/components/GestureButtons.js +5 -1
  97. package/lib/module/components/GestureButtons.js.map +1 -1
  98. package/lib/module/components/GestureComponents.js.map +1 -1
  99. package/lib/module/components/Pressable/Pressable.js +67 -78
  100. package/lib/module/components/Pressable/Pressable.js.map +1 -1
  101. package/lib/module/components/Pressable/index.js +0 -1
  102. package/lib/module/components/Pressable/index.js.map +1 -1
  103. package/lib/module/components/Pressable/utils.js +1 -22
  104. package/lib/module/components/Pressable/utils.js.map +1 -1
  105. package/lib/module/components/ReanimatedSwipeable.js +58 -37
  106. package/lib/module/components/ReanimatedSwipeable.js.map +1 -1
  107. package/lib/module/handlers/GestureHandlerEventPayload.js +1 -1
  108. package/lib/module/handlers/LongPressGestureHandler.js +1 -1
  109. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
  110. package/lib/module/handlers/createHandler.js +2 -1
  111. package/lib/module/handlers/createHandler.js.map +1 -1
  112. package/lib/module/handlers/gestures/GestureDetector/utils.js +2 -2
  113. package/lib/module/handlers/gestures/GestureDetector/utils.js.map +1 -1
  114. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  115. package/lib/module/handlers/gestures/hoverGesture.js.map +1 -1
  116. package/lib/module/handlers/gestures/longPressGesture.js +10 -0
  117. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
  118. package/lib/module/jestUtils/jestUtils.js +12 -4
  119. package/lib/module/jestUtils/jestUtils.js.map +1 -1
  120. package/lib/module/mocks.js +13 -3
  121. package/lib/module/mocks.js.map +1 -1
  122. package/lib/module/utils.js +1 -0
  123. package/lib/module/utils.js.map +1 -1
  124. package/lib/module/web/constants.js +1 -1
  125. package/lib/module/web/constants.js.map +1 -1
  126. package/lib/module/web/handlers/GestureHandler.js +2 -3
  127. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  128. package/lib/module/web/handlers/HoverGestureHandler.js +18 -1
  129. package/lib/module/web/handlers/HoverGestureHandler.js.map +1 -1
  130. package/lib/module/web/handlers/LongPressGestureHandler.js +43 -9
  131. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  132. package/lib/module/web/handlers/NativeViewGestureHandler.js +14 -3
  133. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  134. package/lib/module/web/handlers/PanGestureHandler.js +12 -1
  135. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  136. package/lib/module/web/interfaces.js.map +1 -1
  137. package/lib/module/web/tools/EventManager.js.map +1 -1
  138. package/lib/module/web/tools/GestureHandlerWebDelegate.js +54 -10
  139. package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  140. package/lib/module/web/tools/KeyboardEventManager.js +96 -0
  141. package/lib/module/web/tools/KeyboardEventManager.js.map +1 -0
  142. package/lib/module/web/tools/PointerEventManager.js +4 -38
  143. package/lib/module/web/tools/PointerEventManager.js.map +1 -1
  144. package/lib/module/web/tools/Vector.js +5 -3
  145. package/lib/module/web/tools/Vector.js.map +1 -1
  146. package/lib/module/web/utils.js +184 -13
  147. package/lib/module/web/utils.js.map +1 -1
  148. package/lib/typescript/PointerType.d.ts +2 -1
  149. package/lib/typescript/components/GestureComponents.d.ts +1 -1
  150. package/lib/typescript/components/Pressable/index.d.ts +1 -1
  151. package/lib/typescript/components/Pressable/utils.d.ts +3 -5
  152. package/lib/typescript/handlers/GestureHandlerEventPayload.d.ts +35 -0
  153. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +5 -1
  154. package/lib/typescript/handlers/gestures/gesture.d.ts +2 -2
  155. package/lib/typescript/handlers/gestures/hoverGesture.d.ts +1 -6
  156. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +5 -0
  157. package/lib/typescript/handlers/handlersRegistry.d.ts +1 -1
  158. package/lib/typescript/jestUtils/jestUtils.d.ts +1 -1
  159. package/lib/typescript/mocks.d.ts +4 -3
  160. package/lib/typescript/utils.d.ts +1 -0
  161. package/lib/typescript/web/constants.d.ts +1 -1
  162. package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -1
  163. package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +2 -0
  164. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +3 -0
  165. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +1 -0
  166. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +3 -1
  167. package/lib/typescript/web/interfaces.d.ts +9 -4
  168. package/lib/typescript/web/tools/EventManager.d.ts +2 -2
  169. package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +1 -0
  170. package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +6 -0
  171. package/lib/typescript/web/tools/KeyboardEventManager.d.ts +13 -0
  172. package/lib/typescript/web/utils.d.ts +2 -1
  173. package/package.json +3 -3
  174. package/src/PointerType.ts +1 -0
  175. package/src/components/GestureButtons.tsx +2 -1
  176. package/src/components/GestureComponents.tsx +1 -1
  177. package/src/components/Pressable/Pressable.tsx +77 -70
  178. package/src/components/Pressable/index.ts +1 -1
  179. package/src/components/Pressable/utils.ts +5 -49
  180. package/src/components/ReanimatedSwipeable.tsx +70 -47
  181. package/src/handlers/GestureHandlerEventPayload.ts +42 -0
  182. package/src/handlers/LongPressGestureHandler.ts +6 -0
  183. package/src/handlers/createHandler.tsx +1 -0
  184. package/src/handlers/gestures/GestureDetector/utils.ts +2 -2
  185. package/src/handlers/gestures/gesture.ts +3 -1
  186. package/src/handlers/gestures/hoverGesture.ts +1 -7
  187. package/src/handlers/gestures/longPressGesture.ts +9 -0
  188. package/src/jestUtils/jestUtils.ts +9 -1
  189. package/src/{mocks.ts → mocks.tsx} +8 -3
  190. package/src/utils.ts +2 -0
  191. package/src/web/constants.ts +1 -1
  192. package/src/web/handlers/GestureHandler.ts +4 -2
  193. package/src/web/handlers/HoverGestureHandler.ts +16 -2
  194. package/src/web/handlers/LongPressGestureHandler.ts +49 -10
  195. package/src/web/handlers/NativeViewGestureHandler.ts +14 -4
  196. package/src/web/handlers/PanGestureHandler.ts +14 -1
  197. package/src/web/interfaces.ts +10 -4
  198. package/src/web/tools/EventManager.ts +2 -4
  199. package/src/web/tools/GestureHandlerDelegate.ts +1 -0
  200. package/src/web/tools/GestureHandlerWebDelegate.ts +67 -10
  201. package/src/web/tools/KeyboardEventManager.ts +91 -0
  202. package/src/web/tools/PointerEventManager.ts +2 -38
  203. package/src/web/tools/Vector.ts +4 -3
  204. package/src/web/utils.ts +188 -13
  205. package/lib/commonjs/web/tools/TouchEventManager.js +0 -164
  206. package/lib/commonjs/web/tools/TouchEventManager.js.map +0 -1
  207. package/lib/module/web/tools/TouchEventManager.js +0 -149
  208. package/lib/module/web/tools/TouchEventManager.js.map +0 -1
  209. package/lib/typescript/web/tools/TouchEventManager.d.ts +0 -11
  210. package/src/web/tools/TouchEventManager.ts +0 -175
@@ -1 +1 @@
1
- {"version":3,"sources":["PanGestureHandler.ts"],"names":["State","DEFAULT_TOUCH_SLOP","GestureHandler","DEFAULT_MIN_POINTERS","DEFAULT_MAX_POINTERS","DEFAULT_MIN_DIST_SQ","PanGestureHandler","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","init","ref","propsRef","updateGestureConfig","enabled","props","resetConfig","checkCustomActivationCriteria","customActivationProperties","config","minDist","undefined","minDistSq","hasCustomActivationCriteria","minPointers","maxPointers","minVelocity","minVelocityX","minVelocityY","activateAfterLongPress","activeOffsetXStart","activeOffsetXEnd","failOffsetXStart","failOffsetXEnd","activeOffsetYStart","activeOffsetYEnd","failOffsetYStart","failOffsetYEnd","minVelocitySq","transformNativeEvent","translationX","getTranslationX","translationY","getTranslationY","isNaN","velocityX","velocityY","lastX","startX","offsetX","lastY","startY","offsetY","clearActivationTimeout","clearTimeout","activationTimeout","onPointerDown","event","isButtonInConfig","button","tracker","addToTracker","lastCoords","getAbsoluteCoordsAverage","x","y","tryBegin","checkBegan","tryToSendTouchEvent","onPointerAdd","getTrackedPointersCount","currentState","ACTIVE","cancel","fail","onPointerUp","removeFromTracker","pointerId","end","resetProgress","onPointerRemove","onPointerMove","track","velocity","getVelocity","onPointerOutOfBounds","getShouldCancelWhenOutside","shouldActivate","dx","dy","distanceSq","vx","vy","velocitySq","shouldFail","UNDETERMINED","begin","setTimeout","activate","BEGAN","force","onCancel","onReset"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_POINTERS = 1;\nconst DEFAULT_MAX_POINTERS = 10;\nconst DEFAULT_MIN_DIST_SQ = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\nexport default class PanGestureHandler extends GestureHandler {\n private readonly customActivationProperties: string[] = [\n 'activeOffsetXStart',\n 'activeOffsetXEnd',\n 'failOffsetXStart',\n 'failOffsetXEnd',\n 'activeOffsetYStart',\n 'activeOffsetYEnd',\n 'failOffsetYStart',\n 'failOffsetYEnd',\n 'minVelocityX',\n 'minVelocityY',\n 'minVelocity',\n ];\n\n public velocityX = 0;\n public velocityY = 0;\n\n private minDistSq = DEFAULT_MIN_DIST_SQ;\n\n private activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n private activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetXStart = Number.MIN_SAFE_INTEGER;\n private failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n private activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n private activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetYStart = Number.MIN_SAFE_INTEGER;\n private failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n private minVelocityX = Number.MAX_SAFE_INTEGER;\n private minVelocityY = Number.MAX_SAFE_INTEGER;\n private minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n private minPointers = DEFAULT_MIN_POINTERS;\n private maxPointers = DEFAULT_MAX_POINTERS;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private activateAfterLongPress = 0;\n private activationTimeout = 0;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.resetConfig();\n\n super.updateGestureConfig({ enabled: enabled, ...props });\n this.checkCustomActivationCriteria(this.customActivationProperties);\n\n if (this.config.minDist !== undefined) {\n this.minDistSq = this.config.minDist * this.config.minDist;\n } else if (this.hasCustomActivationCriteria) {\n this.minDistSq = Number.MAX_SAFE_INTEGER;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minPointers = this.config.minPointers;\n }\n\n if (this.config.maxPointers !== undefined) {\n this.maxPointers = this.config.maxPointers;\n }\n\n if (this.config.minVelocity !== undefined) {\n this.minVelocityX = this.config.minVelocity;\n this.minVelocityY = this.config.minVelocity;\n }\n\n if (this.config.minVelocityX !== undefined) {\n this.minVelocityX = this.config.minVelocityX;\n }\n\n if (this.config.minVelocityY !== undefined) {\n this.minVelocityY = this.config.minVelocityY;\n }\n\n if (this.config.activateAfterLongPress !== undefined) {\n this.activateAfterLongPress = this.config.activateAfterLongPress;\n }\n\n if (this.config.activeOffsetXStart !== undefined) {\n this.activeOffsetXStart = this.config.activeOffsetXStart;\n\n if (this.config.activeOffsetXEnd === undefined) {\n this.activeOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetXEnd !== undefined) {\n this.activeOffsetXEnd = this.config.activeOffsetXEnd;\n\n if (this.config.activeOffsetXStart === undefined) {\n this.activeOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXStart !== undefined) {\n this.failOffsetXStart = this.config.failOffsetXStart;\n\n if (this.config.failOffsetXEnd === undefined) {\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXEnd !== undefined) {\n this.failOffsetXEnd = this.config.failOffsetXEnd;\n\n if (this.config.failOffsetXStart === undefined) {\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYStart !== undefined) {\n this.activeOffsetYStart = this.config.activeOffsetYStart;\n\n if (this.config.activeOffsetYEnd === undefined) {\n this.activeOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYEnd !== undefined) {\n this.activeOffsetYEnd = this.config.activeOffsetYEnd;\n\n if (this.config.activeOffsetYStart === undefined) {\n this.activeOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYStart !== undefined) {\n this.failOffsetYStart = this.config.failOffsetYStart;\n\n if (this.config.failOffsetYEnd === undefined) {\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYEnd !== undefined) {\n this.failOffsetYEnd = this.config.failOffsetYEnd;\n\n if (this.config.failOffsetYStart === undefined) {\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n this.activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n this.activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n this.activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n this.minVelocityX = Number.MAX_SAFE_INTEGER;\n this.minVelocityY = Number.MAX_SAFE_INTEGER;\n this.minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n this.minDistSq = DEFAULT_MIN_DIST_SQ;\n\n this.minPointers = DEFAULT_MIN_POINTERS;\n this.maxPointers = DEFAULT_MAX_POINTERS;\n\n this.activateAfterLongPress = 0;\n }\n\n protected transformNativeEvent() {\n const translationX: number = this.getTranslationX();\n const translationY: number = this.getTranslationY();\n\n return {\n ...super.transformNativeEvent(),\n translationX: isNaN(translationX) ? 0 : translationX,\n translationY: isNaN(translationY) ? 0 : translationY,\n velocityX: this.velocityX,\n velocityY: this.velocityY,\n };\n }\n\n private getTranslationX(): number {\n return this.lastX - this.startX + this.offsetX;\n }\n private getTranslationY(): number {\n return this.lastY - this.startY + this.offsetY;\n }\n\n private clearActivationTimeout(): void {\n clearTimeout(this.activationTimeout);\n }\n\n // Events Handling\n protected onPointerDown(event: AdaptedEvent): void {\n if (!this.isButtonInConfig(event.button)) {\n return;\n }\n\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n this.lastX = lastCoords.x;\n this.lastY = lastCoords.y;\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n this.tryBegin(event);\n this.checkBegan();\n\n this.tryToSendTouchEvent(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.tryBegin(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n this.lastX = lastCoords.x;\n this.lastY = lastCoords.y;\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (this.tracker.getTrackedPointersCount() > this.maxPointers) {\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n } else {\n this.checkBegan();\n }\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n if (this.currentState === State.ACTIVE) {\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n this.lastX = lastCoords.x;\n this.lastY = lastCoords.y;\n }\n\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.resetProgress();\n this.fail();\n }\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n this.lastX = lastCoords.x;\n this.lastY = lastCoords.y;\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (\n !(\n this.currentState === State.ACTIVE &&\n this.tracker.getTrackedPointersCount() < this.minPointers\n )\n ) {\n this.checkBegan();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n this.lastX = lastCoords.x;\n this.lastY = lastCoords.y;\n\n const velocity = this.tracker.getVelocity(event.pointerId);\n this.velocityX = velocity.x;\n this.velocityY = velocity.y;\n\n this.checkBegan();\n\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.getShouldCancelWhenOutside()) {\n return;\n }\n\n this.tracker.track(event);\n\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n this.lastX = lastCoords.x;\n this.lastY = lastCoords.y;\n\n const velocity = this.tracker.getVelocity(event.pointerId);\n this.velocityX = velocity.x;\n this.velocityY = velocity.y;\n\n this.checkBegan();\n\n if (this.currentState === State.ACTIVE) {\n super.onPointerOutOfBounds(event);\n }\n }\n\n private shouldActivate(): boolean {\n const dx: number = this.getTranslationX();\n\n if (\n this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER &&\n dx < this.activeOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetXEnd !== Number.MIN_SAFE_INTEGER &&\n dx > this.activeOffsetXEnd\n ) {\n return true;\n }\n\n const dy: number = this.getTranslationY();\n\n if (\n this.activeOffsetYStart !== Number.MAX_SAFE_INTEGER &&\n dy < this.activeOffsetYStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetYEnd !== Number.MIN_SAFE_INTEGER &&\n dy > this.activeOffsetYEnd\n ) {\n return true;\n }\n\n const distanceSq: number = dx * dx + dy * dy;\n\n if (\n this.minDistSq !== Number.MAX_SAFE_INTEGER &&\n distanceSq >= this.minDistSq\n ) {\n return true;\n }\n\n const vx: number = this.velocityX;\n\n if (\n this.minVelocityX !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityX < 0 && vx <= this.minVelocityX) ||\n (this.minVelocityX >= 0 && this.minVelocityX <= vx))\n ) {\n return true;\n }\n\n const vy: number = this.velocityY;\n if (\n this.minVelocityY !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityY < 0 && vy <= this.minVelocityY) ||\n (this.minVelocityY >= 0 && this.minVelocityY <= vy))\n ) {\n return true;\n }\n\n const velocitySq: number = vx * vx + vy * vy;\n\n return (\n this.minVelocitySq !== Number.MAX_SAFE_INTEGER &&\n velocitySq >= this.minVelocitySq\n );\n }\n\n private shouldFail(): boolean {\n const dx: number = this.getTranslationX();\n const dy: number = this.getTranslationY();\n const distanceSq = dx * dx + dy * dy;\n\n if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) {\n this.clearActivationTimeout();\n return true;\n }\n\n if (\n this.failOffsetXStart !== Number.MIN_SAFE_INTEGER &&\n dx < this.failOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.failOffsetXEnd !== Number.MAX_SAFE_INTEGER &&\n dx > this.failOffsetXEnd\n ) {\n return true;\n }\n\n if (\n this.failOffsetYStart !== Number.MIN_SAFE_INTEGER &&\n dy < this.failOffsetYStart\n ) {\n return true;\n }\n\n return (\n this.failOffsetYEnd !== Number.MAX_SAFE_INTEGER &&\n dy > this.failOffsetYEnd\n );\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (\n this.currentState === State.UNDETERMINED &&\n this.tracker.getTrackedPointersCount() >= this.minPointers\n ) {\n this.resetProgress();\n this.offsetX = 0;\n this.offsetY = 0;\n this.velocityX = 0;\n this.velocityY = 0;\n\n this.begin();\n\n if (this.activateAfterLongPress > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.activateAfterLongPress);\n }\n } else {\n const velocity = this.tracker.getVelocity(event.pointerId);\n this.velocityX = velocity.x;\n this.velocityY = velocity.y;\n }\n }\n\n private checkBegan(): void {\n if (this.currentState === State.BEGAN) {\n if (this.shouldFail()) {\n this.fail();\n } else if (this.shouldActivate()) {\n this.activate();\n }\n }\n }\n\n public activate(force = false): void {\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n\n super.activate(force);\n }\n\n protected onCancel(): void {\n this.clearActivationTimeout();\n }\n\n protected onReset(): void {\n this.clearActivationTimeout();\n }\n\n protected resetProgress(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n }\n}\n"]}
1
+ {"version":3,"sources":["PanGestureHandler.ts"],"names":["State","DEFAULT_TOUCH_SLOP","GestureHandler","DEFAULT_MIN_POINTERS","DEFAULT_MAX_POINTERS","DEFAULT_MIN_DIST_SQ","PanGestureHandler","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","init","ref","propsRef","updateGestureConfig","enabled","props","resetConfig","checkCustomActivationCriteria","customActivationProperties","config","minDist","undefined","minDistSq","hasCustomActivationCriteria","minPointers","maxPointers","minVelocity","minVelocityX","minVelocityY","activateAfterLongPress","activeOffsetXStart","activeOffsetXEnd","failOffsetXStart","failOffsetXEnd","activeOffsetYStart","activeOffsetYEnd","failOffsetYStart","failOffsetYEnd","minVelocitySq","transformNativeEvent","translationX","getTranslationX","translationY","getTranslationY","isNaN","velocityX","velocityY","stylusData","lastX","startX","offsetX","lastY","startY","offsetY","clearActivationTimeout","clearTimeout","activationTimeout","onPointerDown","event","isButtonInConfig","button","tracker","addToTracker","lastCoords","getAbsoluteCoordsAverage","x","y","tryBegin","checkBegan","tryToSendTouchEvent","onPointerAdd","getTrackedPointersCount","currentState","ACTIVE","cancel","fail","onPointerUp","removeFromTracker","pointerId","end","resetProgress","onPointerRemove","onPointerMove","track","velocity","getVelocity","onPointerOutOfBounds","getShouldCancelWhenOutside","shouldActivate","dx","dy","distanceSq","vx","vy","velocitySq","shouldFail","UNDETERMINED","begin","setTimeout","activate","BEGAN","force","onCancel","onReset"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config, StylusData } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_POINTERS = 1;\nconst DEFAULT_MAX_POINTERS = 10;\nconst DEFAULT_MIN_DIST_SQ = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\nexport default class PanGestureHandler extends GestureHandler {\n private readonly customActivationProperties: string[] = [\n 'activeOffsetXStart',\n 'activeOffsetXEnd',\n 'failOffsetXStart',\n 'failOffsetXEnd',\n 'activeOffsetYStart',\n 'activeOffsetYEnd',\n 'failOffsetYStart',\n 'failOffsetYEnd',\n 'minVelocityX',\n 'minVelocityY',\n 'minVelocity',\n ];\n\n public velocityX = 0;\n public velocityY = 0;\n\n private minDistSq = DEFAULT_MIN_DIST_SQ;\n\n private activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n private activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetXStart = Number.MIN_SAFE_INTEGER;\n private failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n private activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n private activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetYStart = Number.MIN_SAFE_INTEGER;\n private failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n private minVelocityX = Number.MAX_SAFE_INTEGER;\n private minVelocityY = Number.MAX_SAFE_INTEGER;\n private minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n private minPointers = DEFAULT_MIN_POINTERS;\n private maxPointers = DEFAULT_MAX_POINTERS;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private stylusData: StylusData | undefined;\n\n private activateAfterLongPress = 0;\n private activationTimeout = 0;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.resetConfig();\n\n super.updateGestureConfig({ enabled: enabled, ...props });\n this.checkCustomActivationCriteria(this.customActivationProperties);\n\n if (this.config.minDist !== undefined) {\n this.minDistSq = this.config.minDist * this.config.minDist;\n } else if (this.hasCustomActivationCriteria) {\n this.minDistSq = Number.MAX_SAFE_INTEGER;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minPointers = this.config.minPointers;\n }\n\n if (this.config.maxPointers !== undefined) {\n this.maxPointers = this.config.maxPointers;\n }\n\n if (this.config.minVelocity !== undefined) {\n this.minVelocityX = this.config.minVelocity;\n this.minVelocityY = this.config.minVelocity;\n }\n\n if (this.config.minVelocityX !== undefined) {\n this.minVelocityX = this.config.minVelocityX;\n }\n\n if (this.config.minVelocityY !== undefined) {\n this.minVelocityY = this.config.minVelocityY;\n }\n\n if (this.config.activateAfterLongPress !== undefined) {\n this.activateAfterLongPress = this.config.activateAfterLongPress;\n }\n\n if (this.config.activeOffsetXStart !== undefined) {\n this.activeOffsetXStart = this.config.activeOffsetXStart;\n\n if (this.config.activeOffsetXEnd === undefined) {\n this.activeOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetXEnd !== undefined) {\n this.activeOffsetXEnd = this.config.activeOffsetXEnd;\n\n if (this.config.activeOffsetXStart === undefined) {\n this.activeOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXStart !== undefined) {\n this.failOffsetXStart = this.config.failOffsetXStart;\n\n if (this.config.failOffsetXEnd === undefined) {\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXEnd !== undefined) {\n this.failOffsetXEnd = this.config.failOffsetXEnd;\n\n if (this.config.failOffsetXStart === undefined) {\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYStart !== undefined) {\n this.activeOffsetYStart = this.config.activeOffsetYStart;\n\n if (this.config.activeOffsetYEnd === undefined) {\n this.activeOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYEnd !== undefined) {\n this.activeOffsetYEnd = this.config.activeOffsetYEnd;\n\n if (this.config.activeOffsetYStart === undefined) {\n this.activeOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYStart !== undefined) {\n this.failOffsetYStart = this.config.failOffsetYStart;\n\n if (this.config.failOffsetYEnd === undefined) {\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYEnd !== undefined) {\n this.failOffsetYEnd = this.config.failOffsetYEnd;\n\n if (this.config.failOffsetYStart === undefined) {\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n this.activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n this.activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n this.activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n this.minVelocityX = Number.MAX_SAFE_INTEGER;\n this.minVelocityY = Number.MAX_SAFE_INTEGER;\n this.minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n this.minDistSq = DEFAULT_MIN_DIST_SQ;\n\n this.minPointers = DEFAULT_MIN_POINTERS;\n this.maxPointers = DEFAULT_MAX_POINTERS;\n\n this.activateAfterLongPress = 0;\n }\n\n protected transformNativeEvent() {\n const translationX: number = this.getTranslationX();\n const translationY: number = this.getTranslationY();\n\n return {\n ...super.transformNativeEvent(),\n translationX: isNaN(translationX) ? 0 : translationX,\n translationY: isNaN(translationY) ? 0 : translationY,\n velocityX: this.velocityX,\n velocityY: this.velocityY,\n stylusData: this.stylusData,\n };\n }\n\n private getTranslationX(): number {\n return this.lastX - this.startX + this.offsetX;\n }\n private getTranslationY(): number {\n return this.lastY - this.startY + this.offsetY;\n }\n\n private clearActivationTimeout(): void {\n clearTimeout(this.activationTimeout);\n }\n\n // Events Handling\n protected onPointerDown(event: AdaptedEvent): void {\n if (!this.isButtonInConfig(event.button)) {\n return;\n }\n\n this.tracker.addToTracker(event);\n this.stylusData = event.stylusData;\n\n super.onPointerDown(event);\n\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n this.lastX = lastCoords.x;\n this.lastY = lastCoords.y;\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n this.tryBegin(event);\n this.checkBegan();\n\n this.tryToSendTouchEvent(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.tryBegin(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n this.lastX = lastCoords.x;\n this.lastY = lastCoords.y;\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (this.tracker.getTrackedPointersCount() > this.maxPointers) {\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n } else {\n this.checkBegan();\n }\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n this.stylusData = event.stylusData;\n\n super.onPointerUp(event);\n if (this.currentState === State.ACTIVE) {\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n this.lastX = lastCoords.x;\n this.lastY = lastCoords.y;\n }\n\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.tracker.getTrackedPointersCount() === 0) {\n this.clearActivationTimeout();\n }\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.resetProgress();\n this.fail();\n }\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n this.lastX = lastCoords.x;\n this.lastY = lastCoords.y;\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (\n !(\n this.currentState === State.ACTIVE &&\n this.tracker.getTrackedPointersCount() < this.minPointers\n )\n ) {\n this.checkBegan();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n this.stylusData = event.stylusData;\n\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n this.lastX = lastCoords.x;\n this.lastY = lastCoords.y;\n\n const velocity = this.tracker.getVelocity(event.pointerId);\n this.velocityX = velocity.x;\n this.velocityY = velocity.y;\n\n this.checkBegan();\n\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.getShouldCancelWhenOutside()) {\n return;\n }\n\n this.tracker.track(event);\n this.stylusData = event.stylusData;\n\n const lastCoords = this.tracker.getAbsoluteCoordsAverage();\n this.lastX = lastCoords.x;\n this.lastY = lastCoords.y;\n\n const velocity = this.tracker.getVelocity(event.pointerId);\n this.velocityX = velocity.x;\n this.velocityY = velocity.y;\n\n this.checkBegan();\n\n if (this.currentState === State.ACTIVE) {\n super.onPointerOutOfBounds(event);\n }\n }\n\n private shouldActivate(): boolean {\n const dx: number = this.getTranslationX();\n\n if (\n this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER &&\n dx < this.activeOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetXEnd !== Number.MIN_SAFE_INTEGER &&\n dx > this.activeOffsetXEnd\n ) {\n return true;\n }\n\n const dy: number = this.getTranslationY();\n\n if (\n this.activeOffsetYStart !== Number.MAX_SAFE_INTEGER &&\n dy < this.activeOffsetYStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetYEnd !== Number.MIN_SAFE_INTEGER &&\n dy > this.activeOffsetYEnd\n ) {\n return true;\n }\n\n const distanceSq: number = dx * dx + dy * dy;\n\n if (\n this.minDistSq !== Number.MAX_SAFE_INTEGER &&\n distanceSq >= this.minDistSq\n ) {\n return true;\n }\n\n const vx: number = this.velocityX;\n\n if (\n this.minVelocityX !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityX < 0 && vx <= this.minVelocityX) ||\n (this.minVelocityX >= 0 && this.minVelocityX <= vx))\n ) {\n return true;\n }\n\n const vy: number = this.velocityY;\n if (\n this.minVelocityY !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityY < 0 && vy <= this.minVelocityY) ||\n (this.minVelocityY >= 0 && this.minVelocityY <= vy))\n ) {\n return true;\n }\n\n const velocitySq: number = vx * vx + vy * vy;\n\n return (\n this.minVelocitySq !== Number.MAX_SAFE_INTEGER &&\n velocitySq >= this.minVelocitySq\n );\n }\n\n private shouldFail(): boolean {\n const dx: number = this.getTranslationX();\n const dy: number = this.getTranslationY();\n const distanceSq = dx * dx + dy * dy;\n\n if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) {\n this.clearActivationTimeout();\n return true;\n }\n\n if (\n this.failOffsetXStart !== Number.MIN_SAFE_INTEGER &&\n dx < this.failOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.failOffsetXEnd !== Number.MAX_SAFE_INTEGER &&\n dx > this.failOffsetXEnd\n ) {\n return true;\n }\n\n if (\n this.failOffsetYStart !== Number.MIN_SAFE_INTEGER &&\n dy < this.failOffsetYStart\n ) {\n return true;\n }\n\n return (\n this.failOffsetYEnd !== Number.MAX_SAFE_INTEGER &&\n dy > this.failOffsetYEnd\n );\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (\n this.currentState === State.UNDETERMINED &&\n this.tracker.getTrackedPointersCount() >= this.minPointers\n ) {\n this.resetProgress();\n this.offsetX = 0;\n this.offsetY = 0;\n this.velocityX = 0;\n this.velocityY = 0;\n\n this.begin();\n\n if (this.activateAfterLongPress > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.activateAfterLongPress);\n }\n } else {\n const velocity = this.tracker.getVelocity(event.pointerId);\n this.velocityX = velocity.x;\n this.velocityY = velocity.y;\n }\n }\n\n private checkBegan(): void {\n if (this.currentState === State.BEGAN) {\n if (this.shouldFail()) {\n this.fail();\n } else if (this.shouldActivate()) {\n this.activate();\n }\n }\n }\n\n public activate(force = false): void {\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n\n super.activate(force);\n }\n\n protected onCancel(): void {\n this.clearActivationTimeout();\n }\n\n protected onReset(): void {\n this.clearActivationTimeout();\n }\n\n protected resetProgress(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["interfaces.ts"],"names":["EventTypes","TouchEventType"],"mappings":"AAqJA,WAAYA,UAAZ;;WAAYA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;GAAAA,U,KAAAA,U;;AAWZ,WAAYC,cAAZ;;WAAYA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;GAAAA,c,KAAAA,c","sourcesContent":["import {\n UserSelect,\n ActiveCursor,\n MouseButton,\n TouchAction,\n} from '../handlers/gestureHandlerCommon';\nimport { Directions } from '../Directions';\nimport { State } from '../State';\nimport { PointerType } from '../PointerType';\n\nexport interface HitSlop {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n horizontal?: number;\n vertical?: number;\n width?: number;\n height?: number;\n}\n\nexport interface Handler {\n handlerTag: number;\n}\n\ntype ConfigArgs =\n | number\n | boolean\n | HitSlop\n | UserSelect\n | TouchAction\n | ActiveCursor\n | Directions\n | Handler[]\n | null\n | undefined;\n\nexport interface Config extends Record<string, ConfigArgs> {\n enabled?: boolean;\n simultaneousHandlers?: Handler[] | null;\n waitFor?: Handler[] | null;\n blocksHandlers?: Handler[] | null;\n hitSlop?: HitSlop;\n shouldCancelWhenOutside?: boolean;\n userSelect?: UserSelect;\n activeCursor?: ActiveCursor;\n mouseButton?: MouseButton;\n enableContextMenu?: boolean;\n touchAction?: TouchAction;\n manualActivation?: boolean;\n\n activateAfterLongPress?: number;\n failOffsetXStart?: number;\n failOffsetYStart?: number;\n failOffsetXEnd?: number;\n failOffsetYEnd?: number;\n activeOffsetXStart?: number;\n activeOffsetXEnd?: number;\n activeOffsetYStart?: number;\n activeOffsetYEnd?: number;\n minPointers?: number;\n maxPointers?: number;\n minDist?: number;\n minDistSq?: number;\n minVelocity?: number;\n minVelocityX?: number;\n minVelocityY?: number;\n minVelocitySq?: number;\n maxDist?: number;\n maxDistSq?: number;\n numberOfPointers?: number;\n minDurationMs?: number;\n numberOfTaps?: number;\n maxDurationMs?: number;\n maxDelayMs?: number;\n maxDeltaX?: number;\n maxDeltaY?: number;\n shouldActivateOnStart?: boolean;\n disallowInterruption?: boolean;\n direction?: Directions;\n}\n\ntype NativeEventArgs = number | State | boolean | undefined;\ninterface NativeEvent extends Record<string, NativeEventArgs> {\n numberOfPointers: number;\n state: State;\n pointerInside: boolean | undefined;\n handlerTag: number;\n target: number;\n oldState?: State;\n pointerType: PointerType;\n}\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport interface PointerData {\n id: number;\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n}\n\ntype TouchNativeArgs = number | State | TouchEventType | PointerData[];\n\ninterface NativeTouchEvent extends Record<string, TouchNativeArgs> {\n handlerTag: number;\n state: State;\n eventType: TouchEventType;\n changedTouches: PointerData[];\n allTouches: PointerData[];\n numberOfTouches: number;\n pointerType: PointerType;\n}\n\nexport interface ResultEvent extends Record<string, NativeEvent | number> {\n nativeEvent: NativeEvent;\n timeStamp: number;\n}\n\nexport interface ResultTouchEvent\n extends Record<string, NativeTouchEvent | number> {\n nativeEvent: NativeTouchEvent;\n timeStamp: number;\n}\n\nexport interface PropsRef {\n onGestureHandlerEvent: () => void;\n onGestureHandlerStateChange: () => void;\n}\n\nexport interface AdaptedEvent {\n x: number;\n y: number;\n offsetX: number;\n offsetY: number;\n pointerId: number;\n eventType: EventTypes;\n pointerType: PointerType;\n time: number;\n button?: MouseButton;\n allTouches?: TouchList;\n changedTouches?: TouchList;\n touchEventType?: TouchEventType;\n}\n\nexport enum EventTypes {\n DOWN,\n ADDITIONAL_POINTER_DOWN,\n UP,\n ADDITIONAL_POINTER_UP,\n MOVE,\n ENTER,\n LEAVE,\n CANCEL,\n}\n\nexport enum TouchEventType {\n UNDETERMINED,\n DOWN,\n MOVE,\n UP,\n CANCELLED,\n}\n"]}
1
+ {"version":3,"sources":["interfaces.ts"],"names":["EventTypes","TouchEventType"],"mappings":"AA2JA,WAAYA,UAAZ;;WAAYA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;GAAAA,U,KAAAA,U;;AAWZ,WAAYC,cAAZ;;WAAYA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;GAAAA,c,KAAAA,c","sourcesContent":["import {\n UserSelect,\n ActiveCursor,\n MouseButton,\n TouchAction,\n} from '../handlers/gestureHandlerCommon';\nimport { Directions } from '../Directions';\nimport { State } from '../State';\nimport { PointerType } from '../PointerType';\n\nexport interface HitSlop {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n horizontal?: number;\n vertical?: number;\n width?: number;\n height?: number;\n}\n\nexport interface Handler {\n handlerTag: number;\n}\n\ntype ConfigArgs =\n | number\n | boolean\n | HitSlop\n | UserSelect\n | TouchAction\n | ActiveCursor\n | Directions\n | Handler[]\n | null\n | undefined;\n\nexport interface Config extends Record<string, ConfigArgs> {\n enabled: boolean;\n simultaneousHandlers?: Handler[] | null;\n waitFor?: Handler[] | null;\n blocksHandlers?: Handler[] | null;\n hitSlop?: HitSlop;\n shouldCancelWhenOutside?: boolean;\n userSelect?: UserSelect;\n activeCursor?: ActiveCursor;\n mouseButton?: MouseButton;\n enableContextMenu?: boolean;\n touchAction?: TouchAction;\n manualActivation?: boolean;\n\n activateAfterLongPress?: number;\n failOffsetXStart?: number;\n failOffsetYStart?: number;\n failOffsetXEnd?: number;\n failOffsetYEnd?: number;\n activeOffsetXStart?: number;\n activeOffsetXEnd?: number;\n activeOffsetYStart?: number;\n activeOffsetYEnd?: number;\n minPointers?: number;\n maxPointers?: number;\n minDist?: number;\n minDistSq?: number;\n minVelocity?: number;\n minVelocityX?: number;\n minVelocityY?: number;\n minVelocitySq?: number;\n maxDist?: number;\n maxDistSq?: number;\n numberOfPointers?: number;\n minDurationMs?: number;\n numberOfTaps?: number;\n maxDurationMs?: number;\n maxDelayMs?: number;\n maxDeltaX?: number;\n maxDeltaY?: number;\n shouldActivateOnStart?: boolean;\n disallowInterruption?: boolean;\n direction?: Directions;\n}\n\ntype NativeEventArgs = number | State | boolean | undefined;\ninterface NativeEvent extends Record<string, NativeEventArgs> {\n numberOfPointers: number;\n state: State;\n pointerInside: boolean | undefined;\n handlerTag: number;\n target: number;\n oldState?: State;\n pointerType: PointerType;\n}\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport interface PointerData {\n id: number;\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n}\n\ntype TouchNativeArgs = number | State | TouchEventType | PointerData[];\n\ninterface NativeTouchEvent extends Record<string, TouchNativeArgs> {\n handlerTag: number;\n state: State;\n eventType: TouchEventType;\n changedTouches: PointerData[];\n allTouches: PointerData[];\n numberOfTouches: number;\n pointerType: PointerType;\n}\n\nexport interface ResultEvent extends Record<string, NativeEvent | number> {\n nativeEvent: NativeEvent;\n timeStamp: number;\n}\n\nexport interface ResultTouchEvent\n extends Record<string, NativeTouchEvent | number> {\n nativeEvent: NativeTouchEvent;\n timeStamp: number;\n}\n\nexport interface PropsRef {\n onGestureHandlerEvent: () => void;\n onGestureHandlerStateChange: () => void;\n}\n\nexport interface StylusData {\n tiltX: number;\n tiltY: number;\n azimuthAngle: number;\n altitudeAngle: number;\n pressure: number;\n}\n\nexport interface AdaptedEvent {\n x: number;\n y: number;\n offsetX: number;\n offsetY: number;\n pointerId: number;\n eventType: EventTypes;\n pointerType: PointerType;\n time: number;\n button?: MouseButton;\n stylusData?: StylusData;\n}\n\nexport enum EventTypes {\n DOWN,\n ADDITIONAL_POINTER_DOWN,\n UP,\n ADDITIONAL_POINTER_UP,\n MOVE,\n ENTER,\n LEAVE,\n CANCEL,\n}\n\nexport enum TouchEventType {\n UNDETERMINED,\n DOWN,\n MOVE,\n UP,\n CANCELLED,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["EventManager.ts"],"names":["EventManager","constructor","view","activePointersCounter","onPointerDown","_event","onPointerAdd","onPointerUp","onPointerRemove","onPointerMove","onPointerLeave","onPointerEnter","onPointerCancel","onPointerOutOfBounds","onPointerMoveOver","onPointerMoveOut","setOnPointerDown","callback","setOnPointerAdd","setOnPointerUp","setOnPointerRemove","setOnPointerMove","setOnPointerLeave","setOnPointerEnter","setOnPointerCancel","setOnPointerOutOfBounds","setOnPointerMoveOver","setOnPointerMoveOut","markAsInBounds","pointerId","pointersInBounds","indexOf","push","markAsOutOfBounds","index","splice","resetManager"],"mappings":";;AAAA;AAKA,eAAe,MAAeA,YAAf,CAA+B;AAK5CC,EAAAA,WAAW,CAACC,IAAD,EAAU;AAAA;;AAAA,8CAHkB,EAGlB;;AAAA;;AACnB,SAAKA,IAAL,GAAYA,IAAZ;AACA,SAAKC,qBAAL,GAA6B,CAA7B;AACD;;AAYSC,EAAAA,aAAa,CAACC,MAAD,EAA6B,CAAE;;AAC5CC,EAAAA,YAAY,CAACD,MAAD,EAA6B,CAAE;;AAC3CE,EAAAA,WAAW,CAACF,MAAD,EAA6B,CAAE;;AAC1CG,EAAAA,eAAe,CAACH,MAAD,EAA6B,CAAE;;AAC9CI,EAAAA,aAAa,CAACJ,MAAD,EAA6B,CAAE;;AAC5CK,EAAAA,cAAc,CAACL,MAAD,EAA6B,CAAE,CAzBX,CAyBY;;;AAC9CM,EAAAA,cAAc,CAACN,MAAD,EAA6B,CAAE,CA1BX,CA0BY;;;AAC9CO,EAAAA,eAAe,CAACP,MAAD,EAA6B,CACpD;AACA;AACA;AACA;AACD;;AACSQ,EAAAA,oBAAoB,CAACR,MAAD,EAA6B,CAAE;;AACnDS,EAAAA,iBAAiB,CAACT,MAAD,EAA6B,CAAE;;AAChDU,EAAAA,gBAAgB,CAACV,MAAD,EAA6B,CAAE;;AAElDW,EAAAA,gBAAgB,CAACC,QAAD,EAAuC;AAC5D,SAAKb,aAAL,GAAqBa,QAArB;AACD;;AACMC,EAAAA,eAAe,CAACD,QAAD,EAAuC;AAC3D,SAAKX,YAAL,GAAoBW,QAApB;AACD;;AACME,EAAAA,cAAc,CAACF,QAAD,EAAuC;AAC1D,SAAKV,WAAL,GAAmBU,QAAnB;AACD;;AACMG,EAAAA,kBAAkB,CAACH,QAAD,EAAuC;AAC9D,SAAKT,eAAL,GAAuBS,QAAvB;AACD;;AACMI,EAAAA,gBAAgB,CAACJ,QAAD,EAAuC;AAC5D,SAAKR,aAAL,GAAqBQ,QAArB;AACD;;AACMK,EAAAA,iBAAiB,CAACL,QAAD,EAAuC;AAC7D,SAAKP,cAAL,GAAsBO,QAAtB;AACD;;AACMM,EAAAA,iBAAiB,CAACN,QAAD,EAAuC;AAC7D,SAAKN,cAAL,GAAsBM,QAAtB;AACD;;AACMO,EAAAA,kBAAkB,CAACP,QAAD,EAAuC;AAC9D,SAAKL,eAAL,GAAuBK,QAAvB;AACD;;AACMQ,EAAAA,uBAAuB,CAACR,QAAD,EAAuC;AACnE,SAAKJ,oBAAL,GAA4BI,QAA5B;AACD;;AACMS,EAAAA,oBAAoB,CAACT,QAAD,EAAuC;AAChE,SAAKH,iBAAL,GAAyBG,QAAzB;AACD;;AACMU,EAAAA,mBAAmB,CAACV,QAAD,EAAuC;AAC/D,SAAKF,gBAAL,GAAwBE,QAAxB;AACD;;AAESW,EAAAA,cAAc,CAACC,SAAD,EAA0B;AAChD,QAAI,KAAKC,gBAAL,CAAsBC,OAAtB,CAA8BF,SAA9B,KAA4C,CAAhD,EAAmD;AACjD;AACD;;AAED,SAAKC,gBAAL,CAAsBE,IAAtB,CAA2BH,SAA3B;AACD;;AAESI,EAAAA,iBAAiB,CAACJ,SAAD,EAA0B;AACnD,UAAMK,KAAa,GAAG,KAAKJ,gBAAL,CAAsBC,OAAtB,CAA8BF,SAA9B,CAAtB;;AAEA,QAAIK,KAAK,GAAG,CAAZ,EAAe;AACb;AACD;;AAED,SAAKJ,gBAAL,CAAsBK,MAAtB,CAA6BD,KAA7B,EAAoC,CAApC;AACD;;AAEME,EAAAA,YAAY,GAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AAEA,SAAKjC,qBAAL,GAA6B,CAA7B;AACA,SAAK2B,gBAAL,GAAwB,EAAxB;AACD;;AAnG2C","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { AdaptedEvent, EventTypes, TouchEventType } from '../interfaces';\n\ntype PointerEventCallback = (event: AdaptedEvent) => void;\n\nexport default abstract class EventManager<T> {\n protected readonly view: T;\n protected pointersInBounds: number[] = [];\n protected activePointersCounter: number;\n\n constructor(view: T) {\n this.view = view;\n this.activePointersCounter = 0;\n }\n\n public abstract registerListeners(): void;\n public abstract unregisterListeners(): void;\n\n protected abstract mapEvent(\n event: Event,\n eventType: EventTypes,\n index?: number,\n touchEventType?: TouchEventType\n ): AdaptedEvent;\n\n protected onPointerDown(_event: AdaptedEvent): void {}\n protected onPointerAdd(_event: AdaptedEvent): void {}\n protected onPointerUp(_event: AdaptedEvent): void {}\n protected onPointerRemove(_event: AdaptedEvent): void {}\n protected onPointerMove(_event: AdaptedEvent): void {}\n protected onPointerLeave(_event: AdaptedEvent): void {} // Called only when pointer is pressed (or touching)\n protected onPointerEnter(_event: AdaptedEvent): void {} // Called only when pointer is pressed (or touching)\n protected onPointerCancel(_event: AdaptedEvent): void {\n // When pointer cancel is triggered and there are more pointers on the view, only one pointer is cancelled\n // Because we want all pointers to be cancelled by that event, we are doing it manually by reseting handler and changing activePointersCounter to 0\n // Events that correspond to removing the pointer (pointerup, touchend) have condition, that they don't perform any action when activePointersCounter\n // is equal to 0. This prevents counter from going to negative values, when pointers are removed from view after one of them has been cancelled\n }\n protected onPointerOutOfBounds(_event: AdaptedEvent): void {}\n protected onPointerMoveOver(_event: AdaptedEvent): void {}\n protected onPointerMoveOut(_event: AdaptedEvent): void {}\n\n public setOnPointerDown(callback: PointerEventCallback): void {\n this.onPointerDown = callback;\n }\n public setOnPointerAdd(callback: PointerEventCallback): void {\n this.onPointerAdd = callback;\n }\n public setOnPointerUp(callback: PointerEventCallback): void {\n this.onPointerUp = callback;\n }\n public setOnPointerRemove(callback: PointerEventCallback): void {\n this.onPointerRemove = callback;\n }\n public setOnPointerMove(callback: PointerEventCallback): void {\n this.onPointerMove = callback;\n }\n public setOnPointerLeave(callback: PointerEventCallback): void {\n this.onPointerLeave = callback;\n }\n public setOnPointerEnter(callback: PointerEventCallback): void {\n this.onPointerEnter = callback;\n }\n public setOnPointerCancel(callback: PointerEventCallback): void {\n this.onPointerCancel = callback;\n }\n public setOnPointerOutOfBounds(callback: PointerEventCallback): void {\n this.onPointerOutOfBounds = callback;\n }\n public setOnPointerMoveOver(callback: PointerEventCallback): void {\n this.onPointerMoveOver = callback;\n }\n public setOnPointerMoveOut(callback: PointerEventCallback): void {\n this.onPointerMoveOut = callback;\n }\n\n protected markAsInBounds(pointerId: number): void {\n if (this.pointersInBounds.indexOf(pointerId) >= 0) {\n return;\n }\n\n this.pointersInBounds.push(pointerId);\n }\n\n protected markAsOutOfBounds(pointerId: number): void {\n const index: number = this.pointersInBounds.indexOf(pointerId);\n\n if (index < 0) {\n return;\n }\n\n this.pointersInBounds.splice(index, 1);\n }\n\n public resetManager(): void {\n // Reseting activePointersCounter is necessary to make gestures such as pinch work properly\n // There are gestures that end when there is still one active pointer (like pinch/rotation)\n // When these gestures end, they are reset, but they still receive events from pointer that is active\n // This causes trouble, since only onPointerDown registers gesture in orchestrator, and while gestures receive\n // Events from active pointer after they finished, next pointerdown event will be registered as additional pointer, not the first one\n // This casues trouble like gestures getting stuck in END state, even though they should have gone to UNDETERMINED\n\n this.activePointersCounter = 0;\n this.pointersInBounds = [];\n }\n}\n"]}
1
+ {"version":3,"sources":["EventManager.ts"],"names":["EventManager","constructor","view","activePointersCounter","onPointerDown","_event","onPointerAdd","onPointerUp","onPointerRemove","onPointerMove","onPointerLeave","onPointerEnter","onPointerCancel","onPointerOutOfBounds","onPointerMoveOver","onPointerMoveOut","setOnPointerDown","callback","setOnPointerAdd","setOnPointerUp","setOnPointerRemove","setOnPointerMove","setOnPointerLeave","setOnPointerEnter","setOnPointerCancel","setOnPointerOutOfBounds","setOnPointerMoveOver","setOnPointerMoveOut","markAsInBounds","pointerId","pointersInBounds","indexOf","push","markAsOutOfBounds","index","splice","resetManager"],"mappings":";;AAAA;AAKA,eAAe,MAAeA,YAAf,CAA+B;AAK5CC,EAAAA,WAAW,CAACC,IAAD,EAAU;AAAA;;AAAA,8CAHkB,EAGlB;;AAAA;;AACnB,SAAKA,IAAL,GAAYA,IAAZ;AACA,SAAKC,qBAAL,GAA6B,CAA7B;AACD;;AAUSC,EAAAA,aAAa,CAACC,MAAD,EAA6B,CAAE;;AAC5CC,EAAAA,YAAY,CAACD,MAAD,EAA6B,CAAE;;AAC3CE,EAAAA,WAAW,CAACF,MAAD,EAA6B,CAAE;;AAC1CG,EAAAA,eAAe,CAACH,MAAD,EAA6B,CAAE;;AAC9CI,EAAAA,aAAa,CAACJ,MAAD,EAA6B,CAAE;;AAC5CK,EAAAA,cAAc,CAACL,MAAD,EAA6B,CAAE,CAvBX,CAuBY;;;AAC9CM,EAAAA,cAAc,CAACN,MAAD,EAA6B,CAAE,CAxBX,CAwBY;;;AAC9CO,EAAAA,eAAe,CAACP,MAAD,EAA6B,CACpD;AACA;AACA;AACA;AACD;;AACSQ,EAAAA,oBAAoB,CAACR,MAAD,EAA6B,CAAE;;AACnDS,EAAAA,iBAAiB,CAACT,MAAD,EAA6B,CAAE;;AAChDU,EAAAA,gBAAgB,CAACV,MAAD,EAA6B,CAAE;;AAElDW,EAAAA,gBAAgB,CAACC,QAAD,EAAuC;AAC5D,SAAKb,aAAL,GAAqBa,QAArB;AACD;;AACMC,EAAAA,eAAe,CAACD,QAAD,EAAuC;AAC3D,SAAKX,YAAL,GAAoBW,QAApB;AACD;;AACME,EAAAA,cAAc,CAACF,QAAD,EAAuC;AAC1D,SAAKV,WAAL,GAAmBU,QAAnB;AACD;;AACMG,EAAAA,kBAAkB,CAACH,QAAD,EAAuC;AAC9D,SAAKT,eAAL,GAAuBS,QAAvB;AACD;;AACMI,EAAAA,gBAAgB,CAACJ,QAAD,EAAuC;AAC5D,SAAKR,aAAL,GAAqBQ,QAArB;AACD;;AACMK,EAAAA,iBAAiB,CAACL,QAAD,EAAuC;AAC7D,SAAKP,cAAL,GAAsBO,QAAtB;AACD;;AACMM,EAAAA,iBAAiB,CAACN,QAAD,EAAuC;AAC7D,SAAKN,cAAL,GAAsBM,QAAtB;AACD;;AACMO,EAAAA,kBAAkB,CAACP,QAAD,EAAuC;AAC9D,SAAKL,eAAL,GAAuBK,QAAvB;AACD;;AACMQ,EAAAA,uBAAuB,CAACR,QAAD,EAAuC;AACnE,SAAKJ,oBAAL,GAA4BI,QAA5B;AACD;;AACMS,EAAAA,oBAAoB,CAACT,QAAD,EAAuC;AAChE,SAAKH,iBAAL,GAAyBG,QAAzB;AACD;;AACMU,EAAAA,mBAAmB,CAACV,QAAD,EAAuC;AAC/D,SAAKF,gBAAL,GAAwBE,QAAxB;AACD;;AAESW,EAAAA,cAAc,CAACC,SAAD,EAA0B;AAChD,QAAI,KAAKC,gBAAL,CAAsBC,OAAtB,CAA8BF,SAA9B,KAA4C,CAAhD,EAAmD;AACjD;AACD;;AAED,SAAKC,gBAAL,CAAsBE,IAAtB,CAA2BH,SAA3B;AACD;;AAESI,EAAAA,iBAAiB,CAACJ,SAAD,EAA0B;AACnD,UAAMK,KAAa,GAAG,KAAKJ,gBAAL,CAAsBC,OAAtB,CAA8BF,SAA9B,CAAtB;;AAEA,QAAIK,KAAK,GAAG,CAAZ,EAAe;AACb;AACD;;AAED,SAAKJ,gBAAL,CAAsBK,MAAtB,CAA6BD,KAA7B,EAAoC,CAApC;AACD;;AAEME,EAAAA,YAAY,GAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AAEA,SAAKjC,qBAAL,GAA6B,CAA7B;AACA,SAAK2B,gBAAL,GAAwB,EAAxB;AACD;;AAjG2C","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { AdaptedEvent, EventTypes } from '../interfaces';\n\ntype PointerEventCallback = (event: AdaptedEvent) => void;\n\nexport default abstract class EventManager<T> {\n protected readonly view: T;\n protected pointersInBounds: number[] = [];\n protected activePointersCounter: number;\n\n constructor(view: T) {\n this.view = view;\n this.activePointersCounter = 0;\n }\n\n public abstract registerListeners(): void;\n public abstract unregisterListeners(): void;\n\n protected abstract mapEvent(\n event: Event,\n eventType: EventTypes\n ): AdaptedEvent;\n\n protected onPointerDown(_event: AdaptedEvent): void {}\n protected onPointerAdd(_event: AdaptedEvent): void {}\n protected onPointerUp(_event: AdaptedEvent): void {}\n protected onPointerRemove(_event: AdaptedEvent): void {}\n protected onPointerMove(_event: AdaptedEvent): void {}\n protected onPointerLeave(_event: AdaptedEvent): void {} // Called only when pointer is pressed (or touching)\n protected onPointerEnter(_event: AdaptedEvent): void {} // Called only when pointer is pressed (or touching)\n protected onPointerCancel(_event: AdaptedEvent): void {\n // When pointer cancel is triggered and there are more pointers on the view, only one pointer is cancelled\n // Because we want all pointers to be cancelled by that event, we are doing it manually by reseting handler and changing activePointersCounter to 0\n // Events that correspond to removing the pointer (pointerup, touchend) have condition, that they don't perform any action when activePointersCounter\n // is equal to 0. This prevents counter from going to negative values, when pointers are removed from view after one of them has been cancelled\n }\n protected onPointerOutOfBounds(_event: AdaptedEvent): void {}\n protected onPointerMoveOver(_event: AdaptedEvent): void {}\n protected onPointerMoveOut(_event: AdaptedEvent): void {}\n\n public setOnPointerDown(callback: PointerEventCallback): void {\n this.onPointerDown = callback;\n }\n public setOnPointerAdd(callback: PointerEventCallback): void {\n this.onPointerAdd = callback;\n }\n public setOnPointerUp(callback: PointerEventCallback): void {\n this.onPointerUp = callback;\n }\n public setOnPointerRemove(callback: PointerEventCallback): void {\n this.onPointerRemove = callback;\n }\n public setOnPointerMove(callback: PointerEventCallback): void {\n this.onPointerMove = callback;\n }\n public setOnPointerLeave(callback: PointerEventCallback): void {\n this.onPointerLeave = callback;\n }\n public setOnPointerEnter(callback: PointerEventCallback): void {\n this.onPointerEnter = callback;\n }\n public setOnPointerCancel(callback: PointerEventCallback): void {\n this.onPointerCancel = callback;\n }\n public setOnPointerOutOfBounds(callback: PointerEventCallback): void {\n this.onPointerOutOfBounds = callback;\n }\n public setOnPointerMoveOver(callback: PointerEventCallback): void {\n this.onPointerMoveOver = callback;\n }\n public setOnPointerMoveOut(callback: PointerEventCallback): void {\n this.onPointerMoveOut = callback;\n }\n\n protected markAsInBounds(pointerId: number): void {\n if (this.pointersInBounds.indexOf(pointerId) >= 0) {\n return;\n }\n\n this.pointersInBounds.push(pointerId);\n }\n\n protected markAsOutOfBounds(pointerId: number): void {\n const index: number = this.pointersInBounds.indexOf(pointerId);\n\n if (index < 0) {\n return;\n }\n\n this.pointersInBounds.splice(index, 1);\n }\n\n public resetManager(): void {\n // Reseting activePointersCounter is necessary to make gestures such as pinch work properly\n // There are gestures that end when there is still one active pointer (like pinch/rotation)\n // When these gestures end, they are reset, but they still receive events from pointer that is active\n // This causes trouble, since only onPointerDown registers gesture in orchestrator, and while gestures receive\n // Events from active pointer after they finished, next pointerdown event will be registered as additional pointer, not the first one\n // This casues trouble like gestures getting stuck in END state, even though they should have gone to UNDETERMINED\n\n this.activePointersCounter = 0;\n this.pointersInBounds = [];\n }\n}\n"]}
@@ -2,17 +2,24 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
2
2
 
3
3
  import { findNodeHandle } from 'react-native';
4
4
  import PointerEventManager from './PointerEventManager';
5
- import TouchEventManager from './TouchEventManager';
6
5
  import { State } from '../../State';
7
6
  import { isPointerInBounds } from '../utils';
8
7
  import { MouseButton } from '../../handlers/gestureHandlerCommon';
8
+ import KeyboardEventManager from './KeyboardEventManager';
9
9
  export class GestureHandlerWebDelegate {
10
10
  constructor() {
11
+ _defineProperty(this, "isInitialized", false);
12
+
11
13
  _defineProperty(this, "view", void 0);
12
14
 
13
15
  _defineProperty(this, "gestureHandler", void 0);
14
16
 
15
17
  _defineProperty(this, "eventManagers", []);
18
+
19
+ _defineProperty(this, "defaultViewStyles", {
20
+ userSelect: '',
21
+ touchAction: ''
22
+ });
16
23
  }
17
24
 
18
25
  getView() {
@@ -20,23 +27,23 @@ export class GestureHandlerWebDelegate {
20
27
  }
21
28
 
22
29
  init(viewRef, handler) {
23
- var _config$userSelect, _config$userSelect2, _config$touchAction;
24
-
25
30
  if (!viewRef) {
26
31
  throw new Error(`Cannot find HTML Element for handler ${handler.getTag()}`);
27
32
  }
28
33
 
34
+ this.isInitialized = true;
29
35
  this.gestureHandler = handler;
30
36
  this.view = findNodeHandle(viewRef);
37
+ this.defaultViewStyles = {
38
+ userSelect: this.view.style.userSelect,
39
+ touchAction: this.view.style.touchAction
40
+ };
31
41
  const config = handler.getConfig();
32
- this.addContextMenuListeners(config);
33
- this.view.style['userSelect'] = (_config$userSelect = config.userSelect) !== null && _config$userSelect !== void 0 ? _config$userSelect : 'none';
34
- this.view.style['webkitUserSelect'] = (_config$userSelect2 = config.userSelect) !== null && _config$userSelect2 !== void 0 ? _config$userSelect2 : 'none';
35
- this.view.style['touchAction'] = (_config$touchAction = config.touchAction) !== null && _config$touchAction !== void 0 ? _config$touchAction : 'none'; // @ts-ignore This one disables default events on Safari
36
-
37
- this.view.style['WebkitTouchCallout'] = 'none';
42
+ this.setUserSelect(config.enabled);
43
+ this.setTouchAction(config.enabled);
44
+ this.setContextMenu(config.enabled);
38
45
  this.eventManagers.push(new PointerEventManager(this.view));
39
- this.eventManagers.push(new TouchEventManager(this.view));
46
+ this.eventManagers.push(new KeyboardEventManager(this.view));
40
47
  this.eventManagers.forEach(manager => this.gestureHandler.attachEventManager(manager));
41
48
  }
42
49
 
@@ -100,6 +107,43 @@ export class GestureHandlerWebDelegate {
100
107
  e.stopPropagation();
101
108
  }
102
109
 
110
+ setUserSelect(isHandlerEnabled) {
111
+ const {
112
+ userSelect
113
+ } = this.gestureHandler.getConfig();
114
+ this.view.style['userSelect'] = isHandlerEnabled ? userSelect !== null && userSelect !== void 0 ? userSelect : 'none' : this.defaultViewStyles.userSelect;
115
+ this.view.style['webkitUserSelect'] = isHandlerEnabled ? userSelect !== null && userSelect !== void 0 ? userSelect : 'none' : this.defaultViewStyles.userSelect;
116
+ }
117
+
118
+ setTouchAction(isHandlerEnabled) {
119
+ const {
120
+ touchAction
121
+ } = this.gestureHandler.getConfig();
122
+ this.view.style['touchAction'] = isHandlerEnabled ? touchAction !== null && touchAction !== void 0 ? touchAction : 'none' : this.defaultViewStyles.touchAction; // @ts-ignore This one disables default events on Safari
123
+
124
+ this.view.style['WebkitTouchCallout'] = isHandlerEnabled ? touchAction !== null && touchAction !== void 0 ? touchAction : 'none' : this.defaultViewStyles.touchAction;
125
+ }
126
+
127
+ setContextMenu(isHandlerEnabled) {
128
+ const config = this.gestureHandler.getConfig();
129
+
130
+ if (isHandlerEnabled) {
131
+ this.addContextMenuListeners(config);
132
+ } else {
133
+ this.removeContextMenuListeners(config);
134
+ }
135
+ }
136
+
137
+ onEnabledChange(enabled) {
138
+ if (!this.isInitialized) {
139
+ return;
140
+ }
141
+
142
+ this.setUserSelect(enabled);
143
+ this.setTouchAction(enabled);
144
+ this.setContextMenu(enabled);
145
+ }
146
+
103
147
  onBegin() {// no-op for now
104
148
  }
105
149
 
@@ -1 +1 @@
1
- {"version":3,"sources":["GestureHandlerWebDelegate.ts"],"names":["findNodeHandle","PointerEventManager","TouchEventManager","State","isPointerInBounds","MouseButton","GestureHandlerWebDelegate","getView","view","init","viewRef","handler","Error","getTag","gestureHandler","config","getConfig","addContextMenuListeners","style","userSelect","touchAction","eventManagers","push","forEach","manager","attachEventManager","x","y","measureView","rect","getBoundingClientRect","pageX","left","pageY","top","width","height","reset","resetManager","tryResetCursor","activeCursor","getState","ACTIVE","cursor","shouldDisableContextMenu","enableContextMenu","undefined","isButtonInConfig","RIGHT","addEventListener","disableContextMenu","removeContextMenuListeners","removeEventListener","e","preventDefault","stopPropagation","onBegin","onActivate","onEnd","onCancel","onFail","destroy","unregisterListeners"],"mappings":"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","sourcesContent":["import { findNodeHandle } from 'react-native';\nimport type IGestureHandler from '../handlers/IGestureHandler';\nimport {\n GestureHandlerDelegate,\n MeasureResult,\n} from './GestureHandlerDelegate';\nimport PointerEventManager from './PointerEventManager';\nimport TouchEventManager from './TouchEventManager';\nimport { State } from '../../State';\nimport { isPointerInBounds } from '../utils';\nimport EventManager from './EventManager';\nimport { Config } from '../interfaces';\nimport { MouseButton } from '../../handlers/gestureHandlerCommon';\n\nexport class GestureHandlerWebDelegate\n implements GestureHandlerDelegate<HTMLElement, IGestureHandler>\n{\n private view!: HTMLElement;\n private gestureHandler!: IGestureHandler;\n private eventManagers: EventManager<unknown>[] = [];\n\n getView(): HTMLElement {\n return this.view;\n }\n\n init(viewRef: number, handler: IGestureHandler): void {\n if (!viewRef) {\n throw new Error(\n `Cannot find HTML Element for handler ${handler.getTag()}`\n );\n }\n\n this.gestureHandler = handler;\n this.view = findNodeHandle(viewRef) as unknown as HTMLElement;\n\n const config = handler.getConfig();\n\n this.addContextMenuListeners(config);\n\n this.view.style['userSelect'] = config.userSelect ?? 'none';\n this.view.style['webkitUserSelect'] = config.userSelect ?? 'none';\n\n this.view.style['touchAction'] = config.touchAction ?? 'none';\n // @ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = 'none';\n\n this.eventManagers.push(new PointerEventManager(this.view));\n this.eventManagers.push(new TouchEventManager(this.view));\n\n this.eventManagers.forEach((manager) =>\n this.gestureHandler.attachEventManager(manager)\n );\n }\n\n isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n return isPointerInBounds(this.view, { x, y });\n }\n\n measureView(): MeasureResult {\n const rect = this.view.getBoundingClientRect();\n\n return {\n pageX: rect.left,\n pageY: rect.top,\n width: rect.width,\n height: rect.height,\n };\n }\n\n reset(): void {\n this.eventManagers.forEach((manager: EventManager<unknown>) =>\n manager.resetManager()\n );\n }\n\n tryResetCursor() {\n const config = this.gestureHandler.getConfig();\n\n if (\n config.activeCursor &&\n config.activeCursor !== 'auto' &&\n this.gestureHandler.getState() === State.ACTIVE\n ) {\n this.view.style.cursor = 'auto';\n }\n }\n\n private shouldDisableContextMenu(config: Config) {\n return (\n (config.enableContextMenu === undefined &&\n this.gestureHandler.isButtonInConfig(MouseButton.RIGHT)) ||\n config.enableContextMenu === false\n );\n }\n\n private addContextMenuListeners(config: Config): void {\n if (this.shouldDisableContextMenu(config)) {\n this.view.addEventListener('contextmenu', this.disableContextMenu);\n } else if (config.enableContextMenu) {\n this.view.addEventListener('contextmenu', this.enableContextMenu);\n }\n }\n\n private removeContextMenuListeners(config: Config): void {\n if (this.shouldDisableContextMenu(config)) {\n this.view.removeEventListener('contextmenu', this.disableContextMenu);\n } else if (config.enableContextMenu) {\n this.view.removeEventListener('contextmenu', this.enableContextMenu);\n }\n }\n\n private disableContextMenu(this: void, e: MouseEvent): void {\n e.preventDefault();\n }\n\n private enableContextMenu(this: void, e: MouseEvent): void {\n e.stopPropagation();\n }\n\n onBegin(): void {\n // no-op for now\n }\n\n onActivate(): void {\n const config = this.gestureHandler.getConfig();\n\n if (\n (!this.view.style.cursor || this.view.style.cursor === 'auto') &&\n config.activeCursor\n ) {\n this.view.style.cursor = config.activeCursor;\n }\n }\n\n onEnd(): void {\n this.tryResetCursor();\n }\n\n onCancel(): void {\n this.tryResetCursor();\n }\n\n onFail(): void {\n this.tryResetCursor();\n }\n\n public destroy(config: Config): void {\n this.removeContextMenuListeners(config);\n\n this.eventManagers.forEach((manager) => {\n manager.unregisterListeners();\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["GestureHandlerWebDelegate.ts"],"names":["findNodeHandle","PointerEventManager","State","isPointerInBounds","MouseButton","KeyboardEventManager","GestureHandlerWebDelegate","userSelect","touchAction","getView","view","init","viewRef","handler","Error","getTag","isInitialized","gestureHandler","defaultViewStyles","style","config","getConfig","setUserSelect","enabled","setTouchAction","setContextMenu","eventManagers","push","forEach","manager","attachEventManager","x","y","measureView","rect","getBoundingClientRect","pageX","left","pageY","top","width","height","reset","resetManager","tryResetCursor","activeCursor","getState","ACTIVE","cursor","shouldDisableContextMenu","enableContextMenu","undefined","isButtonInConfig","RIGHT","addContextMenuListeners","addEventListener","disableContextMenu","removeContextMenuListeners","removeEventListener","e","preventDefault","stopPropagation","isHandlerEnabled","onEnabledChange","onBegin","onActivate","onEnd","onCancel","onFail","destroy","unregisterListeners"],"mappings":"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","sourcesContent":["import { findNodeHandle } from 'react-native';\nimport type IGestureHandler from '../handlers/IGestureHandler';\nimport {\n GestureHandlerDelegate,\n MeasureResult,\n} from './GestureHandlerDelegate';\nimport PointerEventManager from './PointerEventManager';\nimport { State } from '../../State';\nimport { isPointerInBounds } from '../utils';\nimport EventManager from './EventManager';\nimport { Config } from '../interfaces';\nimport { MouseButton } from '../../handlers/gestureHandlerCommon';\nimport KeyboardEventManager from './KeyboardEventManager';\n\ninterface DefaultViewStyles {\n userSelect: string;\n touchAction: string;\n}\n\nexport class GestureHandlerWebDelegate\n implements GestureHandlerDelegate<HTMLElement, IGestureHandler>\n{\n private isInitialized = false;\n private view!: HTMLElement;\n private gestureHandler!: IGestureHandler;\n private eventManagers: EventManager<unknown>[] = [];\n private defaultViewStyles: DefaultViewStyles = {\n userSelect: '',\n touchAction: '',\n };\n\n getView(): HTMLElement {\n return this.view;\n }\n\n init(viewRef: number, handler: IGestureHandler): void {\n if (!viewRef) {\n throw new Error(\n `Cannot find HTML Element for handler ${handler.getTag()}`\n );\n }\n\n this.isInitialized = true;\n\n this.gestureHandler = handler;\n this.view = findNodeHandle(viewRef) as unknown as HTMLElement;\n\n this.defaultViewStyles = {\n userSelect: this.view.style.userSelect,\n touchAction: this.view.style.touchAction,\n };\n\n const config = handler.getConfig();\n\n this.setUserSelect(config.enabled);\n this.setTouchAction(config.enabled);\n this.setContextMenu(config.enabled);\n\n this.eventManagers.push(new PointerEventManager(this.view));\n this.eventManagers.push(new KeyboardEventManager(this.view));\n\n this.eventManagers.forEach((manager) =>\n this.gestureHandler.attachEventManager(manager)\n );\n }\n\n isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n return isPointerInBounds(this.view, { x, y });\n }\n\n measureView(): MeasureResult {\n const rect = this.view.getBoundingClientRect();\n\n return {\n pageX: rect.left,\n pageY: rect.top,\n width: rect.width,\n height: rect.height,\n };\n }\n\n reset(): void {\n this.eventManagers.forEach((manager: EventManager<unknown>) =>\n manager.resetManager()\n );\n }\n\n tryResetCursor() {\n const config = this.gestureHandler.getConfig();\n\n if (\n config.activeCursor &&\n config.activeCursor !== 'auto' &&\n this.gestureHandler.getState() === State.ACTIVE\n ) {\n this.view.style.cursor = 'auto';\n }\n }\n\n private shouldDisableContextMenu(config: Config) {\n return (\n (config.enableContextMenu === undefined &&\n this.gestureHandler.isButtonInConfig(MouseButton.RIGHT)) ||\n config.enableContextMenu === false\n );\n }\n\n private addContextMenuListeners(config: Config): void {\n if (this.shouldDisableContextMenu(config)) {\n this.view.addEventListener('contextmenu', this.disableContextMenu);\n } else if (config.enableContextMenu) {\n this.view.addEventListener('contextmenu', this.enableContextMenu);\n }\n }\n\n private removeContextMenuListeners(config: Config): void {\n if (this.shouldDisableContextMenu(config)) {\n this.view.removeEventListener('contextmenu', this.disableContextMenu);\n } else if (config.enableContextMenu) {\n this.view.removeEventListener('contextmenu', this.enableContextMenu);\n }\n }\n\n private disableContextMenu(this: void, e: MouseEvent): void {\n e.preventDefault();\n }\n\n private enableContextMenu(this: void, e: MouseEvent): void {\n e.stopPropagation();\n }\n\n private setUserSelect(isHandlerEnabled: boolean) {\n const { userSelect } = this.gestureHandler.getConfig();\n\n this.view.style['userSelect'] = isHandlerEnabled\n ? userSelect ?? 'none'\n : this.defaultViewStyles.userSelect;\n\n this.view.style['webkitUserSelect'] = isHandlerEnabled\n ? userSelect ?? 'none'\n : this.defaultViewStyles.userSelect;\n }\n\n private setTouchAction(isHandlerEnabled: boolean) {\n const { touchAction } = this.gestureHandler.getConfig();\n\n this.view.style['touchAction'] = isHandlerEnabled\n ? touchAction ?? 'none'\n : this.defaultViewStyles.touchAction;\n\n // @ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = isHandlerEnabled\n ? touchAction ?? 'none'\n : this.defaultViewStyles.touchAction;\n }\n\n private setContextMenu(isHandlerEnabled: boolean) {\n const config = this.gestureHandler.getConfig();\n\n if (isHandlerEnabled) {\n this.addContextMenuListeners(config);\n } else {\n this.removeContextMenuListeners(config);\n }\n }\n\n onEnabledChange(enabled: boolean): void {\n if (!this.isInitialized) {\n return;\n }\n\n this.setUserSelect(enabled);\n this.setTouchAction(enabled);\n this.setContextMenu(enabled);\n }\n\n onBegin(): void {\n // no-op for now\n }\n\n onActivate(): void {\n const config = this.gestureHandler.getConfig();\n\n if (\n (!this.view.style.cursor || this.view.style.cursor === 'auto') &&\n config.activeCursor\n ) {\n this.view.style.cursor = config.activeCursor;\n }\n }\n\n onEnd(): void {\n this.tryResetCursor();\n }\n\n onCancel(): void {\n this.tryResetCursor();\n }\n\n onFail(): void {\n this.tryResetCursor();\n }\n\n public destroy(config: Config): void {\n this.removeContextMenuListeners(config);\n\n this.eventManagers.forEach((manager) => {\n manager.unregisterListeners();\n });\n }\n}\n"]}
@@ -0,0 +1,96 @@
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
+
3
+ import { EventTypes } from '../interfaces';
4
+ import EventManager from './EventManager';
5
+ import { PointerType } from '../../PointerType';
6
+ export default class KeyboardEventManager extends EventManager {
7
+ constructor(...args) {
8
+ super(...args);
9
+
10
+ _defineProperty(this, "activationKeys", ['Enter', ' ']);
11
+
12
+ _defineProperty(this, "cancelationKeys", ['Tab']);
13
+
14
+ _defineProperty(this, "isPressed", false);
15
+
16
+ _defineProperty(this, "keyDownCallback", event => {
17
+ if (this.cancelationKeys.indexOf(event.key) !== -1 && this.isPressed) {
18
+ this.dispatchEvent(event, EventTypes.CANCEL);
19
+ return;
20
+ }
21
+
22
+ if (this.activationKeys.indexOf(event.key) === -1) {
23
+ return;
24
+ }
25
+
26
+ this.dispatchEvent(event, EventTypes.DOWN);
27
+ });
28
+
29
+ _defineProperty(this, "keyUpCallback", event => {
30
+ if (this.activationKeys.indexOf(event.key) === -1 || !this.isPressed) {
31
+ return;
32
+ }
33
+
34
+ this.dispatchEvent(event, EventTypes.UP);
35
+ });
36
+ }
37
+
38
+ dispatchEvent(event, eventType) {
39
+ if (!(event.target instanceof HTMLElement)) {
40
+ return;
41
+ }
42
+
43
+ const adaptedEvent = this.mapEvent(event, eventType);
44
+
45
+ switch (eventType) {
46
+ case EventTypes.UP:
47
+ this.isPressed = false;
48
+ this.onPointerUp(adaptedEvent);
49
+ break;
50
+
51
+ case EventTypes.DOWN:
52
+ this.isPressed = true;
53
+ this.onPointerDown(adaptedEvent);
54
+ break;
55
+
56
+ case EventTypes.CANCEL:
57
+ this.isPressed = false;
58
+ this.onPointerCancel(adaptedEvent);
59
+ break;
60
+ }
61
+ }
62
+
63
+ registerListeners() {
64
+ this.view.addEventListener('keydown', this.keyDownCallback);
65
+ this.view.addEventListener('keyup', this.keyUpCallback);
66
+ }
67
+
68
+ unregisterListeners() {
69
+ this.view.addEventListener('keydown', this.keyDownCallback);
70
+ this.view.addEventListener('keyup', this.keyUpCallback);
71
+ }
72
+
73
+ mapEvent(event, eventType) {
74
+ const viewRect = event.target.getBoundingClientRect();
75
+ const viewportPosition = {
76
+ x: (viewRect === null || viewRect === void 0 ? void 0 : viewRect.x) + (viewRect === null || viewRect === void 0 ? void 0 : viewRect.width) / 2,
77
+ y: (viewRect === null || viewRect === void 0 ? void 0 : viewRect.y) + (viewRect === null || viewRect === void 0 ? void 0 : viewRect.height) / 2
78
+ };
79
+ const relativePosition = {
80
+ x: (viewRect === null || viewRect === void 0 ? void 0 : viewRect.width) / 2,
81
+ y: (viewRect === null || viewRect === void 0 ? void 0 : viewRect.height) / 2
82
+ };
83
+ return {
84
+ x: viewportPosition.x,
85
+ y: viewportPosition.y,
86
+ offsetX: relativePosition.x,
87
+ offsetY: relativePosition.y,
88
+ pointerId: 0,
89
+ eventType: eventType,
90
+ pointerType: PointerType.KEY,
91
+ time: event.timeStamp
92
+ };
93
+ }
94
+
95
+ }
96
+ //# sourceMappingURL=KeyboardEventManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["KeyboardEventManager.ts"],"names":["EventTypes","EventManager","PointerType","KeyboardEventManager","event","cancelationKeys","indexOf","key","isPressed","dispatchEvent","CANCEL","activationKeys","DOWN","UP","eventType","target","HTMLElement","adaptedEvent","mapEvent","onPointerUp","onPointerDown","onPointerCancel","registerListeners","view","addEventListener","keyDownCallback","keyUpCallback","unregisterListeners","viewRect","getBoundingClientRect","viewportPosition","x","width","y","height","relativePosition","offsetX","offsetY","pointerId","pointerType","KEY","time","timeStamp"],"mappings":"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","sourcesContent":["import { AdaptedEvent, EventTypes } from '../interfaces';\nimport EventManager from './EventManager';\nimport { PointerType } from '../../PointerType';\n\nexport default class KeyboardEventManager extends EventManager<HTMLElement> {\n private activationKeys = ['Enter', ' '];\n private cancelationKeys = ['Tab'];\n private isPressed = false;\n\n private keyDownCallback = (event: KeyboardEvent): void => {\n if (this.cancelationKeys.indexOf(event.key) !== -1 && this.isPressed) {\n this.dispatchEvent(event, EventTypes.CANCEL);\n return;\n }\n\n if (this.activationKeys.indexOf(event.key) === -1) {\n return;\n }\n\n this.dispatchEvent(event, EventTypes.DOWN);\n };\n\n private keyUpCallback = (event: KeyboardEvent): void => {\n if (this.activationKeys.indexOf(event.key) === -1 || !this.isPressed) {\n return;\n }\n\n this.dispatchEvent(event, EventTypes.UP);\n };\n\n private dispatchEvent(event: KeyboardEvent, eventType: EventTypes) {\n if (!(event.target instanceof HTMLElement)) {\n return;\n }\n\n const adaptedEvent = this.mapEvent(event, eventType);\n\n switch (eventType) {\n case EventTypes.UP:\n this.isPressed = false;\n this.onPointerUp(adaptedEvent);\n break;\n case EventTypes.DOWN:\n this.isPressed = true;\n this.onPointerDown(adaptedEvent);\n break;\n case EventTypes.CANCEL:\n this.isPressed = false;\n this.onPointerCancel(adaptedEvent);\n break;\n }\n }\n\n public registerListeners(): void {\n this.view.addEventListener('keydown', this.keyDownCallback);\n this.view.addEventListener('keyup', this.keyUpCallback);\n }\n\n public unregisterListeners(): void {\n this.view.addEventListener('keydown', this.keyDownCallback);\n this.view.addEventListener('keyup', this.keyUpCallback);\n }\n\n protected mapEvent(\n event: KeyboardEvent,\n eventType: EventTypes\n ): AdaptedEvent {\n const viewRect = (event.target as HTMLElement).getBoundingClientRect();\n\n const viewportPosition = {\n x: viewRect?.x + viewRect?.width / 2,\n y: viewRect?.y + viewRect?.height / 2,\n };\n\n const relativePosition = {\n x: viewRect?.width / 2,\n y: viewRect?.height / 2,\n };\n\n return {\n x: viewportPosition.x,\n y: viewportPosition.y,\n offsetX: relativePosition.x,\n offsetY: relativePosition.y,\n pointerId: 0,\n eventType: eventType,\n pointerType: PointerType.KEY,\n time: event.timeStamp,\n };\n }\n}\n"]}
@@ -3,13 +3,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
3
3
  import EventManager from './EventManager';
4
4
  import { MouseButton } from '../../handlers/gestureHandlerCommon';
5
5
  import { EventTypes } from '../interfaces';
6
- import { PointerTypeMapping, calculateViewScale, isPointerInBounds } from '../utils';
6
+ import { PointerTypeMapping, calculateViewScale, tryExtractStylusData, isPointerInBounds } from '../utils';
7
7
  import { PointerType } from '../../PointerType';
8
8
  const POINTER_CAPTURE_EXCLUDE_LIST = new Set(['SELECT', 'INPUT']);
9
- const PointerTypes = {
10
- Touch: 'touch',
11
- Stylus: 'pen'
12
- };
13
9
  export default class PointerEventManager extends EventManager {
14
10
  constructor(view) {
15
11
  super(view);
@@ -21,10 +17,6 @@ export default class PointerEventManager extends EventManager {
21
17
  _defineProperty(this, "lastPosition", void 0);
22
18
 
23
19
  _defineProperty(this, "pointerDownCallback", event => {
24
- if (event.pointerType === PointerTypes.Touch) {
25
- return;
26
- }
27
-
28
20
  if (!isPointerInBounds(this.view, {
29
21
  x: event.clientX,
30
22
  y: event.clientY
@@ -51,14 +43,10 @@ export default class PointerEventManager extends EventManager {
51
43
  });
52
44
 
53
45
  _defineProperty(this, "pointerUpCallback", event => {
54
- if (event.pointerType === PointerTypes.Touch) {
55
- return;
56
- } // When we call reset on gesture handlers, it also resets their event managers
46
+ // When we call reset on gesture handlers, it also resets their event managers
57
47
  // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view
58
48
  // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view
59
49
  // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly
60
-
61
-
62
50
  if (this.activePointersCounter === 0) {
63
51
  return;
64
52
  }
@@ -82,17 +70,6 @@ export default class PointerEventManager extends EventManager {
82
70
  });
83
71
 
84
72
  _defineProperty(this, "pointerMoveCallback", event => {
85
- if (event.pointerType === PointerTypes.Touch) {
86
- return;
87
- } // Stylus triggers `pointermove` event when it detects changes in pressure. Since it is very sensitive to those changes,
88
- // it constantly sends events, even though there was no change in position. To fix that we check whether
89
- // pointer has actually moved and if not, we do not send event.
90
-
91
-
92
- if (event.pointerType === PointerTypes.Stylus && event.x === this.lastPosition.x && event.y === this.lastPosition.y) {
93
- return;
94
- }
95
-
96
73
  const adaptedEvent = this.mapEvent(event, EventTypes.MOVE);
97
74
  const target = event.target; // You may be wondering why are we setting pointer capture here, when we
98
75
  // already set it in `pointerdown` handler. Well, that's a great question,
@@ -140,10 +117,6 @@ export default class PointerEventManager extends EventManager {
140
117
  });
141
118
 
142
119
  _defineProperty(this, "pointerCancelCallback", event => {
143
- if (event.pointerType === PointerTypes.Touch) {
144
- return;
145
- }
146
-
147
120
  const adaptedEvent = this.mapEvent(event, EventTypes.CANCEL);
148
121
  this.onPointerCancel(adaptedEvent);
149
122
  this.markAsOutOfBounds(adaptedEvent.pointerId);
@@ -152,19 +125,11 @@ export default class PointerEventManager extends EventManager {
152
125
  });
153
126
 
154
127
  _defineProperty(this, "pointerEnterCallback", event => {
155
- if (event.pointerType === PointerTypes.Touch) {
156
- return;
157
- }
158
-
159
128
  const adaptedEvent = this.mapEvent(event, EventTypes.ENTER);
160
129
  this.onPointerMoveOver(adaptedEvent);
161
130
  });
162
131
 
163
132
  _defineProperty(this, "pointerLeaveCallback", event => {
164
- if (event.pointerType === PointerTypes.Touch) {
165
- return;
166
- }
167
-
168
133
  const adaptedEvent = this.mapEvent(event, EventTypes.LEAVE);
169
134
  this.onPointerMoveOut(adaptedEvent);
170
135
  });
@@ -233,7 +198,8 @@ export default class PointerEventManager extends EventManager {
233
198
  eventType: eventType,
234
199
  pointerType: (_PointerTypeMapping$g = PointerTypeMapping.get(event.pointerType)) !== null && _PointerTypeMapping$g !== void 0 ? _PointerTypeMapping$g : PointerType.OTHER,
235
200
  button: this.mouseButtonsMapper.get(event.button),
236
- time: event.timeStamp
201
+ time: event.timeStamp,
202
+ stylusData: tryExtractStylusData(event)
237
203
  };
238
204
  }
239
205