@nativescript-community/gesturehandler 0.2.0 → 2.0.0

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 (382) hide show
  1. package/.classpath +12 -0
  2. package/.eslintrc.js +3 -0
  3. package/.gitattributes +17 -0
  4. package/.github/FUNDING.yml +1 -0
  5. package/.github/issue_template.md +28 -0
  6. package/.gitmodules +6 -0
  7. package/.gradle/7.3/checksums/checksums.lock +0 -0
  8. package/.gradle/7.3/dependencies-accessors/dependencies-accessors.lock +0 -0
  9. package/.gradle/7.3/dependencies-accessors/gc.properties +0 -0
  10. package/.gradle/7.3/fileChanges/last-build.bin +0 -0
  11. package/.gradle/7.3/fileHashes/fileHashes.lock +0 -0
  12. package/.gradle/7.3/gc.properties +0 -0
  13. package/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  14. package/.gradle/buildOutputCleanup/cache.properties +2 -0
  15. package/.gradle/checksums/checksums.lock +0 -0
  16. package/.gradle/checksums/md5-checksums.bin +0 -0
  17. package/.gradle/checksums/sha1-checksums.bin +0 -0
  18. package/.gradle/vcs-1/gc.properties +0 -0
  19. package/.history/build_20201106173734.gradle +22 -0
  20. package/.history/build_20220218093019.gradle +22 -0
  21. package/.history/build_20220218093024.gradle +22 -0
  22. package/.history/build_20220218093151.gradle +22 -0
  23. package/.history/build_20220218093200.gradle +22 -0
  24. package/.history/build_20220218093224.gradle +22 -0
  25. package/.history/build_20220218093249.gradle +22 -0
  26. package/.history/build_20220218093334.gradle +22 -0
  27. package/.history/build_20220218093339.gradle +22 -0
  28. package/.history/build_20220218093341.gradle +22 -0
  29. package/.history/build_20220218093411.gradle +22 -0
  30. package/.history/build_20220218093413.gradle +22 -0
  31. package/.history/build_20220218093416.gradle +22 -0
  32. package/.history/build_20220218093421.gradle +23 -0
  33. package/.history/build_20220218093423.gradle +22 -0
  34. package/.history/build_20220218100008.gradle +22 -0
  35. package/.history/demo-snippets/package_20211119094134.json +7 -0
  36. package/.history/demo-snippets/package_20220328153105.json +7 -0
  37. package/.history/demo-snippets/package_20220328153251.json +7 -0
  38. package/.history/demo-snippets/package_20220328153410.json +7 -0
  39. package/.history/demo-snippets/vue/Basic_20210917174642.vue +46 -0
  40. package/.history/demo-snippets/vue/Basic_20220328154031.vue +44 -0
  41. package/.history/demo-snippets/vue/Basic_20220328154730.vue +46 -0
  42. package/.history/demo-snippets/vue/Basic_20220328154741.vue +46 -0
  43. package/.history/demo-snippets/vue/Basic_20220328154807.vue +47 -0
  44. package/.history/demo-snippets/vue/Basic_20220328154838.vue +51 -0
  45. package/.history/demo-snippets/vue/Basic_20220328154839.vue +51 -0
  46. package/.history/demo-snippets/vue/Basic_20220328154901.vue +52 -0
  47. package/.history/demo-snippets/vue/Basic_20220328154925.vue +52 -0
  48. package/.history/demo-snippets/vue/Basic_20220328162644.vue +52 -0
  49. package/.history/demo-snippets/vue/Basic_20220328162656.vue +48 -0
  50. package/.history/demo-snippets/vue/Basic_20220328162658.vue +48 -0
  51. package/.history/demo-snippets/vue/Basic_20220328162731.vue +48 -0
  52. package/.history/demo-snippets/vue/ModalView_20220328154527.vue +0 -0
  53. package/.history/demo-snippets/vue/ModalView_20220328154555.vue +15 -0
  54. package/.history/demo-snippets/vue/ModalView_20220328162755.vue +15 -0
  55. package/.history/demo-snippets/vue/ModalView_20220328162915.vue +17 -0
  56. package/.history/demo-snippets/vue/install_20211117134051.ts +14 -0
  57. package/.history/demo-snippets/vue/install_20220328153411.ts +10 -0
  58. package/.history/demo-snippets/vue/install_20220328154031.ts +9 -0
  59. package/.history/demo-snippets/vue/install_20220328162915.ts +10 -0
  60. package/.history/demo-vue/.npmrc_20220328151942 +1 -0
  61. package/.history/demo-vue/.npmrc_20220329084955 +2 -0
  62. package/.history/demo-vue/package_20220328151942.json +60 -0
  63. package/.history/demo-vue/package_20220328153206.json +60 -0
  64. package/.history/demo-vue/package_20220328153218.json +59 -0
  65. package/.history/demo-vue/package_20220328153326.json +60 -0
  66. package/.history/demo-vue/package_20220328153411.json +60 -0
  67. package/.history/demo_vue/app/App_20201115162303.vue +118 -0
  68. package/.history/demo_vue/app/App_20220328150238.vue +118 -0
  69. package/.history/demo_vue/app/App_20220328150240.vue +116 -0
  70. package/.history/demo_vue/app/App_20220328150241.vue +115 -0
  71. package/.history/demo_vue/package_20210511163846.json +30 -0
  72. package/.history/demo_vue/package_20220328145031.json +30 -0
  73. package/.history/demo_vue/package_20220328150155.json +30 -0
  74. package/.history/demo_vue/package_20220328151156.json +29 -0
  75. package/.history/demo_vue/tsconfig_20200909142713.json +30 -0
  76. package/.history/demo_vue/tsconfig_20220328151126.json +28 -0
  77. package/.history/demo_vue/tsconfig_20220328151129.json +27 -0
  78. package/.history/demo_vue/webpack.config_20200909141619.js +370 -0
  79. package/.history/demo_vue/webpack.config_20220328145113.js +6 -0
  80. package/.history/demo_vue/webpack.config_20220328145115.js +5 -0
  81. package/.history/lerna_20220104212014.json +21 -0
  82. package/.history/lerna_20220328152313.json +21 -0
  83. package/.history/package_20220311095923.json +74 -0
  84. package/.history/package_20220328152312.json +74 -0
  85. package/.history/packages/gesturehandler/blueprint_20220306151807.md +221 -0
  86. package/{blueprint.md → .history/packages/gesturehandler/blueprint_20220328164413.md} +0 -0
  87. package/.history/packages/gesturehandler/package_20220325110528.json +39 -0
  88. package/.history/packages/gesturehandler/package_20220328152653.json +52 -0
  89. package/.history/packages/gesturehandler/package_20220328152719.json +52 -0
  90. package/.history/packages/gesturehandler/package_20220328153446.json +52 -0
  91. package/.history/packages/gesturehandler/package_20220328164418.json +52 -0
  92. package/.history/packages/gesturehandler/package_20220328164722.json +52 -0
  93. package/{platforms/android/java/com/swmansion/gesturehandler/GestureHandler.java → .history/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/GestureHandler_20210517182228.java} +0 -0
  94. package/.history/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/GestureHandler_20220331104607.java +540 -0
  95. package/{platforms/android/java/com/swmansion/gesturehandler/LongPressGestureHandler.java → .history/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/LongPressGestureHandler_20210512101356.java} +0 -0
  96. package/.history/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/LongPressGestureHandler_20220331111050.java +81 -0
  97. package/.history/packages/gesturehandler/tsconfig_20220328152950.json +13 -0
  98. package/.history/packages/gesturehandler/tsconfig_20220328153011.json +13 -0
  99. package/.history/plugin/platforms/android/include_20220125161223.gradle +10 -0
  100. package/.history/plugin/platforms/android/include_20220217110818.gradle +19 -0
  101. package/.history/plugin/platforms/android/include_20220217112410.gradle +18 -0
  102. package/{platforms/android/include.gradle → .history/plugin/platforms/android/include_20220217153211.gradle} +0 -0
  103. package/.history/plugin/platforms/android/include_20220218092908.gradle +19 -0
  104. package/{platforms/android/java/com/nativescript/gesturehandler/PageLayout.java → .history/plugin/platforms/android/java/com/nativescript/gesturehandler/GestureLayout_20220217101202.java} +0 -0
  105. package/.history/plugin/platforms/android/java/com/nativescript/gesturehandler/GestureLayout_20220217101931.java +185 -0
  106. package/.history/plugin/platforms/ios/src/GestureHandler_20201106183454.h +98 -0
  107. package/.history/plugin/platforms/ios/src/GestureHandler_20201111112216.m +365 -0
  108. package/.history/plugin/platforms/ios/src/GestureHandler_20220104160100.m +369 -0
  109. package/{platforms/ios/src/GestureHandler.h → .history/plugin/platforms/ios/src/GestureHandler_20220104172158.h} +0 -0
  110. package/.history/src/gesturehandler/gesturehandler.android_20220328144612.ts +610 -0
  111. package/.history/src/gesturehandler/gesturehandler.android_20220328154126.ts +609 -0
  112. package/.history/src/gesturehandler/gesturehandler.android_20220328154143.ts +609 -0
  113. package/.history/src/gesturehandler/gesturehandler.android_20220328154730.ts +610 -0
  114. package/.history/src/gesturehandler/gesturehandler.android_20220328160735.ts +610 -0
  115. package/.history/src/gesturehandler/gesturehandler.android_20220328161307.ts +612 -0
  116. package/.history/src/gesturehandler/gesturehandler.android_20220328161410.ts +613 -0
  117. package/.history/src/gesturehandler/gesturehandler.android_20220328161742.ts +612 -0
  118. package/.history/src/gesturehandler/gesturehandler.android_20220328162317.ts +613 -0
  119. package/.history/src/gesturehandler/gesturehandler.android_20220328162541.ts +613 -0
  120. package/.history/src/gesturehandler/gesturehandler.android_20220328162915.ts +611 -0
  121. package/{gesturehandler.android.js → .history/src/gesturehandler/gesturehandler.android_20220328163618.ts} +228 -208
  122. package/.history/src/gesturehandler/gesturehandler.android_20220328163707.ts +610 -0
  123. package/.history/src/gesturehandler/gesturehandler.common_20220328144620.ts +325 -0
  124. package/.history/src/gesturehandler/gesturehandler.common_20220328153656.ts +325 -0
  125. package/.history/src/gesturehandler/gestures_override_20210512114352.ts +523 -0
  126. package/.history/src/gesturehandler/gestures_override_20220328155041.ts +523 -0
  127. package/.history/src/gesturehandler/gestures_override_20220328155424.ts +525 -0
  128. package/.history/src/gesturehandler/gestures_override_20220328160121.ts +527 -0
  129. package/.history/src/gesturehandler/gestures_override_20220328160132.ts +527 -0
  130. package/.history/src/gesturehandler/gestures_override_20220328160220.ts +528 -0
  131. package/.history/src/gesturehandler/gestures_override_20220328160416.ts +529 -0
  132. package/.history/src/gesturehandler/gestures_override_20220328160731.ts +535 -0
  133. package/.history/src/gesturehandler/gestures_override_20220328160808.ts +536 -0
  134. package/.history/src/gesturehandler/gestures_override_20220328160834.ts +536 -0
  135. package/.history/src/gesturehandler/gestures_override_20220328160909.ts +536 -0
  136. package/.history/src/gesturehandler/gestures_override_20220328160931.ts +536 -0
  137. package/.history/src/gesturehandler/gestures_override_20220328161052.ts +536 -0
  138. package/.history/src/gesturehandler/gestures_override_20220328161319.ts +536 -0
  139. package/.history/src/gesturehandler/gestures_override_20220328161759.ts +534 -0
  140. package/.history/src/gesturehandler/gestures_override_20220328162317.ts +535 -0
  141. package/.history/src/gesturehandler/gestures_override_20220328162503.ts +535 -0
  142. package/{gestures_override.js → .history/src/gesturehandler/gestures_override_20220328170816.ts} +171 -64
  143. package/.history/src/gesturehandler/gestures_override_20220328170818.ts +532 -0
  144. package/.history/src/gesturehandler/vue/index_20201021164506.ts +12 -0
  145. package/{vue/index.js → .history/src/gesturehandler/vue/index_20220328163021.ts} +1 -1
  146. package/.history/src/gesturehandler.android_20220325103749.ts +574 -0
  147. package/.history/src/gesturehandler.android_20220325110406.ts +574 -0
  148. package/.history/src/gesturehandler.android_20220328144613.ts +610 -0
  149. package/{gesturehandler.common.js → .history/src/gesturehandler.common_20210512114125.ts} +161 -74
  150. package/.history/src/gesturehandler.common_20220328144621.ts +325 -0
  151. package/.history/src/gesturehandler.d_20210422150412.ts +154 -0
  152. package/{gesturehandler.d.ts → .history/src/gesturehandler.d_20220328144718.ts} +0 -0
  153. package/{gesturehandler.ios.js → .history/src/gesturehandler.ios_20210422150701.ts} +100 -71
  154. package/.history/src/gesturehandler.ios_20220328144653.ts +296 -0
  155. package/.history/src/references.d_20200412093513.ts +3 -0
  156. package/.history/src/references.d_20220328144701.ts +3 -0
  157. package/.history/tsconfig_20220306153539.json +9 -0
  158. package/.history/tsconfig_20220328152313.json +9 -0
  159. package/.prettierignore +4 -0
  160. package/.prettierrc +6 -0
  161. package/.prettierrc.js +7 -0
  162. package/.settings/org.eclipse.buildship.core.prefs +13 -0
  163. package/.vscode/settings.json +19 -0
  164. package/CHANGELOG.md +157 -54
  165. package/CONTRIBUTING.md +19 -0
  166. package/README.md +12 -132
  167. package/build.gradle +22 -0
  168. package/config.json +7 -0
  169. package/demo-snippets/node_modules/.package-lock.json +20 -0
  170. package/demo-snippets/package.json +7 -0
  171. package/demo-snippets/vue/Basic.vue +48 -0
  172. package/demo-snippets/vue/ModalView.vue +17 -0
  173. package/demo-snippets/vue/install.ts +10 -0
  174. package/demo-vue/App_Resources/Android/app.gradle +20 -0
  175. package/demo-vue/App_Resources/Android/src/main/AndroidManifest.xml +42 -0
  176. package/demo-vue/App_Resources/Android/src/main/res/drawable/ic_launcher_foreground.xml +15 -0
  177. package/demo-vue/App_Resources/Android/src/main/res/drawable-hdpi/background.png +0 -0
  178. package/demo-vue/App_Resources/Android/src/main/res/drawable-hdpi/logo.png +0 -0
  179. package/demo-vue/App_Resources/Android/src/main/res/drawable-ldpi/background.png +0 -0
  180. package/demo-vue/App_Resources/Android/src/main/res/drawable-ldpi/logo.png +0 -0
  181. package/demo-vue/App_Resources/Android/src/main/res/drawable-mdpi/background.png +0 -0
  182. package/demo-vue/App_Resources/Android/src/main/res/drawable-mdpi/logo.png +0 -0
  183. package/demo-vue/App_Resources/Android/src/main/res/drawable-nodpi/splash_screen.xml +8 -0
  184. package/demo-vue/App_Resources/Android/src/main/res/drawable-xhdpi/background.png +0 -0
  185. package/demo-vue/App_Resources/Android/src/main/res/drawable-xhdpi/logo.png +0 -0
  186. package/demo-vue/App_Resources/Android/src/main/res/drawable-xxhdpi/background.png +0 -0
  187. package/demo-vue/App_Resources/Android/src/main/res/drawable-xxhdpi/logo.png +0 -0
  188. package/demo-vue/App_Resources/Android/src/main/res/drawable-xxxhdpi/background.png +0 -0
  189. package/demo-vue/App_Resources/Android/src/main/res/drawable-xxxhdpi/logo.png +0 -0
  190. package/demo-vue/App_Resources/Android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
  191. package/demo-vue/App_Resources/Android/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  192. package/demo-vue/App_Resources/Android/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  193. package/demo-vue/App_Resources/Android/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  194. package/demo-vue/App_Resources/Android/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  195. package/demo-vue/App_Resources/Android/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  196. package/demo-vue/App_Resources/Android/src/main/res/values/colors.xml +7 -0
  197. package/demo-vue/App_Resources/Android/src/main/res/values/ic_launcher_background.xml +4 -0
  198. package/demo-vue/App_Resources/Android/src/main/res/values/styles.xml +42 -0
  199. package/demo-vue/App_Resources/Android/src/main/res/values-v21/colors.xml +4 -0
  200. package/demo-vue/App_Resources/Android/src/main/res/values-v21/styles.xml +28 -0
  201. package/demo-vue/App_Resources/Android/src/main/res/values-v29/styles.xml +12 -0
  202. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json +122 -0
  203. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png +0 -0
  204. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20.png +0 -0
  205. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png +0 -0
  206. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png +0 -0
  207. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png +0 -0
  208. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png +0 -0
  209. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png +0 -0
  210. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png +0 -0
  211. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png +0 -0
  212. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png +0 -0
  213. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png +0 -0
  214. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png +0 -0
  215. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png +0 -0
  216. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png +0 -0
  217. package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png +0 -0
  218. package/demo-vue/App_Resources/iOS/Assets.xcassets/Contents.json +6 -0
  219. package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json +23 -0
  220. package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png +0 -0
  221. package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png +0 -0
  222. package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@3x.png +0 -0
  223. package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json +23 -0
  224. package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png +0 -0
  225. package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png +0 -0
  226. package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@3x.png +0 -0
  227. package/demo-vue/App_Resources/iOS/Info.plist +47 -0
  228. package/demo-vue/App_Resources/iOS/LaunchScreen.storyboard +53 -0
  229. package/demo-vue/App_Resources/iOS/build.xcconfig +6 -0
  230. package/demo-vue/app/app.scss +11 -0
  231. package/demo-vue/app/app.ts +9 -0
  232. package/demo-vue/app/components/Menu.vue +54 -0
  233. package/demo-vue/nativescript.config.ts +11 -0
  234. package/demo-vue/package.json +60 -0
  235. package/demo-vue/tsconfig.json +25 -0
  236. package/demo-vue/types/references.d.ts +1 -0
  237. package/demo-vue/types/shims.vue.d.ts +4 -0
  238. package/demo-vue/webpack.config.js +42 -0
  239. package/images/demo.gif +0 -0
  240. package/lerna.json +21 -0
  241. package/package.json +60 -51
  242. package/packages/gesturehandler/CHANGELOG.md +609 -0
  243. package/packages/gesturehandler/README.md +176 -0
  244. package/packages/gesturehandler/blueprint.md +74 -0
  245. package/packages/gesturehandler/package.json +52 -0
  246. package/{platforms → packages/gesturehandler/platforms}/android/AndroidManifest.xml +0 -0
  247. package/packages/gesturehandler/platforms/android/include.gradle +19 -0
  248. package/{platforms → packages/gesturehandler/platforms}/android/java/com/nativescript/gesturehandler/GestureHandlerInteractionController.java +0 -0
  249. package/packages/gesturehandler/platforms/android/java/com/nativescript/gesturehandler/PageLayout.java +189 -0
  250. package/{platforms → packages/gesturehandler/platforms}/android/java/com/nativescript/gesturehandler/RootViewGestureHandler.java +0 -0
  251. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.java +0 -0
  252. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/FlingGestureHandler.java +0 -0
  253. package/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/GestureHandler.java +540 -0
  254. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.java +0 -0
  255. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.java +0 -0
  256. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/GestureHandlerRegistry.java +0 -0
  257. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.java +0 -0
  258. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/GestureUtils.java +0 -0
  259. package/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/LongPressGestureHandler.java +81 -0
  260. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/NativeViewGestureHandler.java +0 -0
  261. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/OnTouchEventListener.java +0 -0
  262. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/PanGestureHandler.java +0 -0
  263. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/PinchGestureHandler.java +0 -0
  264. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/PointerEvents.java +0 -0
  265. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/PointerEventsConfig.java +0 -0
  266. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/PointerEventsSpec.java +0 -0
  267. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/RotationGestureDetector.java +0 -0
  268. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/RotationGestureHandler.java +0 -0
  269. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/ScaleGestureDetector.java +0 -0
  270. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/TapGestureHandler.java +0 -0
  271. package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/ViewConfigurationHelper.java +0 -0
  272. package/{platforms → packages/gesturehandler/platforms}/android/native-api-usage.json +0 -0
  273. package/{platforms → packages/gesturehandler/platforms}/android/res/values/config.xml +0 -0
  274. package/{platforms → packages/gesturehandler/platforms}/ios/src/FlingHandler.h +0 -0
  275. package/{platforms → packages/gesturehandler/platforms}/ios/src/FlingHandler.m +0 -0
  276. package/{platforms → packages/gesturehandler/platforms}/ios/src/ForceTouchHandler.h +0 -0
  277. package/{platforms → packages/gesturehandler/platforms}/ios/src/ForceTouchHandler.m +0 -0
  278. package/packages/gesturehandler/platforms/ios/src/GestureHandler.h +101 -0
  279. package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandler.m +0 -0
  280. package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerDirection.h +0 -0
  281. package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerEvents.h +0 -0
  282. package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerEvents.m +0 -0
  283. package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerHeader.h +0 -0
  284. package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerManager.h +0 -0
  285. package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerManager.m +0 -0
  286. package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerRegistry.h +0 -0
  287. package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerRegistry.m +0 -0
  288. package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerState.h +0 -0
  289. package/{platforms → packages/gesturehandler/platforms}/ios/src/LongPressHandler.h +0 -0
  290. package/{platforms → packages/gesturehandler/platforms}/ios/src/LongPressHandler.m +0 -0
  291. package/{platforms → packages/gesturehandler/platforms}/ios/src/NativeViewHandler.h +0 -0
  292. package/{platforms → packages/gesturehandler/platforms}/ios/src/NativeViewHandler.m +0 -0
  293. package/{platforms → packages/gesturehandler/platforms}/ios/src/PanHandler.h +0 -0
  294. package/{platforms → packages/gesturehandler/platforms}/ios/src/PanHandler.m +0 -0
  295. package/{platforms → packages/gesturehandler/platforms}/ios/src/PinchHandler.h +0 -0
  296. package/{platforms → packages/gesturehandler/platforms}/ios/src/PinchHandler.m +0 -0
  297. package/{platforms → packages/gesturehandler/platforms}/ios/src/RootViewGestureRecognizer.h +0 -0
  298. package/{platforms → packages/gesturehandler/platforms}/ios/src/RootViewGestureRecognizer.m +0 -0
  299. package/{platforms → packages/gesturehandler/platforms}/ios/src/RotationHandler.h +0 -0
  300. package/{platforms → packages/gesturehandler/platforms}/ios/src/RotationHandler.m +0 -0
  301. package/{platforms → packages/gesturehandler/platforms}/ios/src/TapHandler.h +0 -0
  302. package/{platforms → packages/gesturehandler/platforms}/ios/src/TapHandler.m +0 -0
  303. package/{platforms → packages/gesturehandler/platforms}/ios/src/module.modulemap +0 -0
  304. package/packages/gesturehandler/tsconfig.json +13 -0
  305. package/references.d.ts +3 -3
  306. package/src/gesturehandler/gesturehandler.android.ts +610 -0
  307. package/src/gesturehandler/gesturehandler.common.ts +325 -0
  308. package/src/gesturehandler/gesturehandler.d.ts +156 -0
  309. package/src/gesturehandler/gesturehandler.ios.ts +296 -0
  310. package/src/gesturehandler/gestures_override.ts +532 -0
  311. package/src/gesturehandler/references.d.ts +3 -0
  312. package/{typings → src/gesturehandler/typings}/android.d.ts +0 -0
  313. package/{typings → src/gesturehandler/typings}/extensions.android.d.ts +0 -0
  314. package/{typings → src/gesturehandler/typings}/ios.d.ts +0 -0
  315. package/src/gesturehandler/vue/index.ts +7 -0
  316. package/src-native/.vscode/settings.json +3 -0
  317. package/src-native/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  318. package/src-native/android/.vscode/settings.json +3 -0
  319. package/src-native/android/README.md +14 -0
  320. package/src-native/android/build.gradle +25 -0
  321. package/src-native/android/build.sh +36 -0
  322. package/src-native/android/gesturehandler/.classpath +6 -0
  323. package/src-native/android/gesturehandler/.settings/org.eclipse.buildship.core.prefs +2 -0
  324. package/src-native/android/gesturehandler/build.gradle +84 -0
  325. package/src-native/android/gesturehandler/gradle/wrapper/gradle-wrapper.jar +0 -0
  326. package/src-native/android/gesturehandler/gradle/wrapper/gradle-wrapper.properties +6 -0
  327. package/src-native/android/gesturehandler/gradlew +160 -0
  328. package/src-native/android/gesturehandler/gradlew.bat +90 -0
  329. package/src-native/android/gesturehandler/local.properties +9 -0
  330. package/src-native/android/gesturehandler/proguard-rules.pro +17 -0
  331. package/src-native/android/gesturehandler/src/main/AndroidManifest.xml +9 -0
  332. package/src-native/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  333. package/src-native/android/gradle/wrapper/gradle-wrapper.properties +6 -0
  334. package/src-native/android/gradle.properties +23 -0
  335. package/src-native/android/gradlew +160 -0
  336. package/src-native/android/gradlew.bat +90 -0
  337. package/src-native/android/settings.gradle +1 -0
  338. package/src-native/ios/GestureHandler.xcodeproj/project.pbxproj +662 -0
  339. package/src-native/ios/GestureHandler.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  340. package/src-native/ios/GestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  341. package/src-native/ios/GestureHandler.xcodeproj/xcshareddata/xcschemes/GestureHandler.xcscheme +76 -0
  342. package/src-native/ios/GestureHandler.xcodeproj/xcshareddata/xcschemes/GestureHandlerApp.xcscheme +87 -0
  343. package/src-native/ios/GestureHandler.xcodeproj/xcshareddata/xcschemes/GestureHandlerLib.xcscheme +76 -0
  344. package/src-native/ios/GestureHandler.xcodeproj/xcshareddata/xcschemes/test.xcscheme +76 -0
  345. package/src-native/ios/GestureHandler.xcodeproj/xcshareddata/xcschemes/universal.xcscheme +76 -0
  346. package/src-native/ios/build.sh +10 -0
  347. package/tools/.eslintrc.js +252 -0
  348. package/tools/builddoc.mjs +54 -0
  349. package/tools/common/.eslintrc.js +3 -0
  350. package/tools/common/.prettierignore +4 -0
  351. package/tools/common/.prettierrc.js +7 -0
  352. package/tools/common/references.d.ts +3 -0
  353. package/tools/package.json +116 -0
  354. package/tools/readme/blueprint.json +10 -0
  355. package/tools/readme/demos-and-development.md +35 -0
  356. package/tools/readme/edit-warning.md +20 -0
  357. package/tools/readme/questions.md +3 -0
  358. package/tools/readme.js +54 -0
  359. package/tools/sync.js +102 -0
  360. package/tools/tsconfig.doc.json +10 -0
  361. package/tools/tsconfig.eslint.json +4 -0
  362. package/tools/tsconfig.json +38 -0
  363. package/tools/typedoc.js +17 -0
  364. package/tools/update.js +32 -0
  365. package/tsconfig.json +4 -8
  366. package/.pnpm-debug.log +0 -1
  367. package/gesturehandler.android.d.ts +0 -180
  368. package/gesturehandler.android.js.map +0 -1
  369. package/gesturehandler.common.d.ts +0 -96
  370. package/gesturehandler.common.js.map +0 -1
  371. package/gesturehandler.ios.d.ts +0 -56
  372. package/gesturehandler.ios.js.map +0 -1
  373. package/gestures_override.d.ts +0 -29
  374. package/gestures_override.js.map +0 -1
  375. package/react/index.d.ts +0 -20
  376. package/react/index.js +0 -9
  377. package/react/index.js.map +0 -1
  378. package/svelte/index.d.ts +0 -11
  379. package/svelte/index.js +0 -26
  380. package/svelte/index.js.map +0 -1
  381. package/vue/index.d.ts +0 -4
  382. package/vue/index.js.map +0 -1
@@ -0,0 +1,540 @@
1
+ package com.swmansion.gesturehandler;
2
+
3
+ import android.util.Log;
4
+
5
+ import android.view.MotionEvent;
6
+ import android.view.View;
7
+
8
+ import java.util.Arrays;
9
+
10
+ public class GestureHandler<T extends GestureHandler> {
11
+ private final String TAG = "GestureHandler";
12
+ public static boolean debug = false;
13
+
14
+ public static final int STATE_UNDETERMINED = 0;
15
+ public static final int STATE_FAILED = 1;
16
+ public static final int STATE_BEGAN = 2;
17
+ public static final int STATE_CANCELLED = 3;
18
+ public static final int STATE_ACTIVE = 4;
19
+ public static final int STATE_END = 5;
20
+
21
+ public static final float HIT_SLOP_NONE = Float.NaN;
22
+
23
+ private static final int HIT_SLOP_LEFT_IDX = 0;
24
+ private static final int HIT_SLOP_TOP_IDX = 1;
25
+ private static final int HIT_SLOP_RIGHT_IDX = 2;
26
+ private static final int HIT_SLOP_BOTTOM_IDX = 3;
27
+ private static final int HIT_SLOP_WIDTH_IDX = 4;
28
+ private static final int HIT_SLOP_HEIGHT_IDX = 5;
29
+
30
+ public static final int DIRECTION_RIGHT = 1;
31
+ public static final int DIRECTION_LEFT = 2;
32
+ public static final int DIRECTION_UP = 4;
33
+ public static final int DIRECTION_DOWN = 8;
34
+
35
+ private static int MAX_POINTERS_COUNT = 12;
36
+ private static MotionEvent.PointerProperties[] sPointerProps;
37
+ private static MotionEvent.PointerCoords[] sPointerCoords;
38
+
39
+ private static void initPointerProps(int size) {
40
+ if (sPointerProps == null) {
41
+ sPointerProps = new MotionEvent.PointerProperties[MAX_POINTERS_COUNT];
42
+ sPointerCoords = new MotionEvent.PointerCoords[MAX_POINTERS_COUNT];
43
+ }
44
+ for (; size > 0 && sPointerProps[size - 1] == null; size--) {
45
+ sPointerProps[size - 1] = new MotionEvent.PointerProperties();
46
+ sPointerCoords[size - 1] = new MotionEvent.PointerCoords();
47
+ }
48
+ }
49
+
50
+ private final int[] mTrackedPointerIDs = new int[MAX_POINTERS_COUNT];
51
+ private int mTrackedPointersCount = 0;
52
+
53
+ private int mTag;
54
+ private View mView;
55
+ private int mState = STATE_UNDETERMINED;
56
+ private float mX, mY;
57
+ private final float[] mXs = new float[MAX_POINTERS_COUNT];
58
+ private final float[] mYs = new float[MAX_POINTERS_COUNT];
59
+ private boolean mWithinBounds;
60
+ private boolean mEnabled = true;
61
+ private float mHitSlop[];
62
+
63
+ private float mLastX, mLastY;
64
+ private float mLastEventOffsetX, mLastEventOffsetY;
65
+
66
+ private boolean mShouldCancelWhenOutside = false;
67
+ private int mNumberOfPointers = 0;
68
+
69
+ private GestureHandlerOrchestrator mOrchestrator;
70
+ private OnTouchEventListener<T> mListener;
71
+ private GestureHandlerInteractionController mInteractionController;
72
+ int mActivationIndex;
73
+ // set and accessed only by the orchestrator
74
+ boolean mIsActive;
75
+ // set and accessed only by the orchestrator
76
+ boolean mIsAwaiting; // set and accessed only by the orchestrator
77
+
78
+ private static boolean hitSlopSet(float value) {
79
+ return !Float.isNaN(value);
80
+ }
81
+
82
+ void dispatchStateChange(int newState, int prevState) {
83
+ if (mListener != null) {
84
+ mListener.onStateChange((T) this, newState, prevState);
85
+ }
86
+ }
87
+
88
+ void dispatchTouchEvent(MotionEvent event) {
89
+ if (mListener != null) {
90
+ mListener.onTouchEvent((T) this, event);
91
+ }
92
+ }
93
+
94
+ public boolean hasCommonPointers(GestureHandler other) {
95
+ for (int i = 0; i < mTrackedPointerIDs.length; i++) {
96
+ if (mTrackedPointerIDs[i] != -1 && other.mTrackedPointerIDs[i] != -1) {
97
+ return true;
98
+ }
99
+ }
100
+ return false;
101
+ }
102
+
103
+ public T setShouldCancelWhenOutside(boolean shouldCancelWhenOutside) {
104
+ mShouldCancelWhenOutside = shouldCancelWhenOutside;
105
+ return (T) this;
106
+ }
107
+
108
+ public T setEnabled(boolean enabled) {
109
+ if (mView != null) {
110
+ // If view is set then handler is in "active" state. In that case we want to
111
+ // "cancel" handler
112
+ // when it changes enabled state so that it gets cleared from the orchestrator
113
+ cancel();
114
+ }
115
+ mEnabled = enabled;
116
+ return (T) this;
117
+ }
118
+
119
+ public boolean isEnabled() {
120
+ return mEnabled;
121
+ }
122
+
123
+ public T setHitSlop(float leftPad, float topPad, float rightPad, float bottomPad, float width, float height) {
124
+ if (mHitSlop == null) {
125
+ mHitSlop = new float[6];
126
+ }
127
+ mHitSlop[HIT_SLOP_LEFT_IDX] = leftPad;
128
+ mHitSlop[HIT_SLOP_TOP_IDX] = topPad;
129
+ mHitSlop[HIT_SLOP_RIGHT_IDX] = rightPad;
130
+ mHitSlop[HIT_SLOP_BOTTOM_IDX] = bottomPad;
131
+ mHitSlop[HIT_SLOP_WIDTH_IDX] = width;
132
+ mHitSlop[HIT_SLOP_HEIGHT_IDX] = height;
133
+ if (hitSlopSet(width) && hitSlopSet(leftPad) && hitSlopSet(rightPad)) {
134
+ throw new IllegalArgumentException("Cannot have all of left, right and width defined");
135
+ }
136
+ if (hitSlopSet(width) && !hitSlopSet(leftPad) && !hitSlopSet(rightPad)) {
137
+ throw new IllegalArgumentException("When width is set one of left or right pads need to be defined");
138
+ }
139
+ if (hitSlopSet(height) && hitSlopSet(bottomPad) && hitSlopSet(topPad)) {
140
+ throw new IllegalArgumentException("Cannot have all of top, bottom and height defined");
141
+ }
142
+ if (hitSlopSet(height) && !hitSlopSet(bottomPad) && !hitSlopSet(topPad)) {
143
+ throw new IllegalArgumentException("When height is set one of top or bottom pads need to be defined");
144
+ }
145
+ return (T) this;
146
+ }
147
+
148
+ public T setHitSlop(float padding) {
149
+ return setHitSlop(padding, padding, padding, padding, HIT_SLOP_NONE, HIT_SLOP_NONE);
150
+ }
151
+
152
+ public T setInteractionController(GestureHandlerInteractionController controller) {
153
+ mInteractionController = controller;
154
+ return (T) this;
155
+ }
156
+
157
+ public void setTag(int tag) {
158
+ mTag = tag;
159
+ }
160
+
161
+ public int getTag() {
162
+ return mTag;
163
+ }
164
+
165
+ public View getView() {
166
+ return mView;
167
+ }
168
+
169
+ public float getX() {
170
+ return mX;
171
+ }
172
+
173
+ public float getXAtIndex(int index) {
174
+ return mXs[index];
175
+ }
176
+
177
+ public float getY() {
178
+ return mY;
179
+ }
180
+
181
+ public float getYAtIndex(int index) {
182
+ return mYs[index];
183
+ }
184
+
185
+ public int getNumberOfPointers() {
186
+ return mNumberOfPointers;
187
+ }
188
+
189
+ public boolean isWithinBounds() {
190
+ return mWithinBounds;
191
+ }
192
+
193
+ public final void prepare(View view, GestureHandlerOrchestrator orchestrator) {
194
+ if (mView != null || mOrchestrator != null) {
195
+ throw new IllegalStateException("Already prepared or hasn't been reset");
196
+ }
197
+ Arrays.fill(mTrackedPointerIDs, -1);
198
+ mTrackedPointersCount = 0;
199
+ mState = STATE_UNDETERMINED;
200
+
201
+ mView = view;
202
+ mOrchestrator = orchestrator;
203
+ }
204
+
205
+ private int findNextLocalPointerId() {
206
+ int localPointerId = 0;
207
+ for (; localPointerId < mTrackedPointersCount; localPointerId++) {
208
+ int i = 0;
209
+ for (; i < mTrackedPointerIDs.length; i++) {
210
+ if (mTrackedPointerIDs[i] == localPointerId) {
211
+ break;
212
+ }
213
+ }
214
+ if (i == mTrackedPointerIDs.length) {
215
+ return localPointerId;
216
+ }
217
+ }
218
+ return localPointerId;
219
+ }
220
+
221
+ public void startTrackingPointer(int pointerId) {
222
+ if (mTrackedPointerIDs[pointerId] == -1) {
223
+ mTrackedPointerIDs[pointerId] = findNextLocalPointerId();
224
+ mTrackedPointersCount++;
225
+ }
226
+ }
227
+
228
+ public void stopTrackingPointer(int pointerId) {
229
+ if (mTrackedPointerIDs[pointerId] != -1) {
230
+ mTrackedPointerIDs[pointerId] = -1;
231
+ mTrackedPointersCount--;
232
+ }
233
+ }
234
+
235
+ private boolean needAdapt(MotionEvent event) {
236
+ if (event.getPointerCount() != mTrackedPointersCount) {
237
+ return true;
238
+ }
239
+ for (int i = 0; i < mTrackedPointerIDs.length; i++) {
240
+ if (mTrackedPointerIDs[i] != -1 && mTrackedPointerIDs[i] != i) {
241
+ return true;
242
+ }
243
+ }
244
+ return false;
245
+ }
246
+
247
+ private MotionEvent adaptEvent(MotionEvent event) {
248
+ if (!needAdapt(event)) {
249
+ return event;
250
+ }
251
+ int action = event.getActionMasked();
252
+ int actionIndex = -1;
253
+ if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN) {
254
+ actionIndex = event.getActionIndex();
255
+ int actionPointer = event.getPointerId(actionIndex);
256
+ if (mTrackedPointerIDs[actionPointer] != -1) {
257
+ action = mTrackedPointersCount == 1 ? MotionEvent.ACTION_DOWN : MotionEvent.ACTION_POINTER_DOWN;
258
+ } else {
259
+ action = MotionEvent.ACTION_MOVE;
260
+ }
261
+ } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP) {
262
+ actionIndex = event.getActionIndex();
263
+ int actionPointer = event.getPointerId(actionIndex);
264
+ if (mTrackedPointerIDs[actionPointer] != -1) {
265
+ action = mTrackedPointersCount == 1 ? MotionEvent.ACTION_UP : MotionEvent.ACTION_POINTER_UP;
266
+ } else {
267
+ action = MotionEvent.ACTION_MOVE;
268
+ }
269
+ }
270
+ initPointerProps(mTrackedPointersCount);
271
+ int count = 0;
272
+ float oldX = event.getX();
273
+ float oldY = event.getY();
274
+ event.setLocation(event.getRawX(), event.getRawY());
275
+ for (int index = 0, size = event.getPointerCount(); index < size; index++) {
276
+ int origPointerId = event.getPointerId(index);
277
+ if (mTrackedPointerIDs[origPointerId] != -1) {
278
+ event.getPointerProperties(index, sPointerProps[count]);
279
+ sPointerProps[count].id = mTrackedPointerIDs[origPointerId];
280
+ event.getPointerCoords(index, sPointerCoords[count]);
281
+ if (index == actionIndex) {
282
+ action = action | (count << MotionEvent.ACTION_POINTER_INDEX_SHIFT);
283
+ }
284
+ count++;
285
+ }
286
+ }
287
+ MotionEvent result = MotionEvent.obtain(event.getDownTime(), event.getEventTime(), action, count,
288
+ sPointerProps, /* props are copied and hence itis safe to use static array here */
289
+ sPointerCoords, /* same applies to coords */
290
+ event.getMetaState(), event.getButtonState(), event.getXPrecision(), event.getYPrecision(), event.getDeviceId(),
291
+ event.getEdgeFlags(), event.getSource(), event.getFlags());
292
+ event.setLocation(oldX, oldY);
293
+ result.setLocation(oldX, oldY);
294
+ return result;
295
+ }
296
+
297
+ public final void handle(MotionEvent origEvent) {
298
+ if (!mEnabled || mState == STATE_CANCELLED || mState == STATE_FAILED || mState == STATE_END
299
+ || mTrackedPointersCount < 1) {
300
+ return;
301
+ }
302
+ MotionEvent event = adaptEvent(origEvent);
303
+ mNumberOfPointers = event.getPointerCount();
304
+ mX = event.getX();
305
+ mY = event.getY();
306
+ for (int index = 0, size = mNumberOfPointers; index < size; index++) {
307
+ mXs[index] = event.getX(index);
308
+ mYs[index] = event.getY(index);
309
+ }
310
+
311
+ mWithinBounds = isWithinBounds(mView, mX, mY);
312
+ if (mShouldCancelWhenOutside && !mWithinBounds) {
313
+ if (mState == STATE_ACTIVE) {
314
+ cancel();
315
+ } else if (mState == STATE_BEGAN) {
316
+ fail();
317
+ }
318
+ if (event != origEvent) {
319
+ event.recycle();
320
+ }
321
+ return;
322
+ }
323
+
324
+ mLastX = GestureUtils.getLastPointerX(event, true);
325
+ mLastY = GestureUtils.getLastPointerY(event, true);
326
+ mLastEventOffsetX = event.getRawX() - event.getX();
327
+ mLastEventOffsetY = event.getRawY() - event.getY();
328
+
329
+ int action = event.getActionMasked();
330
+ if(action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN) {
331
+ if (mListener != null && !mListener.shouldStartGesture((T) this, event)) {
332
+ fail();
333
+ if (event != origEvent) {
334
+ event.recycle();
335
+ }
336
+ return;
337
+ }
338
+ }
339
+
340
+ onHandle(event);
341
+ if (event != origEvent) {
342
+ event.recycle();
343
+ }
344
+ }
345
+
346
+ private void moveToState(int newState) {
347
+ if (mOrchestrator == null) {
348
+ // ignore not prepared
349
+ return;
350
+ }
351
+ if (mState == newState) {
352
+ return;
353
+ }
354
+ int oldState = mState;
355
+ mState = newState;
356
+ mOrchestrator.onHandlerStateChange(this, newState, oldState);
357
+
358
+ onStateChange(newState, oldState);
359
+ }
360
+
361
+ public boolean wantEvents(MotionEvent event) {
362
+ return mEnabled && mState != STATE_FAILED && mState != STATE_CANCELLED && mState != STATE_END
363
+ && mTrackedPointersCount > 0;
364
+ }
365
+
366
+ public int getState() {
367
+ return mState;
368
+ }
369
+
370
+ public boolean shouldRequireToWaitForFailure(GestureHandler handler) {
371
+ if (handler != this && mInteractionController != null) {
372
+ return mInteractionController.shouldRequireHandlerToWaitForFailure(this, handler);
373
+ }
374
+ return false;
375
+ }
376
+
377
+ public boolean shouldWaitForHandlerFailure(GestureHandler handler) {
378
+ if (handler != this && mInteractionController != null) {
379
+ return mInteractionController.shouldWaitForHandlerFailure(this, handler);
380
+ }
381
+ return false;
382
+ }
383
+
384
+ public boolean shouldRecognizeSimultaneously(GestureHandler handler) {
385
+ if (handler == this) {
386
+ return true;
387
+ }
388
+ if (mInteractionController != null) {
389
+ return mInteractionController.shouldRecognizeSimultaneously(this, handler);
390
+ }
391
+ return false;
392
+ }
393
+
394
+ public boolean shouldBeCancelledBy(GestureHandler handler) {
395
+ if (handler == this) {
396
+ return false;
397
+ }
398
+ if (mInteractionController != null) {
399
+ return mInteractionController.shouldHandlerBeCancelledBy(this, handler);
400
+ }
401
+ return false;
402
+ }
403
+
404
+ public boolean isWithinBounds(View view, float posX, float posY) {
405
+ float left = 0;
406
+ float top = 0;
407
+ float right = view.getWidth();
408
+ float bottom = view.getHeight();
409
+ if (mHitSlop != null) {
410
+ float padLeft = mHitSlop[HIT_SLOP_LEFT_IDX];
411
+ float padTop = mHitSlop[HIT_SLOP_TOP_IDX];
412
+ float padRight = mHitSlop[HIT_SLOP_RIGHT_IDX];
413
+ float padBottom = mHitSlop[HIT_SLOP_BOTTOM_IDX];
414
+ if (hitSlopSet(padLeft)) {
415
+ left -= padLeft;
416
+ }
417
+ if (hitSlopSet(padTop)) {
418
+ top -= padTop;
419
+ }
420
+ if (hitSlopSet(padRight)) {
421
+ right += padRight;
422
+ }
423
+ if (hitSlopSet(padBottom)) {
424
+ bottom += padBottom;
425
+ }
426
+
427
+ float width = mHitSlop[HIT_SLOP_WIDTH_IDX];
428
+ float height= mHitSlop[HIT_SLOP_HEIGHT_IDX];
429
+ if (hitSlopSet(width)) {
430
+ if (!hitSlopSet(padLeft)) {
431
+ left = right - width;
432
+ } else if (!hitSlopSet(padRight)) {
433
+ right = left + width;
434
+ }
435
+ }
436
+ if (hitSlopSet(height)) {
437
+ if (!hitSlopSet(padTop)) {
438
+ top = bottom - height;
439
+ } else if (!hitSlopSet(padBottom)) {
440
+ bottom = top + height;
441
+ }
442
+ }
443
+ }
444
+ return posX >= left && posX <= right && posY >= top && posY <= bottom;
445
+ }
446
+
447
+ public final void cancel() {
448
+ if (mState == STATE_ACTIVE || mState == STATE_UNDETERMINED || mState == STATE_BEGAN) {
449
+ onCancel();
450
+ moveToState(STATE_CANCELLED);
451
+ }
452
+ }
453
+
454
+ public final void fail() {
455
+ if (GestureHandler.debug) {
456
+ Log.d("JS", "GestureHandler fail " + this);
457
+ }
458
+ if (mState == STATE_ACTIVE || mState == STATE_UNDETERMINED || mState == STATE_BEGAN) {
459
+ moveToState(STATE_FAILED);
460
+ }
461
+ }
462
+
463
+ public final void activate() {
464
+ if (mState == STATE_UNDETERMINED || mState == STATE_BEGAN) {
465
+ moveToState(STATE_ACTIVE);
466
+ }
467
+ }
468
+
469
+ public final void begin() {
470
+ if (mState == STATE_UNDETERMINED) {
471
+ moveToState(STATE_BEGAN);
472
+ }
473
+ }
474
+
475
+ public final void end() {
476
+ if (mState == STATE_BEGAN || mState == STATE_ACTIVE) {
477
+ moveToState(STATE_END);
478
+ }
479
+ }
480
+
481
+ protected void onHandle(MotionEvent event) {
482
+ moveToState(STATE_FAILED);
483
+ }
484
+
485
+ protected void onStateChange(int newState, int previousState) {
486
+ }
487
+
488
+ protected void onReset() {
489
+ }
490
+
491
+ protected void onCancel() {
492
+ }
493
+
494
+ public final void reset() {
495
+ mView = null;
496
+ mOrchestrator = null;
497
+ Arrays.fill(mTrackedPointerIDs, -1);
498
+ mTrackedPointersCount = 0;
499
+ onReset();
500
+ }
501
+
502
+ public static String stateToString(int state) {
503
+ switch (state) {
504
+ case STATE_UNDETERMINED: return "UNDETERMINED";
505
+ case STATE_ACTIVE: return "ACTIVE";
506
+ case STATE_FAILED: return "FAILED";
507
+ case STATE_BEGAN: return "BEGIN";
508
+ case STATE_CANCELLED: return "CANCELLED";
509
+ case STATE_END: return "END";
510
+ }
511
+ return null;
512
+ }
513
+
514
+ public GestureHandler setOnTouchEventListener(OnTouchEventListener<T> listener) {
515
+ mListener = listener;
516
+ return this;
517
+ }
518
+
519
+ @Override
520
+ public String toString() {
521
+ String viewString = mView == null ? null : mView.getClass().getSimpleName();
522
+ return this.getClass().getSimpleName() + "@[" + mTag + "]:" + viewString;
523
+ }
524
+
525
+ public float getLastAbsolutePositionX() {
526
+ return mLastX;
527
+ }
528
+
529
+ public float getLastAbsolutePositionY() {
530
+ return mLastY;
531
+ }
532
+
533
+ public float getLastRelativePositionX() {
534
+ return mLastX - mLastEventOffsetX;
535
+ }
536
+
537
+ public float getLastRelativePositionY() {
538
+ return mLastY - mLastEventOffsetY;
539
+ }
540
+ }
@@ -0,0 +1,81 @@
1
+ package com.swmansion.gesturehandler;
2
+
3
+ import android.content.Context;
4
+ import android.os.Handler;
5
+ import android.view.MotionEvent;
6
+
7
+ public class LongPressGestureHandler extends GestureHandler<LongPressGestureHandler> {
8
+
9
+ private static final long DEFAULT_MIN_DURATION_MS = 500; // 1 sec
10
+ private static float DEFAULT_MAX_DIST_DP = 10; // 20dp
11
+
12
+ private long mMinDurationMs = DEFAULT_MIN_DURATION_MS;
13
+ private float mMaxDistSq;
14
+ private float mStartX, mStartY;
15
+ private Handler mHandler;
16
+
17
+ public LongPressGestureHandler(Context context) {
18
+ setShouldCancelWhenOutside(true);
19
+ mMaxDistSq = DEFAULT_MAX_DIST_DP * context.getResources().getDisplayMetrics().density;
20
+ }
21
+
22
+ public void setMinDurationMs(long minDurationMs) {
23
+ mMinDurationMs = minDurationMs;
24
+ }
25
+
26
+ public LongPressGestureHandler setMaxDist(float maxDist) {
27
+ mMaxDistSq = maxDist * maxDist;
28
+ return this;
29
+ }
30
+
31
+ @Override
32
+ protected void onHandle(MotionEvent event) {
33
+ if (getState() == STATE_UNDETERMINED) {
34
+ begin();
35
+ mStartX = event.getRawX();
36
+ mStartY = event.getRawY();
37
+ mHandler = new Handler();
38
+ if (mMinDurationMs > 0) {
39
+ mHandler.postDelayed(new Runnable() {
40
+ @Override
41
+ public void run() {
42
+ activate();
43
+ }
44
+ }, mMinDurationMs);
45
+ } else if (mMinDurationMs == 0) {
46
+ activate();
47
+ }
48
+ }
49
+ if (event.getActionMasked() == MotionEvent.ACTION_UP) {
50
+ if (mHandler != null) {
51
+ mHandler.removeCallbacksAndMessages(null);
52
+ mHandler = null;
53
+ }
54
+ if (getState() == STATE_ACTIVE) {
55
+ end();
56
+ } else {
57
+ fail();
58
+ }
59
+ } else {
60
+ // calculate distance from start
61
+ float deltaX = event.getRawX() - mStartX;
62
+ float deltaY = event.getRawY() - mStartY;
63
+ float distSq = (float)Math.sqrt((double)(deltaX * deltaX + deltaY * deltaY));
64
+ if (distSq > mMaxDistSq) {
65
+ if (getState() == STATE_ACTIVE) {
66
+ cancel();
67
+ } else {
68
+ fail();
69
+ }
70
+ }
71
+ }
72
+ }
73
+
74
+ @Override
75
+ protected void onStateChange(int newState, int previousState) {
76
+ if (mHandler != null) {
77
+ mHandler.removeCallbacksAndMessages(null);
78
+ mHandler = null;
79
+ }
80
+ }
81
+ }