react-native-tvos 0.69.6-2 → 0.69.8-0rc
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 +75 -47
- 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/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/Components/View/ViewNativeComponent.js +1 -1
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Lists/VirtualizedList.js +25 -10
- 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 +3 -1
- package/React/Base/RCTVersion.m +2 -2
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +89 -8
- package/React/Views/RCTTVView.h +11 -1
- package/React/Views/RCTTVView.m +77 -0
- package/React/Views/RCTViewManager.m +6 -1
- 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/config/ReactFeatureFlags.java +7 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactAndroidHWInputDeviceHelper.java +44 -14
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +18 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +25 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +245 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +45 -4
- package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
- package/ReactCommon/react/renderer/components/view/ViewProps.cpp +87 -11
- package/ReactCommon/react/renderer/components/view/ViewProps.h +10 -1
- package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar → 0.69.8-0rc/hermes-engine-0.69.8-0rc-debug-javadoc.jar} +0 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug-javadoc.jar.md5 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug-javadoc.jar.sha1 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug-javadoc.jar.sha256 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug-javadoc.jar.sha512 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug.aar +0 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug.aar.md5 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug.aar.sha1 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug.aar.sha256 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug.aar.sha512 +1 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar → 0.69.8-0rc/hermes-engine-0.69.8-0rc-release-javadoc.jar} +0 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release-javadoc.jar.md5 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release-javadoc.jar.sha1 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release-javadoc.jar.sha256 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release-javadoc.jar.sha512 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release.aar +0 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release.aar.md5 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release.aar.sha1 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release.aar.sha256 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release.aar.sha512 +1 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2.module → 0.69.8-0rc/hermes-engine-0.69.8-0rc.module} +47 -47
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.module.md5 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.module.sha1 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.module.sha256 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.module.sha512 +1 -0
- package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2.pom → 0.69.8-0rc/hermes-engine-0.69.8-0rc.pom} +1 -1
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.pom.md5 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.pom.sha1 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.pom.sha256 +1 -0
- package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.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-2/react-native-0.69.6-2-debug-javadoc.jar → 0.69.8-0rc/react-native-0.69.8-0rc-debug-javadoc.jar} +0 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-javadoc.jar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-javadoc.jar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-javadoc.jar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-javadoc.jar.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2-debug-sources.jar → 0.69.8-0rc/react-native-0.69.8-0rc-debug-sources.jar} +0 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-sources.jar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-sources.jar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-sources.jar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-sources.jar.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2-debug.aar → 0.69.8-0rc/react-native-0.69.8-0rc-debug.aar} +0 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug.aar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug.aar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug.aar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug.aar.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2-release-javadoc.jar → 0.69.8-0rc/react-native-0.69.8-0rc-release-javadoc.jar} +0 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-javadoc.jar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-javadoc.jar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-javadoc.jar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-javadoc.jar.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2-release-sources.jar → 0.69.8-0rc/react-native-0.69.8-0rc-release-sources.jar} +0 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-sources.jar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-sources.jar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-sources.jar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-sources.jar.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2-release.aar → 0.69.8-0rc/react-native-0.69.8-0rc-release.aar} +0 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release.aar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release.aar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release.aar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release.aar.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2.module → 0.69.8-0rc/react-native-0.69.8-0rc.module} +57 -57
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.module.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.module.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.module.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.module.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2.pom → 0.69.8-0rc/react-native-0.69.8-0rc.pom} +1 -1
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.pom.md5 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.pom.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.pom.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.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 +2 -2
- package/sdks/hermesc/linux64-bin/hermesc +0 -0
- package/sdks/hermesc/osx-bin/hermesc +0 -0
- package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
- package/template/package.json +1 -1
- package/tvos-types.d.ts +37 -5
- package/Libraries/DeprecatedPropTypes/DeprecatedTVViewPropTypes.js +0 -23
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.md5 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.sha1 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.sha256 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.sha512 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar +0 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.md5 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.sha1 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.sha256 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.sha512 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.md5 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.sha1 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.sha256 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.sha512 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar +0 -0
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.md5 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.sha1 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.sha256 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.sha512 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.md5 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.sha1 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.sha256 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.sha512 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.md5 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.sha1 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.sha256 +0 -1
- package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.sha512 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.md5 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.sha256 +0 -1
- package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.sha512 +0 -1
- /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar → 0.69.8-0rc/hermes-engine-0.69.8-0rc-debug-sources.jar} +0 -0
- /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar.md5 → 0.69.8-0rc/hermes-engine-0.69.8-0rc-debug-sources.jar.md5} +0 -0
- /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar.sha1 → 0.69.8-0rc/hermes-engine-0.69.8-0rc-debug-sources.jar.sha1} +0 -0
- /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar.sha256 → 0.69.8-0rc/hermes-engine-0.69.8-0rc-debug-sources.jar.sha256} +0 -0
- /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar.sha512 → 0.69.8-0rc/hermes-engine-0.69.8-0rc-debug-sources.jar.sha512} +0 -0
- /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar → 0.69.8-0rc/hermes-engine-0.69.8-0rc-release-sources.jar} +0 -0
- /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar.md5 → 0.69.8-0rc/hermes-engine-0.69.8-0rc-release-sources.jar.md5} +0 -0
- /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar.sha1 → 0.69.8-0rc/hermes-engine-0.69.8-0rc-release-sources.jar.sha1} +0 -0
- /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar.sha256 → 0.69.8-0rc/hermes-engine-0.69.8-0rc-release-sources.jar.sha256} +0 -0
- /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar.sha512 → 0.69.8-0rc/hermes-engine-0.69.8-0rc-release-sources.jar.sha512} +0 -0
|
@@ -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
|
}
|
|
@@ -586,6 +586,10 @@ public class ReactEditText extends AppCompatEditText
|
|
|
586
586
|
new SpannableStringBuilder(reactTextUpdate.getText());
|
|
587
587
|
|
|
588
588
|
manageSpans(spannableStringBuilder, reactTextUpdate.mContainsMultipleFragments);
|
|
589
|
+
|
|
590
|
+
// Mitigation for https://github.com/facebook/react-native/issues/35936 (S318090)
|
|
591
|
+
stripAbsoluteSizeSpans(spannableStringBuilder);
|
|
592
|
+
|
|
589
593
|
mContainsImages = reactTextUpdate.containsImages();
|
|
590
594
|
|
|
591
595
|
// When we update text, we trigger onChangeText code that will
|
|
@@ -659,6 +663,27 @@ public class ReactEditText extends AppCompatEditText
|
|
|
659
663
|
}
|
|
660
664
|
}
|
|
661
665
|
|
|
666
|
+
private void stripAbsoluteSizeSpans(SpannableStringBuilder sb) {
|
|
667
|
+
// We have already set a font size on the EditText itself. We can safely remove sizing spans
|
|
668
|
+
// which are the same as the set font size, and not otherwise overlapped.
|
|
669
|
+
final int effectiveFontSize = mTextAttributes.getEffectiveFontSize();
|
|
670
|
+
ReactAbsoluteSizeSpan[] spans = sb.getSpans(0, sb.length(), ReactAbsoluteSizeSpan.class);
|
|
671
|
+
|
|
672
|
+
outerLoop:
|
|
673
|
+
for (ReactAbsoluteSizeSpan span : spans) {
|
|
674
|
+
ReactAbsoluteSizeSpan[] overlappingSpans =
|
|
675
|
+
sb.getSpans(sb.getSpanStart(span), sb.getSpanEnd(span), ReactAbsoluteSizeSpan.class);
|
|
676
|
+
|
|
677
|
+
for (ReactAbsoluteSizeSpan overlappingSpan : overlappingSpans) {
|
|
678
|
+
if (span.getSize() != effectiveFontSize) {
|
|
679
|
+
continue outerLoop;
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
sb.removeSpan(span);
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
|
|
662
687
|
private static boolean sameTextForSpan(
|
|
663
688
|
final Editable oldText,
|
|
664
689
|
final SpannableStringBuilder newText,
|
|
@@ -20,6 +20,7 @@ import android.graphics.RectF;
|
|
|
20
20
|
import android.graphics.drawable.Drawable;
|
|
21
21
|
import android.graphics.drawable.LayerDrawable;
|
|
22
22
|
import android.os.Build;
|
|
23
|
+
import android.view.FocusFinder;
|
|
23
24
|
import android.view.MotionEvent;
|
|
24
25
|
import android.view.View;
|
|
25
26
|
import android.view.ViewGroup;
|
|
@@ -60,6 +61,9 @@ import com.facebook.react.uimanager.common.UIManagerType;
|
|
|
60
61
|
import com.facebook.react.uimanager.common.ViewUtil;
|
|
61
62
|
import com.facebook.yoga.YogaConstants;
|
|
62
63
|
|
|
64
|
+
import java.lang.ref.WeakReference;
|
|
65
|
+
import java.util.ArrayList;
|
|
66
|
+
|
|
63
67
|
/**
|
|
64
68
|
* Backing for a React View. Has support for borders, but since borders aren't common, lazy
|
|
65
69
|
* initializes most of the storage needed for them.
|
|
@@ -80,6 +84,13 @@ public class ReactViewGroup extends ViewGroup
|
|
|
80
84
|
/* should only be used in {@link #updateClippingToRect} */
|
|
81
85
|
private static final Rect sHelperRect = new Rect();
|
|
82
86
|
private @NonNull int[] focusDestinations = new int[0];
|
|
87
|
+
private boolean autoFocus = false;
|
|
88
|
+
private WeakReference<View> lastFocusedElement;
|
|
89
|
+
private boolean mRecoverFocus = false;
|
|
90
|
+
private boolean trapFocusUp = false;
|
|
91
|
+
private boolean trapFocusDown = false;
|
|
92
|
+
private boolean trapFocusLeft = false;
|
|
93
|
+
private boolean trapFocusRight = false;
|
|
83
94
|
|
|
84
95
|
/**
|
|
85
96
|
* This listener will be set for child views when removeClippedSubview property is enabled. When
|
|
@@ -440,6 +451,71 @@ public class ReactViewGroup extends ViewGroup
|
|
|
440
451
|
}
|
|
441
452
|
}
|
|
442
453
|
|
|
454
|
+
boolean moveFocusToFirstFocusable(ReactViewGroup viewGroup) {
|
|
455
|
+
ArrayList<View> focusables = new ArrayList<View>(0);
|
|
456
|
+
/**
|
|
457
|
+
* `addFocusables` is the method used by `FocusFinder` to determine
|
|
458
|
+
* which elements are `focusable` within the given view.
|
|
459
|
+
* Here we use it for the exact purpose. It mutates/populates the `focusables` array list.
|
|
460
|
+
* Focus direction (FOCUS_DOWN) doesn't matter at all because
|
|
461
|
+
* it's not being used by the underlying implementation.
|
|
462
|
+
*/
|
|
463
|
+
viewGroup.addFocusables(focusables, FOCUS_DOWN, FOCUSABLES_ALL);
|
|
464
|
+
/**
|
|
465
|
+
* Depending on ViewGroup's `descendantFocusability` property,
|
|
466
|
+
* the first element can be the ViewGroup itself.
|
|
467
|
+
* The other ones on the list can be non-focusable as well.
|
|
468
|
+
* So, we run a loop till finding the first real focusable element.
|
|
469
|
+
*/
|
|
470
|
+
if (focusables.size() <= 0) return false;
|
|
471
|
+
|
|
472
|
+
View firstFocusableElement = null;
|
|
473
|
+
Integer index = 0;
|
|
474
|
+
while (firstFocusableElement == null && index < focusables.size()) {
|
|
475
|
+
View elem = focusables.get(index);
|
|
476
|
+
if (elem.isFocusable() && elem != viewGroup) {
|
|
477
|
+
firstFocusableElement = elem;
|
|
478
|
+
break;
|
|
479
|
+
}
|
|
480
|
+
index++;
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
if (firstFocusableElement != null) return firstFocusableElement.requestFocus();
|
|
484
|
+
|
|
485
|
+
return false;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
void recoverFocus(View view) {
|
|
489
|
+
if (!view.hasFocus() || !(view instanceof ReactViewGroup)) return;
|
|
490
|
+
|
|
491
|
+
ReactViewGroup parentFocusGuide = findParentFocusGuide(view);
|
|
492
|
+
if (parentFocusGuide == null) return;
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Making `parentFocusGuide` focusable for a brief time to
|
|
496
|
+
* temporarily move the focus to it. We do this to prevent
|
|
497
|
+
* Android from moving the focus to top-left-most element of the screen.
|
|
498
|
+
*/
|
|
499
|
+
parentFocusGuide.mRecoverFocus = true;
|
|
500
|
+
parentFocusGuide.setFocusable(true);
|
|
501
|
+
parentFocusGuide.requestFocus();
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* We set a Runnable to wait and make sure every layout related action gets completed
|
|
505
|
+
* before trying to find a new focus candidate inside the `parentFocusGuide`.
|
|
506
|
+
*/
|
|
507
|
+
UiThreadUtil.runOnUiThread(
|
|
508
|
+
new Runnable() {
|
|
509
|
+
@Override
|
|
510
|
+
public void run() {
|
|
511
|
+
moveFocusToFirstFocusable(parentFocusGuide);
|
|
512
|
+
|
|
513
|
+
parentFocusGuide.setFocusable(false);
|
|
514
|
+
parentFocusGuide.mRecoverFocus = false;
|
|
515
|
+
}
|
|
516
|
+
});
|
|
517
|
+
}
|
|
518
|
+
|
|
443
519
|
@Override
|
|
444
520
|
public boolean getChildVisibleRect(View child, Rect r, android.graphics.Point offset) {
|
|
445
521
|
return super.getChildVisibleRect(child, r, offset);
|
|
@@ -494,6 +570,8 @@ public class ReactViewGroup extends ViewGroup
|
|
|
494
570
|
setChildrenDrawingOrderEnabled(false);
|
|
495
571
|
}
|
|
496
572
|
|
|
573
|
+
recoverFocus(view);
|
|
574
|
+
|
|
497
575
|
super.removeView(view);
|
|
498
576
|
}
|
|
499
577
|
|
|
@@ -508,6 +586,8 @@ public class ReactViewGroup extends ViewGroup
|
|
|
508
586
|
setChildrenDrawingOrderEnabled(false);
|
|
509
587
|
}
|
|
510
588
|
|
|
589
|
+
recoverFocus(getChildAt(index));
|
|
590
|
+
|
|
511
591
|
super.removeViewAt(index);
|
|
512
592
|
}
|
|
513
593
|
|
|
@@ -1017,28 +1097,186 @@ public class ReactViewGroup extends ViewGroup
|
|
|
1017
1097
|
return false;
|
|
1018
1098
|
}
|
|
1019
1099
|
|
|
1100
|
+
private boolean isFocusDestinationsSet() {
|
|
1101
|
+
return focusDestinations.length > 0;
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
private boolean isTVFocusGuide() {
|
|
1105
|
+
/**
|
|
1106
|
+
* We don't count a view as `TVFocusGuide` if it has `trapFocus*` props enabled.
|
|
1107
|
+
* The reason is, it's a seperate functionality that has nothing to do with other
|
|
1108
|
+
* TVFocusGuide features that involves heavy focus management. So, the feature
|
|
1109
|
+
* is not directly tied to `TVFocusGuide`.
|
|
1110
|
+
*/
|
|
1111
|
+
return isFocusDestinationsSet() || autoFocus;
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
@Nullable
|
|
1115
|
+
private ReactViewGroup findParentFocusGuide(View view) {
|
|
1116
|
+
ViewParent parent = view.getParent();
|
|
1117
|
+
|
|
1118
|
+
while (parent != null) {
|
|
1119
|
+
if (parent instanceof ReactViewGroup) {
|
|
1120
|
+
ReactViewGroup elem = (ReactViewGroup) parent;
|
|
1121
|
+
if (elem.isTVFocusGuide()) return elem;
|
|
1122
|
+
}
|
|
1123
|
+
parent = parent.getParent();
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
return null;
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
/***
|
|
1130
|
+
* This is meant to be used only for TVFocusGuide.
|
|
1131
|
+
* @return View | null
|
|
1132
|
+
*/
|
|
1133
|
+
@Nullable
|
|
1134
|
+
private View getFocusedChildOfFocusGuide() {
|
|
1135
|
+
if (!isTVFocusGuide()) return null;
|
|
1136
|
+
|
|
1137
|
+
/*
|
|
1138
|
+
* We can have nested `TVFocusGuide`s, this is a typical scenario.
|
|
1139
|
+
* The problem is, returned element from `getFocusedChild` can be
|
|
1140
|
+
* either a direct `child` of the `TVFocusGuide` or a `descendant` of it.
|
|
1141
|
+
* Let's say if we run `getFocusedChild` for the Root element, it will always
|
|
1142
|
+
* give us an element even though the Root element is not the direct parent
|
|
1143
|
+
* of the focused element.
|
|
1144
|
+
* So, we need to find the closest `TVFocusGuide` to the focused child
|
|
1145
|
+
* to make sure the focused element's closest `TVFocusGuide` is "this" one.
|
|
1146
|
+
*/
|
|
1147
|
+
View focusedChild = this.getFocusedChild();
|
|
1148
|
+
if (focusedChild == null) return null;
|
|
1149
|
+
|
|
1150
|
+
ReactViewGroup parentFocusGuide = findParentFocusGuide(focusedChild);
|
|
1151
|
+
if (parentFocusGuide == this) return focusedChild;
|
|
1152
|
+
|
|
1153
|
+
return null;
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
@Override
|
|
1157
|
+
public void addFocusables(ArrayList<View> views, int direction, int focusableMode) {
|
|
1158
|
+
/**
|
|
1159
|
+
* TVFocusGuides should reveral their children when `mRecoverFocus` is set.
|
|
1160
|
+
* `mRecoverFocus` flag indicates a temporary focus recovery mode it's in which
|
|
1161
|
+
* requires full access to children focusable elements.
|
|
1162
|
+
*/
|
|
1163
|
+
if (isTVFocusGuide() && !mRecoverFocus) {
|
|
1164
|
+
View focusedChild = getFocusedChildOfFocusGuide();
|
|
1165
|
+
|
|
1166
|
+
/*
|
|
1167
|
+
* We only include the view's (TVFocusGuide) itself if it doesn't have a child that currently has the focus.
|
|
1168
|
+
* Otherwise, it means focus is already in the `TVFocusGuide` and all of it's descendants should be included
|
|
1169
|
+
* for focus calculations.
|
|
1170
|
+
*/
|
|
1171
|
+
if (focusedChild == null) {
|
|
1172
|
+
views.add(this);
|
|
1173
|
+
return;
|
|
1174
|
+
}
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1177
|
+
super.addFocusables(views, direction, focusableMode);
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
@Override
|
|
1181
|
+
public void requestChildFocus(View child, View focused) {
|
|
1182
|
+
super.requestChildFocus(child, focused);
|
|
1183
|
+
|
|
1184
|
+
if (autoFocus) {
|
|
1185
|
+
lastFocusedElement = new WeakReference<View>(focused);
|
|
1186
|
+
}
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
@Override
|
|
1190
|
+
protected void onFocusChanged(boolean gainFocus, int direction, @Nullable Rect previouslyFocusedRect) {
|
|
1191
|
+
super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1020
1194
|
@Override
|
|
1021
1195
|
public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
|
|
1022
|
-
if (
|
|
1196
|
+
if (!isTVFocusGuide() || mRecoverFocus) {
|
|
1023
1197
|
return super.requestFocus(direction, previouslyFocusedRect);
|
|
1024
1198
|
}
|
|
1025
1199
|
|
|
1026
|
-
|
|
1200
|
+
if (isFocusDestinationsSet()) {
|
|
1201
|
+
View destination = findDestinationView();
|
|
1027
1202
|
|
|
1028
|
-
|
|
1029
|
-
|
|
1203
|
+
if (destination != null && requestFocusViewOrAncestor(destination)) {
|
|
1204
|
+
return true;
|
|
1205
|
+
}
|
|
1030
1206
|
}
|
|
1031
1207
|
|
|
1032
|
-
|
|
1033
|
-
|
|
1208
|
+
if (this.autoFocus) {
|
|
1209
|
+
View lastFocusedElem = lastFocusedElement.get();
|
|
1210
|
+
|
|
1211
|
+
if (lastFocusedElem != null) {
|
|
1212
|
+
|
|
1213
|
+
if (lastFocusedElem.isAttachedToWindow()) {
|
|
1214
|
+
lastFocusedElem.requestFocus();
|
|
1215
|
+
return true;
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
/**
|
|
1219
|
+
* `lastFocusedElem` can get detached based on application logic.
|
|
1220
|
+
* If the code reaches here, that means we're dealing with that case.
|
|
1221
|
+
* We should set `lastFocusedElem` to null and let the focus determination
|
|
1222
|
+
* logic below to do its magic and redirect focus to the first element.
|
|
1223
|
+
*/
|
|
1224
|
+
lastFocusedElement = new WeakReference<View>(null);
|
|
1225
|
+
}
|
|
1226
|
+
|
|
1227
|
+
// Try moving the focus to the first focusable element otherwise.
|
|
1228
|
+
if (moveFocusToFirstFocusable(this)) {
|
|
1034
1229
|
return true;
|
|
1035
1230
|
}
|
|
1036
1231
|
}
|
|
1037
1232
|
|
|
1038
|
-
return
|
|
1233
|
+
return super.requestFocus(direction, previouslyFocusedRect);
|
|
1234
|
+
}
|
|
1235
|
+
|
|
1236
|
+
@Override
|
|
1237
|
+
public View focusSearch(View focused, int direction) {
|
|
1238
|
+
/**
|
|
1239
|
+
* FocusSearch recursively goes all the way up to the Root view
|
|
1240
|
+
* and runs `FocusFinder.findNextFocus()` to determine the next focusable.
|
|
1241
|
+
* It finds the next focusable by accounting *every* focusable elements on the screen.
|
|
1242
|
+
*
|
|
1243
|
+
* That is exactly the thing we want to prevent if the view has a `focusTrap` enabled
|
|
1244
|
+
* matching the `direction`. We interrupt `focusSearch` to make the `FocusFinder` run
|
|
1245
|
+
* the algorithm only accounting the children elements of the focus trap.
|
|
1246
|
+
* This ensures that focus will always stay inside the container until trap gets disabled.
|
|
1247
|
+
*/
|
|
1248
|
+
if ((trapFocusUp && direction == FOCUS_UP)
|
|
1249
|
+
|| (trapFocusDown && direction == FOCUS_DOWN)
|
|
1250
|
+
|| (trapFocusLeft && direction == FOCUS_LEFT)
|
|
1251
|
+
|| (trapFocusRight && direction == FOCUS_RIGHT)) {
|
|
1252
|
+
return FocusFinder.getInstance().findNextFocus(this, focused, direction);
|
|
1253
|
+
}
|
|
1254
|
+
|
|
1255
|
+
return super.focusSearch(focused, direction);
|
|
1039
1256
|
}
|
|
1040
1257
|
|
|
1041
1258
|
public void setFocusDestinations(@NonNull int[] focusDestinations) {
|
|
1042
1259
|
this.focusDestinations = focusDestinations;
|
|
1043
1260
|
}
|
|
1261
|
+
|
|
1262
|
+
public void setAutoFocusTV(boolean autoFocus) {
|
|
1263
|
+
this.autoFocus = autoFocus;
|
|
1264
|
+
lastFocusedElement = new WeakReference<View>(null);
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
public void setTrapFocusUp(boolean enabled) {
|
|
1268
|
+
this.trapFocusUp = enabled;
|
|
1269
|
+
}
|
|
1270
|
+
|
|
1271
|
+
public void setTrapFocusDown(boolean enabled) {
|
|
1272
|
+
this.trapFocusDown = enabled;
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
public void setTrapFocusLeft(boolean enabled) {
|
|
1276
|
+
this.trapFocusLeft = enabled;
|
|
1277
|
+
}
|
|
1278
|
+
|
|
1279
|
+
public void setTrapFocusRight(boolean enabled) {
|
|
1280
|
+
this.trapFocusRight = enabled;
|
|
1281
|
+
}
|
|
1044
1282
|
}
|
|
@@ -10,6 +10,7 @@ package com.facebook.react.views.view;
|
|
|
10
10
|
import android.annotation.TargetApi;
|
|
11
11
|
import android.graphics.Rect;
|
|
12
12
|
import android.os.Build;
|
|
13
|
+
import android.util.Log;
|
|
13
14
|
import android.view.View;
|
|
14
15
|
import androidx.annotation.NonNull;
|
|
15
16
|
import androidx.annotation.Nullable;
|
|
@@ -51,6 +52,7 @@ public class ReactViewManager extends ReactClippingViewManager<ReactViewGroup> {
|
|
|
51
52
|
};
|
|
52
53
|
private static final int CMD_HOTSPOT_UPDATE = 1;
|
|
53
54
|
private static final int CMD_SET_PRESSED = 2;
|
|
55
|
+
private static final int CMD_SET_DESTINATIONS = 3;
|
|
54
56
|
private static final String HOTSPOT_UPDATE_KEY = "hotspotUpdate";
|
|
55
57
|
|
|
56
58
|
@ReactProp(name = "accessible")
|
|
@@ -305,7 +307,7 @@ public class ReactViewManager extends ReactClippingViewManager<ReactViewGroup> {
|
|
|
305
307
|
|
|
306
308
|
@Override
|
|
307
309
|
public Map<String, Integer> getCommandsMap() {
|
|
308
|
-
return MapBuilder.of(HOTSPOT_UPDATE_KEY, CMD_HOTSPOT_UPDATE, "setPressed", CMD_SET_PRESSED);
|
|
310
|
+
return MapBuilder.of(HOTSPOT_UPDATE_KEY, CMD_HOTSPOT_UPDATE, "setPressed", CMD_SET_PRESSED, "setDestinations", CMD_SET_DESTINATIONS);
|
|
309
311
|
}
|
|
310
312
|
|
|
311
313
|
@Override
|
|
@@ -321,6 +323,11 @@ public class ReactViewManager extends ReactClippingViewManager<ReactViewGroup> {
|
|
|
321
323
|
handleSetPressed(root, args);
|
|
322
324
|
break;
|
|
323
325
|
}
|
|
326
|
+
case CMD_SET_DESTINATIONS:
|
|
327
|
+
{
|
|
328
|
+
handleSetDestinations(root, args);
|
|
329
|
+
break;
|
|
330
|
+
}
|
|
324
331
|
}
|
|
325
332
|
}
|
|
326
333
|
|
|
@@ -337,6 +344,11 @@ public class ReactViewManager extends ReactClippingViewManager<ReactViewGroup> {
|
|
|
337
344
|
handleSetPressed(root, args);
|
|
338
345
|
break;
|
|
339
346
|
}
|
|
347
|
+
case "setDestinations":
|
|
348
|
+
{
|
|
349
|
+
handleSetDestinations(root, args);
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
340
352
|
}
|
|
341
353
|
}
|
|
342
354
|
|
|
@@ -359,14 +371,43 @@ public class ReactViewManager extends ReactClippingViewManager<ReactViewGroup> {
|
|
|
359
371
|
root.drawableHotspotChanged(x, y);
|
|
360
372
|
}
|
|
361
373
|
|
|
374
|
+
private void handleSetDestinations(ReactViewGroup root, @Nullable ReadableArray args) {
|
|
375
|
+
if (args == null || args.size() != 1) {
|
|
376
|
+
throw new JSApplicationIllegalArgumentException(
|
|
377
|
+
"Illegal number of arguments for 'setDestinations' command");
|
|
378
|
+
}
|
|
362
379
|
|
|
363
|
-
|
|
364
|
-
public void setDestinations(final ReactViewGroup view, final ReadableArray destinations) {
|
|
380
|
+
ReadableArray destinations = args.getArray(0);
|
|
365
381
|
int[] fd = new int[destinations.size()];
|
|
366
382
|
for (int i = 0; i < fd.length; i++) {
|
|
367
383
|
fd[i] = destinations.getInt(i);
|
|
368
384
|
}
|
|
369
|
-
|
|
385
|
+
root.setFocusDestinations(fd);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
@ReactProp(name = "autoFocus")
|
|
389
|
+
public void setAutoFocusTV(ReactViewGroup view, boolean autoFocus) {
|
|
390
|
+
view.setAutoFocusTV(autoFocus);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
@ReactProp(name = "trapFocusUp")
|
|
394
|
+
public void trapFocusUp(ReactViewGroup view, boolean enabled) {
|
|
395
|
+
view.setTrapFocusUp(enabled);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
@ReactProp(name = "trapFocusDown")
|
|
399
|
+
public void trapFocusDown(ReactViewGroup view, boolean enabled) {
|
|
400
|
+
view.setTrapFocusDown(enabled);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
@ReactProp(name = "trapFocusLeft")
|
|
404
|
+
public void trapFocusLeft(ReactViewGroup view, boolean enabled) {
|
|
405
|
+
view.setTrapFocusLeft(enabled);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
@ReactProp(name = "trapFocusRight")
|
|
409
|
+
public void trapFocusRight(ReactViewGroup view, boolean enabled) {
|
|
410
|
+
view.setTrapFocusRight(enabled);
|
|
370
411
|
}
|
|
371
412
|
|
|
372
413
|
}
|
|
@@ -17,8 +17,8 @@ namespace facebook::react {
|
|
|
17
17
|
constexpr struct {
|
|
18
18
|
int32_t Major = 0;
|
|
19
19
|
int32_t Minor = 69;
|
|
20
|
-
int32_t Patch =
|
|
21
|
-
std::string_view Prerelease = "
|
|
20
|
+
int32_t Patch = 8;
|
|
21
|
+
std::string_view Prerelease = "0rc";
|
|
22
22
|
} ReactNativeVersion;
|
|
23
23
|
|
|
24
24
|
} // namespace facebook::react
|
|
@@ -31,27 +31,73 @@ ViewProps::ViewProps(
|
|
|
31
31
|
rawProps,
|
|
32
32
|
"isTVSelectable",
|
|
33
33
|
sourceProps.isTVSelectable,
|
|
34
|
-
(Boolean)false)),
|
|
34
|
+
(Boolean) false)),
|
|
35
35
|
hasTVPreferredFocus(convertRawProp(
|
|
36
36
|
context,
|
|
37
37
|
rawProps,
|
|
38
38
|
"hasTVPreferredFocus",
|
|
39
39
|
sourceProps.hasTVPreferredFocus,
|
|
40
|
-
(Boolean)false)),
|
|
40
|
+
(Boolean) false)),
|
|
41
41
|
tvParallaxProperties(convertRawProp(
|
|
42
42
|
context,
|
|
43
43
|
rawProps,
|
|
44
44
|
"tvParallaxProperties",
|
|
45
45
|
sourceProps.tvParallaxProperties,
|
|
46
46
|
{})),
|
|
47
|
-
nextFocusUp(
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
47
|
+
nextFocusUp(convertRawProp(
|
|
48
|
+
context,
|
|
49
|
+
rawProps,
|
|
50
|
+
"nextFocusUp",
|
|
51
|
+
sourceProps.nextFocusUp,
|
|
52
|
+
{})),
|
|
53
|
+
nextFocusDown(convertRawProp(
|
|
54
|
+
context,
|
|
55
|
+
rawProps,
|
|
56
|
+
"nextFocusDown",
|
|
57
|
+
sourceProps.nextFocusDown,
|
|
58
|
+
{})),
|
|
59
|
+
nextFocusLeft(convertRawProp(
|
|
60
|
+
context,
|
|
61
|
+
rawProps,
|
|
62
|
+
"nextFocusLeft",
|
|
63
|
+
sourceProps.nextFocusLeft,
|
|
64
|
+
{})),
|
|
65
|
+
nextFocusRight(convertRawProp(
|
|
66
|
+
context,
|
|
67
|
+
rawProps,
|
|
68
|
+
"nextFocusRight",
|
|
69
|
+
sourceProps.nextFocusRight,
|
|
70
|
+
{})),
|
|
71
|
+
autoFocus(convertRawProp(
|
|
72
|
+
context,
|
|
73
|
+
rawProps,
|
|
74
|
+
"autoFocus",
|
|
75
|
+
sourceProps.autoFocus,
|
|
76
|
+
(Boolean) false)),
|
|
77
|
+
trapFocusUp(convertRawProp(
|
|
78
|
+
context,
|
|
79
|
+
rawProps,
|
|
80
|
+
"trapFocusUp",
|
|
81
|
+
sourceProps.trapFocusUp,
|
|
82
|
+
false)),
|
|
83
|
+
trapFocusDown(convertRawProp(
|
|
84
|
+
context,
|
|
85
|
+
rawProps,
|
|
86
|
+
"trapFocusDown",
|
|
87
|
+
sourceProps.trapFocusDown,
|
|
88
|
+
false)),
|
|
89
|
+
trapFocusLeft(convertRawProp(
|
|
90
|
+
context,
|
|
91
|
+
rawProps,
|
|
92
|
+
"trapFocusLeft",
|
|
93
|
+
sourceProps.trapFocusLeft,
|
|
94
|
+
false)),
|
|
95
|
+
trapFocusRight(convertRawProp(
|
|
96
|
+
context,
|
|
97
|
+
rawProps,
|
|
98
|
+
"trapFocusRight",
|
|
99
|
+
sourceProps.trapFocusRight,
|
|
100
|
+
false)),
|
|
55
101
|
#endif
|
|
56
102
|
opacity(convertRawProp(
|
|
57
103
|
context,
|
|
@@ -210,7 +256,37 @@ ViewProps::ViewProps(
|
|
|
210
256
|
rawProps,
|
|
211
257
|
"renderToHardwareTextureAndroid",
|
|
212
258
|
sourceProps.renderToHardwareTextureAndroid,
|
|
213
|
-
{}))
|
|
259
|
+
{})),
|
|
260
|
+
autoFocus(convertRawProp(
|
|
261
|
+
context,
|
|
262
|
+
rawProps,
|
|
263
|
+
"autoFocus",
|
|
264
|
+
sourceProps.autoFocus,
|
|
265
|
+
false)),
|
|
266
|
+
trapFocusUp(convertRawProp(
|
|
267
|
+
context,
|
|
268
|
+
rawProps,
|
|
269
|
+
"trapFocusUp",
|
|
270
|
+
sourceProps.trapFocusUp,
|
|
271
|
+
false)),
|
|
272
|
+
trapFocusDown(convertRawProp(
|
|
273
|
+
context,
|
|
274
|
+
rawProps,
|
|
275
|
+
"trapFocusDown",
|
|
276
|
+
sourceProps.trapFocusDown,
|
|
277
|
+
false)),
|
|
278
|
+
trapFocusLeft(convertRawProp(
|
|
279
|
+
context,
|
|
280
|
+
rawProps,
|
|
281
|
+
"trapFocusLeft",
|
|
282
|
+
sourceProps.trapFocusLeft,
|
|
283
|
+
false)),
|
|
284
|
+
trapFocusRight(convertRawProp(
|
|
285
|
+
context,
|
|
286
|
+
rawProps,
|
|
287
|
+
"trapFocusRight",
|
|
288
|
+
sourceProps.trapFocusRight,
|
|
289
|
+
false))
|
|
214
290
|
#endif
|
|
215
291
|
{};
|
|
216
292
|
|
|
@@ -78,6 +78,11 @@ class ViewProps : public YogaStylableProps, public AccessibilityProps {
|
|
|
78
78
|
std::optional<int> nextFocusDown;
|
|
79
79
|
std::optional<int> nextFocusLeft;
|
|
80
80
|
std::optional<int> nextFocusRight;
|
|
81
|
+
bool autoFocus{false};
|
|
82
|
+
bool trapFocusUp{false};
|
|
83
|
+
bool trapFocusDown{false};
|
|
84
|
+
bool trapFocusLeft{false};
|
|
85
|
+
bool trapFocusRight{false};
|
|
81
86
|
#endif
|
|
82
87
|
|
|
83
88
|
Float elevation{}; /* Android-only */
|
|
@@ -91,7 +96,11 @@ class ViewProps : public YogaStylableProps, public AccessibilityProps {
|
|
|
91
96
|
bool hasTVPreferredFocus{false};
|
|
92
97
|
bool needsOffscreenAlphaCompositing{false};
|
|
93
98
|
bool renderToHardwareTextureAndroid{false};
|
|
94
|
-
|
|
99
|
+
bool autoFocus{false};
|
|
100
|
+
bool trapFocusUp{false};
|
|
101
|
+
bool trapFocusDown{false};
|
|
102
|
+
bool trapFocusLeft{false};
|
|
103
|
+
bool trapFocusRight{false};
|
|
95
104
|
#endif
|
|
96
105
|
|
|
97
106
|
#pragma mark - Convenience Methods
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
6201960e9347682bbc00ae9944a632c4
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
9e8b5eb666da9f08d0908808dd7d9c16aba4b1c2
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c255a9cbbfc674bcc34776435b85dcf390bc56c2341329971951d556b6162907
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4927a35f8ef2836598e81608424fe18557522c9a0985b58596e15cc992c233992e9d568e391c28c3d74d997793123e32b764959867aaec66681f035df463dc24
|
package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug.aar
ADDED
|
Binary file
|
package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug.aar.md5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8b30cc1e32b0ebb5f2af337204416078
|
package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug.aar.sha1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4b8c8be5bc8c00dfb4715cc8a11488ecf08c657a
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3464ef617b14406c64d3c3cbf74f4ffeb897dcd2bde49ec919b00130cbb180c5
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a72a2164acad5c06eec6eb6bce29e5640f8ae2eb5c2870545fd79f0a2f2c7b261885e106a6477bdd8d961a2fb17545273a7d44a4aaff57aa6751c43936d8bf18
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
6201960e9347682bbc00ae9944a632c4
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
9e8b5eb666da9f08d0908808dd7d9c16aba4b1c2
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c255a9cbbfc674bcc34776435b85dcf390bc56c2341329971951d556b6162907
|