react-native-tvos 0.86.2-0 → 0.86.3-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 (264) hide show
  1. package/Libraries/Components/TV/TVFocusGuideView.js +31 -0
  2. package/Libraries/Components/TV/useFocusEnterLeave.js +112 -0
  3. package/Libraries/Core/ReactNativeVersion.js +1 -1
  4. package/README.md +2 -0
  5. package/React/Base/RCTVersion.m +1 -1
  6. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +30 -0
  7. package/ReactAndroid/gradle.properties +1 -1
  8. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt +10 -1
  9. package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.kt +7 -3
  10. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  11. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  12. package/ReactCommon/react/nativemodule/dom/NativeDOM.cpp +10 -4
  13. package/ReactCommon/react/renderer/core/EventEmitter.cpp +20 -4
  14. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm +1 -1
  15. package/ReactCommon/yoga/Yoga.podspec +1 -1
  16. package/package.json +10 -10
  17. package/sdks/.hermesv1version +1 -1
  18. package/sdks/hermes-engine/hermes-engine.podspec +6 -1
  19. package/sdks/hermes-engine/version.properties +1 -1
  20. package/types/public/ReactNativeTVTypes.d.ts +12 -1
  21. package/types_generated/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +101 -0
  22. package/types_generated/Libraries/Alert/Alert.d.ts +55 -0
  23. package/types_generated/Libraries/Animated/Animated.d.ts +14 -0
  24. package/types_generated/Libraries/Animated/AnimatedEvent.d.ts +30 -0
  25. package/types_generated/Libraries/Animated/AnimatedExports.d.ts +191 -0
  26. package/types_generated/Libraries/Animated/AnimatedImplementation.d.ts +128 -0
  27. package/types_generated/Libraries/Animated/AnimatedPlatformConfig.d.ts +13 -0
  28. package/types_generated/Libraries/Animated/Easing.d.ts +171 -0
  29. package/types_generated/Libraries/Animated/animations/Animation.d.ts +35 -0
  30. package/types_generated/Libraries/Animated/animations/DecayAnimation.d.ts +42 -0
  31. package/types_generated/Libraries/Animated/animations/SpringAnimation.d.ts +130 -0
  32. package/types_generated/Libraries/Animated/animations/TimingAnimation.d.ts +54 -0
  33. package/types_generated/Libraries/Animated/components/AnimatedFlatList.d.ts +22 -0
  34. package/types_generated/Libraries/Animated/components/AnimatedImage.d.ts +18 -0
  35. package/types_generated/Libraries/Animated/components/AnimatedScrollView.d.ts +23 -0
  36. package/types_generated/Libraries/Animated/components/AnimatedSectionList.d.ts +22 -0
  37. package/types_generated/Libraries/Animated/components/AnimatedText.d.ts +18 -0
  38. package/types_generated/Libraries/Animated/components/AnimatedView.d.ts +19 -0
  39. package/types_generated/Libraries/Animated/createAnimatedComponent.d.ts +44 -0
  40. package/types_generated/Libraries/Animated/nodes/AnimatedAddition.d.ts +22 -0
  41. package/types_generated/Libraries/Animated/nodes/AnimatedColor.d.ts +80 -0
  42. package/types_generated/Libraries/Animated/nodes/AnimatedDiffClamp.d.ts +22 -0
  43. package/types_generated/Libraries/Animated/nodes/AnimatedDivision.d.ts +22 -0
  44. package/types_generated/Libraries/Animated/nodes/AnimatedInterpolation.d.ts +38 -0
  45. package/types_generated/Libraries/Animated/nodes/AnimatedModulo.d.ts +22 -0
  46. package/types_generated/Libraries/Animated/nodes/AnimatedMultiplication.d.ts +22 -0
  47. package/types_generated/Libraries/Animated/nodes/AnimatedNode.d.ts +47 -0
  48. package/types_generated/Libraries/Animated/nodes/AnimatedProps.d.ts +30 -0
  49. package/types_generated/Libraries/Animated/nodes/AnimatedStyle.d.ts +32 -0
  50. package/types_generated/Libraries/Animated/nodes/AnimatedSubtraction.d.ts +22 -0
  51. package/types_generated/Libraries/Animated/nodes/AnimatedTracking.d.ts +21 -0
  52. package/types_generated/Libraries/Animated/nodes/AnimatedValue.d.ts +126 -0
  53. package/types_generated/Libraries/Animated/nodes/AnimatedValueXY.d.ts +135 -0
  54. package/types_generated/Libraries/Animated/nodes/AnimatedWithChildren.d.ts +15 -0
  55. package/types_generated/Libraries/Animated/useAnimatedColor.d.ts +16 -0
  56. package/types_generated/Libraries/Animated/useAnimatedValue.d.ts +15 -0
  57. package/types_generated/Libraries/Animated/useAnimatedValueXY.d.ts +18 -0
  58. package/types_generated/Libraries/AppState/AppState.d.ts +63 -0
  59. package/types_generated/Libraries/BatchedBridge/BatchedBridge.d.ts +17 -0
  60. package/types_generated/Libraries/BatchedBridge/MessageQueue.d.ts +39 -0
  61. package/types_generated/Libraries/BatchedBridge/NativeModules.d.ts +20 -0
  62. package/types_generated/Libraries/Blob/Blob.d.ts +80 -0
  63. package/types_generated/Libraries/Blob/BlobTypes.d.ts +27 -0
  64. package/types_generated/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +232 -0
  65. package/types_generated/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.d.ts +20 -0
  66. package/types_generated/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts +84 -0
  67. package/types_generated/Libraries/Components/Button.d.ts +247 -0
  68. package/types_generated/Libraries/Components/Clipboard/Clipboard.d.ts +38 -0
  69. package/types_generated/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +17 -0
  70. package/types_generated/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.d.ts +27 -0
  71. package/types_generated/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.d.ts +176 -0
  72. package/types_generated/Libraries/Components/Keyboard/Keyboard.d.ts +146 -0
  73. package/types_generated/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts +73 -0
  74. package/types_generated/Libraries/Components/LayoutConformance/LayoutConformance.d.ts +23 -0
  75. package/types_generated/Libraries/Components/Pressable/Pressable.d.ts +146 -0
  76. package/types_generated/Libraries/Components/Pressable/useAndroidRippleForView.d.ts +48 -0
  77. package/types_generated/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts +32 -0
  78. package/types_generated/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.d.ts +14 -0
  79. package/types_generated/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.d.ts +50 -0
  80. package/types_generated/Libraries/Components/RefreshControl/RefreshControl.d.ts +113 -0
  81. package/types_generated/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +33 -0
  82. package/types_generated/Libraries/Components/ScrollView/ScrollView.d.ts +581 -0
  83. package/types_generated/Libraries/Components/ScrollView/ScrollViewContext.d.ts +24 -0
  84. package/types_generated/Libraries/Components/ScrollView/ScrollViewNativeComponent.d.ts +21 -0
  85. package/types_generated/Libraries/Components/ScrollView/ScrollViewNativeComponentType.d.ts +140 -0
  86. package/types_generated/Libraries/Components/ScrollView/ScrollViewStickyHeader.d.ts +36 -0
  87. package/types_generated/Libraries/Components/StatusBar/StatusBar.d.ts +222 -0
  88. package/types_generated/Libraries/Components/Switch/AndroidSwitchNativeComponent.d.ts +14 -0
  89. package/types_generated/Libraries/Components/Switch/Switch.d.ts +138 -0
  90. package/types_generated/Libraries/Components/Switch/SwitchNativeComponent.d.ts +14 -0
  91. package/types_generated/Libraries/Components/TV/TVEventControl.d.ts +23 -0
  92. package/types_generated/Libraries/Components/TV/TVEventHandler.d.ts +21 -0
  93. package/types_generated/Libraries/Components/TV/TVFocusGuideView.d.ts +96 -0
  94. package/types_generated/Libraries/Components/TV/TVTextScrollView.d.ts +97 -0
  95. package/types_generated/Libraries/Components/TV/TVViewPropTypes.d.ts +123 -0
  96. package/types_generated/Libraries/Components/TV/tagForComponentOrHandle.d.ts +24 -0
  97. package/types_generated/Libraries/Components/TV/useTVEventHandler.d.ts +20 -0
  98. package/types_generated/Libraries/Components/TextInput/InputAccessoryView.d.ts +86 -0
  99. package/types_generated/Libraries/Components/TextInput/TextInput.d.ts +47 -0
  100. package/types_generated/Libraries/Components/TextInput/TextInput.flow.d.ts +1005 -0
  101. package/types_generated/Libraries/Components/TextInput/TextInputState.d.ts +54 -0
  102. package/types_generated/Libraries/Components/ToastAndroid/ToastAndroid.d.ts +99 -0
  103. package/types_generated/Libraries/Components/Touchable/Touchable.d.ts +257 -0
  104. package/types_generated/Libraries/Components/Touchable/TouchableHighlight.d.ts +51 -0
  105. package/types_generated/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +192 -0
  106. package/types_generated/Libraries/Components/Touchable/TouchableOpacity.d.ts +35 -0
  107. package/types_generated/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +121 -0
  108. package/types_generated/Libraries/Components/View/View.d.ts +30 -0
  109. package/types_generated/Libraries/Components/View/ViewAccessibility.d.ts +415 -0
  110. package/types_generated/Libraries/Components/View/ViewNativeComponent.d.ts +39 -0
  111. package/types_generated/Libraries/Components/View/ViewPropTypes.d.ts +367 -0
  112. package/types_generated/Libraries/Core/Devtools/symbolicateStackTrace.d.ts +27 -0
  113. package/types_generated/Libraries/Core/ExceptionsManager.d.ts +43 -0
  114. package/types_generated/Libraries/Core/ExtendedError.d.ts +26 -0
  115. package/types_generated/Libraries/Core/NativeExceptionsManager.d.ts +17 -0
  116. package/types_generated/Libraries/Core/RawEventEmitter.d.ts +26 -0
  117. package/types_generated/Libraries/Core/ReactFiberErrorDialog.d.ts +27 -0
  118. package/types_generated/Libraries/Core/ReactNativeVersion.d.ts +48 -0
  119. package/types_generated/Libraries/Core/registerCallableModule.d.ts +18 -0
  120. package/types_generated/Libraries/EventEmitter/NativeEventEmitter.d.ts +42 -0
  121. package/types_generated/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +19 -0
  122. package/types_generated/Libraries/EventEmitter/RCTEventEmitter.d.ts +18 -0
  123. package/types_generated/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts +21 -0
  124. package/types_generated/Libraries/Image/AssetSourceResolver.d.ts +71 -0
  125. package/types_generated/Libraries/Image/Image.d.ts +18 -0
  126. package/types_generated/Libraries/Image/ImageBackground.d.ts +44 -0
  127. package/types_generated/Libraries/Image/ImageProps.d.ts +512 -0
  128. package/types_generated/Libraries/Image/ImageResizeMode.d.ts +17 -0
  129. package/types_generated/Libraries/Image/ImageSource.d.ts +94 -0
  130. package/types_generated/Libraries/Image/ImageTypes.flow.d.ts +61 -0
  131. package/types_generated/Libraries/Interaction/InteractionManager.d.ts +117 -0
  132. package/types_generated/Libraries/Interaction/PanResponder.d.ts +228 -0
  133. package/types_generated/Libraries/LayoutAnimation/LayoutAnimation.d.ts +76 -0
  134. package/types_generated/Libraries/Linking/Linking.d.ts +68 -0
  135. package/types_generated/Libraries/Lists/FlatList.d.ts +317 -0
  136. package/types_generated/Libraries/Lists/SectionList.d.ts +172 -0
  137. package/types_generated/Libraries/Lists/VirtualizedList.d.ts +19 -0
  138. package/types_generated/Libraries/Lists/VirtualizedSectionList.d.ts +19 -0
  139. package/types_generated/Libraries/LogBox/Data/LogBoxData.d.ts +78 -0
  140. package/types_generated/Libraries/LogBox/Data/LogBoxLog.d.ts +71 -0
  141. package/types_generated/Libraries/LogBox/Data/LogBoxSymbolication.d.ts +17 -0
  142. package/types_generated/Libraries/LogBox/Data/parseLogBoxLog.d.ts +49 -0
  143. package/types_generated/Libraries/LogBox/LogBox.d.ts +29 -0
  144. package/types_generated/Libraries/Modal/Modal.d.ts +110 -0
  145. package/types_generated/Libraries/NativeComponent/NativeComponentRegistry.d.ts +50 -0
  146. package/types_generated/Libraries/NativeModules/specs/NativeDialogManagerAndroid.d.ts +17 -0
  147. package/types_generated/Libraries/Network/FormData.d.ts +56 -0
  148. package/types_generated/Libraries/Network/RCTNetworking.d.ts +25 -0
  149. package/types_generated/Libraries/Network/RCTNetworkingEventDefinitions.flow.d.ts +22 -0
  150. package/types_generated/Libraries/Network/XMLHttpRequest.d.ts +114 -0
  151. package/types_generated/Libraries/Network/convertRequestBody.d.ts +21 -0
  152. package/types_generated/Libraries/Performance/Systrace.d.ts +61 -0
  153. package/types_generated/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +129 -0
  154. package/types_generated/Libraries/Pressability/Pressability.d.ts +241 -0
  155. package/types_generated/Libraries/Pressability/usePressability.d.ts +27 -0
  156. package/types_generated/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts +323 -0
  157. package/types_generated/Libraries/ReactNative/AppRegistry.d.ts +14 -0
  158. package/types_generated/Libraries/ReactNative/AppRegistry.flow.d.ts +43 -0
  159. package/types_generated/Libraries/ReactNative/AppRegistryImpl.d.ts +73 -0
  160. package/types_generated/Libraries/ReactNative/DisplayMode.d.ts +24 -0
  161. package/types_generated/Libraries/ReactNative/I18nManager.d.ts +23 -0
  162. package/types_generated/Libraries/ReactNative/IPerformanceLogger.flow.d.ts +57 -0
  163. package/types_generated/Libraries/ReactNative/NativeI18nManager.d.ts +17 -0
  164. package/types_generated/Libraries/ReactNative/NativeUIManager.d.ts +17 -0
  165. package/types_generated/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.d.ts +31 -0
  166. package/types_generated/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.d.ts +15 -0
  167. package/types_generated/Libraries/ReactNative/RendererImplementation.d.ts +36 -0
  168. package/types_generated/Libraries/ReactNative/RendererProxy.d.ts +13 -0
  169. package/types_generated/Libraries/ReactNative/RootTag.d.ts +22 -0
  170. package/types_generated/Libraries/ReactNative/UIManager.d.ts +17 -0
  171. package/types_generated/Libraries/ReactNative/requireNativeComponent.d.ts +25 -0
  172. package/types_generated/Libraries/ReactPrivate/ReactNativePrivateInterface.d.ts +33 -0
  173. package/types_generated/Libraries/Renderer/shims/ReactFabric.d.ts +17 -0
  174. package/types_generated/Libraries/Renderer/shims/ReactNativeTypes.d.ts +155 -0
  175. package/types_generated/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.d.ts +41 -0
  176. package/types_generated/Libraries/Settings/Settings.d.ts +21 -0
  177. package/types_generated/Libraries/Share/Share.d.ts +85 -0
  178. package/types_generated/Libraries/StyleSheet/EdgeInsetsPropType.d.ts +15 -0
  179. package/types_generated/Libraries/StyleSheet/PlatformColorValueTypes.d.ts +17 -0
  180. package/types_generated/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts +27 -0
  181. package/types_generated/Libraries/StyleSheet/PointPropType.d.ts +16 -0
  182. package/types_generated/Libraries/StyleSheet/Rect.d.ts +22 -0
  183. package/types_generated/Libraries/StyleSheet/StyleSheet.d.ts +153 -0
  184. package/types_generated/Libraries/StyleSheet/StyleSheetExports.d.ts +94 -0
  185. package/types_generated/Libraries/StyleSheet/StyleSheetTypes.d.ts +851 -0
  186. package/types_generated/Libraries/StyleSheet/flattenStyle.d.ts +19 -0
  187. package/types_generated/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.d.ts +17 -0
  188. package/types_generated/Libraries/StyleSheet/private/_TransformStyle.d.ts +76 -0
  189. package/types_generated/Libraries/StyleSheet/processColor.d.ts +18 -0
  190. package/types_generated/Libraries/Text/Text.d.ts +30 -0
  191. package/types_generated/Libraries/Text/TextAncestorContext.d.ts +20 -0
  192. package/types_generated/Libraries/Text/TextNativeComponent.d.ts +41 -0
  193. package/types_generated/Libraries/Text/TextProps.d.ts +220 -0
  194. package/types_generated/Libraries/TurboModule/RCTExport.d.ts +35 -0
  195. package/types_generated/Libraries/TurboModule/TurboModuleRegistry.d.ts +15 -0
  196. package/types_generated/Libraries/Types/CodegenTypes.d.ts +24 -0
  197. package/types_generated/Libraries/Types/CodegenTypesNamespace.d.ts +14 -0
  198. package/types_generated/Libraries/Types/CoreEventTypes.d.ts +355 -0
  199. package/types_generated/Libraries/Types/RootTagTypes.d.ts +13 -0
  200. package/types_generated/Libraries/Types/UIManagerJSInterface.d.ts +17 -0
  201. package/types_generated/Libraries/UTFSequence.d.ts +39 -0
  202. package/types_generated/Libraries/Utilities/Appearance.d.ts +31 -0
  203. package/types_generated/Libraries/Utilities/BackHandler.d.ts +27 -0
  204. package/types_generated/Libraries/Utilities/DevSettings.d.ts +34 -0
  205. package/types_generated/Libraries/Utilities/DeviceInfo.d.ts +17 -0
  206. package/types_generated/Libraries/Utilities/Dimensions.d.ts +54 -0
  207. package/types_generated/Libraries/Utilities/NativeAppearance.d.ts +17 -0
  208. package/types_generated/Libraries/Utilities/NativeDeviceInfo.d.ts +14 -0
  209. package/types_generated/Libraries/Utilities/PixelRatio.d.ts +110 -0
  210. package/types_generated/Libraries/Utilities/Platform.d.ts +16 -0
  211. package/types_generated/Libraries/Utilities/PlatformTypes.d.ts +134 -0
  212. package/types_generated/Libraries/Utilities/codegenNativeCommands.d.ts +19 -0
  213. package/types_generated/Libraries/Utilities/codegenNativeComponent.d.ts +24 -0
  214. package/types_generated/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.d.ts +33 -0
  215. package/types_generated/Libraries/Utilities/differ/deepDiffer.d.ts +19 -0
  216. package/types_generated/Libraries/Utilities/useColorScheme.d.ts +15 -0
  217. package/types_generated/Libraries/Utilities/useWindowDimensions.d.ts +15 -0
  218. package/types_generated/Libraries/Vibration/Vibration.d.ts +29 -0
  219. package/types_generated/Libraries/vendor/core/ErrorUtils.d.ts +39 -0
  220. package/types_generated/Libraries/vendor/emitter/EventEmitter.d.ts +67 -0
  221. package/types_generated/index.d.ts +184 -0
  222. package/types_generated/src/private/components/virtualcollection/FlingConstants.d.ts +20 -0
  223. package/types_generated/src/private/components/virtualcollection/Virtual.d.ts +46 -0
  224. package/types_generated/src/private/components/virtualcollection/VirtualCollectionView.d.ts +81 -0
  225. package/types_generated/src/private/components/virtualcollection/column/VirtualColumn.d.ts +23 -0
  226. package/types_generated/src/private/components/virtualcollection/column/VirtualColumnGenerator.d.ts +17 -0
  227. package/types_generated/src/private/components/virtualcollection/dom/getScrollParent.d.ts +21 -0
  228. package/types_generated/src/private/components/virtualcollection/row/VirtualRow.d.ts +23 -0
  229. package/types_generated/src/private/components/virtualview/VirtualView.d.ts +75 -0
  230. package/types_generated/src/private/components/virtualview/VirtualViewExperimentalNativeComponent.d.ts +107 -0
  231. package/types_generated/src/private/components/virtualview/VirtualViewNativeComponent.d.ts +107 -0
  232. package/types_generated/src/private/devsupport/devmenu/DevMenu.d.ts +28 -0
  233. package/types_generated/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.d.ts +53 -0
  234. package/types_generated/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.d.ts +36 -0
  235. package/types_generated/src/private/specs_DEPRECATED/components/SwitchNativeComponent.d.ts +51 -0
  236. package/types_generated/src/private/specs_DEPRECATED/modules/NativeAppearance.d.ts +26 -0
  237. package/types_generated/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.d.ts +46 -0
  238. package/types_generated/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.d.ts +37 -0
  239. package/types_generated/src/private/specs_DEPRECATED/modules/NativeExceptionsManager.d.ts +45 -0
  240. package/types_generated/src/private/specs_DEPRECATED/modules/NativeI18nManager.d.ts +27 -0
  241. package/types_generated/src/private/specs_DEPRECATED/modules/NativeUIManager.d.ts +109 -0
  242. package/types_generated/src/private/styles/composeStyles.d.ts +19 -0
  243. package/types_generated/src/private/types/HostComponent.d.ts +19 -0
  244. package/types_generated/src/private/types/HostInstance.d.ts +92 -0
  245. package/types_generated/src/private/webapis/dom/events/CustomEvent.d.ts +27 -0
  246. package/types_generated/src/private/webapis/dom/events/Event.d.ts +50 -0
  247. package/types_generated/src/private/webapis/dom/events/EventTarget.d.ts +36 -0
  248. package/types_generated/src/private/webapis/dom/nodes/ReactNativeDocument.d.ts +33 -0
  249. package/types_generated/src/private/webapis/dom/nodes/ReactNativeElement.d.ts +36 -0
  250. package/types_generated/src/private/webapis/dom/nodes/ReadOnlyCharacterData.d.ts +30 -0
  251. package/types_generated/src/private/webapis/dom/nodes/ReadOnlyElement.d.ts +54 -0
  252. package/types_generated/src/private/webapis/dom/nodes/ReadOnlyNode.d.ts +129 -0
  253. package/types_generated/src/private/webapis/dom/nodes/ReadOnlyText.d.ts +24 -0
  254. package/types_generated/src/private/webapis/dom/nodes/internals/NodeInternals.d.ts +36 -0
  255. package/types_generated/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.d.ts +23 -0
  256. package/types_generated/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.d.ts +22 -0
  257. package/types_generated/src/private/webapis/dom/nodes/specs/NativeDOM.d.ts +229 -0
  258. package/types_generated/src/private/webapis/dom/oldstylecollections/HTMLCollection.d.ts +22 -0
  259. package/types_generated/src/private/webapis/dom/oldstylecollections/NodeList.d.ts +25 -0
  260. package/types_generated/src/private/webapis/geometry/DOMRect.d.ts +46 -0
  261. package/types_generated/src/private/webapis/geometry/DOMRectReadOnly.d.ts +73 -0
  262. package/types_generated/src/private/webapis/utils/ArrayLikeUtils.d.ts +27 -0
  263. package/types_generated/tsconfig.json +3 -0
  264. package/types_generated/tsconfig.test.json +16 -0
@@ -8,6 +8,7 @@
8
8
  * @format
9
9
  */
10
10
 
11
+ import type {BlurEvent, FocusEvent} from '../../Types/CoreEventTypes';
11
12
  import type {ViewProps} from '../View/ViewPropTypes';
12
13
  import type {ComponentOrHandleType} from './tagForComponentOrHandle';
13
14
 
@@ -16,6 +17,7 @@ import useMergeRefs from '../../Utilities/useMergeRefs';
16
17
  import View from '../View/View';
17
18
  import {Commands} from '../View/ViewNativeComponent';
18
19
  import tagForComponentOrHandle from './tagForComponentOrHandle';
20
+ import useFocusEnterLeave from './useFocusEnterLeave';
19
21
 
20
22
  const StyleSheet = require('../../StyleSheet/StyleSheet').default;
21
23
  const React = require('react');
@@ -51,6 +53,20 @@ type TVFocusGuideViewProps = $ReadOnly<{
51
53
  * When set to false, this view and all its subviews will be NOT focusable.
52
54
  */
53
55
  focusable?: boolean | void,
56
+
57
+ /**
58
+ * Fires once when focus enters this focus guide's subtree from outside.
59
+ * Unlike `onFocus`, which bubbles and fires for every descendant, this does
60
+ * not fire again when focus moves between descendants. Boundary-crossing
61
+ * only, same idea as `onMouseEnter` vs `onMouseOver`.
62
+ */
63
+ onFocusEnter?: ?(event: FocusEvent) => void,
64
+
65
+ /**
66
+ * Fires once when focus leaves this focus guide's subtree entirely. Does
67
+ * not fire when focus moves between descendants. Pairs with `onFocusEnter`.
68
+ */
69
+ onFocusLeave?: ?(event: BlurEvent) => void,
54
70
  }>;
55
71
 
56
72
  export type TVFocusGuideViewImperativeMethods = $ReadOnly<{
@@ -63,6 +79,10 @@ function TVFocusGuideView({
63
79
  destinations: destinationsProp,
64
80
  autoFocus,
65
81
  focusable,
82
+ onFocusEnter,
83
+ onFocusLeave,
84
+ onFocusCapture,
85
+ onBlurCapture,
66
86
  ref,
67
87
  ...props
68
88
  }: TVFocusGuideViewProps): React.Node {
@@ -103,6 +123,15 @@ function TVFocusGuideView({
103
123
 
104
124
  const mergedRef = useMergeRefs(setLocalRef, ref);
105
125
 
126
+ // Collapse the bubbled per-descendant focus/blur into a single enter when
127
+ // focus crosses into the guide's subtree and a single leave when it exits.
128
+ const {handleFocusCapture, handleBlurCapture} = useFocusEnterLeave(
129
+ onFocusEnter,
130
+ onFocusLeave,
131
+ onFocusCapture,
132
+ onBlurCapture,
133
+ );
134
+
106
135
  React.useEffect(() => {
107
136
  if (focusable === false) {
108
137
  setDestinations([]);
@@ -131,6 +160,8 @@ function TVFocusGuideView({
131
160
  isTVSelectable={tvOSSelectable}
132
161
  // Android TV only prop
133
162
  tvFocusable={focusable}
163
+ onFocusCapture={handleFocusCapture}
164
+ onBlurCapture={handleBlurCapture}
134
165
  />
135
166
  );
136
167
  }
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict-local
8
+ * @format
9
+ */
10
+
11
+ import type {BlurEvent, FocusEvent} from '../../Types/CoreEventTypes';
12
+
13
+ import * as React from 'react';
14
+
15
+ type FocusEnterLeaveState = {
16
+ entered: boolean,
17
+ pendingLeave: ?TimeoutID,
18
+ };
19
+
20
+ export type FocusEnterLeaveHandlers = {
21
+ handleFocusCapture: ?(event: FocusEvent) => void,
22
+ handleBlurCapture: ?(event: BlurEvent) => void,
23
+ };
24
+
25
+ /**
26
+ * Collapses the per-descendant focus/blur events into a single enter (focus
27
+ * crosses into the subtree) and a single leave (focus fully exits). A
28
+ * child-to-child move fires blur then focus back to back, so the deferred
29
+ * leave gets cancelled by the incoming focus and nothing fires.
30
+ *
31
+ * Hooks the capture phase, not bubble: capture reaches the container before
32
+ * any descendant sees the event, so a descendant calling stopPropagation
33
+ * can't leave us desynced.
34
+ */
35
+ export default function useFocusEnterLeave(
36
+ onFocusEnter: ?(event: FocusEvent) => void,
37
+ onFocusLeave: ?(event: BlurEvent) => void,
38
+ onFocusCapture: ?(event: FocusEvent) => void,
39
+ onBlurCapture: ?(event: BlurEvent) => void,
40
+ ): FocusEnterLeaveHandlers {
41
+ const stateRef = React.useRef<FocusEnterLeaveState>({
42
+ entered: false,
43
+ pendingLeave: null,
44
+ });
45
+
46
+ const activeHandlers =
47
+ onFocusEnter !== undefined || onFocusLeave !== undefined;
48
+
49
+ const handleFocusCapture = React.useCallback(
50
+ (event: FocusEvent) => {
51
+ const state = stateRef.current;
52
+ if (state.pendingLeave != null) {
53
+ clearTimeout(state.pendingLeave);
54
+ state.pendingLeave = null;
55
+ }
56
+ if (!state.entered) {
57
+ state.entered = true;
58
+ onFocusEnter?.(event);
59
+ }
60
+ onFocusCapture?.(event);
61
+ },
62
+ [onFocusEnter, onFocusCapture],
63
+ );
64
+
65
+ const handleBlurCapture = React.useCallback(
66
+ (event: BlurEvent) => {
67
+ const state = stateRef.current;
68
+ if (state.pendingLeave != null) {
69
+ clearTimeout(state.pendingLeave);
70
+ }
71
+ // Defer: if focus lands on another descendant this same tick, the focus
72
+ // handler clears this before it runs.
73
+ state.pendingLeave = setTimeout(() => {
74
+ state.pendingLeave = null;
75
+ if (state.entered) {
76
+ state.entered = false;
77
+ onFocusLeave?.(event);
78
+ }
79
+ }, 0);
80
+ onBlurCapture?.(event);
81
+ },
82
+ [onFocusLeave, onBlurCapture],
83
+ );
84
+
85
+ // Reset on unmount so a remounted instance starts clean and no deferred
86
+ // leave fires after we're gone.
87
+ // If no active handlers, return without doing anything
88
+ React.useEffect(() => {
89
+ if (!activeHandlers) {
90
+ return;
91
+ }
92
+ const state = stateRef.current;
93
+ return () => {
94
+ if (state.pendingLeave != null) {
95
+ clearTimeout(state.pendingLeave);
96
+ state.pendingLeave = null;
97
+ }
98
+ state.entered = false;
99
+ };
100
+ }, [activeHandlers]);
101
+
102
+ // Nothing to track: hand back the caller's own capture handlers untouched.
103
+ // (Kept after the hooks above so the hook count stays stable per render.)
104
+ if (onFocusEnter == null && onFocusLeave == null) {
105
+ return {
106
+ handleFocusCapture: onFocusCapture,
107
+ handleBlurCapture: onBlurCapture,
108
+ };
109
+ }
110
+
111
+ return {handleFocusCapture, handleBlurCapture};
112
+ }
@@ -28,7 +28,7 @@
28
28
  export default class ReactNativeVersion {
29
29
  static major: number = 0;
30
30
  static minor: number = 86;
31
- static patch: number = 2;
31
+ static patch: number = 3;
32
32
  static prerelease: string | null = '0';
33
33
 
34
34
  static getVersionString(): string {
package/README.md CHANGED
@@ -255,6 +255,8 @@ class Game2048 extends React.Component {
255
255
  | autoFocus | boolean? | If true, `TVFocusGuide` will automatically manage focus for you. It will redirect the focus to the first focusable child on the first visit. It also remembers the last focused child and redirects the focus to it on the subsequent visits. `destinations` prop takes precedence over this prop when used together. |
256
256
  | focusable | boolean? | When set to false, this view and all its subviews will be NOT focusable. |
257
257
  | trapFocus* (Up, Down, Left, Right) | Prevents focus escaping from the container for the given directions. |
258
+ | onFocusEnter | function? | Fires once when focus enters the FocusGuideView's subtree from outside. Unlike `onFocus`, it does not fire again when focus moves between descendants. |
259
+ | onFocusLeave | function? | Fires once when focus leaves the FocusGuideView's subtree entirely. Does not fire when focus moves between descendants. |
258
260
 
259
261
  More information on the focus handling improvements above can be found in [this article](https://medium.com/xite-engineering/revolutionizing-focus-management-in-tv-applications-with-react-native-10ba69bd90).
260
262
 
@@ -23,7 +23,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
23
23
  __rnVersion = @{
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(86),
26
- RCTVersionPatch: @(2),
26
+ RCTVersionPatch: @(3),
27
27
  RCTVersionPrerelease: @"0",
28
28
  };
29
29
  });
@@ -492,6 +492,34 @@ static BOOL RCTLayerTransformCollapsesAxis(CALayer *layer)
492
492
  return _props->isTVSelectable;
493
493
  }
494
494
 
495
+ // Directional focus destinations are looked up in the containing root view when
496
+ // `updateProps` runs. A destination set while this view is not attached yet --
497
+ // e.g. a nextFocus* value delivered together with the view's creation -- resolves
498
+ // to nil there, and `updateProps` never retries because the prop value does not
499
+ // change. Re-resolve pending destinations lazily: `enableDirectionalFocusGuides`
500
+ // only does work while the view is focused, at which point the hierarchy is
501
+ // guaranteed to be attached.
502
+ - (void)resolvePendingNextFocusTargets
503
+ {
504
+ UIView *rootView = [self containingRootView];
505
+
506
+ if (rootView == nil) {
507
+ return;
508
+ }
509
+ if (_nextFocusUp == nil && _props->nextFocusUp.has_value()) {
510
+ _nextFocusUp = [rootView viewWithTag:_props->nextFocusUp.value()];
511
+ }
512
+ if (_nextFocusDown == nil && _props->nextFocusDown.has_value()) {
513
+ _nextFocusDown = [rootView viewWithTag:_props->nextFocusDown.value()];
514
+ }
515
+ if (_nextFocusLeft == nil && _props->nextFocusLeft.has_value()) {
516
+ _nextFocusLeft = [rootView viewWithTag:_props->nextFocusLeft.value()];
517
+ }
518
+ if (_nextFocusRight == nil && _props->nextFocusRight.has_value()) {
519
+ _nextFocusRight = [rootView viewWithTag:_props->nextFocusRight.value()];
520
+ }
521
+ }
522
+
495
523
  // In tvOS, to support directional focus APIs, we add a UIFocusGuide for each
496
524
  // side of the view where a nextFocus has been set. Set layout constraints to
497
525
  // make the guide 1 px thick, and set the destination to the nextFocus object.
@@ -503,6 +531,8 @@ static BOOL RCTLayerTransformCollapsesAxis(CALayer *layer)
503
531
  if (!self.isFocused) {
504
532
  return;
505
533
  }
534
+
535
+ [self resolvePendingNextFocusTargets];
506
536
  if (self->_nextFocusUp != nil) {
507
537
  if (self.focusGuideUp == nil) {
508
538
  self.focusGuideUp = [UIFocusGuide new];
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.86.2-0
1
+ VERSION_NAME=0.86.3-0
2
2
  react.internal.publishingGroup=io.github.react-native-tvos
3
3
  react.internal.hermesPublishingGroup=com.facebook.hermes
4
4
 
@@ -900,7 +900,16 @@ internal constructor(
900
900
  return
901
901
  }
902
902
 
903
- val viewState = getViewState(reactTag)
903
+ val viewState = getNullableViewState(reactTag)
904
+ if (viewState == null) {
905
+ ReactSoftExceptionLogger.logSoftException(
906
+ ReactSoftExceptionLogger.Categories.SURFACE_MOUNTING_MANAGER_MISSING_VIEWSTATE,
907
+ ReactNoCrashSoftException(
908
+ "Unable to find viewState for tag $reactTag for updateOverflowInset"
909
+ ),
910
+ )
911
+ return
912
+ }
904
913
  // Do not layout Root Views
905
914
  if (viewState.isRoot) {
906
915
  return
@@ -87,11 +87,15 @@ public open class IntentModule(reactContext: ReactApplicationContext) :
87
87
  override fun onHostResume() {
88
88
  reactApplicationContext.removeLifecycleEventListener(this)
89
89
  synchronized(this@IntentModule) {
90
- for (pendingPromise in pendingOpenURLPromises) {
90
+ // getInitialURL can re-enter and re-add to pendingOpenURLPromises when the activity
91
+ // is still null at resume, so drain a snapshot (after clearing the list and listener)
92
+ // to avoid mutating the list being iterated (ConcurrentModificationException).
93
+ val pendingPromises = ArrayList(pendingOpenURLPromises)
94
+ pendingOpenURLPromises.clear()
95
+ initialURLListener = null
96
+ for (pendingPromise in pendingPromises) {
91
97
  getInitialURL(pendingPromise)
92
98
  }
93
- initialURLListener = null
94
- pendingOpenURLPromises.clear()
95
99
  }
96
100
  }
97
101
 
@@ -14,7 +14,7 @@ public object ReactNativeVersion {
14
14
  public val VERSION: Map<String, Any?> = mapOf(
15
15
  "major" to 0,
16
16
  "minor" to 86,
17
- "patch" to 2,
17
+ "patch" to 3,
18
18
  "prerelease" to "0"
19
19
  )
20
20
  }
@@ -14,14 +14,14 @@
14
14
 
15
15
  #define REACT_NATIVE_VERSION_MAJOR 0
16
16
  #define REACT_NATIVE_VERSION_MINOR 86
17
- #define REACT_NATIVE_VERSION_PATCH 2
17
+ #define REACT_NATIVE_VERSION_PATCH 3
18
18
 
19
19
  namespace facebook::react {
20
20
 
21
21
  struct ReactNativeVersionType {
22
22
  int32_t Major = 0;
23
23
  int32_t Minor = 86;
24
- int32_t Patch = 2;
24
+ int32_t Patch = 3;
25
25
  std::string_view Prerelease = "0";
26
26
  };
27
27
 
@@ -198,10 +198,6 @@ jsi::Value NativeDOM::getParentNode(
198
198
  }
199
199
 
200
200
  auto shadowNode = getShadowNode(rt, nativeNodeReference);
201
- if (isRootShadowNode(*shadowNode)) {
202
- // The parent of the root node is the document.
203
- return jsi::Value{shadowNode->getSurfaceId()};
204
- }
205
201
 
206
202
  auto currentRevision =
207
203
  getCurrentShadowTreeRevision(rt, shadowNode->getSurfaceId());
@@ -209,6 +205,16 @@ jsi::Value NativeDOM::getParentNode(
209
205
  return jsi::Value::undefined();
210
206
  }
211
207
 
208
+ // The parent of the surface's root node is the document. Only the actual
209
+ // root node qualifies: nested nodes that carry the `RootNodeKind` trait
210
+ // (e.g. <Modal>, portals/overlays) still have a real parent in the shadow
211
+ // tree and must report it. Otherwise capture/bubble event propagation is
212
+ // silently severed at that boundary (a listener on an ancestor rendered
213
+ // above the modal would never receive descendant focus/blur, etc.).
214
+ if (ShadowNode::sameFamily(*currentRevision, *shadowNode)) {
215
+ return jsi::Value{shadowNode->getSurfaceId()};
216
+ }
217
+
212
218
  auto parentShadowNode = dom::getParentNode(currentRevision, *shadowNode);
213
219
  if (parentShadowNode == nullptr) {
214
220
  return jsi::Value::undefined();
@@ -134,11 +134,19 @@ void EventEmitter::dispatchEvent(
134
134
  return;
135
135
  }
136
136
 
137
+ SharedEventTarget eventTarget;
138
+ std::weak_ptr<const ShadowNodeFamily> shadowNodeFamily;
139
+ {
140
+ std::scoped_lock lock(DispatchMutex());
141
+ eventTarget = eventTarget_;
142
+ shadowNodeFamily = shadowNodeFamily_;
143
+ }
144
+
137
145
  eventDispatcher->dispatchEvent(RawEvent(
138
146
  normalizeEventType(std::move(type)),
139
147
  std::move(payload),
140
- eventTarget_,
141
- shadowNodeFamily_,
148
+ std::move(eventTarget),
149
+ std::move(shadowNodeFamily),
142
150
  category,
143
151
  false,
144
152
  eventTimestamp));
@@ -180,11 +188,19 @@ void EventEmitter::dispatchUniqueEvent(
180
188
  return;
181
189
  }
182
190
 
191
+ SharedEventTarget eventTarget;
192
+ std::weak_ptr<const ShadowNodeFamily> shadowNodeFamily;
193
+ {
194
+ std::scoped_lock lock(DispatchMutex());
195
+ eventTarget = eventTarget_;
196
+ shadowNodeFamily = shadowNodeFamily_;
197
+ }
198
+
183
199
  eventDispatcher->dispatchUniqueEvent(RawEvent(
184
200
  normalizeEventType(std::move(type)),
185
201
  std::move(payload),
186
- eventTarget_,
187
- shadowNodeFamily_,
202
+ std::move(eventTarget),
203
+ std::move(shadowNodeFamily),
188
204
  RawEvent::Category::Continuous,
189
205
  true,
190
206
  eventTimestamp));
@@ -361,7 +361,7 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties)
361
361
  font = [UIFont fontWithName:fontProperties.family size:effectiveFontSize];
362
362
  if (font != nullptr) {
363
363
  fontNames = [UIFont fontNamesForFamilyName:font.familyName];
364
- fontWeight = (fontWeight != 0.0) ?: RCTGetFontWeight(font);
364
+ fontWeight = (fontWeight != 0.0) ? fontWeight : RCTGetFontWeight(font);
365
365
  } else {
366
366
  // Failback to system font.
367
367
  font = RCTDefaultFontWithFontProperties(fontProperties);
@@ -61,6 +61,6 @@ Pod::Spec.new do |spec|
61
61
  # Fabric must be able to access private headers (which should not be included in the umbrella header)
62
62
  all_header_files = 'yoga/**/*.h'
63
63
  all_header_files = File.join('ReactCommon/yoga', all_header_files) if ENV['INSTALL_YOGA_WITHOUT_PATH_OPTION']
64
- spec.private_header_files = Dir.glob(all_header_files) - Dir.glob(public_header_files)
64
+ spec.private_header_files = Dir.glob(all_header_files).sort - Dir.glob(public_header_files).sort
65
65
  spec.preserve_paths = [all_header_files]
66
66
  end
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-tvos",
3
- "version": "0.86.2-0",
3
+ "version": "0.86.3-0",
4
4
  "description": "A framework for building native apps using React",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -154,7 +154,7 @@
154
154
  "featureflags-check": "node ./scripts/featureflags/index.js --verify-unchanged"
155
155
  },
156
156
  "peerDependencies": {
157
- "@react-native/jest-preset": "0.86.2",
157
+ "@react-native/jest-preset": "0.86.3",
158
158
  "@types/react": "^19.1.1",
159
159
  "react": "^19.2.3"
160
160
  },
@@ -167,12 +167,12 @@
167
167
  }
168
168
  },
169
169
  "dependencies": {
170
- "@react-native/assets-registry": "0.86.2",
171
- "@react-native/codegen": "0.86.2",
172
- "@react-native/community-cli-plugin": "0.86.2",
173
- "@react-native/gradle-plugin": "0.86.2",
174
- "@react-native/js-polyfills": "0.86.2",
175
- "@react-native/normalize-colors": "0.86.2",
170
+ "@react-native/assets-registry": "0.86.3",
171
+ "@react-native/codegen": "0.86.3",
172
+ "@react-native/community-cli-plugin": "0.86.3",
173
+ "@react-native/gradle-plugin": "0.86.3",
174
+ "@react-native/js-polyfills": "0.86.3",
175
+ "@react-native/normalize-colors": "0.86.3",
176
176
  "abort-controller": "^3.0.0",
177
177
  "anser": "^1.4.9",
178
178
  "ansi-regex": "^5.0.0",
@@ -180,7 +180,7 @@
180
180
  "base64-js": "^1.5.1",
181
181
  "commander": "^12.0.0",
182
182
  "flow-enums-runtime": "^0.0.6",
183
- "hermes-compiler": "250829098.0.16",
183
+ "hermes-compiler": "250829098.0.17",
184
184
  "invariant": "^2.2.4",
185
185
  "memoize-one": "^5.0.0",
186
186
  "metro-runtime": "^0.84.3",
@@ -198,7 +198,7 @@
198
198
  "whatwg-fetch": "^3.0.0",
199
199
  "ws": "^7.5.10",
200
200
  "yargs": "^17.6.2",
201
- "@react-native-tvos/virtualized-lists": "0.86.2-0"
201
+ "@react-native-tvos/virtualized-lists": "0.86.3-0"
202
202
  },
203
203
  "codegenConfig": {
204
204
  "libraries": [
@@ -1 +1 @@
1
- hermes-v250829098.0.16
1
+ hermes-v250829098.0.17
@@ -4,6 +4,7 @@
4
4
  # LICENSE file in the root directory of this source tree.
5
5
 
6
6
  require "json"
7
+ require "pathname"
7
8
  require_relative "./hermes-utils.rb"
8
9
 
9
10
  begin
@@ -91,9 +92,13 @@ Pod::Spec.new do |spec|
91
92
  hermes_compiler_path = File.dirname(Pod::Executable.execute_command('node', ['-p',
92
93
  "require.resolve(\"hermes-compiler\", {paths: [\"#{react_native_path}\"]})", __dir__]).strip
93
94
  )
95
+ hermesc_path = File.join(hermes_compiler_path, 'hermesc', 'osx-bin', 'hermesc')
96
+
97
+ pods_root = Pod::Config.instance.sandbox.root
98
+ relative_hermesc = Pathname.new(hermesc_path).relative_path_from(pods_root)
94
99
 
95
100
  spec.user_target_xcconfig = {
96
- 'HERMES_CLI_PATH' => "#{hermes_compiler_path}/hermesc/osx-bin/hermesc"
101
+ 'HERMES_CLI_PATH' => "$(PODS_ROOT)/#{relative_hermesc}"
97
102
  }
98
103
  end
99
104
 
@@ -1,2 +1,2 @@
1
1
  HERMES_VERSION_NAME=0.17.0
2
- HERMES_V1_VERSION_NAME=250829098.0.16
2
+ HERMES_V1_VERSION_NAME=250829098.0.17
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { View, ScrollViewProps, HostComponent, EventSubscription, TVParallaxProperties } from 'react-native';
2
+ import type { View, ScrollViewProps, HostComponent, EventSubscription, TVParallaxProperties, FocusEvent, BlurEvent } from 'react-native';
3
3
 
4
4
  declare module 'react-native' {
5
5
  export type FocusDestination = null | number | React.Component<any, any> | React.ComponentClass<any>;
@@ -151,6 +151,17 @@ declare module 'react-native' {
151
151
  * @deprecated Don't use it, no longer necessary.
152
152
  */
153
153
  safePadding?: 'both' | 'vertical' | 'horizontal' | null | undefined;
154
+ /**
155
+ * Fires once when focus enters this focus guide's subtree from outside.
156
+ * Unlike `onFocus`, which bubbles and fires for every descendant, this
157
+ * does not fire again when focus moves between descendants.
158
+ */
159
+ onFocusEnter?: ((event: FocusEvent) => void) | undefined;
160
+ /**
161
+ * Fires once when focus leaves this focus guide's subtree entirely. Does
162
+ * not fire when focus moves between descendants. Pairs with `onFocusEnter`.
163
+ */
164
+ onFocusLeave?: ((event: BlurEvent) => void) | undefined;
154
165
  }
155
166
 
156
167
  export type FocusGuideMethods = {
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @generated SignedSource<<95a43b38d9ff7bdac53651637184abce>>
8
+ *
9
+ * This file was translated from Flow by scripts/js-api/build-types/index.js.
10
+ * Original file: packages/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.js
11
+ */
12
+
13
+ import type { ProcessedColorValue } from "../StyleSheet/processColor";
14
+ import type { ColorValue } from "../StyleSheet/StyleSheet";
15
+ export type ActionSheetIOSOptions = Readonly<{
16
+ title?: string | undefined;
17
+ message?: string | undefined;
18
+ options: Array<string>;
19
+ destructiveButtonIndex?: (number | undefined) | (Array<number> | undefined);
20
+ cancelButtonIndex?: number | undefined;
21
+ anchor?: number | undefined;
22
+ tintColor?: ColorValue | ProcessedColorValue;
23
+ cancelButtonTintColor?: ColorValue | ProcessedColorValue;
24
+ disabledButtonTintColor?: ColorValue | ProcessedColorValue;
25
+ userInterfaceStyle?: string;
26
+ disabledButtonIndices?: Array<number>;
27
+ }>;
28
+ export type ShareActionSheetIOSOptions = Readonly<{
29
+ message?: string | undefined;
30
+ url?: string | undefined;
31
+ subject?: string | undefined;
32
+ anchor?: number | undefined;
33
+ tintColor?: number | undefined;
34
+ cancelButtonTintColor?: number | undefined;
35
+ disabledButtonTintColor?: number | undefined;
36
+ excludedActivityTypes?: Array<string> | undefined;
37
+ userInterfaceStyle?: string | undefined;
38
+ }>;
39
+ export type ShareActionSheetError = Readonly<{
40
+ domain: string;
41
+ code: string;
42
+ userInfo?: Object | undefined;
43
+ message: string;
44
+ }>;
45
+ declare const ActionSheetIOS: {
46
+ /**
47
+ * Display an iOS action sheet.
48
+ *
49
+ * The `options` object must contain one or more of:
50
+ *
51
+ * - `options` (array of strings) - a list of button titles (required)
52
+ * - `cancelButtonIndex` (int) - index of cancel button in `options`
53
+ * - `destructiveButtonIndex` (int or array of ints) - index or indices of destructive buttons in `options`
54
+ * - `title` (string) - a title to show above the action sheet
55
+ * - `message` (string) - a message to show below the title
56
+ * - `disabledButtonIndices` (array of numbers) - a list of button indices which should be disabled
57
+ *
58
+ * The 'callback' function takes one parameter, the zero-based index
59
+ * of the selected item.
60
+ *
61
+ * See https://reactnative.dev/docs/actionsheetios#showactionsheetwithoptions
62
+ */
63
+ showActionSheetWithOptions(options: ActionSheetIOSOptions, callback: (buttonIndex: number) => void): void;
64
+ /**
65
+ * Display the iOS share sheet. The `options` object should contain
66
+ * one or both of `message` and `url` and can additionally have
67
+ * a `subject` or `excludedActivityTypes`:
68
+ *
69
+ * - `url` (string) - a URL to share
70
+ * - `message` (string) - a message to share
71
+ * - `subject` (string) - a subject for the message
72
+ * - `excludedActivityTypes` (array) - the activities to exclude from
73
+ * the ActionSheet
74
+ * - `tintColor` (color) - tint color of the buttons
75
+ *
76
+ * The 'failureCallback' function takes one parameter, an error object.
77
+ * The only property defined on this object is an optional `stack` property
78
+ * of type `string`.
79
+ *
80
+ * The 'successCallback' function takes two parameters:
81
+ *
82
+ * - a boolean value signifying success or failure
83
+ * - a string that, in the case of success, indicates the method of sharing
84
+ *
85
+ * See https://reactnative.dev/docs/actionsheetios#showshareactionsheetwithoptions
86
+ */
87
+ showShareActionSheetWithOptions(options: ShareActionSheetIOSOptions, failureCallback: Function | ((error: ShareActionSheetError) => void), successCallback: Function | ((success: boolean, method: null | undefined | string) => void)): void;
88
+ /**
89
+ * Dismisses the most upper iOS action sheet presented, if no action sheet is
90
+ * present a warning is displayed.
91
+ */
92
+ dismissActionSheet: () => void;
93
+ };
94
+ /**
95
+ * Display action sheets and share sheets on iOS.
96
+ *
97
+ * See https://reactnative.dev/docs/actionsheetios
98
+ */
99
+ declare const $$ActionSheetIOS: typeof ActionSheetIOS;
100
+ declare type $$ActionSheetIOS = typeof $$ActionSheetIOS;
101
+ export default $$ActionSheetIOS;