react-native-tvos 0.69.6-2 → 0.69.8-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) 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 +77 -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/View.js +36 -2
  14. package/Libraries/Components/View/ViewNativeComponent.js +9 -3
  15. package/Libraries/Core/ReactNativeVersion.js +2 -2
  16. package/Libraries/Lists/VirtualizedList.js +25 -10
  17. package/Libraries/LogBox/UI/LogBoxButton.js +16 -12
  18. package/Libraries/LogBox/UI/LogBoxNotification.js +1 -1
  19. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +2 -20
  20. package/Libraries/StyleSheet/StyleSheetTypes.js +1 -0
  21. package/Libraries/Types/CoreEventTypes.js +9 -0
  22. package/README.md +3 -1
  23. package/React/Base/RCTRootView.m +6 -0
  24. package/React/Base/RCTRootViewInternal.h +1 -0
  25. package/React/Base/RCTVersion.m +2 -2
  26. package/React/Fabric/Mounting/ComponentViews/Root/RCTRootComponentView.h +1 -0
  27. package/React/Fabric/Mounting/ComponentViews/Root/RCTRootComponentView.mm +6 -0
  28. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +111 -8
  29. package/React/Views/RCTTVView.h +13 -1
  30. package/React/Views/RCTTVView.m +91 -0
  31. package/React/Views/RCTViewManager.m +14 -1
  32. package/ReactAndroid/gradle.properties +1 -1
  33. package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.java +6 -1
  34. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +4 -5
  35. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java +57 -62
  36. package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +7 -1
  37. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactAndroidHWInputDeviceHelper.java +44 -14
  38. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
  39. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +18 -0
  40. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +25 -0
  41. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +247 -7
  42. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +50 -4
  43. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  44. package/ReactCommon/react/renderer/components/view/ViewProps.cpp +87 -11
  45. package/ReactCommon/react/renderer/components/view/ViewProps.h +10 -1
  46. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar → 0.69.8-0/hermes-engine-0.69.8-0-debug-javadoc.jar} +0 -0
  47. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-debug-javadoc.jar.md5 +1 -0
  48. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-debug-javadoc.jar.sha1 +1 -0
  49. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-debug-javadoc.jar.sha256 +1 -0
  50. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-debug-javadoc.jar.sha512 +1 -0
  51. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-debug.aar +0 -0
  52. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-debug.aar.md5 +1 -0
  53. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-debug.aar.sha1 +1 -0
  54. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-debug.aar.sha256 +1 -0
  55. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-debug.aar.sha512 +1 -0
  56. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar → 0.69.8-0/hermes-engine-0.69.8-0-release-javadoc.jar} +0 -0
  57. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-release-javadoc.jar.md5 +1 -0
  58. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-release-javadoc.jar.sha1 +1 -0
  59. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-release-javadoc.jar.sha256 +1 -0
  60. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-release-javadoc.jar.sha512 +1 -0
  61. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-release.aar +0 -0
  62. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-release.aar.md5 +1 -0
  63. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-release.aar.sha1 +1 -0
  64. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-release.aar.sha256 +1 -0
  65. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0-release.aar.sha512 +1 -0
  66. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2.module → 0.69.8-0/hermes-engine-0.69.8-0.module} +47 -47
  67. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0.module.md5 +1 -0
  68. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0.module.sha1 +1 -0
  69. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0.module.sha256 +1 -0
  70. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0.module.sha512 +1 -0
  71. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2.pom → 0.69.8-0/hermes-engine-0.69.8-0.pom} +1 -1
  72. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0.pom.md5 +1 -0
  73. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0.pom.sha1 +1 -0
  74. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0.pom.sha256 +1 -0
  75. package/android/com/facebook/react/hermes-engine/0.69.8-0/hermes-engine-0.69.8-0.pom.sha512 +1 -0
  76. package/android/com/facebook/react/hermes-engine/maven-metadata.xml +4 -4
  77. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.md5 +1 -1
  78. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha1 +1 -1
  79. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha256 +1 -1
  80. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha512 +1 -1
  81. package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2-release-javadoc.jar → 0.69.8-0/react-native-0.69.8-0-debug-javadoc.jar} +0 -0
  82. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-debug-javadoc.jar.md5 +1 -0
  83. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-debug-javadoc.jar.sha1 +1 -0
  84. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-debug-javadoc.jar.sha256 +1 -0
  85. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-debug-javadoc.jar.sha512 +1 -0
  86. package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2-debug-sources.jar → 0.69.8-0/react-native-0.69.8-0-debug-sources.jar} +0 -0
  87. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-debug-sources.jar.md5 +1 -0
  88. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-debug-sources.jar.sha1 +1 -0
  89. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-debug-sources.jar.sha256 +1 -0
  90. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-debug-sources.jar.sha512 +1 -0
  91. package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2-debug.aar → 0.69.8-0/react-native-0.69.8-0-debug.aar} +0 -0
  92. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-debug.aar.md5 +1 -0
  93. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-debug.aar.sha1 +1 -0
  94. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-debug.aar.sha256 +1 -0
  95. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-debug.aar.sha512 +1 -0
  96. package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar → 0.69.8-0/react-native-0.69.8-0-release-javadoc.jar} +0 -0
  97. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-release-javadoc.jar.md5 +1 -0
  98. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-release-javadoc.jar.sha1 +1 -0
  99. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-release-javadoc.jar.sha256 +1 -0
  100. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-release-javadoc.jar.sha512 +1 -0
  101. package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2-release-sources.jar → 0.69.8-0/react-native-0.69.8-0-release-sources.jar} +0 -0
  102. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-release-sources.jar.md5 +1 -0
  103. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-release-sources.jar.sha1 +1 -0
  104. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-release-sources.jar.sha256 +1 -0
  105. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-release-sources.jar.sha512 +1 -0
  106. package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2-release.aar → 0.69.8-0/react-native-0.69.8-0-release.aar} +0 -0
  107. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-release.aar.md5 +1 -0
  108. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-release.aar.sha1 +1 -0
  109. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-release.aar.sha256 +1 -0
  110. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0-release.aar.sha512 +1 -0
  111. package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2.module → 0.69.8-0/react-native-0.69.8-0.module} +57 -57
  112. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0.module.md5 +1 -0
  113. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0.module.sha1 +1 -0
  114. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0.module.sha256 +1 -0
  115. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0.module.sha512 +1 -0
  116. package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2.pom → 0.69.8-0/react-native-0.69.8-0.pom} +1 -1
  117. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0.pom.md5 +1 -0
  118. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0.pom.sha1 +1 -0
  119. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0.pom.sha256 +1 -0
  120. package/android/com/facebook/react/react-native/0.69.8-0/react-native-0.69.8-0.pom.sha512 +1 -0
  121. package/android/com/facebook/react/react-native/maven-metadata.xml +4 -4
  122. package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
  123. package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
  124. package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -1
  125. package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -1
  126. package/index.js +1 -7
  127. package/package.json +2 -2
  128. package/sdks/hermesc/linux64-bin/hermesc +0 -0
  129. package/sdks/hermesc/osx-bin/hermesc +0 -0
  130. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  131. package/template/package.json +1 -1
  132. package/tvos-types.d.ts +41 -5
  133. package/Libraries/DeprecatedPropTypes/DeprecatedTVViewPropTypes.js +0 -23
  134. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.md5 +0 -1
  135. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.sha1 +0 -1
  136. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.sha256 +0 -1
  137. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.sha512 +0 -1
  138. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar +0 -0
  139. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.md5 +0 -1
  140. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.sha1 +0 -1
  141. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.sha256 +0 -1
  142. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.sha512 +0 -1
  143. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.md5 +0 -1
  144. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.sha1 +0 -1
  145. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.sha256 +0 -1
  146. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.sha512 +0 -1
  147. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar +0 -0
  148. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.md5 +0 -1
  149. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.sha1 +0 -1
  150. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.sha256 +0 -1
  151. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.sha512 +0 -1
  152. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.md5 +0 -1
  153. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.sha1 +0 -1
  154. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.sha256 +0 -1
  155. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.sha512 +0 -1
  156. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.md5 +0 -1
  157. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.sha1 +0 -1
  158. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.sha256 +0 -1
  159. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.sha512 +0 -1
  160. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.md5 +0 -1
  161. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.sha1 +0 -1
  162. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.sha256 +0 -1
  163. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.sha512 +0 -1
  164. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.md5 +0 -1
  165. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.sha1 +0 -1
  166. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.sha256 +0 -1
  167. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.sha512 +0 -1
  168. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.md5 +0 -1
  169. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.sha1 +0 -1
  170. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.sha256 +0 -1
  171. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.sha512 +0 -1
  172. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.md5 +0 -1
  173. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.sha1 +0 -1
  174. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.sha256 +0 -1
  175. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.sha512 +0 -1
  176. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.md5 +0 -1
  177. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.sha1 +0 -1
  178. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.sha256 +0 -1
  179. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.sha512 +0 -1
  180. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.md5 +0 -1
  181. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.sha1 +0 -1
  182. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.sha256 +0 -1
  183. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.sha512 +0 -1
  184. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.md5 +0 -1
  185. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.sha1 +0 -1
  186. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.sha256 +0 -1
  187. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.sha512 +0 -1
  188. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.md5 +0 -1
  189. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.sha1 +0 -1
  190. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.sha256 +0 -1
  191. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.sha512 +0 -1
  192. /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar → 0.69.8-0/hermes-engine-0.69.8-0-debug-sources.jar} +0 -0
  193. /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar.md5 → 0.69.8-0/hermes-engine-0.69.8-0-debug-sources.jar.md5} +0 -0
  194. /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar.sha1 → 0.69.8-0/hermes-engine-0.69.8-0-debug-sources.jar.sha1} +0 -0
  195. /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar.sha256 → 0.69.8-0/hermes-engine-0.69.8-0-debug-sources.jar.sha256} +0 -0
  196. /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar.sha512 → 0.69.8-0/hermes-engine-0.69.8-0-debug-sources.jar.sha512} +0 -0
  197. /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar → 0.69.8-0/hermes-engine-0.69.8-0-release-sources.jar} +0 -0
  198. /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar.md5 → 0.69.8-0/hermes-engine-0.69.8-0-release-sources.jar.md5} +0 -0
  199. /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar.sha1 → 0.69.8-0/hermes-engine-0.69.8-0-release-sources.jar.sha1} +0 -0
  200. /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar.sha256 → 0.69.8-0/hermes-engine-0.69.8-0-release-sources.jar.sha256} +0 -0
  201. /package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar.sha512 → 0.69.8-0/hermes-engine-0.69.8-0-release-sources.jar.sha512} +0 -0
@@ -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
@@ -385,6 +396,8 @@ public class ReactViewGroup extends ViewGroup
385
396
  Animation animation = child.getAnimation();
386
397
  boolean isAnimating = animation != null && !animation.hasEnded();
387
398
  if (!intersects && child.getParent() != null && !isAnimating) {
399
+ recoverFocus(child);
400
+
388
401
  // We can try saving on invalidate call here as the view that we remove is out of visible area
389
402
  // therefore invalidation is not necessary.
390
403
  super.removeViewsInLayout(idx - clippedSoFar, 1);
@@ -440,6 +453,71 @@ public class ReactViewGroup extends ViewGroup
440
453
  }
441
454
  }
442
455
 
456
+ boolean moveFocusToFirstFocusable(ReactViewGroup viewGroup) {
457
+ ArrayList<View> focusables = new ArrayList<View>(0);
458
+ /**
459
+ * `addFocusables` is the method used by `FocusFinder` to determine
460
+ * which elements are `focusable` within the given view.
461
+ * Here we use it for the exact purpose. It mutates/populates the `focusables` array list.
462
+ * Focus direction (FOCUS_DOWN) doesn't matter at all because
463
+ * it's not being used by the underlying implementation.
464
+ */
465
+ viewGroup.addFocusables(focusables, FOCUS_DOWN, FOCUSABLES_ALL);
466
+ /**
467
+ * Depending on ViewGroup's `descendantFocusability` property,
468
+ * the first element can be the ViewGroup itself.
469
+ * The other ones on the list can be non-focusable as well.
470
+ * So, we run a loop till finding the first real focusable element.
471
+ */
472
+ if (focusables.size() <= 0) return false;
473
+
474
+ View firstFocusableElement = null;
475
+ Integer index = 0;
476
+ while (firstFocusableElement == null && index < focusables.size()) {
477
+ View elem = focusables.get(index);
478
+ if (elem.isFocusable() && elem != viewGroup) {
479
+ firstFocusableElement = elem;
480
+ break;
481
+ }
482
+ index++;
483
+ }
484
+
485
+ if (firstFocusableElement != null) return firstFocusableElement.requestFocus();
486
+
487
+ return false;
488
+ }
489
+
490
+ void recoverFocus(View view) {
491
+ if (!view.hasFocus() || !(view instanceof ReactViewGroup)) return;
492
+
493
+ ReactViewGroup parentFocusGuide = findParentFocusGuide(view);
494
+ if (parentFocusGuide == null) return;
495
+
496
+ /**
497
+ * Making `parentFocusGuide` focusable for a brief time to
498
+ * temporarily move the focus to it. We do this to prevent
499
+ * Android from moving the focus to top-left-most element of the screen.
500
+ */
501
+ parentFocusGuide.mRecoverFocus = true;
502
+ parentFocusGuide.setFocusable(true);
503
+ parentFocusGuide.requestFocus();
504
+
505
+ /**
506
+ * We set a Runnable to wait and make sure every layout related action gets completed
507
+ * before trying to find a new focus candidate inside the `parentFocusGuide`.
508
+ */
509
+ UiThreadUtil.runOnUiThread(
510
+ new Runnable() {
511
+ @Override
512
+ public void run() {
513
+ moveFocusToFirstFocusable(parentFocusGuide);
514
+
515
+ parentFocusGuide.setFocusable(false);
516
+ parentFocusGuide.mRecoverFocus = false;
517
+ }
518
+ });
519
+ }
520
+
443
521
  @Override
444
522
  public boolean getChildVisibleRect(View child, Rect r, android.graphics.Point offset) {
445
523
  return super.getChildVisibleRect(child, r, offset);
@@ -494,6 +572,8 @@ public class ReactViewGroup extends ViewGroup
494
572
  setChildrenDrawingOrderEnabled(false);
495
573
  }
496
574
 
575
+ recoverFocus(view);
576
+
497
577
  super.removeView(view);
498
578
  }
499
579
 
@@ -508,6 +588,8 @@ public class ReactViewGroup extends ViewGroup
508
588
  setChildrenDrawingOrderEnabled(false);
509
589
  }
510
590
 
591
+ recoverFocus(getChildAt(index));
592
+
511
593
  super.removeViewAt(index);
512
594
  }
513
595
 
@@ -1017,28 +1099,186 @@ public class ReactViewGroup extends ViewGroup
1017
1099
  return false;
1018
1100
  }
1019
1101
 
1102
+ private boolean isFocusDestinationsSet() {
1103
+ return focusDestinations.length > 0;
1104
+ }
1105
+
1106
+ private boolean isTVFocusGuide() {
1107
+ /**
1108
+ * We don't count a view as `TVFocusGuide` if it has `trapFocus*` props enabled.
1109
+ * The reason is, it's a seperate functionality that has nothing to do with other
1110
+ * TVFocusGuide features that involves heavy focus management. So, the feature
1111
+ * is not directly tied to `TVFocusGuide`.
1112
+ */
1113
+ return isFocusDestinationsSet() || autoFocus;
1114
+ }
1115
+
1116
+ @Nullable
1117
+ private ReactViewGroup findParentFocusGuide(View view) {
1118
+ ViewParent parent = view.getParent();
1119
+
1120
+ while (parent != null) {
1121
+ if (parent instanceof ReactViewGroup) {
1122
+ ReactViewGroup elem = (ReactViewGroup) parent;
1123
+ if (elem.isTVFocusGuide()) return elem;
1124
+ }
1125
+ parent = parent.getParent();
1126
+ }
1127
+
1128
+ return null;
1129
+ }
1130
+
1131
+ /***
1132
+ * This is meant to be used only for TVFocusGuide.
1133
+ * @return View | null
1134
+ */
1135
+ @Nullable
1136
+ private View getFocusedChildOfFocusGuide() {
1137
+ if (!isTVFocusGuide()) return null;
1138
+
1139
+ /*
1140
+ * We can have nested `TVFocusGuide`s, this is a typical scenario.
1141
+ * The problem is, returned element from `getFocusedChild` can be
1142
+ * either a direct `child` of the `TVFocusGuide` or a `descendant` of it.
1143
+ * Let's say if we run `getFocusedChild` for the Root element, it will always
1144
+ * give us an element even though the Root element is not the direct parent
1145
+ * of the focused element.
1146
+ * So, we need to find the closest `TVFocusGuide` to the focused child
1147
+ * to make sure the focused element's closest `TVFocusGuide` is "this" one.
1148
+ */
1149
+ View focusedChild = this.getFocusedChild();
1150
+ if (focusedChild == null) return null;
1151
+
1152
+ ReactViewGroup parentFocusGuide = findParentFocusGuide(focusedChild);
1153
+ if (parentFocusGuide == this) return focusedChild;
1154
+
1155
+ return null;
1156
+ }
1157
+
1158
+ @Override
1159
+ public void addFocusables(ArrayList<View> views, int direction, int focusableMode) {
1160
+ /**
1161
+ * TVFocusGuides should reveral their children when `mRecoverFocus` is set.
1162
+ * `mRecoverFocus` flag indicates a temporary focus recovery mode it's in which
1163
+ * requires full access to children focusable elements.
1164
+ */
1165
+ if (isTVFocusGuide() && !mRecoverFocus) {
1166
+ View focusedChild = getFocusedChildOfFocusGuide();
1167
+
1168
+ /*
1169
+ * We only include the view's (TVFocusGuide) itself if it doesn't have a child that currently has the focus.
1170
+ * Otherwise, it means focus is already in the `TVFocusGuide` and all of it's descendants should be included
1171
+ * for focus calculations.
1172
+ */
1173
+ if (focusedChild == null) {
1174
+ views.add(this);
1175
+ return;
1176
+ }
1177
+ }
1178
+
1179
+ super.addFocusables(views, direction, focusableMode);
1180
+ }
1181
+
1182
+ @Override
1183
+ public void requestChildFocus(View child, View focused) {
1184
+ super.requestChildFocus(child, focused);
1185
+
1186
+ if (autoFocus) {
1187
+ lastFocusedElement = new WeakReference<View>(focused);
1188
+ }
1189
+ }
1190
+
1191
+ @Override
1192
+ protected void onFocusChanged(boolean gainFocus, int direction, @Nullable Rect previouslyFocusedRect) {
1193
+ super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
1194
+ }
1195
+
1020
1196
  @Override
1021
1197
  public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
1022
- if (focusDestinations.length == 0) {
1198
+ if (!isTVFocusGuide() || mRecoverFocus) {
1023
1199
  return super.requestFocus(direction, previouslyFocusedRect);
1024
1200
  }
1025
1201
 
1026
- View destination = findDestinationView();
1202
+ if (isFocusDestinationsSet()) {
1203
+ View destination = findDestinationView();
1027
1204
 
1028
- if (destination != null && requestFocusViewOrAncestor(destination)) {
1029
- return true;
1205
+ if (destination != null && requestFocusViewOrAncestor(destination)) {
1206
+ return true;
1207
+ }
1030
1208
  }
1031
1209
 
1032
- for (int i = 0; i < getChildCount(); i++) {
1033
- if (getChildAt(i).requestFocus()) {
1210
+ if (this.autoFocus) {
1211
+ View lastFocusedElem = lastFocusedElement.get();
1212
+
1213
+ if (lastFocusedElem != null) {
1214
+
1215
+ if (lastFocusedElem.isAttachedToWindow()) {
1216
+ lastFocusedElem.requestFocus();
1217
+ return true;
1218
+ }
1219
+
1220
+ /**
1221
+ * `lastFocusedElem` can get detached based on application logic.
1222
+ * If the code reaches here, that means we're dealing with that case.
1223
+ * We should set `lastFocusedElem` to null and let the focus determination
1224
+ * logic below to do its magic and redirect focus to the first element.
1225
+ */
1226
+ lastFocusedElement = new WeakReference<View>(null);
1227
+ }
1228
+
1229
+ // Try moving the focus to the first focusable element otherwise.
1230
+ if (moveFocusToFirstFocusable(this)) {
1034
1231
  return true;
1035
1232
  }
1036
1233
  }
1037
1234
 
1038
- return false;
1235
+ return super.requestFocus(direction, previouslyFocusedRect);
1236
+ }
1237
+
1238
+ @Override
1239
+ public View focusSearch(View focused, int direction) {
1240
+ /**
1241
+ * FocusSearch recursively goes all the way up to the Root view
1242
+ * and runs `FocusFinder.findNextFocus()` to determine the next focusable.
1243
+ * It finds the next focusable by accounting *every* focusable elements on the screen.
1244
+ *
1245
+ * That is exactly the thing we want to prevent if the view has a `focusTrap` enabled
1246
+ * matching the `direction`. We interrupt `focusSearch` to make the `FocusFinder` run
1247
+ * the algorithm only accounting the children elements of the focus trap.
1248
+ * This ensures that focus will always stay inside the container until trap gets disabled.
1249
+ */
1250
+ if ((trapFocusUp && direction == FOCUS_UP)
1251
+ || (trapFocusDown && direction == FOCUS_DOWN)
1252
+ || (trapFocusLeft && direction == FOCUS_LEFT)
1253
+ || (trapFocusRight && direction == FOCUS_RIGHT)) {
1254
+ return FocusFinder.getInstance().findNextFocus(this, focused, direction);
1255
+ }
1256
+
1257
+ return super.focusSearch(focused, direction);
1039
1258
  }
1040
1259
 
1041
1260
  public void setFocusDestinations(@NonNull int[] focusDestinations) {
1042
1261
  this.focusDestinations = focusDestinations;
1043
1262
  }
1263
+
1264
+ public void setAutoFocusTV(boolean autoFocus) {
1265
+ this.autoFocus = autoFocus;
1266
+ lastFocusedElement = new WeakReference<View>(null);
1267
+ }
1268
+
1269
+ public void setTrapFocusUp(boolean enabled) {
1270
+ this.trapFocusUp = enabled;
1271
+ }
1272
+
1273
+ public void setTrapFocusDown(boolean enabled) {
1274
+ this.trapFocusDown = enabled;
1275
+ }
1276
+
1277
+ public void setTrapFocusLeft(boolean enabled) {
1278
+ this.trapFocusLeft = enabled;
1279
+ }
1280
+
1281
+ public void setTrapFocusRight(boolean enabled) {
1282
+ this.trapFocusRight = enabled;
1283
+ }
1044
1284
  }
@@ -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,16 @@ 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
+ }
352
+ case "requestTVFocus":
353
+ {
354
+ root.requestFocus();
355
+ break;
356
+ }
340
357
  }
341
358
  }
342
359
 
@@ -359,14 +376,43 @@ public class ReactViewManager extends ReactClippingViewManager<ReactViewGroup> {
359
376
  root.drawableHotspotChanged(x, y);
360
377
  }
361
378
 
379
+ private void handleSetDestinations(ReactViewGroup root, @Nullable ReadableArray args) {
380
+ if (args == null || args.size() != 1) {
381
+ throw new JSApplicationIllegalArgumentException(
382
+ "Illegal number of arguments for 'setDestinations' command");
383
+ }
362
384
 
363
- @ReactProp(name = "destinations")
364
- public void setDestinations(final ReactViewGroup view, final ReadableArray destinations) {
385
+ ReadableArray destinations = args.getArray(0);
365
386
  int[] fd = new int[destinations.size()];
366
387
  for (int i = 0; i < fd.length; i++) {
367
388
  fd[i] = destinations.getInt(i);
368
389
  }
369
- view.setFocusDestinations(fd);
390
+ root.setFocusDestinations(fd);
391
+ }
392
+
393
+ @ReactProp(name = "autoFocus")
394
+ public void setAutoFocusTV(ReactViewGroup view, boolean autoFocus) {
395
+ view.setAutoFocusTV(autoFocus);
396
+ }
397
+
398
+ @ReactProp(name = "trapFocusUp")
399
+ public void trapFocusUp(ReactViewGroup view, boolean enabled) {
400
+ view.setTrapFocusUp(enabled);
401
+ }
402
+
403
+ @ReactProp(name = "trapFocusDown")
404
+ public void trapFocusDown(ReactViewGroup view, boolean enabled) {
405
+ view.setTrapFocusDown(enabled);
406
+ }
407
+
408
+ @ReactProp(name = "trapFocusLeft")
409
+ public void trapFocusLeft(ReactViewGroup view, boolean enabled) {
410
+ view.setTrapFocusLeft(enabled);
411
+ }
412
+
413
+ @ReactProp(name = "trapFocusRight")
414
+ public void trapFocusRight(ReactViewGroup view, boolean enabled) {
415
+ view.setTrapFocusRight(enabled);
370
416
  }
371
417
 
372
418
  }
@@ -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 = "0";
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
+ c2ea17c3e281e3d9b0e6d26fda7dff8209a147d3
@@ -0,0 +1 @@
1
+ 71ca84c5b8dd1922e17dabf3996c7c0c97e173bae4735fb8fee0e5bac5c3cc07
@@ -0,0 +1 @@
1
+ 297e3655c67f9408915cb689609c9e5628bf7e47f1c95021e177a944ab5fdedfb7dd485e993ea0c3ef4dcfda0b77cfd454d1a7bb123a395b925e585efa8fa4df
@@ -0,0 +1 @@
1
+ c3ff9590abdb134bcfa1c2bb3bb1e3522fef468f
@@ -0,0 +1 @@
1
+ 53a6ba2595a81699797a95e0af6def3baffc8f6ff12230da5593db9bd5df93d7
@@ -0,0 +1 @@
1
+ a1b3bfa6e56cc856991c6cdc0e048224555d8762662a85e31282b6f6759044bbdf6fdb1420809a59bad1781fc53744c6fd780f61aafdefd8f251ea7000ed607c
@@ -0,0 +1 @@
1
+ 71ca84c5b8dd1922e17dabf3996c7c0c97e173bae4735fb8fee0e5bac5c3cc07
@@ -0,0 +1 @@
1
+ 297e3655c67f9408915cb689609c9e5628bf7e47f1c95021e177a944ab5fdedfb7dd485e993ea0c3ef4dcfda0b77cfd454d1a7bb123a395b925e585efa8fa4df
@@ -0,0 +1 @@
1
+ fee8ee3dfc5b2e97ab62407c1780a72d0e3f4c2d
@@ -0,0 +1 @@
1
+ 72b9bcf2ae5c81a1df3aa5d1cf4bb86015d932a22b040515d64094f4989d7265
@@ -0,0 +1 @@
1
+ fbb7aa8c30cd3697c2153140dd36deb1095bb418405d50fb0141ad92b80091b391018db23ad15fa19b74869cfcc133a6fa751a903f540e915de1d875073a360c