react-native-tvos 0.69.6-1 → 0.69.6-3
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/Libraries/Components/Pressable/Pressable.js +11 -2
- package/Libraries/Components/ScrollView/ScrollView.js +1 -0
- package/Libraries/Components/TV/TVEventHandler.js +4 -2
- package/Libraries/Components/TV/TVFocusEventHandler.js +4 -2
- package/Libraries/Components/TV/TVFocusGuideView.js +42 -66
- package/Libraries/Components/TV/TVViewPropTypes.js +7 -0
- package/Libraries/Components/TV/useTVEventHandler.js +2 -1
- package/Libraries/Components/TextInput/TextInput.js +1 -1
- package/Libraries/Components/Touchable/TVTouchable.js +1 -1
- package/Libraries/Components/Touchable/TouchableBounce.js +5 -0
- package/Libraries/Components/Touchable/TouchableHighlight.js +7 -2
- package/Libraries/Components/Touchable/TouchableOpacity.js +7 -2
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +7 -0
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/Libraries/LogBox/UI/LogBoxButton.js +16 -12
- package/Libraries/LogBox/UI/LogBoxNotification.js +1 -1
- package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +2 -20
- package/Libraries/StyleSheet/StyleSheetTypes.js +1 -0
- package/Libraries/Types/CoreEventTypes.js +9 -0
- package/README.md +2 -2
- package/React/Base/RCTTVRemoteHandler.h +4 -0
- package/React/Base/RCTTVRemoteHandler.m +40 -0
- package/React/Base/RCTVersion.m +1 -1
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +48 -4
- package/React/Views/RCTTVView.h +5 -0
- package/React/Views/RCTTVView.m +19 -0
- package/React/Views/RCTViewManager.m +1 -0
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.java +6 -1
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +4 -5
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java +57 -62
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactAndroidHWInputDeviceHelper.java +27 -3
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +18 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +190 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +5 -0
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/jsi/JSCRuntime.cpp +9 -2
- package/ReactCommon/react/renderer/components/view/ViewProps.cpp +13 -1
- package/ReactCommon/react/renderer/components/view/ViewProps.h +2 -1
- package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-release-javadoc.jar → 0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar} +0 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar.md5 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar.sha1 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar.sha256 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar.sha512 +1 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-debug-sources.jar → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar} +0 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-debug-sources.jar.md5 → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar.md5} +0 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-debug-sources.jar.sha1 → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar.sha1} +0 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-debug-sources.jar.sha256 → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar.sha256} +0 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-debug-sources.jar.sha512 → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar.sha512} +0 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug.aar +0 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug.aar.md5 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug.aar.sha1 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug.aar.sha256 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug.aar.sha512 +1 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-debug-javadoc.jar → 0.69.6-3/hermes-engine-0.69.6-3-release-javadoc.jar} +0 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release-javadoc.jar.md5 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release-javadoc.jar.sha1 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release-javadoc.jar.sha256 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release-javadoc.jar.sha512 +1 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-release-sources.jar → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar} +0 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-release-sources.jar.md5 → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar.md5} +0 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-release-sources.jar.sha1 → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar.sha1} +0 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-release-sources.jar.sha256 → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar.sha256} +0 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-release-sources.jar.sha512 → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar.sha512} +0 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release.aar +0 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release.aar.md5 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release.aar.sha1 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release.aar.sha256 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release.aar.sha512 +1 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1.module → 0.69.6-3/hermes-engine-0.69.6-3.module} +47 -47
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.module.md5 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.module.sha1 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.module.sha256 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.module.sha512 +1 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1.pom → 0.69.6-3/hermes-engine-0.69.6-3.pom} +1 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.pom.md5 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.pom.sha1 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.pom.sha256 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.pom.sha512 +1 -0
- package/android/com/facebook/react/hermes-engine/maven-metadata.xml +4 -4
- package/android/com/facebook/react/hermes-engine/maven-metadata.xml.md5 +1 -1
- package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha1 +1 -1
- package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha256 +1 -1
- package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha512 +1 -1
- package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1-release-javadoc.jar → 0.69.6-3/react-native-0.69.6-3-debug-javadoc.jar} +0 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-javadoc.jar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-javadoc.jar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-javadoc.jar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-javadoc.jar.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1-debug-sources.jar → 0.69.6-3/react-native-0.69.6-3-debug-sources.jar} +0 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-sources.jar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-sources.jar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-sources.jar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-sources.jar.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1-debug.aar → 0.69.6-3/react-native-0.69.6-3-debug.aar} +0 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug.aar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug.aar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug.aar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug.aar.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1-debug-javadoc.jar → 0.69.6-3/react-native-0.69.6-3-release-javadoc.jar} +0 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-javadoc.jar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-javadoc.jar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-javadoc.jar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-javadoc.jar.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1-release-sources.jar → 0.69.6-3/react-native-0.69.6-3-release-sources.jar} +0 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-sources.jar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-sources.jar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-sources.jar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-sources.jar.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1-release.aar → 0.69.6-3/react-native-0.69.6-3-release.aar} +0 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release.aar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release.aar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release.aar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release.aar.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1.module → 0.69.6-3/react-native-0.69.6-3.module} +57 -57
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.module.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.module.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.module.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.module.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1.pom → 0.69.6-3/react-native-0.69.6-3.pom} +1 -1
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.pom.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.pom.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.pom.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.pom.sha512 +1 -0
- package/android/com/facebook/react/react-native/maven-metadata.xml +4 -4
- package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
- package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
- package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -1
- package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -1
- package/index.js +1 -7
- package/package.json +1 -1
- package/react.gradle +14 -0
- package/template/package.json +1 -1
- package/tvos-types.d.ts +11 -2
- package/Libraries/DeprecatedPropTypes/DeprecatedTVViewPropTypes.js +0 -23
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug-javadoc.jar.md5 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug-javadoc.jar.sha1 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug-javadoc.jar.sha256 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug-javadoc.jar.sha512 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug.aar +0 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug.aar.md5 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug.aar.sha1 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug.aar.sha256 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug.aar.sha512 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release-javadoc.jar.md5 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release-javadoc.jar.sha1 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release-javadoc.jar.sha256 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release-javadoc.jar.sha512 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release.aar +0 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release.aar.md5 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release.aar.sha1 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release.aar.sha256 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release.aar.sha512 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.module.md5 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.module.sha1 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.module.sha256 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.module.sha512 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.pom.md5 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.pom.sha1 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.pom.sha256 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.pom.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-javadoc.jar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-javadoc.jar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-javadoc.jar.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-javadoc.jar.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-sources.jar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-sources.jar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-sources.jar.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-sources.jar.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug.aar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug.aar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug.aar.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug.aar.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-javadoc.jar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-javadoc.jar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-javadoc.jar.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-javadoc.jar.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-sources.jar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-sources.jar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-sources.jar.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-sources.jar.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release.aar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release.aar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release.aar.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release.aar.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.module.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.module.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.module.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.module.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.pom.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.pom.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.pom.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.pom.sha512 +0 -1
package/React/Base/RCTVersion.m
CHANGED
|
@@ -52,6 +52,7 @@ using namespace facebook::react;
|
|
|
52
52
|
UIView *_nextFocusLeft;
|
|
53
53
|
UIView *_nextFocusRight;
|
|
54
54
|
UIView *_nextFocusActiveTarget;
|
|
55
|
+
BOOL _autoFocus;
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
@synthesize removeClippedSubviews = _removeClippedSubviews;
|
|
@@ -131,7 +132,7 @@ using namespace facebook::react;
|
|
|
131
132
|
return (RCTRootComponentView *)rootview;
|
|
132
133
|
}
|
|
133
134
|
|
|
134
|
-
- (void)
|
|
135
|
+
- (void)addFocusGuide {
|
|
135
136
|
if (self.focusGuide == nil) {
|
|
136
137
|
self.focusGuide = [UIFocusGuide new];
|
|
137
138
|
[self addLayoutGuide:self.focusGuide];
|
|
@@ -141,7 +142,17 @@ using namespace facebook::react;
|
|
|
141
142
|
[self.focusGuide.widthAnchor constraintEqualToAnchor:self.widthAnchor].active = YES;
|
|
142
143
|
[self.focusGuide.heightAnchor constraintEqualToAnchor:self.heightAnchor].active = YES;
|
|
143
144
|
}
|
|
145
|
+
}
|
|
144
146
|
|
|
147
|
+
- (void)removeFocusGuide {
|
|
148
|
+
if (self.focusGuide != nil) {
|
|
149
|
+
[self removeLayoutGuide:self.focusGuide];
|
|
150
|
+
self.focusGuide = nil;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
- (void)addFocusDestinations:(NSArray*)destinations {
|
|
155
|
+
[self addFocusGuide];
|
|
145
156
|
self.focusGuide.preferredFocusEnvironments = destinations;
|
|
146
157
|
}
|
|
147
158
|
|
|
@@ -416,6 +427,17 @@ using namespace facebook::react;
|
|
|
416
427
|
if (context.previouslyFocusedView == context.nextFocusedView) {
|
|
417
428
|
return;
|
|
418
429
|
}
|
|
430
|
+
|
|
431
|
+
if (_autoFocus && self.focusGuide != nil && context.previouslyFocusedItem != nil) {
|
|
432
|
+
// Whenever focus leaves the container, `nextFocusedView` is the destination, the item outside the container.
|
|
433
|
+
// So, `previouslyFocusedItem` is always the last focused child of `TVFocusGuide`.
|
|
434
|
+
// We should update `preferredFocusEnvironments` in this case to make sure `FocusGuide` remembers
|
|
435
|
+
// the last focused element and redirects the focus to it whenever focus comes back.
|
|
436
|
+
// We also add `self` as the second option in case `previouslyFocusedItem` becomes unreachable (e.g gets detached).
|
|
437
|
+
// `self` helps redirecting focus to the first focusable element in that case.
|
|
438
|
+
self.focusGuide.preferredFocusEnvironments = @[context.previouslyFocusedItem, self];
|
|
439
|
+
}
|
|
440
|
+
|
|
419
441
|
if (context.nextFocusedView == self && self.isUserInteractionEnabled ) {
|
|
420
442
|
[self becomeFirstResponder];
|
|
421
443
|
[self enableDirectionalFocusGuides];
|
|
@@ -825,6 +847,16 @@ using namespace facebook::react;
|
|
|
825
847
|
_nextFocusRight = nil;
|
|
826
848
|
}
|
|
827
849
|
}
|
|
850
|
+
|
|
851
|
+
// `autoFocus`
|
|
852
|
+
if (oldViewProps.autoFocus != newViewProps.autoFocus) {
|
|
853
|
+
_autoFocus = newViewProps.autoFocus;
|
|
854
|
+
if (_autoFocus == true) {
|
|
855
|
+
[self addFocusGuide];
|
|
856
|
+
} else {
|
|
857
|
+
[self removeFocusGuide];
|
|
858
|
+
}
|
|
859
|
+
}
|
|
828
860
|
#endif
|
|
829
861
|
|
|
830
862
|
|
|
@@ -910,10 +942,22 @@ using namespace facebook::react;
|
|
|
910
942
|
if ([_propKeysManagedByAnimated_DO_NOT_USE_THIS_IS_BROKEN containsObject:@"opacity"]) {
|
|
911
943
|
self.layer.opacity = (float)props.opacity;
|
|
912
944
|
}
|
|
913
|
-
|
|
945
|
+
|
|
946
|
+
// We reset the `preferredFocusEnvironments` in case of recycling to prevent bugs.
|
|
947
|
+
// Resetting it also introduces a bug but it prevents much worse ones.
|
|
948
|
+
// The destination `focusEnvironment` reference could be recycled and used in another place so we might
|
|
949
|
+
// be holding a reference and redirecting the focus to the wrong view.
|
|
950
|
+
// To make sure that's not the case, we reset the destination to `self` which will
|
|
951
|
+
// redirect the focus to the first focusable child.
|
|
914
952
|
if (self.focusGuide != nil) {
|
|
915
|
-
|
|
916
|
-
|
|
953
|
+
self.focusGuide.preferredFocusEnvironments = @[self];
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
// If `autoFocus` is enabled, addition/removal process of `UIFocusGuide` is managed
|
|
957
|
+
// inside `updateProps` method. Removing `UIFocusGuide` here for that case would cause
|
|
958
|
+
// weird bugs and state loss.
|
|
959
|
+
if (!_autoFocus) {
|
|
960
|
+
[self removeFocusGuide];
|
|
917
961
|
}
|
|
918
962
|
|
|
919
963
|
_propKeysManagedByAnimated_DO_NOT_USE_THIS_IS_BROKEN = nil;
|
package/React/Views/RCTTVView.h
CHANGED
|
@@ -42,6 +42,11 @@
|
|
|
42
42
|
@property (nonatomic, strong) UIFocusGuide * focusGuideLeft;
|
|
43
43
|
@property (nonatomic, strong) UIFocusGuide * focusGuideRight;
|
|
44
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Auto focus
|
|
47
|
+
*/
|
|
48
|
+
@property (nonatomic, assign) BOOL autoFocus;
|
|
49
|
+
|
|
45
50
|
- (instancetype)initWithBridge:(RCTBridge *)bridge;
|
|
46
51
|
|
|
47
52
|
/**
|
package/React/Views/RCTTVView.m
CHANGED
|
@@ -261,6 +261,17 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithCoder : unused)
|
|
|
261
261
|
if (context.previouslyFocusedView == context.nextFocusedView) {
|
|
262
262
|
return;
|
|
263
263
|
}
|
|
264
|
+
|
|
265
|
+
if (_autoFocus && self.focusGuide != nil && context.previouslyFocusedItem != nil) {
|
|
266
|
+
// Whenever focus leaves the container, `nextFocusedView` is the destination, the item outside the container.
|
|
267
|
+
// So, `previouslyFocusedItem` is always the last focused child of `TVFocusGuide`.
|
|
268
|
+
// We should update `preferredFocusEnvironments` in this case to make sure `FocusGuide` remembers
|
|
269
|
+
// the last focused element and redirects the focus to it whenever focus comes back.
|
|
270
|
+
// We also add `self` as the second option in case `previouslyFocusedItem` becomes unreachable (e.g gets detached).
|
|
271
|
+
// `self` helps redirecting focus to the first focusable element in that case.
|
|
272
|
+
self.focusGuide.preferredFocusEnvironments = @[context.previouslyFocusedItem, self];
|
|
273
|
+
}
|
|
274
|
+
|
|
264
275
|
if (context.nextFocusedView == self && self.isTVSelectable ) {
|
|
265
276
|
[self becomeFirstResponder];
|
|
266
277
|
[self enableDirectionalFocusGuides];
|
|
@@ -432,6 +443,14 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithCoder : unused)
|
|
|
432
443
|
[self setPreferredFocus:hasTVPreferredFocus];
|
|
433
444
|
}
|
|
434
445
|
|
|
446
|
+
- (void)setAutoFocus:(BOOL)autoFocus
|
|
447
|
+
{
|
|
448
|
+
if (_autoFocus != autoFocus) {
|
|
449
|
+
_autoFocus = autoFocus;
|
|
450
|
+
[self addFocusGuide:@[self]];
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
|
|
435
454
|
- (void)addFocusGuide:(NSArray*)destinations {
|
|
436
455
|
if (self.focusGuide == nil) {
|
|
437
456
|
self.focusGuide = [UIFocusGuide new];
|
|
@@ -137,6 +137,7 @@ RCT_EXPORT_VIEW_PROPERTY(nextFocusUp, NSNumber)
|
|
|
137
137
|
RCT_EXPORT_VIEW_PROPERTY(nextFocusDown, NSNumber)
|
|
138
138
|
RCT_EXPORT_VIEW_PROPERTY(nextFocusLeft, NSNumber)
|
|
139
139
|
RCT_EXPORT_VIEW_PROPERTY(nextFocusRight, NSNumber)
|
|
140
|
+
RCT_EXPORT_VIEW_PROPERTY(autoFocus, BOOL)
|
|
140
141
|
#endif
|
|
141
142
|
|
|
142
143
|
// Accessibility related properties
|
|
@@ -21,8 +21,13 @@ import java.util.List;
|
|
|
21
21
|
/* package */ class EventAnimationDriver implements RCTEventEmitter {
|
|
22
22
|
private List<String> mEventPath;
|
|
23
23
|
/* package */ ValueAnimatedNode mValueNode;
|
|
24
|
+
/* package */ String mEventName;
|
|
25
|
+
/* package */ int mViewTag;
|
|
24
26
|
|
|
25
|
-
public EventAnimationDriver(
|
|
27
|
+
public EventAnimationDriver(
|
|
28
|
+
String eventName, int viewTag, List<String> eventPath, ValueAnimatedNode valueNode) {
|
|
29
|
+
mEventName = eventName;
|
|
30
|
+
mViewTag = viewTag;
|
|
26
31
|
mEventPath = eventPath;
|
|
27
32
|
mValueNode = valueNode;
|
|
28
33
|
}
|
|
@@ -113,7 +113,7 @@ public class NativeAnimatedModule extends NativeAnimatedModuleSpec
|
|
|
113
113
|
|
|
114
114
|
@AnyThread
|
|
115
115
|
boolean isEmpty() {
|
|
116
|
-
return mQueue.isEmpty();
|
|
116
|
+
return mQueue.isEmpty() && mPeekedOperation != null;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
void setSynchronizedAccess(boolean isSynchronizedAccess) {
|
|
@@ -393,8 +393,8 @@ public class NativeAnimatedModule extends NativeAnimatedModuleSpec
|
|
|
393
393
|
|
|
394
394
|
/**
|
|
395
395
|
* Given a viewTag, detect if we're running in Fabric or non-Fabric and attach an event listener
|
|
396
|
-
* to the correct UIManager, if necessary. This is expected to only be called from the
|
|
397
|
-
* and not concurrently.
|
|
396
|
+
* to the correct UIManager, if necessary. This is expected to only be called from the native
|
|
397
|
+
* module thread, and not concurrently.
|
|
398
398
|
*
|
|
399
399
|
* @param viewTag
|
|
400
400
|
*/
|
|
@@ -417,8 +417,7 @@ public class NativeAnimatedModule extends NativeAnimatedModuleSpec
|
|
|
417
417
|
}
|
|
418
418
|
|
|
419
419
|
// Subscribe to UIManager (Fabric or non-Fabric) lifecycle events if we haven't yet
|
|
420
|
-
if (
|
|
421
|
-
|| (mInitializedForNonFabric && mUIManagerType == UIManagerType.DEFAULT)) {
|
|
420
|
+
if (mUIManagerType == UIManagerType.FABRIC ? mInitializedForFabric : mInitializedForNonFabric) {
|
|
422
421
|
return;
|
|
423
422
|
}
|
|
424
423
|
|
package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java
CHANGED
|
@@ -30,11 +30,9 @@ import com.facebook.react.uimanager.events.EventDispatcher;
|
|
|
30
30
|
import com.facebook.react.uimanager.events.EventDispatcherListener;
|
|
31
31
|
import java.util.ArrayDeque;
|
|
32
32
|
import java.util.ArrayList;
|
|
33
|
-
import java.util.HashMap;
|
|
34
33
|
import java.util.LinkedList;
|
|
35
34
|
import java.util.List;
|
|
36
35
|
import java.util.ListIterator;
|
|
37
|
-
import java.util.Map;
|
|
38
36
|
import java.util.Queue;
|
|
39
37
|
|
|
40
38
|
/**
|
|
@@ -57,9 +55,9 @@ import java.util.Queue;
|
|
|
57
55
|
private final SparseArray<AnimatedNode> mAnimatedNodes = new SparseArray<>();
|
|
58
56
|
private final SparseArray<AnimationDriver> mActiveAnimations = new SparseArray<>();
|
|
59
57
|
private final SparseArray<AnimatedNode> mUpdatedNodes = new SparseArray<>();
|
|
60
|
-
//
|
|
61
|
-
//
|
|
62
|
-
private final
|
|
58
|
+
// List of event animation drivers for an event on view.
|
|
59
|
+
// There may be multiple drivers for the same event and view.
|
|
60
|
+
private final List<EventAnimationDriver> mEventDrivers = new ArrayList<>();
|
|
63
61
|
private final ReactApplicationContext mReactApplicationContext;
|
|
64
62
|
private int mAnimatedGraphBFSColor = 0;
|
|
65
63
|
// Used to avoid allocating a new array on every frame in `runUpdates` and `onEventDispatch`.
|
|
@@ -76,36 +74,27 @@ import java.util.Queue;
|
|
|
76
74
|
|
|
77
75
|
/**
|
|
78
76
|
* Initialize event listeners for Fabric UIManager or non-Fabric UIManager, exactly once. Once
|
|
79
|
-
* Fabric is the only UIManager, this logic can be simplified. This is
|
|
80
|
-
* thread.
|
|
77
|
+
* Fabric is the only UIManager, this logic can be simplified. This is expected to only be called
|
|
78
|
+
* from the native module thread.
|
|
81
79
|
*
|
|
82
80
|
* @param uiManagerType
|
|
83
81
|
*/
|
|
84
|
-
@UiThread
|
|
85
82
|
public void initializeEventListenerForUIManagerType(@UIManagerType final int uiManagerType) {
|
|
86
|
-
if (
|
|
87
|
-
|
|
83
|
+
if (uiManagerType == UIManagerType.FABRIC
|
|
84
|
+
? mEventListenerInitializedForFabric
|
|
85
|
+
: mEventListenerInitializedForNonFabric) {
|
|
88
86
|
return;
|
|
89
87
|
}
|
|
90
88
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
if (uiManagerType == UIManagerType.FABRIC) {
|
|
102
|
-
mEventListenerInitializedForFabric = true;
|
|
103
|
-
} else {
|
|
104
|
-
mEventListenerInitializedForNonFabric = true;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
});
|
|
89
|
+
UIManager uiManager = UIManagerHelper.getUIManager(mReactApplicationContext, uiManagerType);
|
|
90
|
+
if (uiManager != null) {
|
|
91
|
+
uiManager.<EventDispatcher>getEventDispatcher().addListener(this);
|
|
92
|
+
if (uiManagerType == UIManagerType.FABRIC) {
|
|
93
|
+
mEventListenerInitializedForFabric = true;
|
|
94
|
+
} else {
|
|
95
|
+
mEventListenerInitializedForNonFabric = true;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
109
98
|
}
|
|
110
99
|
|
|
111
100
|
/*package*/ @Nullable
|
|
@@ -471,7 +460,8 @@ import java.util.Queue;
|
|
|
471
460
|
}
|
|
472
461
|
|
|
473
462
|
@UiThread
|
|
474
|
-
public void addAnimatedEventToView(
|
|
463
|
+
public void addAnimatedEventToView(
|
|
464
|
+
int viewTag, String eventHandlerName, ReadableMap eventMapping) {
|
|
475
465
|
int nodeTag = eventMapping.getInt("animatedValueTag");
|
|
476
466
|
AnimatedNode node = mAnimatedNodes.get(nodeTag);
|
|
477
467
|
if (node == null) {
|
|
@@ -482,8 +472,8 @@ import java.util.Queue;
|
|
|
482
472
|
throw new JSApplicationIllegalArgumentException(
|
|
483
473
|
"addAnimatedEventToView: Animated node on view ["
|
|
484
474
|
+ viewTag
|
|
485
|
-
+ "] connected to event ("
|
|
486
|
-
+
|
|
475
|
+
+ "] connected to event handler ("
|
|
476
|
+
+ eventHandlerName
|
|
487
477
|
+ ") should be of type "
|
|
488
478
|
+ ValueAnimatedNode.class.getName());
|
|
489
479
|
}
|
|
@@ -494,37 +484,31 @@ import java.util.Queue;
|
|
|
494
484
|
pathList.add(path.getString(i));
|
|
495
485
|
}
|
|
496
486
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
List<EventAnimationDriver> drivers = new ArrayList<>(1);
|
|
503
|
-
drivers.add(event);
|
|
504
|
-
mEventDrivers.put(key, drivers);
|
|
505
|
-
}
|
|
487
|
+
String eventName = normalizeEventName(eventHandlerName);
|
|
488
|
+
|
|
489
|
+
EventAnimationDriver eventDriver =
|
|
490
|
+
new EventAnimationDriver(eventName, viewTag, pathList, (ValueAnimatedNode) node);
|
|
491
|
+
mEventDrivers.add(eventDriver);
|
|
506
492
|
}
|
|
507
493
|
|
|
508
494
|
@UiThread
|
|
509
|
-
public void removeAnimatedEventFromView(
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
}
|
|
495
|
+
public void removeAnimatedEventFromView(
|
|
496
|
+
int viewTag, String eventHandlerName, int animatedValueTag) {
|
|
497
|
+
|
|
498
|
+
String eventName = normalizeEventName(eventHandlerName);
|
|
499
|
+
|
|
500
|
+
ListIterator<EventAnimationDriver> it = mEventDrivers.listIterator();
|
|
501
|
+
while (it.hasNext()) {
|
|
502
|
+
EventAnimationDriver driver = it.next();
|
|
503
|
+
if (eventName.equals(driver.mEventName)
|
|
504
|
+
&& viewTag == driver.mViewTag
|
|
505
|
+
&& animatedValueTag == driver.mValueNode.mTag) {
|
|
506
|
+
it.remove();
|
|
507
|
+
break;
|
|
523
508
|
}
|
|
524
509
|
}
|
|
525
510
|
}
|
|
526
511
|
|
|
527
|
-
@UiThread
|
|
528
512
|
@Override
|
|
529
513
|
public void onEventDispatch(final Event event) {
|
|
530
514
|
// Events can be dispatched from any thread so we have to make sure handleEvent is run from the
|
|
@@ -556,18 +540,19 @@ import java.util.Queue;
|
|
|
556
540
|
if (uiManager == null) {
|
|
557
541
|
return;
|
|
558
542
|
}
|
|
559
|
-
String eventName = uiManager.resolveCustomDirectEventName(event.getEventName());
|
|
560
|
-
if (eventName == null) {
|
|
561
|
-
eventName = "";
|
|
562
|
-
}
|
|
563
543
|
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
544
|
+
boolean foundAtLeastOneDriver = false;
|
|
545
|
+
Event.EventAnimationDriverMatchSpec matchSpec = event.getEventAnimationDriverMatchSpec();
|
|
546
|
+
for (EventAnimationDriver driver : mEventDrivers) {
|
|
547
|
+
if (matchSpec.match(driver.mViewTag, driver.mEventName)) {
|
|
548
|
+
foundAtLeastOneDriver = true;
|
|
567
549
|
stopAnimationsForNode(driver.mValueNode);
|
|
568
550
|
event.dispatch(driver);
|
|
569
551
|
mRunUpdateNodeList.add(driver.mValueNode);
|
|
570
552
|
}
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
if (foundAtLeastOneDriver) {
|
|
571
556
|
updateNodes(mRunUpdateNodeList);
|
|
572
557
|
mRunUpdateNodeList.clear();
|
|
573
558
|
}
|
|
@@ -782,4 +767,14 @@ import java.util.Queue;
|
|
|
782
767
|
mWarnedAboutGraphTraversal = false;
|
|
783
768
|
}
|
|
784
769
|
}
|
|
770
|
+
|
|
771
|
+
private String normalizeEventName(String eventHandlerName) {
|
|
772
|
+
// Fabric UIManager also makes this assumption
|
|
773
|
+
String eventName = eventHandlerName;
|
|
774
|
+
if (eventHandlerName.startsWith("on")) {
|
|
775
|
+
eventName = "top" + eventHandlerName.substring(2);
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
return eventName;
|
|
779
|
+
}
|
|
785
780
|
}
|
|
@@ -63,6 +63,18 @@ public class ReactAndroidHWInputDeviceHelper {
|
|
|
63
63
|
.put(KeyEvent.KEYCODE_CHANNEL_UP, "channelUp")
|
|
64
64
|
.build();
|
|
65
65
|
|
|
66
|
+
private static final Map<Integer, String> KEY_EVENTS_LONG_PRESS_ACTIONS =
|
|
67
|
+
MapBuilder.<Integer, String>builder()
|
|
68
|
+
.put(KeyEvent.KEYCODE_DPAD_CENTER, "longSelect")
|
|
69
|
+
.put(KeyEvent.KEYCODE_ENTER, "longSelect")
|
|
70
|
+
.put(KeyEvent.KEYCODE_NUMPAD_ENTER, "longSelect")
|
|
71
|
+
.put(KeyEvent.KEYCODE_BUTTON_SELECT, "longSelect")
|
|
72
|
+
.put(KeyEvent.KEYCODE_DPAD_UP, "longUp")
|
|
73
|
+
.put(KeyEvent.KEYCODE_DPAD_RIGHT, "longRight")
|
|
74
|
+
.put(KeyEvent.KEYCODE_DPAD_DOWN, "longDown")
|
|
75
|
+
.put(KeyEvent.KEYCODE_DPAD_LEFT, "longLeft")
|
|
76
|
+
.build();
|
|
77
|
+
|
|
66
78
|
/**
|
|
67
79
|
* We keep a reference to the last focused view id so that we can send it as a target for key
|
|
68
80
|
* events and be able to send a blur event when focus changes.
|
|
@@ -81,21 +93,33 @@ public class ReactAndroidHWInputDeviceHelper {
|
|
|
81
93
|
eventKeyCode == KeyEvent.KEYCODE_ENTER;
|
|
82
94
|
}
|
|
83
95
|
|
|
96
|
+
/** Only the up/right/down/left arrows. The dpad center button is not included */
|
|
97
|
+
private boolean isDPadEvent(int eventKeyCode) {
|
|
98
|
+
return eventKeyCode == KeyEvent.KEYCODE_DPAD_UP ||
|
|
99
|
+
eventKeyCode == KeyEvent.KEYCODE_DPAD_RIGHT ||
|
|
100
|
+
eventKeyCode == KeyEvent.KEYCODE_DPAD_DOWN ||
|
|
101
|
+
eventKeyCode == KeyEvent.KEYCODE_DPAD_LEFT;
|
|
102
|
+
}
|
|
103
|
+
|
|
84
104
|
/** Called from {@link com.facebook.react.ReactRootView}. This is the main place the key events are handled. */
|
|
85
105
|
public void handleKeyEvent(KeyEvent ev, ReactContext context) {
|
|
86
106
|
int eventKeyCode = ev.getKeyCode();
|
|
87
107
|
int eventKeyAction = ev.getAction();
|
|
88
108
|
long time = SystemClock.uptimeMillis();
|
|
109
|
+
boolean isSelectOrDPadEvent = isDPadEvent(eventKeyCode) || isSelectEvent(eventKeyCode);
|
|
89
110
|
|
|
90
111
|
// Simple implementation of long press detection
|
|
91
112
|
if ((eventKeyAction == KeyEvent.ACTION_DOWN)
|
|
92
|
-
&&
|
|
113
|
+
&& isSelectOrDPadEvent && mLastKeyDownTime == 0) {
|
|
93
114
|
mLastKeyDownTime = time;
|
|
94
115
|
}
|
|
116
|
+
|
|
95
117
|
if (shouldDispatchEvent(eventKeyCode, eventKeyAction)) {
|
|
96
118
|
long delta = time - mLastKeyDownTime;
|
|
97
|
-
|
|
98
|
-
|
|
119
|
+
boolean isLongPress = delta > mPressedDelta;
|
|
120
|
+
|
|
121
|
+
if(isLongPress && isSelectOrDPadEvent){
|
|
122
|
+
dispatchEvent(KEY_EVENTS_LONG_PRESS_ACTIONS.get(eventKeyCode), mLastFocusedViewId, eventKeyAction, context);
|
|
99
123
|
} else {
|
|
100
124
|
dispatchEvent(KEY_EVENTS_ACTIONS.get(eventKeyCode), mLastFocusedViewId, eventKeyAction, context);
|
|
101
125
|
}
|
|
@@ -39,6 +39,7 @@ public abstract class Event<T extends Event> {
|
|
|
39
39
|
private int mViewTag;
|
|
40
40
|
private long mTimestampMs;
|
|
41
41
|
private int mUniqueID = sUniqueID++;
|
|
42
|
+
private @Nullable EventAnimationDriverMatchSpec mEventAnimationDriverMatchSpec;
|
|
42
43
|
|
|
43
44
|
protected Event() {}
|
|
44
45
|
|
|
@@ -156,6 +157,19 @@ public abstract class Event<T extends Event> {
|
|
|
156
157
|
/** @return the name of this event as registered in JS */
|
|
157
158
|
public abstract String getEventName();
|
|
158
159
|
|
|
160
|
+
public EventAnimationDriverMatchSpec getEventAnimationDriverMatchSpec() {
|
|
161
|
+
if (mEventAnimationDriverMatchSpec == null) {
|
|
162
|
+
mEventAnimationDriverMatchSpec =
|
|
163
|
+
new EventAnimationDriverMatchSpec() {
|
|
164
|
+
@Override
|
|
165
|
+
public boolean match(int viewTag, String eventName) {
|
|
166
|
+
return viewTag == getViewTag() && eventName.equals(getEventName());
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
return mEventAnimationDriverMatchSpec;
|
|
171
|
+
}
|
|
172
|
+
|
|
159
173
|
/**
|
|
160
174
|
* Dispatch this event to JS using the given event emitter. Compatible with old and new renderer.
|
|
161
175
|
* Instead of using this or dispatchModern, it is recommended that you simply override
|
|
@@ -216,4 +230,8 @@ public abstract class Event<T extends Event> {
|
|
|
216
230
|
}
|
|
217
231
|
dispatch(rctEventEmitter);
|
|
218
232
|
}
|
|
233
|
+
|
|
234
|
+
public interface EventAnimationDriverMatchSpec {
|
|
235
|
+
boolean match(int viewTag, String eventName);
|
|
236
|
+
}
|
|
219
237
|
}
|