react-native-tvos 0.69.6-2 → 0.69.6-3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) 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 +28 -11
  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/Core/ReactNativeVersion.js +1 -1
  14. package/Libraries/LogBox/UI/LogBoxButton.js +16 -12
  15. package/Libraries/LogBox/UI/LogBoxNotification.js +1 -1
  16. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +2 -20
  17. package/Libraries/StyleSheet/StyleSheetTypes.js +1 -0
  18. package/Libraries/Types/CoreEventTypes.js +9 -0
  19. package/README.md +2 -1
  20. package/React/Base/RCTVersion.m +1 -1
  21. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +48 -4
  22. package/React/Views/RCTTVView.h +5 -0
  23. package/React/Views/RCTTVView.m +19 -0
  24. package/React/Views/RCTViewManager.m +1 -0
  25. package/ReactAndroid/gradle.properties +1 -1
  26. package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.java +6 -1
  27. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +4 -5
  28. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java +57 -62
  29. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
  30. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +18 -0
  31. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +190 -1
  32. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +5 -0
  33. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  34. package/ReactCommon/react/renderer/components/view/ViewProps.cpp +13 -1
  35. package/ReactCommon/react/renderer/components/view/ViewProps.h +2 -1
  36. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar → 0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar} +0 -0
  37. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar.md5 +1 -0
  38. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar.sha1 +1 -0
  39. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar.sha256 +1 -0
  40. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar.sha512 +1 -0
  41. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar} +0 -0
  42. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar.md5 → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar.md5} +0 -0
  43. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar.sha1 → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar.sha1} +0 -0
  44. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar.sha256 → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar.sha256} +0 -0
  45. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-debug-sources.jar.sha512 → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar.sha512} +0 -0
  46. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug.aar +0 -0
  47. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug.aar.md5 +1 -0
  48. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug.aar.sha1 +1 -0
  49. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug.aar.sha256 +1 -0
  50. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-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.6-3/hermes-engine-0.69.6-3-release-javadoc.jar} +0 -0
  52. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release-javadoc.jar.md5 +1 -0
  53. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release-javadoc.jar.sha1 +1 -0
  54. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release-javadoc.jar.sha256 +1 -0
  55. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release-javadoc.jar.sha512 +1 -0
  56. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar} +0 -0
  57. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar.md5 → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar.md5} +0 -0
  58. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar.sha1 → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar.sha1} +0 -0
  59. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar.sha256 → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar.sha256} +0 -0
  60. package/android/com/facebook/react/hermes-engine/{0.69.6-2/hermes-engine-0.69.6-2-release-sources.jar.sha512 → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar.sha512} +0 -0
  61. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release.aar +0 -0
  62. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release.aar.md5 +1 -0
  63. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release.aar.sha1 +1 -0
  64. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release.aar.sha256 +1 -0
  65. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-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.6-3/hermes-engine-0.69.6-3.module} +45 -45
  67. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.module.md5 +1 -0
  68. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.module.sha1 +1 -0
  69. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.module.sha256 +1 -0
  70. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.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.6-3/hermes-engine-0.69.6-3.pom} +1 -1
  72. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.pom.md5 +1 -0
  73. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.pom.sha1 +1 -0
  74. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.pom.sha256 +1 -0
  75. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.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-debug-javadoc.jar → 0.69.6-3/react-native-0.69.6-3-debug-javadoc.jar} +0 -0
  82. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-javadoc.jar.md5 +1 -0
  83. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-javadoc.jar.sha1 +1 -0
  84. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-javadoc.jar.sha256 +1 -0
  85. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-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.6-3/react-native-0.69.6-3-debug-sources.jar} +0 -0
  87. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-sources.jar.md5 +1 -0
  88. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-sources.jar.sha1 +1 -0
  89. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-sources.jar.sha256 +1 -0
  90. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-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.6-3/react-native-0.69.6-3-debug.aar} +0 -0
  92. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug.aar.md5 +1 -0
  93. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug.aar.sha1 +1 -0
  94. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug.aar.sha256 +1 -0
  95. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug.aar.sha512 +1 -0
  96. package/android/com/facebook/react/react-native/{0.69.6-2/react-native-0.69.6-2-release-javadoc.jar → 0.69.6-3/react-native-0.69.6-3-release-javadoc.jar} +0 -0
  97. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-javadoc.jar.md5 +1 -0
  98. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-javadoc.jar.sha1 +1 -0
  99. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-javadoc.jar.sha256 +1 -0
  100. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-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.6-3/react-native-0.69.6-3-release-sources.jar} +0 -0
  102. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-sources.jar.md5 +1 -0
  103. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-sources.jar.sha1 +1 -0
  104. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-sources.jar.sha256 +1 -0
  105. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-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.6-3/react-native-0.69.6-3-release.aar} +0 -0
  107. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release.aar.md5 +1 -0
  108. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release.aar.sha1 +1 -0
  109. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release.aar.sha256 +1 -0
  110. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-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.6-3/react-native-0.69.6-3.module} +57 -57
  112. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.module.md5 +1 -0
  113. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.module.sha1 +1 -0
  114. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.module.sha256 +1 -0
  115. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.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.6-3/react-native-0.69.6-3.pom} +1 -1
  117. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.pom.md5 +1 -0
  118. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.pom.sha1 +1 -0
  119. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.pom.sha256 +1 -0
  120. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.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 +1 -1
  128. package/template/package.json +1 -1
  129. package/tvos-types.d.ts +9 -0
  130. package/Libraries/DeprecatedPropTypes/DeprecatedTVViewPropTypes.js +0 -23
  131. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.md5 +0 -1
  132. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.sha1 +0 -1
  133. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.sha256 +0 -1
  134. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug-javadoc.jar.sha512 +0 -1
  135. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar +0 -0
  136. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.md5 +0 -1
  137. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.sha1 +0 -1
  138. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.sha256 +0 -1
  139. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-debug.aar.sha512 +0 -1
  140. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.md5 +0 -1
  141. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.sha1 +0 -1
  142. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.sha256 +0 -1
  143. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release-javadoc.jar.sha512 +0 -1
  144. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar +0 -0
  145. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.md5 +0 -1
  146. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.sha1 +0 -1
  147. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.sha256 +0 -1
  148. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2-release.aar.sha512 +0 -1
  149. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.md5 +0 -1
  150. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.sha1 +0 -1
  151. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.sha256 +0 -1
  152. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.module.sha512 +0 -1
  153. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.md5 +0 -1
  154. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.sha1 +0 -1
  155. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.sha256 +0 -1
  156. package/android/com/facebook/react/hermes-engine/0.69.6-2/hermes-engine-0.69.6-2.pom.sha512 +0 -1
  157. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.md5 +0 -1
  158. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.sha1 +0 -1
  159. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.sha256 +0 -1
  160. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-javadoc.jar.sha512 +0 -1
  161. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.md5 +0 -1
  162. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.sha1 +0 -1
  163. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.sha256 +0 -1
  164. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug-sources.jar.sha512 +0 -1
  165. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.md5 +0 -1
  166. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.sha1 +0 -1
  167. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.sha256 +0 -1
  168. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-debug.aar.sha512 +0 -1
  169. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.md5 +0 -1
  170. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.sha1 +0 -1
  171. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.sha256 +0 -1
  172. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-javadoc.jar.sha512 +0 -1
  173. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.md5 +0 -1
  174. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.sha1 +0 -1
  175. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.sha256 +0 -1
  176. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release-sources.jar.sha512 +0 -1
  177. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.md5 +0 -1
  178. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.sha1 +0 -1
  179. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.sha256 +0 -1
  180. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2-release.aar.sha512 +0 -1
  181. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.md5 +0 -1
  182. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.sha1 +0 -1
  183. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.sha256 +0 -1
  184. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.module.sha512 +0 -1
  185. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.md5 +0 -1
  186. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.sha1 +0 -1
  187. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.sha256 +0 -1
  188. package/android/com/facebook/react/react-native/0.69.6-2/react-native-0.69.6-2.pom.sha512 +0 -1
@@ -21,8 +21,13 @@ import java.util.List;
21
21
  /* package */ class EventAnimationDriver implements RCTEventEmitter {
22
22
  private List<String> mEventPath;
23
23
  /* package */ ValueAnimatedNode mValueNode;
24
+ /* package */ String mEventName;
25
+ /* package */ int mViewTag;
24
26
 
25
- public EventAnimationDriver(List<String> eventPath, ValueAnimatedNode valueNode) {
27
+ public EventAnimationDriver(
28
+ String eventName, int viewTag, List<String> eventPath, ValueAnimatedNode valueNode) {
29
+ mEventName = eventName;
30
+ mViewTag = viewTag;
26
31
  mEventPath = eventPath;
27
32
  mValueNode = valueNode;
28
33
  }
@@ -113,7 +113,7 @@ public class NativeAnimatedModule extends NativeAnimatedModuleSpec
113
113
 
114
114
  @AnyThread
115
115
  boolean isEmpty() {
116
- return mQueue.isEmpty();
116
+ return mQueue.isEmpty() && mPeekedOperation != null;
117
117
  }
118
118
 
119
119
  void setSynchronizedAccess(boolean isSynchronizedAccess) {
@@ -393,8 +393,8 @@ public class NativeAnimatedModule extends NativeAnimatedModuleSpec
393
393
 
394
394
  /**
395
395
  * Given a viewTag, detect if we're running in Fabric or non-Fabric and attach an event listener
396
- * to the correct UIManager, if necessary. This is expected to only be called from the JS thread,
397
- * and not concurrently.
396
+ * to the correct UIManager, if necessary. This is expected to only be called from the native
397
+ * module thread, and not concurrently.
398
398
  *
399
399
  * @param viewTag
400
400
  */
@@ -417,8 +417,7 @@ public class NativeAnimatedModule extends NativeAnimatedModuleSpec
417
417
  }
418
418
 
419
419
  // Subscribe to UIManager (Fabric or non-Fabric) lifecycle events if we haven't yet
420
- if ((mInitializedForFabric && mUIManagerType == UIManagerType.FABRIC)
421
- || (mInitializedForNonFabric && mUIManagerType == UIManagerType.DEFAULT)) {
420
+ if (mUIManagerType == UIManagerType.FABRIC ? mInitializedForFabric : mInitializedForNonFabric) {
422
421
  return;
423
422
  }
424
423
 
@@ -30,11 +30,9 @@ import com.facebook.react.uimanager.events.EventDispatcher;
30
30
  import com.facebook.react.uimanager.events.EventDispatcherListener;
31
31
  import java.util.ArrayDeque;
32
32
  import java.util.ArrayList;
33
- import java.util.HashMap;
34
33
  import java.util.LinkedList;
35
34
  import java.util.List;
36
35
  import java.util.ListIterator;
37
- import java.util.Map;
38
36
  import java.util.Queue;
39
37
 
40
38
  /**
@@ -57,9 +55,9 @@ import java.util.Queue;
57
55
  private final SparseArray<AnimatedNode> mAnimatedNodes = new SparseArray<>();
58
56
  private final SparseArray<AnimationDriver> mActiveAnimations = new SparseArray<>();
59
57
  private final SparseArray<AnimatedNode> mUpdatedNodes = new SparseArray<>();
60
- // Mapping of a view tag and an event name to a list of event animation drivers. 99% of the time
61
- // there will be only one driver per mapping so all code code should be optimized around that.
62
- private final Map<String, List<EventAnimationDriver>> mEventDrivers = new HashMap<>();
58
+ // List of event animation drivers for an event on view.
59
+ // There may be multiple drivers for the same event and view.
60
+ private final List<EventAnimationDriver> mEventDrivers = new ArrayList<>();
63
61
  private final ReactApplicationContext mReactApplicationContext;
64
62
  private int mAnimatedGraphBFSColor = 0;
65
63
  // Used to avoid allocating a new array on every frame in `runUpdates` and `onEventDispatch`.
@@ -76,36 +74,27 @@ import java.util.Queue;
76
74
 
77
75
  /**
78
76
  * Initialize event listeners for Fabric UIManager or non-Fabric UIManager, exactly once. Once
79
- * Fabric is the only UIManager, this logic can be simplified. This is only called on the JS
80
- * thread.
77
+ * Fabric is the only UIManager, this logic can be simplified. This is expected to only be called
78
+ * from the native module thread.
81
79
  *
82
80
  * @param uiManagerType
83
81
  */
84
- @UiThread
85
82
  public void initializeEventListenerForUIManagerType(@UIManagerType final int uiManagerType) {
86
- if ((uiManagerType == UIManagerType.FABRIC && mEventListenerInitializedForFabric)
87
- || (uiManagerType == UIManagerType.DEFAULT && mEventListenerInitializedForNonFabric)) {
83
+ if (uiManagerType == UIManagerType.FABRIC
84
+ ? mEventListenerInitializedForFabric
85
+ : mEventListenerInitializedForNonFabric) {
88
86
  return;
89
87
  }
90
88
 
91
- final NativeAnimatedNodesManager self = this;
92
- mReactApplicationContext.runOnUiQueueThread(
93
- new Runnable() {
94
- @Override
95
- public void run() {
96
- UIManager uiManager =
97
- UIManagerHelper.getUIManager(mReactApplicationContext, uiManagerType);
98
- if (uiManager != null) {
99
- uiManager.<EventDispatcher>getEventDispatcher().addListener(self);
100
-
101
- if (uiManagerType == UIManagerType.FABRIC) {
102
- mEventListenerInitializedForFabric = true;
103
- } else {
104
- mEventListenerInitializedForNonFabric = true;
105
- }
106
- }
107
- }
108
- });
89
+ UIManager uiManager = UIManagerHelper.getUIManager(mReactApplicationContext, uiManagerType);
90
+ if (uiManager != null) {
91
+ uiManager.<EventDispatcher>getEventDispatcher().addListener(this);
92
+ if (uiManagerType == UIManagerType.FABRIC) {
93
+ mEventListenerInitializedForFabric = true;
94
+ } else {
95
+ mEventListenerInitializedForNonFabric = true;
96
+ }
97
+ }
109
98
  }
110
99
 
111
100
  /*package*/ @Nullable
@@ -471,7 +460,8 @@ import java.util.Queue;
471
460
  }
472
461
 
473
462
  @UiThread
474
- public void addAnimatedEventToView(int viewTag, String eventName, ReadableMap eventMapping) {
463
+ public void addAnimatedEventToView(
464
+ int viewTag, String eventHandlerName, ReadableMap eventMapping) {
475
465
  int nodeTag = eventMapping.getInt("animatedValueTag");
476
466
  AnimatedNode node = mAnimatedNodes.get(nodeTag);
477
467
  if (node == null) {
@@ -482,8 +472,8 @@ import java.util.Queue;
482
472
  throw new JSApplicationIllegalArgumentException(
483
473
  "addAnimatedEventToView: Animated node on view ["
484
474
  + viewTag
485
- + "] connected to event ("
486
- + eventName
475
+ + "] connected to event handler ("
476
+ + eventHandlerName
487
477
  + ") should be of type "
488
478
  + ValueAnimatedNode.class.getName());
489
479
  }
@@ -494,37 +484,31 @@ import java.util.Queue;
494
484
  pathList.add(path.getString(i));
495
485
  }
496
486
 
497
- EventAnimationDriver event = new EventAnimationDriver(pathList, (ValueAnimatedNode) node);
498
- String key = viewTag + eventName;
499
- if (mEventDrivers.containsKey(key)) {
500
- mEventDrivers.get(key).add(event);
501
- } else {
502
- List<EventAnimationDriver> drivers = new ArrayList<>(1);
503
- drivers.add(event);
504
- mEventDrivers.put(key, drivers);
505
- }
487
+ String eventName = normalizeEventName(eventHandlerName);
488
+
489
+ EventAnimationDriver eventDriver =
490
+ new EventAnimationDriver(eventName, viewTag, pathList, (ValueAnimatedNode) node);
491
+ mEventDrivers.add(eventDriver);
506
492
  }
507
493
 
508
494
  @UiThread
509
- public void removeAnimatedEventFromView(int viewTag, String eventName, int animatedValueTag) {
510
- String key = viewTag + eventName;
511
- if (mEventDrivers.containsKey(key)) {
512
- List<EventAnimationDriver> driversForKey = mEventDrivers.get(key);
513
- if (driversForKey.size() == 1) {
514
- mEventDrivers.remove(viewTag + eventName);
515
- } else {
516
- ListIterator<EventAnimationDriver> it = driversForKey.listIterator();
517
- while (it.hasNext()) {
518
- if (it.next().mValueNode.mTag == animatedValueTag) {
519
- it.remove();
520
- break;
521
- }
522
- }
495
+ public void removeAnimatedEventFromView(
496
+ int viewTag, String eventHandlerName, int animatedValueTag) {
497
+
498
+ String eventName = normalizeEventName(eventHandlerName);
499
+
500
+ ListIterator<EventAnimationDriver> it = mEventDrivers.listIterator();
501
+ while (it.hasNext()) {
502
+ EventAnimationDriver driver = it.next();
503
+ if (eventName.equals(driver.mEventName)
504
+ && viewTag == driver.mViewTag
505
+ && animatedValueTag == driver.mValueNode.mTag) {
506
+ it.remove();
507
+ break;
523
508
  }
524
509
  }
525
510
  }
526
511
 
527
- @UiThread
528
512
  @Override
529
513
  public void onEventDispatch(final Event event) {
530
514
  // Events can be dispatched from any thread so we have to make sure handleEvent is run from the
@@ -556,18 +540,19 @@ import java.util.Queue;
556
540
  if (uiManager == null) {
557
541
  return;
558
542
  }
559
- String eventName = uiManager.resolveCustomDirectEventName(event.getEventName());
560
- if (eventName == null) {
561
- eventName = "";
562
- }
563
543
 
564
- List<EventAnimationDriver> driversForKey = mEventDrivers.get(event.getViewTag() + eventName);
565
- if (driversForKey != null) {
566
- for (EventAnimationDriver driver : driversForKey) {
544
+ boolean foundAtLeastOneDriver = false;
545
+ Event.EventAnimationDriverMatchSpec matchSpec = event.getEventAnimationDriverMatchSpec();
546
+ for (EventAnimationDriver driver : mEventDrivers) {
547
+ if (matchSpec.match(driver.mViewTag, driver.mEventName)) {
548
+ foundAtLeastOneDriver = true;
567
549
  stopAnimationsForNode(driver.mValueNode);
568
550
  event.dispatch(driver);
569
551
  mRunUpdateNodeList.add(driver.mValueNode);
570
552
  }
553
+ }
554
+
555
+ if (foundAtLeastOneDriver) {
571
556
  updateNodes(mRunUpdateNodeList);
572
557
  mRunUpdateNodeList.clear();
573
558
  }
@@ -782,4 +767,14 @@ import java.util.Queue;
782
767
  mWarnedAboutGraphTraversal = false;
783
768
  }
784
769
  }
770
+
771
+ private String normalizeEventName(String eventHandlerName) {
772
+ // Fabric UIManager also makes this assumption
773
+ String eventName = eventHandlerName;
774
+ if (eventHandlerName.startsWith("on")) {
775
+ eventName = "top" + eventHandlerName.substring(2);
776
+ }
777
+
778
+ return eventName;
779
+ }
785
780
  }
@@ -18,5 +18,5 @@ public class ReactNativeVersion {
18
18
  "major", 0,
19
19
  "minor", 69,
20
20
  "patch", 6,
21
- "prerelease", "2");
21
+ "prerelease", "3");
22
22
  }
@@ -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
  }
@@ -60,6 +60,9 @@ import com.facebook.react.uimanager.common.UIManagerType;
60
60
  import com.facebook.react.uimanager.common.ViewUtil;
61
61
  import com.facebook.yoga.YogaConstants;
62
62
 
63
+ import java.lang.ref.WeakReference;
64
+ import java.util.ArrayList;
65
+
63
66
  /**
64
67
  * Backing for a React View. Has support for borders, but since borders aren't common, lazy
65
68
  * initializes most of the storage needed for them.
@@ -80,6 +83,9 @@ public class ReactViewGroup extends ViewGroup
80
83
  /* should only be used in {@link #updateClippingToRect} */
81
84
  private static final Rect sHelperRect = new Rect();
82
85
  private @NonNull int[] focusDestinations = new int[0];
86
+ private boolean autoFocus = false;
87
+ private WeakReference<View> lastFocusedElement;
88
+ private boolean mRecoverFocus = false;
83
89
 
84
90
  /**
85
91
  * This listener will be set for child views when removeClippedSubview property is enabled. When
@@ -440,6 +446,71 @@ public class ReactViewGroup extends ViewGroup
440
446
  }
441
447
  }
442
448
 
449
+ boolean moveFocusToFirstFocusable(ReactViewGroup viewGroup) {
450
+ ArrayList<View> focusables = new ArrayList<View>(0);
451
+ /**
452
+ * `addFocusables` is the method used by `FocusFinder` to determine
453
+ * which elements are `focusable` within the given view.
454
+ * Here we use it for the exact purpose. It mutates/populates the `focusables` array list.
455
+ * Focus direction (FOCUS_DOWN) doesn't matter at all because
456
+ * it's not being used by the underlying implementation.
457
+ */
458
+ viewGroup.addFocusables(focusables, FOCUS_DOWN, FOCUSABLES_ALL);
459
+ /**
460
+ * Depending on ViewGroup's `descendantFocusability` property,
461
+ * the first element can be the ViewGroup itself.
462
+ * The other ones on the list can be non-focusable as well.
463
+ * So, we run a loop till finding the first real focusable element.
464
+ */
465
+ if (focusables.size() <= 0) return false;
466
+
467
+ View firstFocusableElement = null;
468
+ Integer index = 0;
469
+ while (firstFocusableElement == null && index < focusables.size()) {
470
+ View elem = focusables.get(index);
471
+ if (elem.isFocusable() && elem != viewGroup) {
472
+ firstFocusableElement = elem;
473
+ break;
474
+ }
475
+ index++;
476
+ }
477
+
478
+ if (firstFocusableElement != null) return firstFocusableElement.requestFocus();
479
+
480
+ return false;
481
+ }
482
+
483
+ void recoverFocus(View view) {
484
+ if (!view.hasFocus() || !(view instanceof ReactViewGroup)) return;
485
+
486
+ ReactViewGroup parentFocusGuide = findParentFocusGuide(view);
487
+ if (parentFocusGuide == null) return;
488
+
489
+ /**
490
+ * Making `parentFocusGuide` focusable for a brief time to
491
+ * temporarily move the focus to it. We do this to prevent
492
+ * Android from moving the focus to top-left-most element of the screen.
493
+ */
494
+ parentFocusGuide.mRecoverFocus = true;
495
+ parentFocusGuide.setFocusable(true);
496
+ parentFocusGuide.requestFocus();
497
+
498
+ /**
499
+ * We set a Runnable to wait and make sure every layout related action gets completed
500
+ * before trying to find a new focus candidate inside the `parentFocusGuide`.
501
+ */
502
+ UiThreadUtil.runOnUiThread(
503
+ new Runnable() {
504
+ @Override
505
+ public void run() {
506
+ moveFocusToFirstFocusable(parentFocusGuide);
507
+
508
+ parentFocusGuide.setFocusable(false);
509
+ parentFocusGuide.mRecoverFocus = false;
510
+ }
511
+ });
512
+ }
513
+
443
514
  @Override
444
515
  public boolean getChildVisibleRect(View child, Rect r, android.graphics.Point offset) {
445
516
  return super.getChildVisibleRect(child, r, offset);
@@ -494,6 +565,8 @@ public class ReactViewGroup extends ViewGroup
494
565
  setChildrenDrawingOrderEnabled(false);
495
566
  }
496
567
 
568
+ recoverFocus(view);
569
+
497
570
  super.removeView(view);
498
571
  }
499
572
 
@@ -508,6 +581,8 @@ public class ReactViewGroup extends ViewGroup
508
581
  setChildrenDrawingOrderEnabled(false);
509
582
  }
510
583
 
584
+ recoverFocus(getChildAt(index));
585
+
511
586
  super.removeViewAt(index);
512
587
  }
513
588
 
@@ -1017,12 +1092,121 @@ public class ReactViewGroup extends ViewGroup
1017
1092
  return false;
1018
1093
  }
1019
1094
 
1095
+ private boolean isTVFocusGuide() {
1096
+ return focusDestinations.length > 0 || autoFocus;
1097
+ }
1098
+
1099
+ @Nullable
1100
+ private ReactViewGroup findParentFocusGuide(View view) {
1101
+ ViewParent parent = view.getParent();
1102
+
1103
+ while (parent != null) {
1104
+ if (parent instanceof ReactViewGroup) {
1105
+ ReactViewGroup elem = (ReactViewGroup) parent;
1106
+ if (elem.isTVFocusGuide()) return elem;
1107
+ }
1108
+ parent = parent.getParent();
1109
+ }
1110
+
1111
+ return null;
1112
+ }
1113
+
1114
+ /***
1115
+ * This is meant to be used only for TVFocusGuide.
1116
+ * @return View | null
1117
+ */
1118
+ @Nullable
1119
+ private View getFocusedChildOfFocusGuide() {
1120
+ if (!isTVFocusGuide()) return null;
1121
+
1122
+ /*
1123
+ * We can have nested `TVFocusGuide`s, this is a typical scenario.
1124
+ * The problem is, returned element from `getFocusedChild` can be
1125
+ * either a direct `child` of the `TVFocusGuide` or a `descendant` of it.
1126
+ * Let's say if we run `getFocusedChild` for the Root element, it will always
1127
+ * give us an element even though the Root element is not the direct parent
1128
+ * of the focused element.
1129
+ * So, we need to find the closest `TVFocusGuide` to the focused child
1130
+ * to make sure the focused element's closest `TVFocusGuide` is "this" one.
1131
+ */
1132
+ View focusedChild = this.getFocusedChild();
1133
+ if (focusedChild == null) return null;
1134
+
1135
+ ReactViewGroup parentFocusGuide = findParentFocusGuide(focusedChild);
1136
+ if (parentFocusGuide == this) return focusedChild;
1137
+
1138
+ return null;
1139
+ }
1140
+
1141
+ @Override
1142
+ public void addFocusables(ArrayList<View> views, int direction, int focusableMode) {
1143
+ /**
1144
+ * TVFocusGuides should reveral their children when `mRecoverFocus` is set.
1145
+ * `mRecoverFocus` flag indicates a temporary focus recovery mode it's in which
1146
+ * requires full access to children focusable elements.
1147
+ */
1148
+ if (isTVFocusGuide() && !mRecoverFocus) {
1149
+ View focusedChild = getFocusedChildOfFocusGuide();
1150
+
1151
+ /*
1152
+ * We only include the view's (TVFocusGuide) itself if it doesn't have a child that currently has the focus.
1153
+ * Otherwise, it means focus is already in the `TVFocusGuide` and all of it's descendants should be included
1154
+ * for focus calculations.
1155
+ */
1156
+ if (focusedChild == null) {
1157
+ views.add(this);
1158
+ return;
1159
+ }
1160
+ }
1161
+
1162
+ super.addFocusables(views, direction, focusableMode);
1163
+ }
1164
+
1165
+ @Override
1166
+ public void requestChildFocus(View child, View focused) {
1167
+ super.requestChildFocus(child, focused);
1168
+
1169
+ if (autoFocus) {
1170
+ lastFocusedElement = new WeakReference<View>(focused);
1171
+ }
1172
+ }
1173
+
1174
+ @Override
1175
+ protected void onFocusChanged(boolean gainFocus, int direction, @Nullable Rect previouslyFocusedRect) {
1176
+ super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
1177
+ }
1178
+
1020
1179
  @Override
1021
1180
  public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
1022
- if (focusDestinations.length == 0) {
1181
+ if (!isTVFocusGuide() || mRecoverFocus) {
1023
1182
  return super.requestFocus(direction, previouslyFocusedRect);
1024
1183
  }
1025
1184
 
1185
+ if (this.autoFocus) {
1186
+ View lastFocusedElem = lastFocusedElement.get();
1187
+
1188
+ if (lastFocusedElem != null) {
1189
+
1190
+ if (lastFocusedElem.isAttachedToWindow()) {
1191
+ lastFocusedElem.requestFocus();
1192
+ return true;
1193
+ }
1194
+
1195
+ /**
1196
+ * `lastFocusedElem` can get detached based on application logic.
1197
+ * If the code reaches here, that means we're dealing with that case.
1198
+ * We should set `lastFocusedElem` to null and let the focus determination
1199
+ * logic below to do its magic and redirect focus to the first element.
1200
+ */
1201
+ lastFocusedElement = new WeakReference<View>(null);
1202
+ }
1203
+
1204
+ // Try moving the focus to the first focusable element otherwise.
1205
+ if (moveFocusToFirstFocusable(this)) {
1206
+ return true;
1207
+ }
1208
+ }
1209
+
1026
1210
  View destination = findDestinationView();
1027
1211
 
1028
1212
  if (destination != null && requestFocusViewOrAncestor(destination)) {
@@ -1041,4 +1225,9 @@ public class ReactViewGroup extends ViewGroup
1041
1225
  public void setFocusDestinations(@NonNull int[] focusDestinations) {
1042
1226
  this.focusDestinations = focusDestinations;
1043
1227
  }
1228
+
1229
+ public void setAutoFocusTV(boolean autoFocus) {
1230
+ this.autoFocus = autoFocus;
1231
+ lastFocusedElement = new WeakReference<View>(null);
1232
+ }
1044
1233
  }
@@ -369,4 +369,9 @@ public class ReactViewManager extends ReactClippingViewManager<ReactViewGroup> {
369
369
  view.setFocusDestinations(fd);
370
370
  }
371
371
 
372
+ @ReactProp(name = "autoFocus")
373
+ public void setAutoFocusTV(ReactViewGroup view, boolean autoFocus) {
374
+ view.setAutoFocusTV(autoFocus);
375
+ }
376
+
372
377
  }
@@ -18,7 +18,7 @@ constexpr struct {
18
18
  int32_t Major = 0;
19
19
  int32_t Minor = 69;
20
20
  int32_t Patch = 6;
21
- std::string_view Prerelease = "2";
21
+ std::string_view Prerelease = "3";
22
22
  } ReactNativeVersion;
23
23
 
24
24
  } // namespace facebook::react
@@ -52,6 +52,12 @@ ViewProps::ViewProps(
52
52
  convertRawProp(context, rawProps, "nextFocusLeft", sourceProps.nextFocusLeft, {})),
53
53
  nextFocusRight(
54
54
  convertRawProp(context, rawProps, "nextFocusRight", sourceProps.nextFocusRight, {})),
55
+ autoFocus(convertRawProp(
56
+ context,
57
+ rawProps,
58
+ "autoFocus",
59
+ sourceProps.autoFocus,
60
+ (Boolean) false)),
55
61
  #endif
56
62
  opacity(convertRawProp(
57
63
  context,
@@ -210,7 +216,13 @@ ViewProps::ViewProps(
210
216
  rawProps,
211
217
  "renderToHardwareTextureAndroid",
212
218
  sourceProps.renderToHardwareTextureAndroid,
213
- {}))
219
+ {})),
220
+ autoFocus(convertRawProp(
221
+ context,
222
+ rawProps,
223
+ "autoFocus",
224
+ sourceProps.autoFocus,
225
+ false))
214
226
  #endif
215
227
  {};
216
228
 
@@ -78,6 +78,7 @@ 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};
81
82
  #endif
82
83
 
83
84
  Float elevation{}; /* Android-only */
@@ -91,7 +92,7 @@ class ViewProps : public YogaStylableProps, public AccessibilityProps {
91
92
  bool hasTVPreferredFocus{false};
92
93
  bool needsOffscreenAlphaCompositing{false};
93
94
  bool renderToHardwareTextureAndroid{false};
94
-
95
+ bool autoFocus{false};
95
96
  #endif
96
97
 
97
98
  #pragma mark - Convenience Methods
@@ -0,0 +1 @@
1
+ 46136471b2e128b02b6899a6f7077e45411cef86
@@ -0,0 +1 @@
1
+ cb54ac291bde395af1a3fdf979feb3d6f1c5877f169eb265032cb1538b6be748
@@ -0,0 +1 @@
1
+ ea55856f042ca2b8bb1b1729ceaafb0911d7d0e7867d81a097bbe19da6a12c23fd0b70f4ae67db67278cc363c20b41739aa2784bb9ea59b41a91b36e607422a9
@@ -0,0 +1 @@
1
+ 34ca05140514f0e47a0914e94e77ca2b8c16b0a9
@@ -0,0 +1 @@
1
+ 070356a04d53ef7606de4b1ad9bec0814b9705a061a882d7ecf3415e804d7ddf
@@ -0,0 +1 @@
1
+ a03e1a01e8258b8aeab1543286e21095cf8e7a8bb0b1dd465444615d2051da77625fb7cf381439288899029ea55604d51a949778a3622682a13a5d36b0d5a1db
@@ -0,0 +1 @@
1
+ cb54ac291bde395af1a3fdf979feb3d6f1c5877f169eb265032cb1538b6be748
@@ -0,0 +1 @@
1
+ ea55856f042ca2b8bb1b1729ceaafb0911d7d0e7867d81a097bbe19da6a12c23fd0b70f4ae67db67278cc363c20b41739aa2784bb9ea59b41a91b36e607422a9