@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.
- package/.classpath +12 -0
- package/.eslintrc.js +3 -0
- package/.gitattributes +17 -0
- package/.github/FUNDING.yml +1 -0
- package/.github/issue_template.md +28 -0
- package/.gitmodules +6 -0
- package/.gradle/7.3/checksums/checksums.lock +0 -0
- package/.gradle/7.3/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/.gradle/7.3/dependencies-accessors/gc.properties +0 -0
- package/.gradle/7.3/fileChanges/last-build.bin +0 -0
- package/.gradle/7.3/fileHashes/fileHashes.lock +0 -0
- package/.gradle/7.3/gc.properties +0 -0
- package/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/.gradle/buildOutputCleanup/cache.properties +2 -0
- package/.gradle/checksums/checksums.lock +0 -0
- package/.gradle/checksums/md5-checksums.bin +0 -0
- package/.gradle/checksums/sha1-checksums.bin +0 -0
- package/.gradle/vcs-1/gc.properties +0 -0
- package/.history/build_20201106173734.gradle +22 -0
- package/.history/build_20220218093019.gradle +22 -0
- package/.history/build_20220218093024.gradle +22 -0
- package/.history/build_20220218093151.gradle +22 -0
- package/.history/build_20220218093200.gradle +22 -0
- package/.history/build_20220218093224.gradle +22 -0
- package/.history/build_20220218093249.gradle +22 -0
- package/.history/build_20220218093334.gradle +22 -0
- package/.history/build_20220218093339.gradle +22 -0
- package/.history/build_20220218093341.gradle +22 -0
- package/.history/build_20220218093411.gradle +22 -0
- package/.history/build_20220218093413.gradle +22 -0
- package/.history/build_20220218093416.gradle +22 -0
- package/.history/build_20220218093421.gradle +23 -0
- package/.history/build_20220218093423.gradle +22 -0
- package/.history/build_20220218100008.gradle +22 -0
- package/.history/demo-snippets/package_20211119094134.json +7 -0
- package/.history/demo-snippets/package_20220328153105.json +7 -0
- package/.history/demo-snippets/package_20220328153251.json +7 -0
- package/.history/demo-snippets/package_20220328153410.json +7 -0
- package/.history/demo-snippets/vue/Basic_20210917174642.vue +46 -0
- package/.history/demo-snippets/vue/Basic_20220328154031.vue +44 -0
- package/.history/demo-snippets/vue/Basic_20220328154730.vue +46 -0
- package/.history/demo-snippets/vue/Basic_20220328154741.vue +46 -0
- package/.history/demo-snippets/vue/Basic_20220328154807.vue +47 -0
- package/.history/demo-snippets/vue/Basic_20220328154838.vue +51 -0
- package/.history/demo-snippets/vue/Basic_20220328154839.vue +51 -0
- package/.history/demo-snippets/vue/Basic_20220328154901.vue +52 -0
- package/.history/demo-snippets/vue/Basic_20220328154925.vue +52 -0
- package/.history/demo-snippets/vue/Basic_20220328162644.vue +52 -0
- package/.history/demo-snippets/vue/Basic_20220328162656.vue +48 -0
- package/.history/demo-snippets/vue/Basic_20220328162658.vue +48 -0
- package/.history/demo-snippets/vue/Basic_20220328162731.vue +48 -0
- package/.history/demo-snippets/vue/ModalView_20220328154527.vue +0 -0
- package/.history/demo-snippets/vue/ModalView_20220328154555.vue +15 -0
- package/.history/demo-snippets/vue/ModalView_20220328162755.vue +15 -0
- package/.history/demo-snippets/vue/ModalView_20220328162915.vue +17 -0
- package/.history/demo-snippets/vue/install_20211117134051.ts +14 -0
- package/.history/demo-snippets/vue/install_20220328153411.ts +10 -0
- package/.history/demo-snippets/vue/install_20220328154031.ts +9 -0
- package/.history/demo-snippets/vue/install_20220328162915.ts +10 -0
- package/.history/demo-vue/.npmrc_20220328151942 +1 -0
- package/.history/demo-vue/.npmrc_20220329084955 +2 -0
- package/.history/demo-vue/package_20220328151942.json +60 -0
- package/.history/demo-vue/package_20220328153206.json +60 -0
- package/.history/demo-vue/package_20220328153218.json +59 -0
- package/.history/demo-vue/package_20220328153326.json +60 -0
- package/.history/demo-vue/package_20220328153411.json +60 -0
- package/.history/demo_vue/app/App_20201115162303.vue +118 -0
- package/.history/demo_vue/app/App_20220328150238.vue +118 -0
- package/.history/demo_vue/app/App_20220328150240.vue +116 -0
- package/.history/demo_vue/app/App_20220328150241.vue +115 -0
- package/.history/demo_vue/package_20210511163846.json +30 -0
- package/.history/demo_vue/package_20220328145031.json +30 -0
- package/.history/demo_vue/package_20220328150155.json +30 -0
- package/.history/demo_vue/package_20220328151156.json +29 -0
- package/.history/demo_vue/tsconfig_20200909142713.json +30 -0
- package/.history/demo_vue/tsconfig_20220328151126.json +28 -0
- package/.history/demo_vue/tsconfig_20220328151129.json +27 -0
- package/.history/demo_vue/webpack.config_20200909141619.js +370 -0
- package/.history/demo_vue/webpack.config_20220328145113.js +6 -0
- package/.history/demo_vue/webpack.config_20220328145115.js +5 -0
- package/.history/lerna_20220104212014.json +21 -0
- package/.history/lerna_20220328152313.json +21 -0
- package/.history/package_20220311095923.json +74 -0
- package/.history/package_20220328152312.json +74 -0
- package/.history/packages/gesturehandler/blueprint_20220306151807.md +221 -0
- package/{blueprint.md → .history/packages/gesturehandler/blueprint_20220328164413.md} +0 -0
- package/.history/packages/gesturehandler/package_20220325110528.json +39 -0
- package/.history/packages/gesturehandler/package_20220328152653.json +52 -0
- package/.history/packages/gesturehandler/package_20220328152719.json +52 -0
- package/.history/packages/gesturehandler/package_20220328153446.json +52 -0
- package/.history/packages/gesturehandler/package_20220328164418.json +52 -0
- package/.history/packages/gesturehandler/package_20220328164722.json +52 -0
- package/.history/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/GestureHandler_20210517182228.java +544 -0
- package/{platforms/android/java/com/swmansion/gesturehandler/GestureHandler.java → .history/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/GestureHandler_20220331104607.java} +0 -0
- package/.history/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/LongPressGestureHandler_20210512101356.java +81 -0
- package/{platforms/android/java/com/swmansion/gesturehandler/LongPressGestureHandler.java → .history/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/LongPressGestureHandler_20220331111050.java} +0 -0
- package/.history/packages/gesturehandler/tsconfig_20220328152950.json +13 -0
- package/.history/packages/gesturehandler/tsconfig_20220328153011.json +13 -0
- package/.history/plugin/platforms/android/include_20220125161223.gradle +10 -0
- package/.history/plugin/platforms/android/include_20220217110818.gradle +19 -0
- package/.history/plugin/platforms/android/include_20220217112410.gradle +18 -0
- package/{platforms/android/include.gradle → .history/plugin/platforms/android/include_20220217153211.gradle} +0 -0
- package/.history/plugin/platforms/android/include_20220218092908.gradle +19 -0
- package/{platforms/android/java/com/nativescript/gesturehandler/PageLayout.java → .history/plugin/platforms/android/java/com/nativescript/gesturehandler/GestureLayout_20220217101202.java} +0 -0
- package/.history/plugin/platforms/android/java/com/nativescript/gesturehandler/GestureLayout_20220217101931.java +185 -0
- package/.history/plugin/platforms/ios/src/GestureHandler_20201106183454.h +98 -0
- package/.history/plugin/platforms/ios/src/GestureHandler_20201111112216.m +365 -0
- package/.history/plugin/platforms/ios/src/GestureHandler_20220104160100.m +369 -0
- package/{platforms/ios/src/GestureHandler.h → .history/plugin/platforms/ios/src/GestureHandler_20220104172158.h} +0 -0
- package/.history/src/gesturehandler/gesturehandler.android_20220328144612.ts +610 -0
- package/.history/src/gesturehandler/gesturehandler.android_20220328154126.ts +609 -0
- package/.history/src/gesturehandler/gesturehandler.android_20220328154143.ts +609 -0
- package/.history/src/gesturehandler/gesturehandler.android_20220328154730.ts +610 -0
- package/.history/src/gesturehandler/gesturehandler.android_20220328160735.ts +610 -0
- package/.history/src/gesturehandler/gesturehandler.android_20220328161307.ts +612 -0
- package/.history/src/gesturehandler/gesturehandler.android_20220328161410.ts +613 -0
- package/.history/src/gesturehandler/gesturehandler.android_20220328161742.ts +612 -0
- package/.history/src/gesturehandler/gesturehandler.android_20220328162317.ts +613 -0
- package/.history/src/gesturehandler/gesturehandler.android_20220328162541.ts +613 -0
- package/.history/src/gesturehandler/gesturehandler.android_20220328162915.ts +611 -0
- package/{gesturehandler.android.js → .history/src/gesturehandler/gesturehandler.android_20220328163618.ts} +228 -208
- package/.history/src/gesturehandler/gesturehandler.android_20220328163707.ts +610 -0
- package/.history/src/gesturehandler/gesturehandler.common_20220328144620.ts +325 -0
- package/.history/src/gesturehandler/gesturehandler.common_20220328153656.ts +325 -0
- package/.history/src/gesturehandler/gestures_override_20210512114352.ts +523 -0
- package/.history/src/gesturehandler/gestures_override_20220328155041.ts +523 -0
- package/.history/src/gesturehandler/gestures_override_20220328155424.ts +525 -0
- package/.history/src/gesturehandler/gestures_override_20220328160121.ts +527 -0
- package/.history/src/gesturehandler/gestures_override_20220328160132.ts +527 -0
- package/.history/src/gesturehandler/gestures_override_20220328160220.ts +528 -0
- package/.history/src/gesturehandler/gestures_override_20220328160416.ts +529 -0
- package/.history/src/gesturehandler/gestures_override_20220328160731.ts +535 -0
- package/.history/src/gesturehandler/gestures_override_20220328160808.ts +536 -0
- package/.history/src/gesturehandler/gestures_override_20220328160834.ts +536 -0
- package/.history/src/gesturehandler/gestures_override_20220328160909.ts +536 -0
- package/.history/src/gesturehandler/gestures_override_20220328160931.ts +536 -0
- package/.history/src/gesturehandler/gestures_override_20220328161052.ts +536 -0
- package/.history/src/gesturehandler/gestures_override_20220328161319.ts +536 -0
- package/.history/src/gesturehandler/gestures_override_20220328161759.ts +534 -0
- package/.history/src/gesturehandler/gestures_override_20220328162317.ts +535 -0
- package/.history/src/gesturehandler/gestures_override_20220328162503.ts +535 -0
- package/.history/src/gesturehandler/gestures_override_20220328170816.ts +533 -0
- package/{gestures_override.js → .history/src/gesturehandler/gestures_override_20220328170818.ts} +171 -63
- package/.history/src/gesturehandler/vue/index_20201021164506.ts +12 -0
- package/{vue/index.js → .history/src/gesturehandler/vue/index_20220328163021.ts} +1 -1
- package/.history/src/gesturehandler.android_20220325103749.ts +574 -0
- package/.history/src/gesturehandler.android_20220325110406.ts +574 -0
- package/.history/src/gesturehandler.android_20220328144613.ts +610 -0
- package/{gesturehandler.common.js → .history/src/gesturehandler.common_20210512114125.ts} +161 -74
- package/.history/src/gesturehandler.common_20220328144621.ts +325 -0
- package/.history/src/gesturehandler.d_20210422150412.ts +154 -0
- package/{gesturehandler.d.ts → .history/src/gesturehandler.d_20220328144718.ts} +0 -0
- package/{gesturehandler.ios.js → .history/src/gesturehandler.ios_20210422150701.ts} +100 -71
- package/.history/src/gesturehandler.ios_20220328144653.ts +296 -0
- package/.history/src/references.d_20200412093513.ts +3 -0
- package/.history/src/references.d_20220328144701.ts +3 -0
- package/.history/tsconfig_20220306153539.json +9 -0
- package/.history/tsconfig_20220328152313.json +9 -0
- package/.prettierignore +4 -0
- package/.prettierrc +6 -0
- package/.prettierrc.js +7 -0
- package/.settings/org.eclipse.buildship.core.prefs +13 -0
- package/.vscode/settings.json +19 -0
- package/CHANGELOG.md +147 -63
- package/CONTRIBUTING.md +19 -0
- package/README.md +12 -132
- package/build.gradle +22 -0
- package/config.json +7 -0
- package/demo-snippets/node_modules/.package-lock.json +20 -0
- package/demo-snippets/package.json +7 -0
- package/demo-snippets/vue/Basic.vue +48 -0
- package/demo-snippets/vue/ModalView.vue +17 -0
- package/demo-snippets/vue/install.ts +10 -0
- package/demo-vue/App_Resources/Android/app.gradle +20 -0
- package/demo-vue/App_Resources/Android/src/main/AndroidManifest.xml +42 -0
- package/demo-vue/App_Resources/Android/src/main/res/drawable/ic_launcher_foreground.xml +15 -0
- package/demo-vue/App_Resources/Android/src/main/res/drawable-hdpi/background.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/drawable-hdpi/logo.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/drawable-ldpi/background.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/drawable-ldpi/logo.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/drawable-mdpi/background.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/drawable-mdpi/logo.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/drawable-nodpi/splash_screen.xml +8 -0
- package/demo-vue/App_Resources/Android/src/main/res/drawable-xhdpi/background.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/drawable-xhdpi/logo.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/drawable-xxhdpi/background.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/drawable-xxhdpi/logo.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/drawable-xxxhdpi/background.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/drawable-xxxhdpi/logo.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
- package/demo-vue/App_Resources/Android/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/demo-vue/App_Resources/Android/src/main/res/values/colors.xml +7 -0
- package/demo-vue/App_Resources/Android/src/main/res/values/ic_launcher_background.xml +4 -0
- package/demo-vue/App_Resources/Android/src/main/res/values/styles.xml +42 -0
- package/demo-vue/App_Resources/Android/src/main/res/values-v21/colors.xml +4 -0
- package/demo-vue/App_Resources/Android/src/main/res/values-v21/styles.xml +28 -0
- package/demo-vue/App_Resources/Android/src/main/res/values-v29/styles.xml +12 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json +122 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/Contents.json +6 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json +23 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@3x.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json +23 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png +0 -0
- package/demo-vue/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@3x.png +0 -0
- package/demo-vue/App_Resources/iOS/Info.plist +47 -0
- package/demo-vue/App_Resources/iOS/LaunchScreen.storyboard +53 -0
- package/demo-vue/App_Resources/iOS/build.xcconfig +6 -0
- package/demo-vue/app/app.scss +11 -0
- package/demo-vue/app/app.ts +9 -0
- package/demo-vue/app/components/Menu.vue +54 -0
- package/demo-vue/nativescript.config.ts +11 -0
- package/demo-vue/package.json +60 -0
- package/demo-vue/tsconfig.json +25 -0
- package/demo-vue/types/references.d.ts +1 -0
- package/demo-vue/types/shims.vue.d.ts +4 -0
- package/demo-vue/webpack.config.js +42 -0
- package/images/demo.gif +0 -0
- package/lerna.json +21 -0
- package/package.json +60 -51
- package/packages/gesturehandler/CHANGELOG.md +609 -0
- package/packages/gesturehandler/README.md +176 -0
- package/packages/gesturehandler/blueprint.md +74 -0
- package/packages/gesturehandler/package.json +52 -0
- package/{platforms → packages/gesturehandler/platforms}/android/AndroidManifest.xml +0 -0
- package/packages/gesturehandler/platforms/android/include.gradle +19 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/nativescript/gesturehandler/GestureHandlerInteractionController.java +0 -0
- package/packages/gesturehandler/platforms/android/java/com/nativescript/gesturehandler/PageLayout.java +189 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/nativescript/gesturehandler/RootViewGestureHandler.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/FlingGestureHandler.java +0 -0
- package/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/GestureHandler.java +540 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/GestureHandlerRegistry.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/GestureUtils.java +0 -0
- package/packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/LongPressGestureHandler.java +81 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/NativeViewGestureHandler.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/OnTouchEventListener.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/PanGestureHandler.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/PinchGestureHandler.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/PointerEvents.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/PointerEventsConfig.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/PointerEventsSpec.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/RotationGestureDetector.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/RotationGestureHandler.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/ScaleGestureDetector.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/TapGestureHandler.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/java/com/swmansion/gesturehandler/ViewConfigurationHelper.java +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/native-api-usage.json +0 -0
- package/{platforms → packages/gesturehandler/platforms}/android/res/values/config.xml +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/FlingHandler.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/FlingHandler.m +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/ForceTouchHandler.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/ForceTouchHandler.m +0 -0
- package/packages/gesturehandler/platforms/ios/src/GestureHandler.h +101 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandler.m +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerDirection.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerEvents.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerEvents.m +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerHeader.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerManager.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerManager.m +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerRegistry.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerRegistry.m +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/GestureHandlerState.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/LongPressHandler.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/LongPressHandler.m +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/NativeViewHandler.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/NativeViewHandler.m +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/PanHandler.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/PanHandler.m +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/PinchHandler.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/PinchHandler.m +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/RootViewGestureRecognizer.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/RootViewGestureRecognizer.m +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/RotationHandler.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/RotationHandler.m +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/TapHandler.h +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/TapHandler.m +0 -0
- package/{platforms → packages/gesturehandler/platforms}/ios/src/module.modulemap +0 -0
- package/packages/gesturehandler/tsconfig.json +13 -0
- package/references.d.ts +3 -3
- package/src/gesturehandler/gesturehandler.android.ts +610 -0
- package/src/gesturehandler/gesturehandler.common.ts +325 -0
- package/src/gesturehandler/gesturehandler.d.ts +156 -0
- package/src/gesturehandler/gesturehandler.ios.ts +296 -0
- package/src/gesturehandler/gestures_override.ts +532 -0
- package/src/gesturehandler/references.d.ts +3 -0
- package/{typings → src/gesturehandler/typings}/android.d.ts +0 -0
- package/{typings → src/gesturehandler/typings}/extensions.android.d.ts +0 -0
- package/{typings → src/gesturehandler/typings}/ios.d.ts +0 -0
- package/src/gesturehandler/vue/index.ts +7 -0
- package/src-native/.vscode/settings.json +3 -0
- package/src-native/android/.settings/org.eclipse.buildship.core.prefs +13 -0
- package/src-native/android/.vscode/settings.json +3 -0
- package/src-native/android/README.md +14 -0
- package/src-native/android/build.gradle +25 -0
- package/src-native/android/build.sh +36 -0
- package/src-native/android/gesturehandler/.classpath +6 -0
- package/src-native/android/gesturehandler/.settings/org.eclipse.buildship.core.prefs +2 -0
- package/src-native/android/gesturehandler/build.gradle +84 -0
- package/src-native/android/gesturehandler/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/src-native/android/gesturehandler/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/src-native/android/gesturehandler/gradlew +160 -0
- package/src-native/android/gesturehandler/gradlew.bat +90 -0
- package/src-native/android/gesturehandler/local.properties +9 -0
- package/src-native/android/gesturehandler/proguard-rules.pro +17 -0
- package/src-native/android/gesturehandler/src/main/AndroidManifest.xml +9 -0
- package/src-native/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/src-native/android/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/src-native/android/gradle.properties +23 -0
- package/src-native/android/gradlew +160 -0
- package/src-native/android/gradlew.bat +90 -0
- package/src-native/android/settings.gradle +1 -0
- package/src-native/ios/GestureHandler.xcodeproj/project.pbxproj +662 -0
- package/src-native/ios/GestureHandler.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/src-native/ios/GestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/src-native/ios/GestureHandler.xcodeproj/xcshareddata/xcschemes/GestureHandler.xcscheme +76 -0
- package/src-native/ios/GestureHandler.xcodeproj/xcshareddata/xcschemes/GestureHandlerApp.xcscheme +87 -0
- package/src-native/ios/GestureHandler.xcodeproj/xcshareddata/xcschemes/GestureHandlerLib.xcscheme +76 -0
- package/src-native/ios/GestureHandler.xcodeproj/xcshareddata/xcschemes/test.xcscheme +76 -0
- package/src-native/ios/GestureHandler.xcodeproj/xcshareddata/xcschemes/universal.xcscheme +76 -0
- package/src-native/ios/build.sh +10 -0
- package/tools/.eslintrc.js +252 -0
- package/tools/builddoc.mjs +54 -0
- package/tools/common/.eslintrc.js +3 -0
- package/tools/common/.prettierignore +4 -0
- package/tools/common/.prettierrc.js +7 -0
- package/tools/common/references.d.ts +3 -0
- package/tools/package.json +116 -0
- package/tools/readme/blueprint.json +10 -0
- package/tools/readme/demos-and-development.md +35 -0
- package/tools/readme/edit-warning.md +20 -0
- package/tools/readme/questions.md +3 -0
- package/tools/readme.js +54 -0
- package/tools/sync.js +102 -0
- package/tools/tsconfig.doc.json +10 -0
- package/tools/tsconfig.eslint.json +4 -0
- package/tools/tsconfig.json +38 -0
- package/tools/typedoc.js +17 -0
- package/tools/update.js +32 -0
- package/tsconfig.json +4 -8
- package/.pnpm-debug.log +0 -1
- package/gesturehandler.android.d.ts +0 -180
- package/gesturehandler.android.js.map +0 -1
- package/gesturehandler.common.d.ts +0 -96
- package/gesturehandler.common.js.map +0 -1
- package/gesturehandler.ios.d.ts +0 -56
- package/gesturehandler.ios.js.map +0 -1
- package/gestures_override.d.ts +0 -29
- package/gestures_override.js.map +0 -1
- package/react/index.d.ts +0 -20
- package/react/index.js +0 -9
- package/react/index.js.map +0 -1
- package/svelte/index.d.ts +0 -11
- package/svelte/index.js +0 -26
- package/svelte/index.js.map +0 -1
- package/vue/index.d.ts +0 -4
- package/vue/index.js.map +0 -1
File without changes
|
@@ -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
|
+
}
|
File without changes
|
@@ -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
|