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.
Files changed (196) hide show
  1. package/Libraries/Components/Pressable/Pressable.js +11 -2
  2. package/Libraries/Components/ScrollView/ScrollView.js +1 -0
  3. package/Libraries/Components/TV/TVEventHandler.js +4 -2
  4. package/Libraries/Components/TV/TVFocusEventHandler.js +4 -2
  5. package/Libraries/Components/TV/TVFocusGuideView.js +75 -47
  6. package/Libraries/Components/TV/TVViewPropTypes.js +7 -0
  7. package/Libraries/Components/TV/useTVEventHandler.js +2 -1
  8. package/Libraries/Components/TextInput/TextInput.js +1 -1
  9. package/Libraries/Components/Touchable/TouchableBounce.js +5 -0
  10. package/Libraries/Components/Touchable/TouchableHighlight.js +7 -2
  11. package/Libraries/Components/Touchable/TouchableOpacity.js +7 -2
  12. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +7 -0
  13. package/Libraries/Components/View/ViewNativeComponent.js +1 -1
  14. package/Libraries/Core/ReactNativeVersion.js +2 -2
  15. package/Libraries/Lists/VirtualizedList.js +25 -10
  16. package/Libraries/LogBox/UI/LogBoxButton.js +16 -12
  17. package/Libraries/LogBox/UI/LogBoxNotification.js +1 -1
  18. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +2 -20
  19. package/Libraries/StyleSheet/StyleSheetTypes.js +1 -0
  20. package/Libraries/Types/CoreEventTypes.js +9 -0
  21. package/README.md +3 -1
  22. package/React/Base/RCTVersion.m +2 -2
  23. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +89 -8
  24. package/React/Views/RCTTVView.h +11 -1
  25. package/React/Views/RCTTVView.m +77 -0
  26. package/React/Views/RCTViewManager.m +6 -1
  27. package/ReactAndroid/gradle.properties +1 -1
  28. package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.java +6 -1
  29. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +4 -5
  30. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java +57 -62
  31. package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +7 -1
  32. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactAndroidHWInputDeviceHelper.java +44 -14
  33. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
  34. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +18 -0
  35. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +25 -0
  36. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +245 -7
  37. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +45 -4
  38. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  39. package/ReactCommon/react/renderer/components/view/ViewProps.cpp +87 -11
  40. package/ReactCommon/react/renderer/components/view/ViewProps.h +10 -1
  41. 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
  42. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug-javadoc.jar.md5 +1 -0
  43. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug-javadoc.jar.sha1 +1 -0
  44. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug-javadoc.jar.sha256 +1 -0
  45. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug-javadoc.jar.sha512 +1 -0
  46. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug.aar +0 -0
  47. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug.aar.md5 +1 -0
  48. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug.aar.sha1 +1 -0
  49. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug.aar.sha256 +1 -0
  50. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-debug.aar.sha512 +1 -0
  51. 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
  52. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release-javadoc.jar.md5 +1 -0
  53. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release-javadoc.jar.sha1 +1 -0
  54. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release-javadoc.jar.sha256 +1 -0
  55. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release-javadoc.jar.sha512 +1 -0
  56. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release.aar +0 -0
  57. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release.aar.md5 +1 -0
  58. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release.aar.sha1 +1 -0
  59. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release.aar.sha256 +1 -0
  60. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc-release.aar.sha512 +1 -0
  61. 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
  62. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.module.md5 +1 -0
  63. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.module.sha1 +1 -0
  64. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.module.sha256 +1 -0
  65. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.module.sha512 +1 -0
  66. 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
  67. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.pom.md5 +1 -0
  68. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.pom.sha1 +1 -0
  69. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.pom.sha256 +1 -0
  70. package/android/com/facebook/react/hermes-engine/0.69.8-0rc/hermes-engine-0.69.8-0rc.pom.sha512 +1 -0
  71. package/android/com/facebook/react/hermes-engine/maven-metadata.xml +4 -4
  72. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.md5 +1 -1
  73. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha1 +1 -1
  74. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha256 +1 -1
  75. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha512 +1 -1
  76. 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
  77. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-javadoc.jar.md5 +1 -0
  78. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-javadoc.jar.sha1 +1 -0
  79. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-javadoc.jar.sha256 +1 -0
  80. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-javadoc.jar.sha512 +1 -0
  81. 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
  82. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-sources.jar.md5 +1 -0
  83. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-sources.jar.sha1 +1 -0
  84. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-sources.jar.sha256 +1 -0
  85. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug-sources.jar.sha512 +1 -0
  86. 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
  87. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug.aar.md5 +1 -0
  88. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug.aar.sha1 +1 -0
  89. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug.aar.sha256 +1 -0
  90. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-debug.aar.sha512 +1 -0
  91. 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
  92. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-javadoc.jar.md5 +1 -0
  93. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-javadoc.jar.sha1 +1 -0
  94. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-javadoc.jar.sha256 +1 -0
  95. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-javadoc.jar.sha512 +1 -0
  96. 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
  97. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-sources.jar.md5 +1 -0
  98. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-sources.jar.sha1 +1 -0
  99. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-sources.jar.sha256 +1 -0
  100. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release-sources.jar.sha512 +1 -0
  101. 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
  102. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release.aar.md5 +1 -0
  103. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release.aar.sha1 +1 -0
  104. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release.aar.sha256 +1 -0
  105. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc-release.aar.sha512 +1 -0
  106. 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
  107. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.module.md5 +1 -0
  108. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.module.sha1 +1 -0
  109. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.module.sha256 +1 -0
  110. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.module.sha512 +1 -0
  111. 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
  112. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.pom.md5 +1 -0
  113. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.pom.sha1 +1 -0
  114. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.pom.sha256 +1 -0
  115. package/android/com/facebook/react/react-native/0.69.8-0rc/react-native-0.69.8-0rc.pom.sha512 +1 -0
  116. package/android/com/facebook/react/react-native/maven-metadata.xml +4 -4
  117. package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
  118. package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
  119. package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -1
  120. package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -1
  121. package/index.js +1 -7
  122. package/package.json +2 -2
  123. package/sdks/hermesc/linux64-bin/hermesc +0 -0
  124. package/sdks/hermesc/osx-bin/hermesc +0 -0
  125. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  126. package/template/package.json +1 -1
  127. package/tvos-types.d.ts +37 -5
  128. package/Libraries/DeprecatedPropTypes/DeprecatedTVViewPropTypes.js +0 -23
  129. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.md5 +0 -1
  130. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.sha1 +0 -1
  131. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.sha256 +0 -1
  132. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.sha512 +0 -1
  133. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar +0 -0
  134. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.md5 +0 -1
  135. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.sha1 +0 -1
  136. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.sha256 +0 -1
  137. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.sha512 +0 -1
  138. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.md5 +0 -1
  139. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.sha1 +0 -1
  140. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.sha256 +0 -1
  141. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.sha512 +0 -1
  142. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar +0 -0
  143. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.md5 +0 -1
  144. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.sha1 +0 -1
  145. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.sha256 +0 -1
  146. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.sha512 +0 -1
  147. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.md5 +0 -1
  148. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.sha1 +0 -1
  149. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.sha256 +0 -1
  150. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.sha512 +0 -1
  151. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.md5 +0 -1
  152. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.sha1 +0 -1
  153. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.sha256 +0 -1
  154. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.sha512 +0 -1
  155. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.md5 +0 -1
  156. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.sha1 +0 -1
  157. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.sha256 +0 -1
  158. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.sha512 +0 -1
  159. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.md5 +0 -1
  160. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.sha1 +0 -1
  161. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.sha256 +0 -1
  162. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.sha512 +0 -1
  163. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.md5 +0 -1
  164. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.sha1 +0 -1
  165. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.sha256 +0 -1
  166. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.sha512 +0 -1
  167. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.md5 +0 -1
  168. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.sha1 +0 -1
  169. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.sha256 +0 -1
  170. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.sha512 +0 -1
  171. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.md5 +0 -1
  172. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.sha1 +0 -1
  173. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.sha256 +0 -1
  174. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.sha512 +0 -1
  175. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.md5 +0 -1
  176. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.sha1 +0 -1
  177. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.sha256 +0 -1
  178. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.sha512 +0 -1
  179. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.md5 +0 -1
  180. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.sha1 +0 -1
  181. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.sha256 +0 -1
  182. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.sha512 +0 -1
  183. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.md5 +0 -1
  184. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.sha1 +0 -1
  185. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.sha256 +0 -1
  186. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.sha512 +0 -1
  187. /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
  188. /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
  189. /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
  190. /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
  191. /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
  192. /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
  193. /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
  194. /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
  195. /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
  196. /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 (focusDestinations.length == 0) {
1196
+ if (!isTVFocusGuide() || mRecoverFocus) {
1023
1197
  return super.requestFocus(direction, previouslyFocusedRect);
1024
1198
  }
1025
1199
 
1026
- View destination = findDestinationView();
1200
+ if (isFocusDestinationsSet()) {
1201
+ View destination = findDestinationView();
1027
1202
 
1028
- if (destination != null && requestFocusViewOrAncestor(destination)) {
1029
- return true;
1203
+ if (destination != null && requestFocusViewOrAncestor(destination)) {
1204
+ return true;
1205
+ }
1030
1206
  }
1031
1207
 
1032
- for (int i = 0; i < getChildCount(); i++) {
1033
- if (getChildAt(i).requestFocus()) {
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 false;
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
- @ReactProp(name = "destinations")
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
- view.setFocusDestinations(fd);
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 = 6;
21
- std::string_view Prerelease = "2";
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
- convertRawProp(context, rawProps, "nextFocusUp", sourceProps.nextFocusUp, {})),
49
- nextFocusDown(
50
- convertRawProp(context, rawProps, "nextFocusDown", sourceProps.nextFocusDown, {})),
51
- nextFocusLeft(
52
- convertRawProp(context, rawProps, "nextFocusLeft", sourceProps.nextFocusLeft, {})),
53
- nextFocusRight(
54
- convertRawProp(context, rawProps, "nextFocusRight", sourceProps.nextFocusRight, {})),
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
@@ -0,0 +1 @@
1
+ c255a9cbbfc674bcc34776435b85dcf390bc56c2341329971951d556b6162907
@@ -0,0 +1 @@
1
+ 4927a35f8ef2836598e81608424fe18557522c9a0985b58596e15cc992c233992e9d568e391c28c3d74d997793123e32b764959867aaec66681f035df463dc24
@@ -0,0 +1 @@
1
+ 4b8c8be5bc8c00dfb4715cc8a11488ecf08c657a
@@ -0,0 +1 @@
1
+ 3464ef617b14406c64d3c3cbf74f4ffeb897dcd2bde49ec919b00130cbb180c5
@@ -0,0 +1 @@
1
+ a72a2164acad5c06eec6eb6bce29e5640f8ae2eb5c2870545fd79f0a2f2c7b261885e106a6477bdd8d961a2fb17545273a7d44a4aaff57aa6751c43936d8bf18
@@ -0,0 +1 @@
1
+ c255a9cbbfc674bcc34776435b85dcf390bc56c2341329971951d556b6162907