@nativescript-community/gesturehandler 0.2.2 → 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/.history/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/GestureHandler_20210517182228.java +544 -0
  94. package/{platforms/android/java/com/swmansion/gesturehandler/GestureHandler.java → .history/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/GestureHandler_20220331104607.java} +0 -0
  95. package/.history/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/LongPressGestureHandler_20210512101356.java +81 -0
  96. package/{platforms/android/java/com/swmansion/gesturehandler/LongPressGestureHandler.java → .history/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/LongPressGestureHandler_20220331111050.java} +0 -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/.history/src/gesturehandler/gestures_override_20220328170816.ts +533 -0
  143. package/{gestures_override.js → .history/src/gesturehandler/gestures_override_20220328170818.ts} +171 -63
  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 +147 -63
  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,19 @@
1
+ import groovy.json.JsonSlurper
2
+ dependencies {
3
+ implementation(name:'widgets-release', ext:'aar')
4
+ implementation "androidx.annotation:annotation:1.1.0"
5
+ }
6
+ repositories {
7
+ def appDir = "$rootDir/../../.."
8
+ def widgetsDir = "$appDir/node_modules/@nativescript/core/platforms/android"
9
+ def appPackageJsonFile = file("$appDir/package.json")
10
+ if (appPackageJsonFile.exists()) {
11
+ def appPackageJson = new JsonSlurper().parseText(appPackageJsonFile.text)
12
+ if (appPackageJson.dependencies['@akylas/nativescript'] != null) {
13
+ widgetsDir = "$appDir/node_modules/@akylas/nativescript/platforms/android"
14
+ }
15
+ }
16
+ flatDir {
17
+ dirs "$widgetsDir"
18
+ }
19
+ }
@@ -0,0 +1,185 @@
1
+ package com.nativescript.gesturehandler;
2
+
3
+ import android.content.Context;
4
+ import android.view.MotionEvent;
5
+ import android.view.View;
6
+ import android.view.ViewGroup;
7
+ import android.widget.FrameLayout;
8
+ import android.util.Log;
9
+
10
+ import com.swmansion.gesturehandler.GestureHandlerOrchestrator;
11
+ import com.swmansion.gesturehandler.GestureHandlerRegistryImpl;
12
+ import com.swmansion.gesturehandler.PointerEventsConfig;
13
+ import com.swmansion.gesturehandler.GestureHandler;
14
+ import com.swmansion.gesturehandler.ViewConfigurationHelper;
15
+
16
+ import java.util.ArrayList;
17
+
18
+ public class GestureLayout extends FrameLayout {
19
+ public GestureLayout(Context context, int rootGestureTag) {
20
+ super(context);
21
+ mRootGestureTag = rootGestureTag;
22
+ }
23
+
24
+ private int mRootGestureTag;
25
+ private GestureHandlerOrchestrator mOrchestrator;
26
+ private GestureHandlerRegistryImpl mRegistry;
27
+ private ViewConfigurationHelper configurationHelper;
28
+ RootViewGestureHandler rootGestureHandler;
29
+
30
+ private boolean mShouldIntercept = false;
31
+ private boolean mPassingTouch = false;
32
+ private boolean mDispatchToOrchestra = true;
33
+ private boolean mShouldAddRootGesture = true;
34
+
35
+ public void setShouldIntercept(boolean value) {
36
+ if (GestureHandler.debug) {
37
+ Log.d("JS", "PageLayout setShouldIntercept " + value);
38
+ }
39
+ this.mShouldIntercept = value;
40
+ }
41
+
42
+ public void setPassingTouch(boolean value) {
43
+ this.mPassingTouch = value;
44
+ }
45
+ public void setShouldAddRootGesture(boolean value) {
46
+ this.mShouldAddRootGesture = value;
47
+ }
48
+
49
+ public int getRootGestureTag() {
50
+ return mRootGestureTag;
51
+ }
52
+
53
+ public void setDispatchToOrchestra(boolean value) {
54
+ if (GestureHandler.debug) {
55
+ Log.d("JS", "PageLayout setDispatchToOrchestra " + value);
56
+ }
57
+ this.mDispatchToOrchestra = value;
58
+ }
59
+
60
+ public GestureHandlerRegistryImpl registry() {
61
+ return this.mRegistry;
62
+ }
63
+ // requestDisallowInterceptTouchEvent(disallowIntercept) {
64
+ // console.log('requestDisallowInterceptTouchEvent');
65
+ // if (this.mGestureRootHelper != null) {
66
+ // this.mGestureRootHelper.requestDisallowInterceptTouchEvent(disallowIntercept);
67
+ // }
68
+ // super.requestDisallowInterceptTouchEvent(disallowIntercept);
69
+ // }
70
+
71
+ // dispatchTouchEvent(ev) {
72
+ // if (this.mGestureRootHelper != null && this.mGestureRootHelper.dispatchTouchEvent(ev)) {
73
+ // return true;
74
+ // }
75
+ // return super.dispatchTouchEvent(ev);
76
+ // }
77
+ public void tryCancelAllHandlers() {
78
+ if (GestureHandler.debug) {
79
+ Log.d("JS", "PageLayout tryCancelAllHandlers ");
80
+ }
81
+ ArrayList<GestureHandler> handlers = this.mRegistry.getAllHandlers();
82
+ if (handlers != null) {
83
+ for(int i = 0; i < handlers.size(); i++) {
84
+ GestureHandler handler = handlers.get(i);
85
+ if (handler != this.rootGestureHandler) {
86
+ handler.cancel();
87
+ }
88
+ }
89
+ }
90
+ // In order to cancel handlers we activate handler that is hooked to the root view
91
+ // if (this.rootGestureHandler != null && this.rootGestureHandler.getState() == com.swmansion.gesturehandler.GestureHandler.STATE_BEGAN) {
92
+ // // Try activate main JS handler
93
+ // this.rootGestureHandler.activate();
94
+ // this.rootGestureHandler.end();
95
+ // }
96
+ }
97
+
98
+ public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
99
+ if (GestureHandler.debug) {
100
+ Log.d("JS", "PageLayout requestDisallowInterceptTouchEvent " + disallowIntercept + " " + this.mPassingTouch);
101
+ }
102
+ // If this method gets called it means that some native view is attempting to grab lock for
103
+ // touch event delivery. In that case we cancel all gesture recognizers
104
+ if (this.mOrchestrator != null && !this.mPassingTouch) {
105
+ // if we are in the process of delivering touch events via GH orchestrator, we don't want to
106
+ // treat it as a native gesture capturing the lock
107
+ this.tryCancelAllHandlers();
108
+ }
109
+ super.requestDisallowInterceptTouchEvent(disallowIntercept);
110
+ }
111
+
112
+ public boolean dispatchTouchEventToOrchestrator(MotionEvent ev) {
113
+ if (this.mOrchestrator != null) {
114
+ this.mPassingTouch = true;
115
+ this.mOrchestrator.onTouchEvent(ev);
116
+ this.mPassingTouch = false;
117
+ }
118
+ if (GestureHandler.debug) {
119
+ Log.d("JS", "PageLayout dispatchTouchEventToOrchestrator " + this.mShouldIntercept);
120
+ }
121
+ return this.mShouldIntercept;
122
+ }
123
+
124
+ public boolean dispatchTouchEvent(MotionEvent ev) {
125
+ if (GestureHandler.debug) {
126
+ Log.d("JS", "PageLayout dispatchTouchEvent " + this.mDispatchToOrchestra);
127
+ }
128
+ if (this.mDispatchToOrchestra && this.dispatchTouchEventToOrchestrator(ev)) {
129
+ return true;
130
+ }
131
+ final boolean handled = super.dispatchTouchEvent(ev);
132
+ if (GestureHandler.debug) {
133
+ Log.d("JS", "PageLayout dispatchTouchEvent to children " + handled);
134
+ }
135
+ // we need to always return true or gestures wont work on layouts because they don't handle touch so dispatchTouchEvent returns false
136
+ return true;
137
+ }
138
+
139
+ // onInterceptTouchEvent(ev: android.view.MotionEvent) {
140
+ // return this.mShouldIntercept;
141
+ // }
142
+
143
+ // onTouchEvent(ev: android.view.MotionEvent) {
144
+ // console.log('onTouchEvent', ev);
145
+ // this.mOrchestrator.onTouchEvent(ev);
146
+ // return super.onTouchEvent(ev);
147
+ // }
148
+
149
+ /**
150
+ * This method is used to enable root view to start processing touch events through the gesture
151
+ * handler library logic. Unless this method is called (which happens as a result of instantiating
152
+ * new gesture handler from JS) the root view component will just proxy all touch related methods
153
+ * to its superclass. Thus in the "disabled" state all touch related events will fallback to
154
+ * default behavior.
155
+ */
156
+ public void initialize() {
157
+ this.mRegistry = new com.swmansion.gesturehandler.GestureHandlerRegistryImpl();
158
+ this.configurationHelper = new com.swmansion.gesturehandler.ViewConfigurationHelper() {
159
+ public PointerEventsConfig getPointerEventsConfigForView(View view) {
160
+ return view.isEnabled() ? com.swmansion.gesturehandler.PointerEventsConfig.AUTO : com.swmansion.gesturehandler.PointerEventsConfig.NONE;
161
+ }
162
+
163
+ public boolean isViewClippingChildren(ViewGroup parent) {
164
+ return false;
165
+ }
166
+
167
+ public View getChildInDrawingOrderAtIndex(ViewGroup parent, int index) {
168
+ return parent.getChildAt(index);
169
+ }
170
+ };
171
+ this.mOrchestrator = new com.swmansion.gesturehandler.GestureHandlerOrchestrator(this, this.mRegistry, this.configurationHelper);
172
+ this.mOrchestrator.setMinimumAlphaForTraversal(0.01f);
173
+
174
+ this.rootGestureHandler = new RootViewGestureHandler();
175
+ this.rootGestureHandler.setTag(mRootGestureTag);
176
+ this.mRegistry.registerHandler(this.rootGestureHandler);
177
+ this.mRegistry.attachHandlerToView(mRootGestureTag, this);
178
+ }
179
+
180
+ public void tearDown() {
181
+ this.configurationHelper = null;
182
+ this.mOrchestrator = null;
183
+ this.mRegistry = null;
184
+ }
185
+ }
@@ -0,0 +1,98 @@
1
+ //
2
+ // GestureHandler.h
3
+ // GestureHandler
4
+ //
5
+ // Created by Martin Guillon on 6/5/19.
6
+ // Copyright © 2019 Stefan Dragnev. All rights reserved.
7
+ //
8
+
9
+ #import "GestureHandlerState.h"
10
+ #import "GestureHandlerDirection.h"
11
+ #import "GestureHandlerEvents.h"
12
+
13
+ #import <Foundation/Foundation.h>
14
+ #import <UIKit/UIKit.h>
15
+
16
+ #define VEC_LEN_SQ(pt) (pt.x * pt.x + pt.y * pt.y)
17
+ #define TEST_MIN_IF_NOT_NAN(value, limit) \
18
+ (!isnan(limit) && ((limit < 0 && value <= limit) || (limit >= 0 && value >= limit)))
19
+
20
+ #define TEST_MAX_IF_NOT_NAN(value, max) \
21
+ (!isnan(max) && ((max < 0 && value < max) || (max >= 0 && value > max)))
22
+
23
+ #define APPLY_PROP(recognizer, config, type, prop, propName) do { \
24
+ id value = config[propName]; \
25
+ if (value != nil) recognizer.prop = [value type]; \
26
+ } while(0)
27
+
28
+ #define APPLY_FLOAT_PROP(prop) do { APPLY_PROP(recognizer, config, floatValue, prop, @#prop); } while(0)
29
+ #define APPLY_INT_PROP(prop) do { APPLY_PROP(recognizer, config, integerValue, prop, @#prop); } while(0)
30
+ #define APPLY_NAMED_INT_PROP(prop, propName) do { APPLY_PROP(recognizer, config, integerValue, prop, propName); } while(0)
31
+
32
+ //@protocol GestureHandlerEventEmitter
33
+ //
34
+ //- (void)sendTouchEvent:(nonnull GestureHandlerEvent *)event;
35
+ //
36
+ //- (void)sendStateChangeEvent:(nonnull GestureHandlerStateChange *)event;
37
+ //
38
+ //@end
39
+
40
+
41
+ @protocol RootViewGestureRecognizerDelegate <UIGestureRecognizerDelegate>
42
+
43
+ @required
44
+ - (BOOL)gestureRecognizer:(nullable UIGestureRecognizer *)gestureRecognizer
45
+ didActivateInRootView:(nullable UIView *)rootView;
46
+
47
+ @end
48
+
49
+
50
+ @class GestureHandler;
51
+ @protocol GestureHandlerDelegate <NSObject>
52
+
53
+ @optional
54
+ - (BOOL)gestureHandler:(nullable GestureHandler *)gestureHandler shouldActivateForEvent:(nullable NSDictionary *)data;
55
+
56
+ @required
57
+ - (void)gestureHandler:(nullable GestureHandler *)gestureHandler
58
+ didChangeState:(GestureHandlerState)state prevState:(GestureHandlerState)state extraData:(nullable NSDictionary *)data view:(nullable UIView *)view;
59
+
60
+ @required
61
+ - (void)gestureHandler:(nullable GestureHandler *)gestureHandler
62
+ touchEventOnView:(nullable UIView *)view state:(GestureHandlerState)state extraData:(nullable NSDictionary *)data;
63
+
64
+ @end
65
+
66
+ @interface GestureHandler : NSObject <UIGestureRecognizerDelegate> {
67
+
68
+ @protected UIGestureRecognizer *_recognizer;
69
+ @protected GestureHandlerState _lastState;
70
+
71
+ }
72
+
73
+ + (nullable GestureHandler *)findGestureHandlerByRecognizer:(nonnull UIGestureRecognizer *)recognizer;
74
+
75
+ - (nonnull instancetype)initWithTag:(nonnull NSNumber *)tag;
76
+
77
+ @property (nonatomic, readonly, nonnull) NSNumber *tag;
78
+ //@property (nonatomic, weak, nullable) id<GestureHandlerEventEmitter> emitter;
79
+ @property (nonatomic, readonly, nullable) UIGestureRecognizer *recognizer;
80
+ @property (nonatomic) BOOL enabled;
81
+ @property(nonatomic) BOOL shouldCancelWhenOutside;
82
+ @property (nullable, nonatomic, weak) id<GestureHandlerDelegate> delegate;
83
+
84
+ - (void)bindToView:(nonnull UIView *)view;
85
+ - (void)unbindFromView;
86
+ - (void)configure:(nullable NSDictionary *)config NS_REQUIRES_SUPER;
87
+ - (void)handleGesture:(nonnull id)recognizer;
88
+ - (BOOL)containsPointInView;
89
+ - (GestureHandlerState)state;
90
+ - (nullable NSMutableDictionary *)eventExtraData:(nonnull id)recognizer;
91
+
92
+ - (void)reset;
93
+ - (void)sendEventsInState:(GestureHandlerState)state
94
+ forView:(nonnull UIView *)view
95
+ withExtraData:(nullable NSDictionary*)extraData;
96
+
97
+ @end
98
+
@@ -0,0 +1,365 @@
1
+ #import "GestureHandler.h"
2
+
3
+ #import "NativeViewHandler.h"
4
+
5
+ #import <UIKit/UIGestureRecognizerSubclass.h>
6
+
7
+
8
+ @interface UIGestureRecognizer (GestureHandler)
9
+ @property (nonatomic, readonly) GestureHandler *gestureHandler;
10
+ @end
11
+
12
+
13
+ @implementation UIGestureRecognizer (GestureHandler)
14
+
15
+ - (GestureHandler *)gestureHandler
16
+ {
17
+ id delegate = self.delegate;
18
+ if ([delegate isKindOfClass:[GestureHandler class]]) {
19
+ return (GestureHandler *)delegate;
20
+ }
21
+ return nil;
22
+ }
23
+
24
+ @end
25
+
26
+ typedef struct GHHitSlop {
27
+ CGFloat top, left, bottom, right, width, height;
28
+ } RNGHHitSlop;
29
+
30
+ static RNGHHitSlop RNGHHitSlopEmpty = { NAN, NAN, NAN, NAN, NAN, NAN };
31
+
32
+ #define GH_HIT_SLOP_GET(key) (prop[key] == nil ? NAN : [prop[key] doubleValue])
33
+ #define GH_HIT_SLOP_IS_SET(hitSlop) (!isnan(hitSlop.left) || !isnan(hitSlop.right) || \
34
+ !isnan(hitSlop.top) || !isnan(hitSlop.bottom))
35
+ #define GH_HIT_SLOP_INSET(key) (isnan(hitSlop.key) ? 0. : hitSlop.key)
36
+
37
+ CGRect GHHitSlopInsetRect(CGRect rect, RNGHHitSlop hitSlop) {
38
+ rect.origin.x -= GH_HIT_SLOP_INSET(left);
39
+ rect.origin.y -= GH_HIT_SLOP_INSET(top);
40
+
41
+ if (!isnan(hitSlop.width)) {
42
+ if (!isnan(hitSlop.right)) {
43
+ rect.origin.x = rect.size.width - hitSlop.width + GH_HIT_SLOP_INSET(right);
44
+ }
45
+ rect.size.width = hitSlop.width;
46
+ } else {
47
+ rect.size.width += (GH_HIT_SLOP_INSET(left) + GH_HIT_SLOP_INSET(right));
48
+ }
49
+ if (!isnan(hitSlop.height)) {
50
+ if (!isnan(hitSlop.bottom)) {
51
+ rect.origin.y = rect.size.height - hitSlop.height + GH_HIT_SLOP_INSET(bottom);
52
+ }
53
+ rect.size.height = hitSlop.height;
54
+ } else {
55
+ rect.size.height += (GH_HIT_SLOP_INSET(top) + GH_HIT_SLOP_INSET(bottom));
56
+ }
57
+ return rect;
58
+ }
59
+
60
+
61
+ @implementation GestureHandler {
62
+ NSArray<NSNumber *> *_handlersToWaitFor;
63
+ NSArray<NSNumber *> *_simultaneousHandlers;
64
+ RNGHHitSlop _hitSlop;
65
+ }
66
+
67
+ - (instancetype)initWithTag:(NSNumber *)tag
68
+ {
69
+ if ((self = [super init])) {
70
+ _tag = tag;
71
+ _lastState = GestureHandlerStateUndetermined;
72
+ _hitSlop = RNGHHitSlopEmpty;
73
+ }
74
+ return self;
75
+ }
76
+
77
+ - (void)configure:(NSDictionary *)config
78
+ {
79
+ _handlersToWaitFor = config[@"waitFor"];
80
+ _simultaneousHandlers = config[@"simultaneousHandlers"];
81
+
82
+ id prop = config[@"enabled"];
83
+ if (prop != nil) {
84
+ self.enabled = [prop boolValue];
85
+ } else {
86
+ self.enabled = YES;
87
+ }
88
+
89
+ prop = config[@"shouldCancelWhenOutside"];
90
+ if (prop != nil) {
91
+ _shouldCancelWhenOutside = [prop boolValue];
92
+ // } else {
93
+ // _shouldCancelWhenOutside = NO;
94
+ }
95
+
96
+ prop = config[@"hitSlop"];
97
+ if ([prop isKindOfClass:[NSNumber class]]) {
98
+ _hitSlop.left = _hitSlop.right = _hitSlop.top = _hitSlop.bottom = [prop doubleValue];
99
+ } else if (prop != nil) {
100
+ _hitSlop.left = _hitSlop.right = GH_HIT_SLOP_GET(@"horizontal");
101
+ _hitSlop.top = _hitSlop.bottom = GH_HIT_SLOP_GET(@"vertical");
102
+ _hitSlop.left = GH_HIT_SLOP_GET(@"left");
103
+ _hitSlop.right = GH_HIT_SLOP_GET(@"right");
104
+ _hitSlop.top = GH_HIT_SLOP_GET(@"top");
105
+ _hitSlop.bottom = GH_HIT_SLOP_GET(@"bottom");
106
+ _hitSlop.width = GH_HIT_SLOP_GET(@"width");
107
+ _hitSlop.height = GH_HIT_SLOP_GET(@"height");
108
+ if (isnan(_hitSlop.left) && isnan(_hitSlop.right) && !isnan(_hitSlop.width)) {
109
+ NSLog(@"When width is set one of left or right pads need to be defined");
110
+ }
111
+ if (!isnan(_hitSlop.width) && !isnan(_hitSlop.left) && !isnan(_hitSlop.right)) {
112
+ NSLog(@"Cannot have all of left, right and width defined");
113
+ }
114
+ if (isnan(_hitSlop.top) && isnan(_hitSlop.bottom) && !isnan(_hitSlop.height)) {
115
+ NSLog(@"When height is set one of top or bottom pads need to be defined");
116
+ }
117
+ if (!isnan(_hitSlop.height) && !isnan(_hitSlop.top) && !isnan(_hitSlop.bottom)) {
118
+ NSLog(@"Cannot have all of top, bottom and height defined");
119
+ }
120
+ }
121
+ }
122
+
123
+ - (void)setEnabled:(BOOL)enabled
124
+ {
125
+ _enabled = enabled;
126
+ self.recognizer.enabled = enabled;
127
+ }
128
+
129
+ - (void)bindToView:(UIView *)view
130
+ {
131
+ // view.userInteractionEnabled = YES;
132
+ self.recognizer.delegate = self;
133
+ [view addGestureRecognizer:self.recognizer];
134
+ }
135
+
136
+ - (void)unbindFromView
137
+ {
138
+ [self.recognizer.view removeGestureRecognizer:self.recognizer];
139
+ self.recognizer.delegate = nil;
140
+ }
141
+
142
+ - (NSMutableDictionary *)eventExtraData:(UIGestureRecognizer *)recognizer
143
+ {
144
+ CGPoint position = [recognizer locationInView:recognizer.view];
145
+ CGPoint absolutePosition = [recognizer locationInView:recognizer.view.window];
146
+ NSMutableDictionary* result = [NSMutableDictionary new];
147
+ NSUInteger numberOfTouches = recognizer.numberOfTouches;
148
+ [result setObject:@(numberOfTouches) forKey:@"numberOfPointers"];
149
+ [result setObject:@(position.x) forKey:@"x"];
150
+ [result setObject:@(position.y) forKey:@"y"];
151
+ [result setObject:@(absolutePosition.y) forKey:@"absoluteX"];
152
+ [result setObject:@(absolutePosition.y) forKey:@"absoluteY"];
153
+ NSMutableArray* positions = [NSMutableArray arrayWithCapacity:2*numberOfTouches];
154
+ for (NSUInteger i = 0; i <numberOfTouches; i++) {
155
+ CGPoint pos = [recognizer locationOfTouch:i inView:recognizer.view];
156
+
157
+ [positions insertObject:@(pos.x) atIndex:2*i];
158
+ [positions insertObject:@(pos.y) atIndex:2*i+1];
159
+ }
160
+ [result setObject:positions forKey:@"positions"];
161
+ return result;
162
+ }
163
+
164
+ - (void)handleGesture:(UIGestureRecognizer *)recognizer
165
+ {
166
+ NSMutableDictionary *eventData = [self eventExtraData:recognizer];
167
+ [self sendEventsInState:[self stateForRecognizer:recognizer] forView:recognizer.view withExtraData:eventData];
168
+ }
169
+
170
+ - (void)sendEventsInState:(GestureHandlerState)state
171
+ forView:(nonnull UIView *)view
172
+ withExtraData:(nullable NSDictionary *)extraData
173
+ {
174
+ if (state != _lastState) {
175
+ if (state == GestureHandlerStateEnd && _lastState != GestureHandlerStateActive) {
176
+ if (self.delegate) {
177
+ [self.delegate gestureHandler:self didChangeState:GestureHandlerStateActive prevState:_lastState extraData:extraData view:view];
178
+ }
179
+ _lastState = GestureHandlerStateActive;
180
+ }
181
+ if (self.delegate) {
182
+ [self.delegate gestureHandler:self didChangeState:state prevState:_lastState extraData:extraData view:view];
183
+ }
184
+ _lastState = state;
185
+ }
186
+
187
+ if (state == GestureHandlerStateActive) {
188
+ if (self.delegate) {
189
+ [self.delegate gestureHandler:self touchEventOnView:view state:state extraData:extraData];
190
+ }
191
+ }
192
+ }
193
+
194
+ - (GestureHandlerState)state
195
+ {
196
+ switch (_recognizer.state) {
197
+ case UIGestureRecognizerStateBegan:
198
+ case UIGestureRecognizerStatePossible:
199
+ return GestureHandlerStateBegan;
200
+ case UIGestureRecognizerStateEnded:
201
+ return GestureHandlerStateEnd;
202
+ case UIGestureRecognizerStateFailed:
203
+ return GestureHandlerStateFailed;
204
+ case UIGestureRecognizerStateCancelled:
205
+ return GestureHandlerStateCancelled;
206
+ case UIGestureRecognizerStateChanged:
207
+ return GestureHandlerStateActive;
208
+ }
209
+ return GestureHandlerStateUndetermined;
210
+ }
211
+ - (GestureHandlerState)stateForRecognizer:(UIGestureRecognizer*)recognizer
212
+ {
213
+ switch (recognizer.state) {
214
+ case UIGestureRecognizerStateBegan:
215
+ case UIGestureRecognizerStatePossible:
216
+ return GestureHandlerStateBegan;
217
+ case UIGestureRecognizerStateEnded:
218
+ return GestureHandlerStateEnd;
219
+ case UIGestureRecognizerStateFailed:
220
+ return GestureHandlerStateFailed;
221
+ case UIGestureRecognizerStateCancelled:
222
+ return GestureHandlerStateCancelled;
223
+ case UIGestureRecognizerStateChanged:
224
+ return GestureHandlerStateActive;
225
+ }
226
+ return GestureHandlerStateUndetermined;
227
+ }
228
+
229
+ #pragma mark UIGestureRecognizerDelegate
230
+
231
+ + (GestureHandler *)findGestureHandlerByRecognizer:(UIGestureRecognizer *)recognizer
232
+ {
233
+ GestureHandler *handler = recognizer.gestureHandler;
234
+ if (handler != nil) {
235
+ return handler;
236
+ }
237
+
238
+ // We may try to extract "DummyGestureHandler" in case when "otherGestureRecognizer" belongs to
239
+ // a native view being wrapped with "NativeViewGestureHandler"
240
+ UIView *view = recognizer.view;
241
+ // while (reactView != nil && reactView.reactTag == nil) {
242
+ // reactView = reactView.superview;
243
+ // }
244
+
245
+ for (UIGestureRecognizer *recognizer in view.gestureRecognizers) {
246
+ if ([recognizer isKindOfClass:[DummyGestureRecognizer class]]) {
247
+ return recognizer.gestureHandler;
248
+ }
249
+ }
250
+
251
+ return nil;
252
+ }
253
+
254
+ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
255
+ shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
256
+ {
257
+ GestureHandler *handler = [GestureHandler findGestureHandlerByRecognizer:otherGestureRecognizer];
258
+ if ([handler isKindOfClass:[NativeViewGestureHandler class]]) {
259
+ for (NSNumber *handlerTag in handler->_handlersToWaitFor) {
260
+ if ([_tag isEqual:handlerTag]) {
261
+ return YES;
262
+ }
263
+ }
264
+ }
265
+
266
+ return NO;
267
+ }
268
+
269
+ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
270
+ shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
271
+ {
272
+ if ([_handlersToWaitFor count]) {
273
+ GestureHandler *handler = [GestureHandler findGestureHandlerByRecognizer:otherGestureRecognizer];
274
+ if (handler != nil) {
275
+ for (NSNumber *handlerTag in _handlersToWaitFor) {
276
+ if ([handler.tag isEqual:handlerTag]) {
277
+ return YES;
278
+ }
279
+ }
280
+ }
281
+ }
282
+ return NO;
283
+ }
284
+
285
+ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
286
+ shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
287
+ {
288
+ if (gestureRecognizer.view == otherGestureRecognizer.view && [gestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]]) {
289
+ return YES;
290
+ }
291
+ if (_recognizer.state == UIGestureRecognizerStateBegan && _recognizer.state == UIGestureRecognizerStatePossible) {
292
+ return YES;
293
+ }
294
+ if ([_simultaneousHandlers count]) {
295
+ GestureHandler *handler = [GestureHandler findGestureHandlerByRecognizer:otherGestureRecognizer];
296
+ if (handler != nil) {
297
+ for (NSNumber *handlerTag in _simultaneousHandlers) {
298
+ if ([handler.tag isEqual:handlerTag]) {
299
+ return YES;
300
+ }
301
+ }
302
+ }
303
+ }
304
+ return NO;
305
+ }
306
+
307
+ - (void)reset
308
+ {
309
+ _lastState = GestureHandlerStateUndetermined;
310
+ }
311
+
312
+ - (BOOL)containsPointInView
313
+ {
314
+ CGPoint pt = [_recognizer locationInView:_recognizer.view];
315
+ CGRect hitFrame = GHHitSlopInsetRect(_recognizer.view.bounds, _hitSlop);
316
+ return CGRectContainsPoint(hitFrame, pt);
317
+ }
318
+
319
+ - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
320
+ {
321
+ [self reset];
322
+ if (self.delegate && [self.delegate respondsToSelector:@selector(gestureHandler:shouldActivateForEvent:)]) {
323
+ if (![self.delegate gestureHandler:self shouldActivateForEvent:[self eventExtraData:gestureRecognizer]]) {
324
+ return FALSE;
325
+ }
326
+ }
327
+ return YES;
328
+ }
329
+
330
+ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
331
+ {
332
+ #if TARGET_IPHONE_SIMULATOR
333
+ // we get unwanted touch on simulator which messes everything
334
+ UIView* view = gestureRecognizer.view;
335
+ CGPoint location = [touch locationInView:gestureRecognizer.view];
336
+ if (touch.phase == UITouchPhaseBegan && location.x == 0 && round(location.y) == view.window.bounds.size.height) {
337
+ return NO;
338
+ }
339
+ #endif // TARGET_IPHONE_SIMULATOR
340
+
341
+ // If hitSlop is set we use it to determine if a given gesture recognizer should start processing
342
+ // touch stream. This only works for negative values of hitSlop as this method won't be triggered
343
+ // unless touch startes in the bounds of the attached view. To acheve similar effect with positive
344
+ // values of hitSlop one should set hitSlop for the underlying view. This limitation is due to the
345
+ // fact that hitTest method is only available at the level of UIView
346
+ if (GH_HIT_SLOP_IS_SET(_hitSlop)) {
347
+ CGPoint location = [touch locationInView:gestureRecognizer.view];
348
+ CGRect hitFrame = GHHitSlopInsetRect(gestureRecognizer.view.bounds, _hitSlop);
349
+ return CGRectContainsPoint(hitFrame, location);
350
+ }
351
+ return YES;
352
+ }
353
+
354
+ //- (void)sendTouchEvent:(GestureHandlerEvent *)event
355
+ //{
356
+ // // [_eventDispatcher sendEvent:event];
357
+ //}
358
+ //
359
+ //- (void)sendStateChangeEvent:(GestureHandlerStateChange *)event
360
+ //{
361
+ // // [_eventDispatcher sendEvent:event];
362
+ //}
363
+
364
+
365
+ @end