react-native-gesture-handler 2.9.0 → 2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/README.md +1 -0
  2. package/RNGestureHandler.podspec +1 -1
  3. package/android/build.gradle +69 -29
  4. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +1 -1
  5. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +2 -0
  6. package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +39 -0
  7. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +8 -2
  8. package/ios/Handlers/RNNativeViewHandler.mm +4 -4
  9. package/ios/RNGestureHandlerButtonComponentView.h +2 -2
  10. package/ios/RNGestureHandlerButtonComponentView.mm +2 -2
  11. package/ios/RNGestureHandlerManager.mm +65 -16
  12. package/ios/RNGestureHandlerModule.mm +20 -16
  13. package/ios/RNGestureHandlerRootViewComponentView.mm +2 -2
  14. package/ios/RNRootViewGestureRecognizer.m +3 -3
  15. package/lib/commonjs/EnableNewWebImplementation.js +35 -0
  16. package/lib/commonjs/EnableNewWebImplementation.js.map +1 -0
  17. package/lib/commonjs/GestureHandlerRootViewContext.js +15 -0
  18. package/lib/commonjs/GestureHandlerRootViewContext.js.map +1 -0
  19. package/lib/commonjs/RNGestureHandlerModule.macos.js +6 -6
  20. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
  21. package/lib/commonjs/RNGestureHandlerModule.web.js +6 -6
  22. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  23. package/lib/commonjs/RNGestureHandlerModule.windows.js +6 -6
  24. package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -1
  25. package/lib/commonjs/components/GestureComponents.web.js +6 -5
  26. package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
  27. package/lib/commonjs/components/GestureHandlerButton.js +3 -5
  28. package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
  29. package/lib/commonjs/{GestureHandlerRootView.android.js → components/GestureHandlerRootView.android.js} +8 -7
  30. package/lib/commonjs/components/GestureHandlerRootView.android.js.map +1 -0
  31. package/lib/commonjs/{GestureHandlerRootView.js → components/GestureHandlerRootView.js} +8 -2
  32. package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -0
  33. package/lib/commonjs/{GestureHandlerRootView.web.js → components/GestureHandlerRootView.web.js} +7 -1
  34. package/lib/commonjs/components/GestureHandlerRootView.web.js.map +1 -0
  35. package/lib/commonjs/components/Swipeable.js +17 -3
  36. package/lib/commonjs/components/Swipeable.js.map +1 -1
  37. package/lib/commonjs/{gestureHandlerRootHOC.js.map → components/gestureHandlerRootHOC.js.map} +1 -1
  38. package/lib/commonjs/handlers/createHandler.js +21 -13
  39. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  40. package/lib/commonjs/handlers/gestureHandlerCommon.js +5 -4
  41. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  42. package/lib/commonjs/handlers/gestures/GestureDetector.js +19 -9
  43. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  44. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +22 -19
  45. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
  46. package/lib/commonjs/index.js +16 -4
  47. package/lib/commonjs/index.js.map +1 -1
  48. package/lib/commonjs/utils.js +0 -6
  49. package/lib/commonjs/utils.js.map +1 -1
  50. package/lib/commonjs/web/handlers/FlingGestureHandler.js +0 -5
  51. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  52. package/lib/commonjs/web/handlers/GestureHandler.js +3 -0
  53. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  54. package/lib/commonjs/web/handlers/ManualGestureHandler.js +0 -5
  55. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
  56. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +0 -6
  57. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  58. package/lib/commonjs/web/handlers/PanGestureHandler.js +2 -12
  59. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  60. package/lib/commonjs/web/handlers/PinchGestureHandler.js +0 -5
  61. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  62. package/lib/commonjs/web/handlers/RotationGestureHandler.js +0 -6
  63. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  64. package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -6
  65. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  66. package/lib/commonjs/web/tools/CircularBuffer.js +59 -0
  67. package/lib/commonjs/web/tools/CircularBuffer.js.map +1 -0
  68. package/lib/commonjs/web/tools/LeastSquareSolver.js +204 -0
  69. package/lib/commonjs/web/tools/LeastSquareSolver.js.map +1 -0
  70. package/lib/commonjs/web/tools/PointerEventManager.js +27 -0
  71. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
  72. package/lib/commonjs/web/tools/PointerTracker.js +11 -7
  73. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  74. package/lib/commonjs/web/tools/VelocityTracker.js +111 -0
  75. package/lib/commonjs/web/tools/VelocityTracker.js.map +1 -0
  76. package/lib/commonjs/web_hammer/GestureHandler.js +1 -1
  77. package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
  78. package/lib/module/EnableNewWebImplementation.js +22 -0
  79. package/lib/module/EnableNewWebImplementation.js.map +1 -0
  80. package/lib/module/GestureHandlerRootViewContext.js +3 -0
  81. package/lib/module/GestureHandlerRootViewContext.js.map +1 -0
  82. package/lib/module/RNGestureHandlerModule.macos.js +6 -6
  83. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  84. package/lib/module/RNGestureHandlerModule.web.js +6 -6
  85. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  86. package/lib/module/RNGestureHandlerModule.windows.js +6 -6
  87. package/lib/module/RNGestureHandlerModule.windows.js.map +1 -1
  88. package/lib/module/components/GestureComponents.web.js +5 -6
  89. package/lib/module/components/GestureComponents.web.js.map +1 -1
  90. package/lib/module/components/GestureHandlerButton.js +1 -4
  91. package/lib/module/components/GestureHandlerButton.js.map +1 -1
  92. package/lib/module/components/GestureHandlerRootView.android.js +14 -0
  93. package/lib/module/components/GestureHandlerRootView.android.js.map +1 -0
  94. package/lib/module/{GestureHandlerRootView.js → components/GestureHandlerRootView.js} +5 -2
  95. package/lib/module/components/GestureHandlerRootView.js.map +1 -0
  96. package/lib/module/components/GestureHandlerRootView.web.js +9 -0
  97. package/lib/module/components/GestureHandlerRootView.web.js.map +1 -0
  98. package/lib/module/components/Swipeable.js +17 -3
  99. package/lib/module/components/Swipeable.js.map +1 -1
  100. package/lib/module/{gestureHandlerRootHOC.js.map → components/gestureHandlerRootHOC.js.map} +1 -1
  101. package/lib/module/handlers/createHandler.js +20 -13
  102. package/lib/module/handlers/createHandler.js.map +1 -1
  103. package/lib/module/handlers/gestureHandlerCommon.js +5 -4
  104. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  105. package/lib/module/handlers/gestures/GestureDetector.js +18 -10
  106. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  107. package/lib/module/handlers/gestures/reanimatedWrapper.js +19 -16
  108. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
  109. package/lib/module/index.js +4 -4
  110. package/lib/module/index.js.map +1 -1
  111. package/lib/module/utils.js +0 -4
  112. package/lib/module/utils.js.map +1 -1
  113. package/lib/module/web/handlers/FlingGestureHandler.js +0 -5
  114. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  115. package/lib/module/web/handlers/GestureHandler.js +3 -0
  116. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  117. package/lib/module/web/handlers/ManualGestureHandler.js +0 -5
  118. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
  119. package/lib/module/web/handlers/NativeViewGestureHandler.js +0 -6
  120. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  121. package/lib/module/web/handlers/PanGestureHandler.js +2 -9
  122. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  123. package/lib/module/web/handlers/PinchGestureHandler.js +0 -5
  124. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  125. package/lib/module/web/handlers/RotationGestureHandler.js +0 -6
  126. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  127. package/lib/module/web/handlers/TapGestureHandler.js +0 -6
  128. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  129. package/lib/module/web/tools/CircularBuffer.js +50 -0
  130. package/lib/module/web/tools/CircularBuffer.js.map +1 -0
  131. package/lib/module/web/tools/LeastSquareSolver.js +195 -0
  132. package/lib/module/web/tools/LeastSquareSolver.js.map +1 -0
  133. package/lib/module/web/tools/PointerEventManager.js +27 -0
  134. package/lib/module/web/tools/PointerEventManager.js.map +1 -1
  135. package/lib/module/web/tools/PointerTracker.js +8 -7
  136. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  137. package/lib/module/web/tools/VelocityTracker.js +98 -0
  138. package/lib/module/web/tools/VelocityTracker.js.map +1 -0
  139. package/lib/module/web_hammer/GestureHandler.js +1 -1
  140. package/lib/module/web_hammer/GestureHandler.js.map +1 -1
  141. package/lib/typescript/EnableNewWebImplementation.d.ts +3 -0
  142. package/lib/typescript/GestureHandlerRootViewContext.d.ts +3 -0
  143. package/lib/typescript/components/GestureComponents.web.d.ts +1 -1
  144. package/lib/typescript/components/Swipeable.d.ts +12 -1
  145. package/lib/typescript/{gestureHandlerRootHOC.d.ts → components/gestureHandlerRootHOC.d.ts} +1 -1
  146. package/lib/typescript/index.d.ts +4 -4
  147. package/lib/typescript/utils.d.ts +0 -1
  148. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +0 -1
  149. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +0 -1
  150. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +0 -1
  151. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +0 -1
  152. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +0 -1
  153. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +0 -1
  154. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +0 -1
  155. package/lib/typescript/web/tools/CircularBuffer.d.ts +11 -0
  156. package/lib/typescript/web/tools/LeastSquareSolver.d.ts +12 -0
  157. package/lib/typescript/web/tools/PointerEventManager.d.ts +2 -0
  158. package/lib/typescript/web/tools/PointerTracker.d.ts +1 -0
  159. package/lib/typescript/web/tools/VelocityTracker.d.ts +13 -0
  160. package/package.json +3 -3
  161. package/src/EnableNewWebImplementation.ts +35 -0
  162. package/src/GestureHandlerRootViewContext.ts +3 -0
  163. package/src/RNGestureHandlerModule.macos.ts +6 -6
  164. package/src/RNGestureHandlerModule.web.ts +6 -6
  165. package/src/RNGestureHandlerModule.windows.ts +6 -6
  166. package/src/components/GestureComponents.web.tsx +5 -6
  167. package/src/components/GestureHandlerButton.tsx +2 -7
  168. package/src/components/GestureHandlerRootView.android.tsx +24 -0
  169. package/src/{GestureHandlerRootView.tsx → components/GestureHandlerRootView.tsx} +7 -2
  170. package/src/{GestureHandlerRootView.web.tsx → components/GestureHandlerRootView.web.tsx} +6 -1
  171. package/src/components/Swipeable.tsx +30 -4
  172. package/src/{gestureHandlerRootHOC.tsx → components/gestureHandlerRootHOC.tsx} +1 -1
  173. package/src/handlers/createHandler.tsx +20 -9
  174. package/src/handlers/gestureHandlerCommon.ts +5 -6
  175. package/src/handlers/gestures/GestureDetector.tsx +19 -9
  176. package/src/handlers/gestures/reanimatedWrapper.ts +21 -20
  177. package/src/index.ts +7 -3
  178. package/src/utils.ts +0 -5
  179. package/src/web/handlers/FlingGestureHandler.ts +0 -5
  180. package/src/web/handlers/GestureHandler.ts +3 -0
  181. package/src/web/handlers/ManualGestureHandler.ts +0 -5
  182. package/src/web/handlers/NativeViewGestureHandler.ts +0 -6
  183. package/src/web/handlers/PanGestureHandler.ts +2 -9
  184. package/src/web/handlers/PinchGestureHandler.ts +0 -5
  185. package/src/web/handlers/RotationGestureHandler.ts +0 -7
  186. package/src/web/handlers/TapGestureHandler.ts +0 -6
  187. package/src/web/tools/CircularBuffer.ts +42 -0
  188. package/src/web/tools/LeastSquareSolver.ts +182 -0
  189. package/src/web/tools/PointerEventManager.ts +29 -0
  190. package/src/web/tools/PointerTracker.ts +7 -7
  191. package/src/web/tools/VelocityTracker.ts +98 -0
  192. package/src/web_hammer/GestureHandler.ts +1 -1
  193. package/lib/commonjs/EnableExperimentalWebImplementation.js +0 -31
  194. package/lib/commonjs/EnableExperimentalWebImplementation.js.map +0 -1
  195. package/lib/commonjs/GestureHandlerRootView.android.js.map +0 -1
  196. package/lib/commonjs/GestureHandlerRootView.js.map +0 -1
  197. package/lib/commonjs/GestureHandlerRootView.web.js.map +0 -1
  198. package/lib/module/EnableExperimentalWebImplementation.js +0 -20
  199. package/lib/module/EnableExperimentalWebImplementation.js.map +0 -1
  200. package/lib/module/GestureHandlerRootView.android.js +0 -14
  201. package/lib/module/GestureHandlerRootView.android.js.map +0 -1
  202. package/lib/module/GestureHandlerRootView.js.map +0 -1
  203. package/lib/module/GestureHandlerRootView.web.js +0 -6
  204. package/lib/module/GestureHandlerRootView.web.js.map +0 -1
  205. package/lib/typescript/EnableExperimentalWebImplementation.d.ts +0 -2
  206. package/src/EnableExperimentalWebImplementation.ts +0 -27
  207. package/src/GestureHandlerRootView.android.tsx +0 -24
  208. /package/lib/commonjs/{gestureHandlerRootHOC.js → components/gestureHandlerRootHOC.js} +0 -0
  209. /package/lib/commonjs/{fabric → specs}/RNGestureHandlerButtonNativeComponent.js +0 -0
  210. /package/lib/commonjs/{fabric → specs}/RNGestureHandlerButtonNativeComponent.js.map +0 -0
  211. /package/lib/commonjs/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.js +0 -0
  212. /package/lib/commonjs/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.js.map +0 -0
  213. /package/lib/module/{gestureHandlerRootHOC.js → components/gestureHandlerRootHOC.js} +0 -0
  214. /package/lib/module/{fabric → specs}/RNGestureHandlerButtonNativeComponent.js +0 -0
  215. /package/lib/module/{fabric → specs}/RNGestureHandlerButtonNativeComponent.js.map +0 -0
  216. /package/lib/module/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.js +0 -0
  217. /package/lib/module/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.js.map +0 -0
  218. /package/lib/typescript/{GestureHandlerRootView.android.d.ts → components/GestureHandlerRootView.android.d.ts} +0 -0
  219. /package/lib/typescript/{GestureHandlerRootView.d.ts → components/GestureHandlerRootView.d.ts} +0 -0
  220. /package/lib/typescript/{GestureHandlerRootView.web.d.ts → components/GestureHandlerRootView.web.d.ts} +0 -0
  221. /package/lib/typescript/{fabric → specs}/RNGestureHandlerButtonNativeComponent.d.ts +0 -0
  222. /package/lib/typescript/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.d.ts +0 -0
  223. /package/src/{fabric → specs}/RNGestureHandlerButtonNativeComponent.ts +0 -0
  224. /package/src/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["reanimatedWrapper.ts"],"names":["tagMessage","Reanimated","require","useSharedValue","undefined","Error","setGestureState","console","warn","e"],"mappings":"AAKA,SAASA,UAAT,QAA2B,aAA3B;AAMA,IAAIC,UAAJ;;AAkBA,IAAI;AACFA,EAAAA,UAAU,GAAGC,OAAO,CAAC,yBAAD,CAApB;;AAEA,MAAI,CAACD,UAAU,CAACE,cAAhB,EAAgC;AAC9B;AACA;AACAF,IAAAA,UAAU,GAAGG,SAAb;AACA,UAAM,IAAIC,KAAJ,CAAU,sCAAV,CAAN;AACD;;AAED,MAAI,CAACJ,UAAU,CAACK,eAAhB,EAAiC;AAC/BL,IAAAA,UAAU,CAACK,eAAX,GAA6B,MAAM;AACjC;;AACAC,MAAAA,OAAO,CAACC,IAAR,CACER,UAAU,CACR,gGADQ,CADZ;AAKD,KAPD;AAQD,GAnBC,CAoBF;AACA;AACA;;AACD,CAvBD,CAuBE,OAAOS,CAAP,EAAU,CAAE;;AAEd,SAASR,UAAT","sourcesContent":["import { ComponentClass } from 'react';\nimport {\n GestureUpdateEvent,\n GestureStateChangeEvent,\n} from '../gestureHandlerCommon';\nimport { tagMessage } from '../../utils';\n\nexport interface SharedValue<T> {\n value: T;\n}\n\nlet Reanimated: {\n default: {\n // Slightly modified definition copied from 'react-native-reanimated'\n // eslint-disable-next-line @typescript-eslint/ban-types\n createAnimatedComponent<P extends object>(\n component: ComponentClass<P>,\n options?: unknown\n ): ComponentClass<P>;\n };\n useEvent: (\n callback: (event: GestureUpdateEvent | GestureStateChangeEvent) => void,\n events: string[],\n rebuild: boolean\n ) => unknown;\n useSharedValue: <T>(value: T) => SharedValue<T>;\n setGestureState: (handlerTag: number, newState: number) => void;\n};\n\ntry {\n Reanimated = require('react-native-reanimated');\n\n if (!Reanimated.useSharedValue) {\n // @ts-ignore Make sure the loaded module is actually Reanimated, if it's not\n // reset the module to undefined so we can fallback to the default implementation\n Reanimated = undefined;\n throw new Error('react-native-reanimated is not found');\n }\n\n if (!Reanimated.setGestureState) {\n Reanimated.setGestureState = () => {\n 'worklet';\n console.warn(\n tagMessage(\n 'Please use newer version of react-native-reanimated in order to control state of the gestures.'\n )\n );\n };\n }\n // When 'react-native-reanimated' is not available we want to\n // quietly continue\n // eslint-disable-next-line no-empty\n} catch (e) {}\n\nexport { Reanimated };\n"]}
1
+ {"version":3,"sources":["reanimatedWrapper.ts"],"names":["tagMessage","Reanimated","require","e","undefined","useSharedValue","setGestureState","console","warn"],"mappings":";;AAKA,SAASA,UAAT,QAA2B,aAA3B;AAMA,IAAIC,UAAJ;;AAkBA,IAAI;AACFA,EAAAA,UAAU,GAAGC,OAAO,CAAC,yBAAD,CAApB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU;AACV;AACA;AACAF,EAAAA,UAAU,GAAGG,SAAb;AACD;;AAED,IAAI,iBAACH,UAAD,wCAAC,YAAYI,cAAb,CAAJ,EAAiC;AAC/B;AACA;AACAJ,EAAAA,UAAU,GAAGG,SAAb;AACD;;AAED,IAAIH,UAAU,KAAKG,SAAf,IAA4B,CAACH,UAAU,CAACK,eAA5C,EAA6D;AAC3D;AACAL,EAAAA,UAAU,CAACK,eAAX,GAA6B,MAAM;AACjC;;AACAC,IAAAA,OAAO,CAACC,IAAR,CACER,UAAU,CACR,gGADQ,CADZ;AAKD,GAPD;AAQD;;AAED,SAASC,UAAT","sourcesContent":["import { ComponentClass } from 'react';\nimport {\n GestureUpdateEvent,\n GestureStateChangeEvent,\n} from '../gestureHandlerCommon';\nimport { tagMessage } from '../../utils';\n\nexport interface SharedValue<T> {\n value: T;\n}\n\nlet Reanimated: {\n default: {\n // Slightly modified definition copied from 'react-native-reanimated'\n // eslint-disable-next-line @typescript-eslint/ban-types\n createAnimatedComponent<P extends object>(\n component: ComponentClass<P>,\n options?: unknown\n ): ComponentClass<P>;\n };\n useEvent: (\n callback: (event: GestureUpdateEvent | GestureStateChangeEvent) => void,\n events: string[],\n rebuild: boolean\n ) => unknown;\n useSharedValue: <T>(value: T) => SharedValue<T>;\n setGestureState: (handlerTag: number, newState: number) => void;\n};\n\ntry {\n Reanimated = require('react-native-reanimated');\n} catch (e) {\n // When 'react-native-reanimated' is not available we want to quietly continue\n // @ts-ignore TS demands the variable to be initialized\n Reanimated = undefined;\n}\n\nif (!Reanimated?.useSharedValue) {\n // @ts-ignore Make sure the loaded module is actually Reanimated, if it's not\n // reset the module to undefined so we can fallback to the default implementation\n Reanimated = undefined;\n}\n\nif (Reanimated !== undefined && !Reanimated.setGestureState) {\n // The loaded module is Reanimated but it doesn't have the setGestureState defined\n Reanimated.setGestureState = () => {\n 'worklet';\n console.warn(\n tagMessage(\n 'Please use newer version of react-native-reanimated in order to control state of the gestures.'\n )\n );\n };\n}\n\nexport { Reanimated };\n"]}
@@ -1,8 +1,8 @@
1
1
  import { initialize } from './init';
2
2
  export { Directions } from './Directions';
3
3
  export { State } from './State';
4
- export { default as gestureHandlerRootHOC } from './gestureHandlerRootHOC';
5
- export { default as GestureHandlerRootView } from './GestureHandlerRootView';
4
+ export { default as gestureHandlerRootHOC } from './components/gestureHandlerRootHOC';
5
+ export { default as GestureHandlerRootView } from './components/GestureHandlerRootView';
6
6
  export { TapGestureHandler } from './handlers/TapGestureHandler';
7
7
  export { ForceTouchGestureHandler } from './handlers/ForceTouchGestureHandler';
8
8
  export { LongPressGestureHandler } from './handlers/LongPressGestureHandler';
@@ -14,11 +14,11 @@ export { default as createNativeWrapper } from './handlers/createNativeWrapper';
14
14
  export { GestureDetector } from './handlers/gestures/GestureDetector';
15
15
  export { GestureObjects as Gesture } from './handlers/gestures/gestureObjects';
16
16
  export { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler';
17
- export { RawButton, BaseButton, RectButton, BorderlessButton } from './components/GestureButtons';
17
+ export { RawButton, BaseButton, RectButton, BorderlessButton, PureNativeButton } from './components/GestureButtons';
18
18
  export { TouchableHighlight, TouchableNativeFeedback, TouchableOpacity, TouchableWithoutFeedback } from './components/touchables';
19
19
  export { ScrollView, Switch, TextInput, DrawerLayoutAndroid, FlatList, RefreshControl } from './components/GestureComponents';
20
20
  export { default as Swipeable } from './components/Swipeable';
21
21
  export { default as DrawerLayout } from './components/DrawerLayout';
22
- export { enableExperimentalWebImplementation } from './EnableExperimentalWebImplementation';
22
+ export { enableExperimentalWebImplementation, enableLegacyWebImplementation } from './EnableNewWebImplementation';
23
23
  initialize();
24
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["initialize","Directions","State","default","gestureHandlerRootHOC","GestureHandlerRootView","TapGestureHandler","ForceTouchGestureHandler","LongPressGestureHandler","PanGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","createNativeWrapper","GestureDetector","GestureObjects","Gesture","NativeViewGestureHandler","RawButton","BaseButton","RectButton","BorderlessButton","TouchableHighlight","TouchableNativeFeedback","TouchableOpacity","TouchableWithoutFeedback","ScrollView","Switch","TextInput","DrawerLayoutAndroid","FlatList","RefreshControl","Swipeable","DrawerLayout","enableExperimentalWebImplementation"],"mappings":"AAAA,SAASA,UAAT,QAA2B,QAA3B;AAEA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,KAAT,QAAsB,SAAtB;AACA,SAASC,OAAO,IAAIC,qBAApB,QAAiD,yBAAjD;AACA,SAASD,OAAO,IAAIE,sBAApB,QAAkD,0BAAlD;AA+CA,SAASC,iBAAT,QAAkC,8BAAlC;AACA,SAASC,wBAAT,QAAyC,qCAAzC;AACA,SAASC,uBAAT,QAAwC,oCAAxC;AACA,SAASC,iBAAT,QAAkC,8BAAlC;AACA,SAASC,mBAAT,QAAoC,gCAApC;AACA,SAASC,sBAAT,QAAuC,mCAAvC;AACA,SAASC,mBAAT,QAAoC,gCAApC;AACA,SAAST,OAAO,IAAIU,mBAApB,QAA+C,gCAA/C;AAKA,SAASC,eAAT,QAAgC,qCAAhC;AACA,SAASC,cAAc,IAAIC,OAA3B,QAA0C,oCAA1C;AAiBA,SAASC,wBAAT,QAAyC,qCAAzC;AAOA,SACEC,SADF,EAEEC,UAFF,EAGEC,UAHF,EAIEC,gBAJF,QAKO,6BALP;AAMA,SACEC,kBADF,EAEEC,uBAFF,EAGEC,gBAHF,EAIEC,wBAJF,QAKO,yBALP;AAMA,SACEC,UADF,EAEEC,MAFF,EAGEC,SAHF,EAIEC,mBAJF,EAKEC,QALF,EAMEC,cANF,QAOO,gCAPP;AA+CA,SAAS5B,OAAO,IAAI6B,SAApB,QAAqC,wBAArC;AASA,SAAS7B,OAAO,IAAI8B,YAApB,QAAwC,2BAAxC;AAEA,SAASC,mCAAT,QAAoD,uCAApD;AAEAlC,UAAU","sourcesContent":["import { initialize } from './init';\n\nexport { Directions } from './Directions';\nexport { State } from './State';\nexport { default as gestureHandlerRootHOC } from './gestureHandlerRootHOC';\nexport { default as GestureHandlerRootView } from './GestureHandlerRootView';\nexport type {\n // event types\n GestureEvent,\n HandlerStateChangeEvent,\n // event payloads types\n GestureEventPayload,\n HandlerStateChangeEventPayload,\n // pointer events\n GestureTouchEvent,\n TouchData,\n // new api event types\n GestureUpdateEvent,\n GestureStateChangeEvent,\n} from './handlers/gestureHandlerCommon';\nexport type { GestureType } from './handlers/gestures/gesture';\nexport type {\n TapGestureHandlerEventPayload,\n TapGestureHandlerProps,\n} from './handlers/TapGestureHandler';\nexport type {\n ForceTouchGestureHandlerEventPayload,\n ForceTouchGestureHandlerProps,\n} from './handlers/ForceTouchGestureHandler';\nexport type { ForceTouchGestureChangeEventPayload } from './handlers/gestures/forceTouchGesture';\nexport type {\n LongPressGestureHandlerEventPayload,\n LongPressGestureHandlerProps,\n} from './handlers/LongPressGestureHandler';\nexport type {\n PanGestureHandlerEventPayload,\n PanGestureHandlerProps,\n} from './handlers/PanGestureHandler';\nexport type { PanGestureChangeEventPayload } from './handlers/gestures/panGesture';\nexport type {\n PinchGestureHandlerEventPayload,\n PinchGestureHandlerProps,\n} from './handlers/PinchGestureHandler';\nexport type { PinchGestureChangeEventPayload } from './handlers/gestures/pinchGesture';\nexport type {\n RotationGestureHandlerEventPayload,\n RotationGestureHandlerProps,\n} from './handlers/RotationGestureHandler';\nexport type {\n FlingGestureHandlerEventPayload,\n FlingGestureHandlerProps,\n} from './handlers/FlingGestureHandler';\nexport { TapGestureHandler } from './handlers/TapGestureHandler';\nexport { ForceTouchGestureHandler } from './handlers/ForceTouchGestureHandler';\nexport { LongPressGestureHandler } from './handlers/LongPressGestureHandler';\nexport { PanGestureHandler } from './handlers/PanGestureHandler';\nexport { PinchGestureHandler } from './handlers/PinchGestureHandler';\nexport { RotationGestureHandler } from './handlers/RotationGestureHandler';\nexport { FlingGestureHandler } from './handlers/FlingGestureHandler';\nexport { default as createNativeWrapper } from './handlers/createNativeWrapper';\nexport type {\n NativeViewGestureHandlerPayload,\n NativeViewGestureHandlerProps,\n} from './handlers/NativeViewGestureHandler';\nexport { GestureDetector } from './handlers/gestures/GestureDetector';\nexport { GestureObjects as Gesture } from './handlers/gestures/gestureObjects';\nexport type { TapGestureType as TapGesture } from './handlers/gestures/tapGesture';\nexport type { PanGestureType as PanGesture } from './handlers/gestures/panGesture';\nexport type { FlingGestureType as FlingGesture } from './handlers/gestures/flingGesture';\nexport type { LongPressGestureType as LongPressGesture } from './handlers/gestures/longPressGesture';\nexport type { PinchGestureType as PinchGesture } from './handlers/gestures/pinchGesture';\nexport type { RotationGestureType as RotationGesture } from './handlers/gestures/rotationGesture';\nexport type { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture';\nexport type { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture';\nexport type { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture';\nexport type {\n ComposedGestureType as ComposedGesture,\n RaceGestureType as RaceGesture,\n SimultaneousGestureType as SimultaneousGesture,\n ExclusiveGestureType as ExclusiveGesture,\n} from './handlers/gestures/gestureComposition';\nexport type { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager';\nexport { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler';\nexport type {\n RawButtonProps,\n BaseButtonProps,\n RectButtonProps,\n BorderlessButtonProps,\n} from './components/GestureButtons';\nexport {\n RawButton,\n BaseButton,\n RectButton,\n BorderlessButton,\n} from './components/GestureButtons';\nexport {\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n TouchableWithoutFeedback,\n} from './components/touchables';\nexport {\n ScrollView,\n Switch,\n TextInput,\n DrawerLayoutAndroid,\n FlatList,\n RefreshControl,\n} from './components/GestureComponents';\nexport type {\n //events\n GestureHandlerGestureEvent,\n GestureHandlerStateChangeEvent,\n //event payloads\n GestureHandlerGestureEventNativeEvent,\n GestureHandlerStateChangeNativeEvent,\n NativeViewGestureHandlerGestureEvent,\n NativeViewGestureHandlerStateChangeEvent,\n TapGestureHandlerGestureEvent,\n TapGestureHandlerStateChangeEvent,\n ForceTouchGestureHandlerGestureEvent,\n ForceTouchGestureHandlerStateChangeEvent,\n LongPressGestureHandlerGestureEvent,\n LongPressGestureHandlerStateChangeEvent,\n PanGestureHandlerGestureEvent,\n PanGestureHandlerStateChangeEvent,\n PinchGestureHandlerGestureEvent,\n PinchGestureHandlerStateChangeEvent,\n RotationGestureHandlerGestureEvent,\n RotationGestureHandlerStateChangeEvent,\n FlingGestureHandlerGestureEvent,\n FlingGestureHandlerStateChangeEvent,\n // handlers props\n NativeViewGestureHandlerProperties,\n TapGestureHandlerProperties,\n LongPressGestureHandlerProperties,\n PanGestureHandlerProperties,\n PinchGestureHandlerProperties,\n RotationGestureHandlerProperties,\n FlingGestureHandlerProperties,\n ForceTouchGestureHandlerProperties,\n // buttons props\n RawButtonProperties,\n BaseButtonProperties,\n RectButtonProperties,\n BorderlessButtonProperties,\n} from './handlers/gestureHandlerTypesCompat';\n\nexport { default as Swipeable } from './components/Swipeable';\nexport type {\n DrawerLayoutProps,\n DrawerPosition,\n DrawerState,\n DrawerType,\n DrawerLockMode,\n DrawerKeyboardDismissMode,\n} from './components/DrawerLayout';\nexport { default as DrawerLayout } from './components/DrawerLayout';\n\nexport { enableExperimentalWebImplementation } from './EnableExperimentalWebImplementation';\n\ninitialize();\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":["initialize","Directions","State","default","gestureHandlerRootHOC","GestureHandlerRootView","TapGestureHandler","ForceTouchGestureHandler","LongPressGestureHandler","PanGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","createNativeWrapper","GestureDetector","GestureObjects","Gesture","NativeViewGestureHandler","RawButton","BaseButton","RectButton","BorderlessButton","PureNativeButton","TouchableHighlight","TouchableNativeFeedback","TouchableOpacity","TouchableWithoutFeedback","ScrollView","Switch","TextInput","DrawerLayoutAndroid","FlatList","RefreshControl","Swipeable","DrawerLayout","enableExperimentalWebImplementation","enableLegacyWebImplementation"],"mappings":"AAAA,SAASA,UAAT,QAA2B,QAA3B;AAEA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,KAAT,QAAsB,SAAtB;AACA,SAASC,OAAO,IAAIC,qBAApB,QAAiD,oCAAjD;AACA,SAASD,OAAO,IAAIE,sBAApB,QAAkD,qCAAlD;AA+CA,SAASC,iBAAT,QAAkC,8BAAlC;AACA,SAASC,wBAAT,QAAyC,qCAAzC;AACA,SAASC,uBAAT,QAAwC,oCAAxC;AACA,SAASC,iBAAT,QAAkC,8BAAlC;AACA,SAASC,mBAAT,QAAoC,gCAApC;AACA,SAASC,sBAAT,QAAuC,mCAAvC;AACA,SAASC,mBAAT,QAAoC,gCAApC;AACA,SAAST,OAAO,IAAIU,mBAApB,QAA+C,gCAA/C;AAKA,SAASC,eAAT,QAAgC,qCAAhC;AACA,SAASC,cAAc,IAAIC,OAA3B,QAA0C,oCAA1C;AAiBA,SAASC,wBAAT,QAAyC,qCAAzC;AAOA,SACEC,SADF,EAEEC,UAFF,EAGEC,UAHF,EAIEC,gBAJF,EAKEC,gBALF,QAMO,6BANP;AAOA,SACEC,kBADF,EAEEC,uBAFF,EAGEC,gBAHF,EAIEC,wBAJF,QAKO,yBALP;AAMA,SACEC,UADF,EAEEC,MAFF,EAGEC,SAHF,EAIEC,mBAJF,EAKEC,QALF,EAMEC,cANF,QAOO,gCAPP;AA+CA,SAAS7B,OAAO,IAAI8B,SAApB,QAAqC,wBAArC;AASA,SAAS9B,OAAO,IAAI+B,YAApB,QAAwC,2BAAxC;AAEA,SACEC,mCADF,EAEEC,6BAFF,QAGO,8BAHP;AAKApC,UAAU","sourcesContent":["import { initialize } from './init';\n\nexport { Directions } from './Directions';\nexport { State } from './State';\nexport { default as gestureHandlerRootHOC } from './components/gestureHandlerRootHOC';\nexport { default as GestureHandlerRootView } from './components/GestureHandlerRootView';\nexport type {\n // event types\n GestureEvent,\n HandlerStateChangeEvent,\n // event payloads types\n GestureEventPayload,\n HandlerStateChangeEventPayload,\n // pointer events\n GestureTouchEvent,\n TouchData,\n // new api event types\n GestureUpdateEvent,\n GestureStateChangeEvent,\n} from './handlers/gestureHandlerCommon';\nexport type { GestureType } from './handlers/gestures/gesture';\nexport type {\n TapGestureHandlerEventPayload,\n TapGestureHandlerProps,\n} from './handlers/TapGestureHandler';\nexport type {\n ForceTouchGestureHandlerEventPayload,\n ForceTouchGestureHandlerProps,\n} from './handlers/ForceTouchGestureHandler';\nexport type { ForceTouchGestureChangeEventPayload } from './handlers/gestures/forceTouchGesture';\nexport type {\n LongPressGestureHandlerEventPayload,\n LongPressGestureHandlerProps,\n} from './handlers/LongPressGestureHandler';\nexport type {\n PanGestureHandlerEventPayload,\n PanGestureHandlerProps,\n} from './handlers/PanGestureHandler';\nexport type { PanGestureChangeEventPayload } from './handlers/gestures/panGesture';\nexport type {\n PinchGestureHandlerEventPayload,\n PinchGestureHandlerProps,\n} from './handlers/PinchGestureHandler';\nexport type { PinchGestureChangeEventPayload } from './handlers/gestures/pinchGesture';\nexport type {\n RotationGestureHandlerEventPayload,\n RotationGestureHandlerProps,\n} from './handlers/RotationGestureHandler';\nexport type {\n FlingGestureHandlerEventPayload,\n FlingGestureHandlerProps,\n} from './handlers/FlingGestureHandler';\nexport { TapGestureHandler } from './handlers/TapGestureHandler';\nexport { ForceTouchGestureHandler } from './handlers/ForceTouchGestureHandler';\nexport { LongPressGestureHandler } from './handlers/LongPressGestureHandler';\nexport { PanGestureHandler } from './handlers/PanGestureHandler';\nexport { PinchGestureHandler } from './handlers/PinchGestureHandler';\nexport { RotationGestureHandler } from './handlers/RotationGestureHandler';\nexport { FlingGestureHandler } from './handlers/FlingGestureHandler';\nexport { default as createNativeWrapper } from './handlers/createNativeWrapper';\nexport type {\n NativeViewGestureHandlerPayload,\n NativeViewGestureHandlerProps,\n} from './handlers/NativeViewGestureHandler';\nexport { GestureDetector } from './handlers/gestures/GestureDetector';\nexport { GestureObjects as Gesture } from './handlers/gestures/gestureObjects';\nexport type { TapGestureType as TapGesture } from './handlers/gestures/tapGesture';\nexport type { PanGestureType as PanGesture } from './handlers/gestures/panGesture';\nexport type { FlingGestureType as FlingGesture } from './handlers/gestures/flingGesture';\nexport type { LongPressGestureType as LongPressGesture } from './handlers/gestures/longPressGesture';\nexport type { PinchGestureType as PinchGesture } from './handlers/gestures/pinchGesture';\nexport type { RotationGestureType as RotationGesture } from './handlers/gestures/rotationGesture';\nexport type { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture';\nexport type { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture';\nexport type { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture';\nexport type {\n ComposedGestureType as ComposedGesture,\n RaceGestureType as RaceGesture,\n SimultaneousGestureType as SimultaneousGesture,\n ExclusiveGestureType as ExclusiveGesture,\n} from './handlers/gestures/gestureComposition';\nexport type { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager';\nexport { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler';\nexport type {\n RawButtonProps,\n BaseButtonProps,\n RectButtonProps,\n BorderlessButtonProps,\n} from './components/GestureButtons';\nexport {\n RawButton,\n BaseButton,\n RectButton,\n BorderlessButton,\n PureNativeButton,\n} from './components/GestureButtons';\nexport {\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n TouchableWithoutFeedback,\n} from './components/touchables';\nexport {\n ScrollView,\n Switch,\n TextInput,\n DrawerLayoutAndroid,\n FlatList,\n RefreshControl,\n} from './components/GestureComponents';\nexport type {\n //events\n GestureHandlerGestureEvent,\n GestureHandlerStateChangeEvent,\n //event payloads\n GestureHandlerGestureEventNativeEvent,\n GestureHandlerStateChangeNativeEvent,\n NativeViewGestureHandlerGestureEvent,\n NativeViewGestureHandlerStateChangeEvent,\n TapGestureHandlerGestureEvent,\n TapGestureHandlerStateChangeEvent,\n ForceTouchGestureHandlerGestureEvent,\n ForceTouchGestureHandlerStateChangeEvent,\n LongPressGestureHandlerGestureEvent,\n LongPressGestureHandlerStateChangeEvent,\n PanGestureHandlerGestureEvent,\n PanGestureHandlerStateChangeEvent,\n PinchGestureHandlerGestureEvent,\n PinchGestureHandlerStateChangeEvent,\n RotationGestureHandlerGestureEvent,\n RotationGestureHandlerStateChangeEvent,\n FlingGestureHandlerGestureEvent,\n FlingGestureHandlerStateChangeEvent,\n // handlers props\n NativeViewGestureHandlerProperties,\n TapGestureHandlerProperties,\n LongPressGestureHandlerProperties,\n PanGestureHandlerProperties,\n PinchGestureHandlerProperties,\n RotationGestureHandlerProperties,\n FlingGestureHandlerProperties,\n ForceTouchGestureHandlerProperties,\n // buttons props\n RawButtonProperties,\n BaseButtonProperties,\n RectButtonProperties,\n BorderlessButtonProperties,\n} from './handlers/gestureHandlerTypesCompat';\n\nexport { default as Swipeable } from './components/Swipeable';\nexport type {\n DrawerLayoutProps,\n DrawerPosition,\n DrawerState,\n DrawerType,\n DrawerLockMode,\n DrawerKeyboardDismissMode,\n} from './components/DrawerLayout';\nexport { default as DrawerLayout } from './components/DrawerLayout';\n\nexport {\n enableExperimentalWebImplementation,\n enableLegacyWebImplementation,\n} from './EnableNewWebImplementation';\n\ninitialize();\n"]}
@@ -42,10 +42,6 @@ export function isFabric() {
42
42
  // @ts-expect-error nativeFabricUIManager is not yet included in the RN types
43
43
  return !!((_global = global) !== null && _global !== void 0 && _global.nativeFabricUIManager);
44
44
  }
45
- export function shouldUseCodegenNativeComponent() {
46
- // use codegenNativeComponent starting with RN 0.68
47
- return REACT_NATIVE_VERSION.minor >= 68 || REACT_NATIVE_VERSION.major > 0;
48
- }
49
45
  export function isRemoteDebuggingEnabled() {
50
46
  // react-native-reanimated checks if in remote debugging in the same way
51
47
  // @ts-ignore global is available but node types are not included
@@ -1 +1 @@
1
- {"version":3,"sources":["utils.ts"],"names":["pack","majorStr","minorStr","version","split","REACT_NATIVE_VERSION","major","parseInt","minor","toArray","object","Array","isArray","withPrevAndCurrent","array","mapFn","previousArr","currentArr","transformedArr","forEach","current","i","previous","transformed","push","hasProperty","key","Object","prototype","hasOwnProperty","call","isJestEnv","global","process","env","JEST_WORKER_ID","tagMessage","msg","isFabric","nativeFabricUIManager","shouldUseCodegenNativeComponent","isRemoteDebuggingEnabled","nativeCallSyncHook","__REMOTEDEV__"],"mappings":"AAAA,OAAOA,IAAP,MAAiB,2BAAjB;AAEA,MAAM,CAACC,QAAD,EAAWC,QAAX,IAAuBF,IAAI,CAACG,OAAL,CAAaC,KAAb,CAAmB,GAAnB,CAA7B;AACA,OAAO,MAAMC,oBAAoB,GAAG;AAClCC,EAAAA,KAAK,EAAEC,QAAQ,CAACN,QAAD,EAAW,EAAX,CADmB;AAElCO,EAAAA,KAAK,EAAED,QAAQ,CAACL,QAAD,EAAW,EAAX;AAFmB,CAA7B;AAKP,OAAO,SAASO,OAAT,CAAoBC,MAApB,EAA0C;AAC/C,MAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAL,EAA4B;AAC1B,WAAO,CAACA,MAAD,CAAP;AACD;;AAED,SAAOA,MAAP;AACD;AAMD,OAAO,SAASG,kBAAT,CACLC,KADK,EAELC,KAFK,EAGU;AACf,QAAMC,WAAmC,GAAG,CAAC,IAAD,CAA5C;AACA,QAAMC,UAAU,GAAG,CAAC,GAAGH,KAAJ,CAAnB;AACA,QAAMI,cAA6B,GAAG,EAAtC;AACAD,EAAAA,UAAU,CAACE,OAAX,CAAmB,CAACC,OAAD,EAAUC,CAAV,KAAgB;AACjC,UAAMC,QAAQ,GAAGN,WAAW,CAACK,CAAD,CAA5B;AACA,UAAME,WAAW,GAAGR,KAAK,CAACO,QAAD,EAAWF,OAAX,CAAzB;AACAJ,IAAAA,WAAW,CAACQ,IAAZ,CAAiBD,WAAjB;AACAL,IAAAA,cAAc,CAACM,IAAf,CAAoBD,WAApB;AACD,GALD;AAMA,SAAOL,cAAP;AACD,C,CAED;;AACA,OAAO,SAASO,WAAT,CAAqBf,MAArB,EAAqCgB,GAArC,EAAkD;AACvD,SAAOC,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCpB,MAArC,EAA6CgB,GAA7C,CAAP;AACD;AAED,OAAO,SAASK,SAAT,GAA8B;AACnC;AACA,SAAON,WAAW,CAACO,MAAD,EAAS,SAAT,CAAX,IAAkC,CAAC,CAACC,OAAO,CAACC,GAAR,CAAYC,cAAvD;AACD;AAED,OAAO,SAASC,UAAT,CAAoBC,GAApB,EAAiC;AACtC,SAAQ,kCAAiCA,GAAI,EAA7C;AACD,C,CAED;AACA;;AACA,OAAO,SAASC,QAAT,GAA6B;AAAA;;AAClC;AACA,SAAO,CAAC,aAACN,MAAD,oCAAC,QAAQO,qBAAT,CAAR;AACD;AAED,OAAO,SAASC,+BAAT,GAAoD;AACzD;AACA,SAAOnC,oBAAoB,CAACG,KAArB,IAA8B,EAA9B,IAAoCH,oBAAoB,CAACC,KAArB,GAA6B,CAAxE;AACD;AAED,OAAO,SAASmC,wBAAT,GAA6C;AAClD;AACA;AACA,SAAO,CAAET,MAAD,CAAgBU,kBAAjB,IAAwCV,MAAD,CAAgBW,aAA9D;AACD","sourcesContent":["import pack from 'react-native/package.json';\n\nconst [majorStr, minorStr] = pack.version.split('.');\nexport const REACT_NATIVE_VERSION = {\n major: parseInt(majorStr, 10),\n minor: parseInt(minorStr, 10),\n};\n\nexport function toArray<T>(object: T | T[]): T[] {\n if (!Array.isArray(object)) {\n return [object];\n }\n\n return object;\n}\n\nexport type withPrevAndCurrentMapFn<T, Transformed> = (\n previous: Transformed | null,\n current: T\n) => Transformed;\nexport function withPrevAndCurrent<T, Transformed>(\n array: T[],\n mapFn: withPrevAndCurrentMapFn<T, Transformed>\n): Transformed[] {\n const previousArr: (null | Transformed)[] = [null];\n const currentArr = [...array];\n const transformedArr: Transformed[] = [];\n currentArr.forEach((current, i) => {\n const previous = previousArr[i];\n const transformed = mapFn(previous, current);\n previousArr.push(transformed);\n transformedArr.push(transformed);\n });\n return transformedArr;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasProperty(object: object, key: string) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nexport function isJestEnv(): boolean {\n // @ts-ignore Do not use `@types/node` because it will prioritise Node types over RN types which breaks the types (ex. setTimeout) in React Native projects.\n return hasProperty(global, 'process') && !!process.env.JEST_WORKER_ID;\n}\n\nexport function tagMessage(msg: string) {\n return `[react-native-gesture-handler] ${msg}`;\n}\n\n// helper method to check whether Fabric is enabled, however global.nativeFabricUIManager\n// may not be initialized before the first render\nexport function isFabric(): boolean {\n // @ts-expect-error nativeFabricUIManager is not yet included in the RN types\n return !!global?.nativeFabricUIManager;\n}\n\nexport function shouldUseCodegenNativeComponent(): boolean {\n // use codegenNativeComponent starting with RN 0.68\n return REACT_NATIVE_VERSION.minor >= 68 || REACT_NATIVE_VERSION.major > 0;\n}\n\nexport function isRemoteDebuggingEnabled(): boolean {\n // react-native-reanimated checks if in remote debugging in the same way\n // @ts-ignore global is available but node types are not included\n return !(global as any).nativeCallSyncHook || (global as any).__REMOTEDEV__;\n}\n"]}
1
+ {"version":3,"sources":["utils.ts"],"names":["pack","majorStr","minorStr","version","split","REACT_NATIVE_VERSION","major","parseInt","minor","toArray","object","Array","isArray","withPrevAndCurrent","array","mapFn","previousArr","currentArr","transformedArr","forEach","current","i","previous","transformed","push","hasProperty","key","Object","prototype","hasOwnProperty","call","isJestEnv","global","process","env","JEST_WORKER_ID","tagMessage","msg","isFabric","nativeFabricUIManager","isRemoteDebuggingEnabled","nativeCallSyncHook","__REMOTEDEV__"],"mappings":"AAAA,OAAOA,IAAP,MAAiB,2BAAjB;AAEA,MAAM,CAACC,QAAD,EAAWC,QAAX,IAAuBF,IAAI,CAACG,OAAL,CAAaC,KAAb,CAAmB,GAAnB,CAA7B;AACA,OAAO,MAAMC,oBAAoB,GAAG;AAClCC,EAAAA,KAAK,EAAEC,QAAQ,CAACN,QAAD,EAAW,EAAX,CADmB;AAElCO,EAAAA,KAAK,EAAED,QAAQ,CAACL,QAAD,EAAW,EAAX;AAFmB,CAA7B;AAKP,OAAO,SAASO,OAAT,CAAoBC,MAApB,EAA0C;AAC/C,MAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAL,EAA4B;AAC1B,WAAO,CAACA,MAAD,CAAP;AACD;;AAED,SAAOA,MAAP;AACD;AAMD,OAAO,SAASG,kBAAT,CACLC,KADK,EAELC,KAFK,EAGU;AACf,QAAMC,WAAmC,GAAG,CAAC,IAAD,CAA5C;AACA,QAAMC,UAAU,GAAG,CAAC,GAAGH,KAAJ,CAAnB;AACA,QAAMI,cAA6B,GAAG,EAAtC;AACAD,EAAAA,UAAU,CAACE,OAAX,CAAmB,CAACC,OAAD,EAAUC,CAAV,KAAgB;AACjC,UAAMC,QAAQ,GAAGN,WAAW,CAACK,CAAD,CAA5B;AACA,UAAME,WAAW,GAAGR,KAAK,CAACO,QAAD,EAAWF,OAAX,CAAzB;AACAJ,IAAAA,WAAW,CAACQ,IAAZ,CAAiBD,WAAjB;AACAL,IAAAA,cAAc,CAACM,IAAf,CAAoBD,WAApB;AACD,GALD;AAMA,SAAOL,cAAP;AACD,C,CAED;;AACA,OAAO,SAASO,WAAT,CAAqBf,MAArB,EAAqCgB,GAArC,EAAkD;AACvD,SAAOC,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCpB,MAArC,EAA6CgB,GAA7C,CAAP;AACD;AAED,OAAO,SAASK,SAAT,GAA8B;AACnC;AACA,SAAON,WAAW,CAACO,MAAD,EAAS,SAAT,CAAX,IAAkC,CAAC,CAACC,OAAO,CAACC,GAAR,CAAYC,cAAvD;AACD;AAED,OAAO,SAASC,UAAT,CAAoBC,GAApB,EAAiC;AACtC,SAAQ,kCAAiCA,GAAI,EAA7C;AACD,C,CAED;AACA;;AACA,OAAO,SAASC,QAAT,GAA6B;AAAA;;AAClC;AACA,SAAO,CAAC,aAACN,MAAD,oCAAC,QAAQO,qBAAT,CAAR;AACD;AAED,OAAO,SAASC,wBAAT,GAA6C;AAClD;AACA;AACA,SAAO,CAAER,MAAD,CAAgBS,kBAAjB,IAAwCT,MAAD,CAAgBU,aAA9D;AACD","sourcesContent":["import pack from 'react-native/package.json';\n\nconst [majorStr, minorStr] = pack.version.split('.');\nexport const REACT_NATIVE_VERSION = {\n major: parseInt(majorStr, 10),\n minor: parseInt(minorStr, 10),\n};\n\nexport function toArray<T>(object: T | T[]): T[] {\n if (!Array.isArray(object)) {\n return [object];\n }\n\n return object;\n}\n\nexport type withPrevAndCurrentMapFn<T, Transformed> = (\n previous: Transformed | null,\n current: T\n) => Transformed;\nexport function withPrevAndCurrent<T, Transformed>(\n array: T[],\n mapFn: withPrevAndCurrentMapFn<T, Transformed>\n): Transformed[] {\n const previousArr: (null | Transformed)[] = [null];\n const currentArr = [...array];\n const transformedArr: Transformed[] = [];\n currentArr.forEach((current, i) => {\n const previous = previousArr[i];\n const transformed = mapFn(previous, current);\n previousArr.push(transformed);\n transformedArr.push(transformed);\n });\n return transformedArr;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasProperty(object: object, key: string) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nexport function isJestEnv(): boolean {\n // @ts-ignore Do not use `@types/node` because it will prioritise Node types over RN types which breaks the types (ex. setTimeout) in React Native projects.\n return hasProperty(global, 'process') && !!process.env.JEST_WORKER_ID;\n}\n\nexport function tagMessage(msg: string) {\n return `[react-native-gesture-handler] ${msg}`;\n}\n\n// helper method to check whether Fabric is enabled, however global.nativeFabricUIManager\n// may not be initialized before the first render\nexport function isFabric(): boolean {\n // @ts-expect-error nativeFabricUIManager is not yet included in the RN types\n return !!global?.nativeFabricUIManager;\n}\n\nexport function isRemoteDebuggingEnabled(): boolean {\n // react-native-reanimated checks if in remote debugging in the same way\n // @ts-ignore global is available but node types are not included\n return !(global as any).nativeCallSyncHook || (global as any).__REMOTEDEV__;\n}\n"]}
@@ -147,11 +147,6 @@ export default class FlingGestureHandler extends GestureHandler {
147
147
  this.endFling();
148
148
  }
149
149
 
150
- onPointerCancel(event) {
151
- super.onPointerCancel(event);
152
- this.reset();
153
- }
154
-
155
150
  activate(force) {
156
151
  super.activate(force);
157
152
  this.end();
@@ -1 +1 @@
1
- {"version":3,"sources":["FlingGestureHandler.ts"],"names":["State","Direction","GestureHandler","DEFAULT_MAX_DURATION_MS","DEFAULT_MIN_ACCEPTABLE_DELTA","DEFAULT_DIRECTION","RIGHT","DEFAULT_NUMBER_OF_TOUCHES_REQUIRED","FlingGestureHandler","NaN","init","ref","propsRef","updateGestureConfig","enabled","props","config","direction","numberOfPointers","numberOfPointersRequired","transformNativeEvent","rect","view","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","startFling","startX","getLastX","keyPointer","startY","getLastY","begin","maxNumberOfPointersSimultaneously","delayTimeout","setTimeout","fail","maxDurationMs","tryEndFling","minAcceptableDelta","LEFT","UP","DOWN","clearTimeout","activate","endFling","onPointerDown","event","addToTracker","pointerId","newPointerAction","onPointerAdd","currentState","UNDETERMINED","BEGAN","getTrackedPointersCount","onPointerMove","track","onPointerUp","onUp","onPointerRemove","removeFromTracker","onPointerCancel","reset","force","end","resetConfig"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { Direction } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 800;\nconst DEFAULT_MIN_ACCEPTABLE_DELTA = 160;\nconst DEFAULT_DIRECTION = Direction.RIGHT;\nconst DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;\n\nexport default class FlingGestureHandler extends GestureHandler {\n private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n private direction = DEFAULT_DIRECTION;\n\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private minAcceptableDelta = DEFAULT_MIN_ACCEPTABLE_DELTA;\n private delayTimeout!: number;\n\n private startX = 0;\n private startY = 0;\n\n private maxNumberOfPointersSimultaneously = 0;\n private keyPointer = NaN;\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 super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.direction) {\n this.direction = this.config.direction;\n }\n\n if (this.config.numberOfPointers) {\n this.numberOfPointersRequired = this.config.numberOfPointers;\n }\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return {\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n private startFling(): void {\n this.startX = this.tracker.getLastX(this.keyPointer);\n this.startY = this.tracker.getLastY(this.keyPointer);\n\n this.begin();\n\n this.maxNumberOfPointersSimultaneously = 1;\n\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private tryEndFling(): boolean {\n if (\n this.maxNumberOfPointersSimultaneously ===\n this.numberOfPointersRequired &&\n ((this.direction & Direction.RIGHT &&\n this.tracker.getLastX(this.keyPointer) - this.startX >\n this.minAcceptableDelta) ||\n (this.direction & Direction.LEFT &&\n this.startX - this.tracker.getLastX(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.UP &&\n this.startY - this.tracker.getLastY(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.DOWN &&\n this.tracker.getLastY(this.keyPointer) - this.startY >\n this.minAcceptableDelta))\n ) {\n clearTimeout(this.delayTimeout);\n this.activate();\n\n return true;\n }\n\n return false;\n }\n\n private endFling() {\n if (!this.tryEndFling()) {\n this.fail();\n }\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n this.keyPointer = event.pointerId;\n\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n if (this.currentState === State.UNDETERMINED) {\n this.startFling();\n }\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n if (\n this.tracker.getTrackedPointersCount() >\n this.maxNumberOfPointersSimultaneously\n ) {\n this.maxNumberOfPointersSimultaneously =\n this.tracker.getTrackedPointersCount();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n super.onPointerMove(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n\n this.keyPointer = NaN;\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n if (this.currentState !== State.BEGAN) {\n return;\n }\n this.endFling();\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.reset();\n }\n\n public activate(force?: boolean): void {\n super.activate(force);\n this.end();\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n this.direction = DEFAULT_DIRECTION;\n }\n}\n"]}
1
+ {"version":3,"sources":["FlingGestureHandler.ts"],"names":["State","Direction","GestureHandler","DEFAULT_MAX_DURATION_MS","DEFAULT_MIN_ACCEPTABLE_DELTA","DEFAULT_DIRECTION","RIGHT","DEFAULT_NUMBER_OF_TOUCHES_REQUIRED","FlingGestureHandler","NaN","init","ref","propsRef","updateGestureConfig","enabled","props","config","direction","numberOfPointers","numberOfPointersRequired","transformNativeEvent","rect","view","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","startFling","startX","getLastX","keyPointer","startY","getLastY","begin","maxNumberOfPointersSimultaneously","delayTimeout","setTimeout","fail","maxDurationMs","tryEndFling","minAcceptableDelta","LEFT","UP","DOWN","clearTimeout","activate","endFling","onPointerDown","event","addToTracker","pointerId","newPointerAction","onPointerAdd","currentState","UNDETERMINED","BEGAN","getTrackedPointersCount","onPointerMove","track","onPointerUp","onUp","onPointerRemove","removeFromTracker","force","end","resetConfig"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { Direction } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 800;\nconst DEFAULT_MIN_ACCEPTABLE_DELTA = 160;\nconst DEFAULT_DIRECTION = Direction.RIGHT;\nconst DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;\n\nexport default class FlingGestureHandler extends GestureHandler {\n private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n private direction = DEFAULT_DIRECTION;\n\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private minAcceptableDelta = DEFAULT_MIN_ACCEPTABLE_DELTA;\n private delayTimeout!: number;\n\n private startX = 0;\n private startY = 0;\n\n private maxNumberOfPointersSimultaneously = 0;\n private keyPointer = NaN;\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 super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.direction) {\n this.direction = this.config.direction;\n }\n\n if (this.config.numberOfPointers) {\n this.numberOfPointersRequired = this.config.numberOfPointers;\n }\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return {\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n private startFling(): void {\n this.startX = this.tracker.getLastX(this.keyPointer);\n this.startY = this.tracker.getLastY(this.keyPointer);\n\n this.begin();\n\n this.maxNumberOfPointersSimultaneously = 1;\n\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private tryEndFling(): boolean {\n if (\n this.maxNumberOfPointersSimultaneously ===\n this.numberOfPointersRequired &&\n ((this.direction & Direction.RIGHT &&\n this.tracker.getLastX(this.keyPointer) - this.startX >\n this.minAcceptableDelta) ||\n (this.direction & Direction.LEFT &&\n this.startX - this.tracker.getLastX(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.UP &&\n this.startY - this.tracker.getLastY(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.DOWN &&\n this.tracker.getLastY(this.keyPointer) - this.startY >\n this.minAcceptableDelta))\n ) {\n clearTimeout(this.delayTimeout);\n this.activate();\n\n return true;\n }\n\n return false;\n }\n\n private endFling() {\n if (!this.tryEndFling()) {\n this.fail();\n }\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n this.keyPointer = event.pointerId;\n\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n if (this.currentState === State.UNDETERMINED) {\n this.startFling();\n }\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n if (\n this.tracker.getTrackedPointersCount() >\n this.maxNumberOfPointersSimultaneously\n ) {\n this.maxNumberOfPointersSimultaneously =\n this.tracker.getTrackedPointersCount();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n super.onPointerMove(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n\n this.keyPointer = NaN;\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n if (this.currentState !== State.BEGAN) {\n return;\n }\n this.endFling();\n }\n\n public activate(force?: boolean): void {\n super.activate(force);\n this.end();\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n this.direction = DEFAULT_DIRECTION;\n }\n}\n"]}
@@ -348,6 +348,9 @@ export default class GestureHandler {
348
348
  if (this.config.needsPointerData) {
349
349
  this.sendTouchEvent(event);
350
350
  }
351
+
352
+ this.cancel();
353
+ this.reset();
351
354
  }
352
355
 
353
356
  onPointerOutOfBounds(event) {
@@ -1 +1 @@
1
- {"version":3,"sources":["GestureHandler.ts"],"names":["findNodeHandle","State","PointerType","TouchEventType","EventTypes","GestureHandlerOrchestrator","InteractionManager","PointerEventManager","PointerTracker","TouchEventManager","isPointerInBounds","GestureHandler","constructor","UNDETERMINED","enabled","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","hasCustomActivationCriteria","init","ref","setView","addEventManager","view","Error","handlerTag","style","config","userSelect","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerOut","onPointerOut","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setListeners","eventManagers","push","onCancel","onReset","resetProgress","reset","tracker","resetTracker","forEach","resetManager","moveToState","sendIfDisabled","getTrackedPointersCount","needsPointerData","isFinished","cancelTouches","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","FAILED","cursor","cancel","CANCELLED","activate","_force","end","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","shouldCancellWhenOutside","out","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","target","timeStamp","Date","now","rect","getBoundingClientRect","all","changed","trackerData","getData","size","has","pointerId","element","key","id","getMappedTouchEventId","lastX","left","lastY","top","absoluteX","absoluteY","eventType","CANCEL","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","shouldCancelWhenOutside","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hitSlop","right","width","height","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","resetConfig","getTag","setTag","tag","getConfig","getShouldEnableGestureOnSetup","getView","getEventManagers","getTracker","getTrackedPointersID","getState","isEnabled","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { findNodeHandle } from 'react-native';\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n PointerType,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerEventManager from '../tools/PointerEventManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport TouchEventManager from '../tools/TouchEventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria: boolean;\n protected enabled = false;\n\n private ref!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n protected view!: HTMLElement;\n\n protected eventManagers: EventManager[] = [];\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.NONE;\n\n public constructor() {\n this.hasCustomActivationCriteria = false;\n }\n\n //\n // Initializing handler\n //\n\n protected init(ref: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.ref = ref;\n\n this.currentState = State.UNDETERMINED;\n\n this.setView();\n this.addEventManager(new PointerEventManager(this.view));\n this.addEventManager(new TouchEventManager(this.view));\n }\n\n private setView() {\n if (!this.ref) {\n throw new Error(\n `Cannot find HTML Element for handler ${this.handlerTag}`\n );\n }\n\n this.view = findNodeHandle(this.ref) as unknown as HTMLElement;\n this.view.style['touchAction'] = 'none';\n //@ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = 'none';\n\n if (!this.config.userSelect) {\n this.view.style['webkitUserSelect'] = 'none';\n this.view.style['userSelect'] = 'none';\n } else {\n this.view.style['webkitUserSelect'] = this.config.userSelect;\n this.view.style['userSelect'] = this.config.userSelect;\n }\n }\n\n private addEventManager(manager: EventManager): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerOut(this.onPointerOut.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setListeners();\n\n this.eventManagers.push(manager);\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.eventManagers.forEach((manager: EventManager) =>\n manager.resetManager()\n );\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n if (\n this.tracker.getTrackedPointersCount() > 0 &&\n this.config.needsPointerData &&\n this.isFinished()\n ) {\n this.cancelTouches();\n }\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.FAILED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n this.moveToState(State.CANCELLED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n }\n\n public activate(_force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.ACTIVE);\n this.view.style.cursor = 'grab';\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n this.moveToState(State.END);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOut(event: AdaptedEvent): void {\n if (this.shouldCancellWhenOutside) {\n switch (this.currentState) {\n case State.ACTIVE:\n this.cancel();\n break;\n case State.BEGAN:\n this.fail();\n break;\n }\n return;\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined =\n this.transformTouchEvent(event);\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =\n this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: isPointerInBounds(this.view, {\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.ref,\n oldState: newState !== oldState ? oldState : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.left,\n y: event.y - rect.top,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n private cancelTouches(): void {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent() {\n return {};\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const width = this.view.getBoundingClientRect().width;\n const height = this.view.getBoundingClientRect().height;\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect: DOMRect = this.view.getBoundingClientRect();\n const offsetX: number = this.tracker.getLastX() - rect.left;\n const offsetY: number = this.tracker.getLastY() - rect.top;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n public isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return (\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom\n );\n }\n\n protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n protected getConfig() {\n return this.config;\n }\n\n public getShouldEnableGestureOnSetup(): boolean {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n\n public getView(): HTMLElement {\n return this.view;\n }\n\n public getEventManagers(): EventManager[] {\n return this.eventManagers;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n private isFinished(): boolean {\n return (\n this.currentState === State.END ||\n this.currentState === State.FAILED ||\n this.currentState === State.CANCELLED\n );\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancellWhenOutside = shouldCancel;\n }\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
1
+ {"version":3,"sources":["GestureHandler.ts"],"names":["findNodeHandle","State","PointerType","TouchEventType","EventTypes","GestureHandlerOrchestrator","InteractionManager","PointerEventManager","PointerTracker","TouchEventManager","isPointerInBounds","GestureHandler","constructor","UNDETERMINED","enabled","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","hasCustomActivationCriteria","init","ref","setView","addEventManager","view","Error","handlerTag","style","config","userSelect","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerOut","onPointerOut","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setListeners","eventManagers","push","onCancel","onReset","resetProgress","reset","tracker","resetTracker","forEach","resetManager","moveToState","sendIfDisabled","getTrackedPointersCount","needsPointerData","isFinished","cancelTouches","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","FAILED","cursor","cancel","CANCELLED","activate","_force","end","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","shouldCancellWhenOutside","out","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","target","timeStamp","Date","now","rect","getBoundingClientRect","all","changed","trackerData","getData","size","has","pointerId","element","key","id","getMappedTouchEventId","lastX","left","lastY","top","absoluteX","absoluteY","eventType","CANCEL","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","shouldCancelWhenOutside","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hitSlop","right","width","height","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","resetConfig","getTag","setTag","tag","getConfig","getShouldEnableGestureOnSetup","getView","getEventManagers","getTracker","getTrackedPointersID","getState","isEnabled","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { findNodeHandle } from 'react-native';\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n PointerType,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerEventManager from '../tools/PointerEventManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport TouchEventManager from '../tools/TouchEventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria: boolean;\n protected enabled = false;\n\n private ref!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n protected view!: HTMLElement;\n\n protected eventManagers: EventManager[] = [];\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.NONE;\n\n public constructor() {\n this.hasCustomActivationCriteria = false;\n }\n\n //\n // Initializing handler\n //\n\n protected init(ref: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.ref = ref;\n\n this.currentState = State.UNDETERMINED;\n\n this.setView();\n this.addEventManager(new PointerEventManager(this.view));\n this.addEventManager(new TouchEventManager(this.view));\n }\n\n private setView() {\n if (!this.ref) {\n throw new Error(\n `Cannot find HTML Element for handler ${this.handlerTag}`\n );\n }\n\n this.view = findNodeHandle(this.ref) as unknown as HTMLElement;\n this.view.style['touchAction'] = 'none';\n //@ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = 'none';\n\n if (!this.config.userSelect) {\n this.view.style['webkitUserSelect'] = 'none';\n this.view.style['userSelect'] = 'none';\n } else {\n this.view.style['webkitUserSelect'] = this.config.userSelect;\n this.view.style['userSelect'] = this.config.userSelect;\n }\n }\n\n private addEventManager(manager: EventManager): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerOut(this.onPointerOut.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setListeners();\n\n this.eventManagers.push(manager);\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.eventManagers.forEach((manager: EventManager) =>\n manager.resetManager()\n );\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n if (\n this.tracker.getTrackedPointersCount() > 0 &&\n this.config.needsPointerData &&\n this.isFinished()\n ) {\n this.cancelTouches();\n }\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.FAILED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n this.moveToState(State.CANCELLED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n }\n\n public activate(_force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.ACTIVE);\n this.view.style.cursor = 'grab';\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n this.moveToState(State.END);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOut(event: AdaptedEvent): void {\n if (this.shouldCancellWhenOutside) {\n switch (this.currentState) {\n case State.ACTIVE:\n this.cancel();\n break;\n case State.BEGAN:\n this.fail();\n break;\n }\n return;\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n\n this.cancel();\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined =\n this.transformTouchEvent(event);\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =\n this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: isPointerInBounds(this.view, {\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.ref,\n oldState: newState !== oldState ? oldState : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.left,\n y: event.y - rect.top,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n private cancelTouches(): void {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent() {\n return {};\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const width = this.view.getBoundingClientRect().width;\n const height = this.view.getBoundingClientRect().height;\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect: DOMRect = this.view.getBoundingClientRect();\n const offsetX: number = this.tracker.getLastX() - rect.left;\n const offsetY: number = this.tracker.getLastY() - rect.top;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n public isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return (\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom\n );\n }\n\n protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n protected getConfig() {\n return this.config;\n }\n\n public getShouldEnableGestureOnSetup(): boolean {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n\n public getView(): HTMLElement {\n return this.view;\n }\n\n public getEventManagers(): EventManager[] {\n return this.eventManagers;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n private isFinished(): boolean {\n return (\n this.currentState === State.END ||\n this.currentState === State.FAILED ||\n this.currentState === State.CANCELLED\n );\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancellWhenOutside = shouldCancel;\n }\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
@@ -45,10 +45,5 @@ export default class ManualGestureHandler extends GestureHandler {
45
45
  this.tracker.removeFromTracker(event.pointerId);
46
46
  }
47
47
 
48
- onPointerCancel(event) {
49
- super.onPointerCancel(event);
50
- this.reset();
51
- }
52
-
53
48
  }
54
49
  //# sourceMappingURL=ManualGestureHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["ManualGestureHandler.ts"],"names":["GestureHandler","ManualGestureHandler","init","ref","propsRef","updateGestureConfig","enabled","props","onPointerDown","event","tracker","addToTracker","begin","onPointerAdd","onPointerMove","track","onPointerOutOfBounds","onPointerUp","removeFromTracker","pointerId","onPointerRemove","onPointerCancel","reset"],"mappings":"AACA,OAAOA,cAAP,MAA2B,kBAA3B;AAEA,eAAe,MAAMC,oBAAN,SAAmCD,cAAnC,CAAkD;AACxDE,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAkD;AAC3D,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;AACD;;AAESC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACA,SAAKG,KAAL;AACD;;AAESC,EAAAA,YAAY,CAACJ,KAAD,EAA4B;AAChD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMI,YAAN,CAAmBJ,KAAnB;AACD;;AAESK,EAAAA,aAAa,CAACL,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaK,KAAb,CAAmBN,KAAnB;AACA,UAAMK,aAAN,CAAoBL,KAApB;AACD;;AAESO,EAAAA,oBAAoB,CAACP,KAAD,EAA4B;AACxD,SAAKC,OAAL,CAAaK,KAAb,CAAmBN,KAAnB;AACA,UAAMO,oBAAN,CAA2BP,KAA3B;AACD;;AAESQ,EAAAA,WAAW,CAACR,KAAD,EAA4B;AAC/C,UAAMQ,WAAN,CAAkBR,KAAlB;AACA,SAAKC,OAAL,CAAaQ,iBAAb,CAA+BT,KAAK,CAACU,SAArC;AACD;;AAESC,EAAAA,eAAe,CAACX,KAAD,EAA4B;AACnD,UAAMW,eAAN,CAAsBX,KAAtB;AACA,SAAKC,OAAL,CAAaQ,iBAAb,CAA+BT,KAAK,CAACU,SAArC;AACD;;AAESE,EAAAA,eAAe,CAACZ,KAAD,EAA4B;AACnD,UAAMY,eAAN,CAAsBZ,KAAtB;AACA,SAAKa,KAAL;AACD;;AA3C8D","sourcesContent":["import { AdaptedEvent, Config } from '../interfaces';\nimport GestureHandler from './GestureHandler';\n\nexport default class ManualGestureHandler extends GestureHandler {\n public init(ref: number, propsRef: React.RefObject<unknown>) {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.begin();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tracker.track(event);\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.reset();\n }\n}\n"]}
1
+ {"version":3,"sources":["ManualGestureHandler.ts"],"names":["GestureHandler","ManualGestureHandler","init","ref","propsRef","updateGestureConfig","enabled","props","onPointerDown","event","tracker","addToTracker","begin","onPointerAdd","onPointerMove","track","onPointerOutOfBounds","onPointerUp","removeFromTracker","pointerId","onPointerRemove"],"mappings":"AACA,OAAOA,cAAP,MAA2B,kBAA3B;AAEA,eAAe,MAAMC,oBAAN,SAAmCD,cAAnC,CAAkD;AACxDE,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAkD;AAC3D,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;AACD;;AAESC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACA,SAAKG,KAAL;AACD;;AAESC,EAAAA,YAAY,CAACJ,KAAD,EAA4B;AAChD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMI,YAAN,CAAmBJ,KAAnB;AACD;;AAESK,EAAAA,aAAa,CAACL,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaK,KAAb,CAAmBN,KAAnB;AACA,UAAMK,aAAN,CAAoBL,KAApB;AACD;;AAESO,EAAAA,oBAAoB,CAACP,KAAD,EAA4B;AACxD,SAAKC,OAAL,CAAaK,KAAb,CAAmBN,KAAnB;AACA,UAAMO,oBAAN,CAA2BP,KAA3B;AACD;;AAESQ,EAAAA,WAAW,CAACR,KAAD,EAA4B;AAC/C,UAAMQ,WAAN,CAAkBR,KAAlB;AACA,SAAKC,OAAL,CAAaQ,iBAAb,CAA+BT,KAAK,CAACU,SAArC;AACD;;AAESC,EAAAA,eAAe,CAACX,KAAD,EAA4B;AACnD,UAAMW,eAAN,CAAsBX,KAAtB;AACA,SAAKC,OAAL,CAAaQ,iBAAb,CAA+BT,KAAK,CAACU,SAArC;AACD;;AAtC8D","sourcesContent":["import { AdaptedEvent, Config } from '../interfaces';\nimport GestureHandler from './GestureHandler';\n\nexport default class ManualGestureHandler extends GestureHandler {\n public init(ref: number, propsRef: React.RefObject<unknown>) {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.begin();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tracker.track(event);\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n}\n"]}
@@ -120,12 +120,6 @@ export default class NativeViewGestureHandler extends GestureHandler {
120
120
  }
121
121
  }
122
122
 
123
- onPointerCancel(event) {
124
- super.onPointerCancel(event);
125
- this.cancel();
126
- this.reset();
127
- }
128
-
129
123
  shouldRecognizeSimultaneously(handler) {
130
124
  if (super.shouldRecognizeSimultaneously(handler)) {
131
125
  return true;
@@ -1 +1 @@
1
- {"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["State","DEFAULT_TOUCH_SLOP","GestureHandler","NativeViewGestureHandler","init","ref","propsRef","setShouldCancelWhenOutside","view","style","hasAttribute","buttonRole","updateGestureConfig","enabled","props","config","shouldActivateOnStart","undefined","disallowInterruption","resetConfig","onPointerDown","event","tracker","addToTracker","newPointerAction","onPointerAdd","startX","getLastAvgX","startY","getLastAvgY","currentState","UNDETERMINED","begin","activate","onPointerMove","track","dx","dy","distSq","minDistSq","BEGAN","onPointerOut","cancel","onPointerUp","onUp","onPointerRemove","removeFromTracker","pointerId","getTrackedPointersCount","ACTIVE","end","fail","onPointerCancel","reset","shouldRecognizeSimultaneously","handler","getState","disallowsInterruption","canBeInterrupted","getTag","shouldBeCancelledByOther","_handler"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nexport default class NativeViewGestureHandler extends GestureHandler {\n private buttonRole!: boolean;\n\n //TODO: Implement logic for activation on start\n //@ts-ignore Logic yet to be implemented\n private shouldActivateOnStart = false;\n private disallowInterruption = false;\n\n private startX = 0;\n private startY = 0;\n private minDistSq = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(true);\n\n this.view.style['touchAction'] = 'auto';\n\n //@ts-ignore Turns on defualt touch behavior on Safari\n this.view.style['WebkitTouchCallout'] = 'auto';\n\n if (this.view.hasAttribute('role')) {\n this.buttonRole = true;\n } else {\n this.buttonRole = false;\n }\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.shouldActivateOnStart !== undefined) {\n this.shouldActivateOnStart = this.config.shouldActivateOnStart;\n }\n if (this.config.disallowInterruption !== undefined) {\n this.disallowInterruption = this.config.disallowInterruption;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n this.startX = this.tracker.getLastAvgX();\n this.startY = this.tracker.getLastAvgY();\n\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.begin();\n if (this.buttonRole) {\n this.activate();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n const dx = this.startX - this.tracker.getLastAvgX();\n const dy = this.startY - this.tracker.getLastAvgY();\n const distSq = dx * dx + dy * dy;\n\n if (\n !this.buttonRole &&\n distSq >= this.minDistSq &&\n this.currentState === State.BEGAN\n ) {\n this.activate();\n }\n }\n\n protected onPointerOut(): void {\n this.cancel();\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.tracker.getTrackedPointersCount() === 0) {\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.cancel();\n this.reset();\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (super.shouldRecognizeSimultaneously(handler)) {\n return true;\n }\n\n if (\n handler instanceof NativeViewGestureHandler &&\n handler.getState() === State.ACTIVE &&\n handler.disallowsInterruption()\n ) {\n return false;\n }\n\n const canBeInterrupted = !this.disallowInterruption;\n\n if (\n this.currentState === State.ACTIVE &&\n handler.getState() === State.ACTIVE &&\n canBeInterrupted\n ) {\n return false;\n }\n\n return (\n this.currentState === State.ACTIVE &&\n canBeInterrupted &&\n handler.getTag() > 0\n );\n }\n\n public shouldBeCancelledByOther(_handler: GestureHandler): boolean {\n return !this.disallowInterruption;\n }\n\n public disallowsInterruption(): boolean {\n return this.disallowInterruption;\n }\n}\n"]}
1
+ {"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["State","DEFAULT_TOUCH_SLOP","GestureHandler","NativeViewGestureHandler","init","ref","propsRef","setShouldCancelWhenOutside","view","style","hasAttribute","buttonRole","updateGestureConfig","enabled","props","config","shouldActivateOnStart","undefined","disallowInterruption","resetConfig","onPointerDown","event","tracker","addToTracker","newPointerAction","onPointerAdd","startX","getLastAvgX","startY","getLastAvgY","currentState","UNDETERMINED","begin","activate","onPointerMove","track","dx","dy","distSq","minDistSq","BEGAN","onPointerOut","cancel","onPointerUp","onUp","onPointerRemove","removeFromTracker","pointerId","getTrackedPointersCount","ACTIVE","end","fail","shouldRecognizeSimultaneously","handler","getState","disallowsInterruption","canBeInterrupted","getTag","shouldBeCancelledByOther","_handler"],"mappings":";;AAAA,SAASA,KAAT,QAAsB,aAAtB;AACA,SAASC,kBAAT,QAAmC,cAAnC;AAGA,OAAOC,cAAP,MAA2B,kBAA3B;AACA,eAAe,MAAMC,wBAAN,SAAuCD,cAAvC,CAAsD;AAAA;AAAA;;AAAA;;AAAA,mDAKnC,KALmC;;AAAA,kDAMpC,KANoC;;AAAA,oCAQlD,CARkD;;AAAA,oCASlD,CATkD;;AAAA,uCAU/CD,kBAAkB,GAAGA,kBAV0B;AAAA;;AAY5DG,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAwD;AACjE,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AAEA,SAAKC,0BAAL,CAAgC,IAAhC;AAEA,SAAKC,IAAL,CAAUC,KAAV,CAAgB,aAAhB,IAAiC,MAAjC,CALiE,CAOjE;;AACA,SAAKD,IAAL,CAAUC,KAAV,CAAgB,oBAAhB,IAAwC,MAAxC;;AAEA,QAAI,KAAKD,IAAL,CAAUE,YAAV,CAAuB,MAAvB,CAAJ,EAAoC;AAClC,WAAKC,UAAL,GAAkB,IAAlB;AACD,KAFD,MAEO;AACL,WAAKA,UAAL,GAAkB,KAAlB;AACD;AACF;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;;AAEA,QAAI,KAAKC,MAAL,CAAYC,qBAAZ,KAAsCC,SAA1C,EAAqD;AACnD,WAAKD,qBAAL,GAA6B,KAAKD,MAAL,CAAYC,qBAAzC;AACD;;AACD,QAAI,KAAKD,MAAL,CAAYG,oBAAZ,KAAqCD,SAAzC,EAAoD;AAClD,WAAKC,oBAAL,GAA4B,KAAKH,MAAL,CAAYG,oBAAxC;AACD;AACF;;AAESC,EAAAA,WAAW,GAAS;AAC5B,UAAMA,WAAN;AACD;;AAESC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACA,SAAKG,gBAAL;AACD;;AAESC,EAAAA,YAAY,CAACJ,KAAD,EAA4B;AAChD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMI,YAAN,CAAmBJ,KAAnB;AACA,SAAKG,gBAAL;AACD;;AAEOA,EAAAA,gBAAgB,GAAS;AAC/B,SAAKE,MAAL,GAAc,KAAKJ,OAAL,CAAaK,WAAb,EAAd;AACA,SAAKC,MAAL,GAAc,KAAKN,OAAL,CAAaO,WAAb,EAAd;;AAEA,QAAI,KAAKC,YAAL,KAAsB9B,KAAK,CAAC+B,YAAhC,EAA8C;AAC5C;AACD;;AAED,SAAKC,KAAL;;AACA,QAAI,KAAKrB,UAAT,EAAqB;AACnB,WAAKsB,QAAL;AACD;AACF;;AAESC,EAAAA,aAAa,CAACb,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaa,KAAb,CAAmBd,KAAnB;AAEA,UAAMe,EAAE,GAAG,KAAKV,MAAL,GAAc,KAAKJ,OAAL,CAAaK,WAAb,EAAzB;AACA,UAAMU,EAAE,GAAG,KAAKT,MAAL,GAAc,KAAKN,OAAL,CAAaO,WAAb,EAAzB;AACA,UAAMS,MAAM,GAAGF,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAA9B;;AAEA,QACE,CAAC,KAAK1B,UAAN,IACA2B,MAAM,IAAI,KAAKC,SADf,IAEA,KAAKT,YAAL,KAAsB9B,KAAK,CAACwC,KAH9B,EAIE;AACA,WAAKP,QAAL;AACD;AACF;;AAESQ,EAAAA,YAAY,GAAS;AAC7B,SAAKC,MAAL;AACD;;AAESC,EAAAA,WAAW,CAACtB,KAAD,EAA4B;AAC/C,UAAMsB,WAAN,CAAkBtB,KAAlB;AACA,SAAKuB,IAAL,CAAUvB,KAAV;AACD;;AAESwB,EAAAA,eAAe,CAACxB,KAAD,EAA4B;AACnD,UAAMwB,eAAN,CAAsBxB,KAAtB;AACA,SAAKuB,IAAL,CAAUvB,KAAV;AACD;;AAEOuB,EAAAA,IAAI,CAACvB,KAAD,EAA4B;AACtC,SAAKC,OAAL,CAAawB,iBAAb,CAA+BzB,KAAK,CAAC0B,SAArC;;AAEA,QAAI,KAAKzB,OAAL,CAAa0B,uBAAb,OAA2C,CAA/C,EAAkD;AAChD,UAAI,KAAKlB,YAAL,KAAsB9B,KAAK,CAACiD,MAAhC,EAAwC;AACtC,aAAKC,GAAL;AACD,OAFD,MAEO;AACL,aAAKC,IAAL;AACD;AACF;AACF;;AAEMC,EAAAA,6BAA6B,CAACC,OAAD,EAAmC;AACrE,QAAI,MAAMD,6BAAN,CAAoCC,OAApC,CAAJ,EAAkD;AAChD,aAAO,IAAP;AACD;;AAED,QACEA,OAAO,YAAYlD,wBAAnB,IACAkD,OAAO,CAACC,QAAR,OAAuBtD,KAAK,CAACiD,MAD7B,IAEAI,OAAO,CAACE,qBAAR,EAHF,EAIE;AACA,aAAO,KAAP;AACD;;AAED,UAAMC,gBAAgB,GAAG,CAAC,KAAKtC,oBAA/B;;AAEA,QACE,KAAKY,YAAL,KAAsB9B,KAAK,CAACiD,MAA5B,IACAI,OAAO,CAACC,QAAR,OAAuBtD,KAAK,CAACiD,MAD7B,IAEAO,gBAHF,EAIE;AACA,aAAO,KAAP;AACD;;AAED,WACE,KAAK1B,YAAL,KAAsB9B,KAAK,CAACiD,MAA5B,IACAO,gBADA,IAEAH,OAAO,CAACI,MAAR,KAAmB,CAHrB;AAKD;;AAEMC,EAAAA,wBAAwB,CAACC,QAAD,EAAoC;AACjE,WAAO,CAAC,KAAKzC,oBAAb;AACD;;AAEMqC,EAAAA,qBAAqB,GAAY;AACtC,WAAO,KAAKrC,oBAAZ;AACD;;AApJkE","sourcesContent":["import { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nexport default class NativeViewGestureHandler extends GestureHandler {\n private buttonRole!: boolean;\n\n //TODO: Implement logic for activation on start\n //@ts-ignore Logic yet to be implemented\n private shouldActivateOnStart = false;\n private disallowInterruption = false;\n\n private startX = 0;\n private startY = 0;\n private minDistSq = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(true);\n\n this.view.style['touchAction'] = 'auto';\n\n //@ts-ignore Turns on defualt touch behavior on Safari\n this.view.style['WebkitTouchCallout'] = 'auto';\n\n if (this.view.hasAttribute('role')) {\n this.buttonRole = true;\n } else {\n this.buttonRole = false;\n }\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.shouldActivateOnStart !== undefined) {\n this.shouldActivateOnStart = this.config.shouldActivateOnStart;\n }\n if (this.config.disallowInterruption !== undefined) {\n this.disallowInterruption = this.config.disallowInterruption;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n this.startX = this.tracker.getLastAvgX();\n this.startY = this.tracker.getLastAvgY();\n\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.begin();\n if (this.buttonRole) {\n this.activate();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n const dx = this.startX - this.tracker.getLastAvgX();\n const dy = this.startY - this.tracker.getLastAvgY();\n const distSq = dx * dx + dy * dy;\n\n if (\n !this.buttonRole &&\n distSq >= this.minDistSq &&\n this.currentState === State.BEGAN\n ) {\n this.activate();\n }\n }\n\n protected onPointerOut(): void {\n this.cancel();\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.tracker.getTrackedPointersCount() === 0) {\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (super.shouldRecognizeSimultaneously(handler)) {\n return true;\n }\n\n if (\n handler instanceof NativeViewGestureHandler &&\n handler.getState() === State.ACTIVE &&\n handler.disallowsInterruption()\n ) {\n return false;\n }\n\n const canBeInterrupted = !this.disallowInterruption;\n\n if (\n this.currentState === State.ACTIVE &&\n handler.getState() === State.ACTIVE &&\n canBeInterrupted\n ) {\n return false;\n }\n\n return (\n this.currentState === State.ACTIVE &&\n canBeInterrupted &&\n handler.getTag() > 0\n );\n }\n\n public shouldBeCancelledByOther(_handler: GestureHandler): boolean {\n return !this.disallowInterruption;\n }\n\n public disallowsInterruption(): boolean {\n return this.disallowInterruption;\n }\n}\n"]}
@@ -1,6 +1,5 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
2
 
3
- import { PixelRatio } from 'react-native';
4
3
  import { State } from '../../State';
5
4
  import { DEFAULT_TOUCH_SLOP } from '../constants';
6
5
  import GestureHandler from './GestureHandler';
@@ -194,7 +193,6 @@ export default class PanGestureHandler extends GestureHandler {
194
193
 
195
194
  transformNativeEvent() {
196
195
  const rect = this.view.getBoundingClientRect();
197
- const ratio = PixelRatio.get();
198
196
  const translationX = this.getTranslationX();
199
197
  const translationY = this.getTranslationY();
200
198
  return {
@@ -202,8 +200,8 @@ export default class PanGestureHandler extends GestureHandler {
202
200
  translationY: isNaN(translationY) ? 0 : translationY,
203
201
  absoluteX: this.tracker.getLastAvgX(),
204
202
  absoluteY: this.tracker.getLastAvgY(),
205
- velocityX: this.velocityX * ratio * 10,
206
- velocityY: this.velocityY * ratio * 10,
203
+ velocityX: this.velocityX,
204
+ velocityY: this.velocityY,
207
205
  x: this.tracker.getLastAvgX() - rect.left,
208
206
  y: this.tracker.getLastAvgY() - rect.top
209
207
  };
@@ -296,11 +294,6 @@ export default class PanGestureHandler extends GestureHandler {
296
294
  super.onPointerMove(event);
297
295
  }
298
296
 
299
- onPointerCancel(event) {
300
- super.onPointerCancel(event);
301
- this.reset();
302
- }
303
-
304
297
  onPointerOutOfBounds(event) {
305
298
  if (this.getShouldCancelWhenOutside()) {
306
299
  return;