react-native-tvos 0.85.3-1 → 0.86.0-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 (667) hide show
  1. package/Libraries/Animated/AnimatedImplementation.js +6 -6
  2. package/Libraries/Animated/NativeAnimatedAllowlist.js +21 -0
  3. package/Libraries/Animated/components/AnimatedImage.js +3 -3
  4. package/Libraries/Animated/components/AnimatedText.js +3 -3
  5. package/Libraries/Animated/createAnimatedComponent.js +7 -7
  6. package/Libraries/Animated/nodes/AnimatedAddition.js +1 -1
  7. package/Libraries/Animated/nodes/AnimatedColor.js +7 -7
  8. package/Libraries/Animated/nodes/AnimatedDiffClamp.js +1 -1
  9. package/Libraries/Animated/nodes/AnimatedDivision.js +1 -1
  10. package/Libraries/Animated/nodes/AnimatedInterpolation.js +22 -24
  11. package/Libraries/Animated/nodes/AnimatedModulo.js +1 -1
  12. package/Libraries/Animated/nodes/AnimatedMultiplication.js +1 -1
  13. package/Libraries/Animated/nodes/AnimatedStyle.js +2 -2
  14. package/Libraries/Animated/nodes/AnimatedSubtraction.js +1 -1
  15. package/Libraries/Animated/nodes/AnimatedTracking.js +1 -1
  16. package/Libraries/Animated/nodes/AnimatedValue.js +2 -2
  17. package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +4 -0
  18. package/Libraries/AppDelegate/RCTRootViewFactory.h +5 -5
  19. package/Libraries/AppDelegate/RCTRootViewFactory.mm +2 -2
  20. package/Libraries/AppState/AppState.js +1 -1
  21. package/Libraries/BatchedBridge/NativeModules.js +1 -1
  22. package/Libraries/Blob/RCTBlobCollector.h +1 -1
  23. package/Libraries/Blob/RCTBlobCollector.mm +14 -26
  24. package/Libraries/Blob/RCTBlobManager.mm +11 -3
  25. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +29 -23
  26. package/Libraries/Components/Keyboard/Keyboard.js +4 -2
  27. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
  28. package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -27
  29. package/Libraries/Components/Pressable/Pressable.d.ts +1 -0
  30. package/Libraries/Components/Pressable/Pressable.js +2 -2
  31. package/Libraries/Components/Pressable/useAndroidRippleForView.js +7 -8
  32. package/Libraries/Components/ScrollView/ScrollView.js +3 -3
  33. package/Libraries/Components/ScrollView/ScrollViewCommands.js +2 -2
  34. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +2 -2
  35. package/Libraries/Components/Switch/Switch.js +1 -1
  36. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +25 -1
  37. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +1 -1
  38. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +2 -2
  39. package/Libraries/Components/TextInput/TextInput.d.ts +24 -0
  40. package/Libraries/Components/TextInput/TextInput.flow.js +24 -0
  41. package/Libraries/Components/TextInput/TextInput.js +5 -5
  42. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +5 -5
  43. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +5 -5
  44. package/Libraries/Components/Touchable/PooledClass.js +4 -4
  45. package/Libraries/Components/Touchable/Touchable.js +1 -1
  46. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -10
  47. package/Libraries/Components/View/ReactNativeStyleAttributes.js +10 -2
  48. package/Libraries/Components/View/View.js +100 -95
  49. package/Libraries/Components/View/ViewPropTypes.js +3 -1
  50. package/Libraries/Core/Devtools/loadBundleFromServer.js +8 -0
  51. package/Libraries/Core/ExceptionsManager.js +2 -8
  52. package/Libraries/Core/InitializeCore.js +0 -13
  53. package/Libraries/Core/ReactFiberErrorDialog.js +3 -3
  54. package/Libraries/Core/ReactNativeVersion.js +3 -3
  55. package/Libraries/Core/ReactNativeVersionCheck.js +1 -1
  56. package/Libraries/Core/Timers/JSTimers.js +2 -2
  57. package/Libraries/Core/Timers/immediateShim.js +1 -1
  58. package/Libraries/Core/setUpBatchedBridge.js +1 -1
  59. package/Libraries/Core/setUpSegmentFetcher.js +1 -1
  60. package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
  61. package/Libraries/EventEmitter/NativeEventEmitter.js +9 -5
  62. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -2
  63. package/Libraries/Image/Image.android.js +15 -35
  64. package/Libraries/Image/RCTImageLoader.mm +4 -2
  65. package/Libraries/Image/RelativeImageStub.js +2 -2
  66. package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -12
  67. package/Libraries/Linking/Linking.js +1 -1
  68. package/Libraries/Lists/FlatList.js +1 -1
  69. package/Libraries/LogBox/LogBox.js +2 -2
  70. package/Libraries/LogBox/LogBoxInspectorContainer.js +24 -2
  71. package/Libraries/LogBox/LogBoxNotificationContainer.js +27 -4
  72. package/Libraries/LogBox/UI/LogBoxButton.js +47 -33
  73. package/Libraries/LogBox/UI/LogBoxInspector.js +61 -1
  74. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -0
  75. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +3 -1
  76. package/Libraries/LogBox/UI/LogBoxNotification.js +2 -0
  77. package/Libraries/Modal/Modal.js +12 -7
  78. package/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.mm +0 -2
  79. package/Libraries/NativeComponent/BaseViewConfig.android.js +15 -0
  80. package/Libraries/NativeComponent/BaseViewConfig.ios.js +17 -0
  81. package/Libraries/NativeComponent/NativeComponentRegistry.js +2 -2
  82. package/Libraries/NativeComponent/ViewConfigIgnore.js +4 -2
  83. package/Libraries/Network/RCTNetworking.android.js +1 -1
  84. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  85. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  86. package/Libraries/Network/RCTNetworking.mm +1 -2
  87. package/Libraries/Network/XMLHttpRequest.js +29 -12
  88. package/Libraries/Pressability/Pressability.js +2 -2
  89. package/Libraries/ReactNative/AppContainer-dev.js +2 -3
  90. package/Libraries/ReactNative/AppContainer-prod.js +1 -2
  91. package/Libraries/ReactNative/AppContainer.js +0 -1
  92. package/Libraries/ReactNative/AppRegistry.d.ts +1 -1
  93. package/Libraries/ReactNative/AppRegistry.flow.js +1 -2
  94. package/Libraries/ReactNative/AppRegistryImpl.js +16 -16
  95. package/Libraries/ReactNative/DeprecatedPerformanceLoggerStub.js +83 -0
  96. package/Libraries/ReactNative/FabricUIManager.js +6 -0
  97. package/Libraries/{Utilities → ReactNative}/IPerformanceLogger.d.ts +8 -5
  98. package/Libraries/{Utilities/IPerformanceLogger.js → ReactNative/IPerformanceLogger.flow.js} +12 -9
  99. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +14 -14
  100. package/Libraries/ReactNative/RendererImplementation.js +26 -143
  101. package/Libraries/ReactNative/RendererProxy.js +4 -15
  102. package/Libraries/ReactNative/renderApplication.js +33 -59
  103. package/Libraries/ReactNative/requireNativeComponent.js +3 -3
  104. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +5 -0
  105. package/Libraries/Renderer/shims/ReactNativeTypes.js +2 -32
  106. package/Libraries/Settings/Settings.ios.js +1 -1
  107. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +2 -2
  108. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +3 -3
  109. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  110. package/Libraries/StyleSheet/StyleSheet.js.flow +2 -2
  111. package/Libraries/StyleSheet/StyleSheetExports.js +1 -1
  112. package/Libraries/StyleSheet/StyleSheetExports.js.flow +1 -1
  113. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +6 -8
  114. package/Libraries/StyleSheet/StyleSheetTypes.js +11 -11
  115. package/Libraries/StyleSheet/flattenStyle.js +1 -1
  116. package/Libraries/StyleSheet/private/_TransformStyle.js +1 -1
  117. package/Libraries/StyleSheet/processBackgroundImage.js +19 -9
  118. package/Libraries/StyleSheet/processBackgroundSize.js +7 -12
  119. package/Libraries/StyleSheet/processBoxShadow.js +9 -47
  120. package/Libraries/StyleSheet/processFilter.js +16 -8
  121. package/Libraries/StyleSheet/processTransformOrigin.js +10 -3
  122. package/Libraries/Text/Text.js +4 -4
  123. package/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm +16 -2
  124. package/Libraries/Text/TextNativeComponent.js +4 -4
  125. package/Libraries/TurboModule/RCTExport.js +1 -1
  126. package/Libraries/TurboModule/TurboModuleRegistry.js +3 -3
  127. package/Libraries/Types/CodegenTypes.js +7 -4
  128. package/Libraries/Types/ReactDevToolsTypes.js +1 -1
  129. package/Libraries/Utilities/BackHandler.android.js +11 -3
  130. package/Libraries/Utilities/BackHandler.d.ts +11 -1
  131. package/Libraries/Utilities/BackHandler.ios.js +3 -1
  132. package/Libraries/Utilities/BackHandler.js.flow +6 -1
  133. package/Libraries/Utilities/HardwareBackPressEvent.js +22 -0
  134. package/Libraries/Utilities/ReactNativeTestTools.js +4 -4
  135. package/Libraries/Utilities/binaryToBase64.js +1 -1
  136. package/Libraries/Utilities/codegenNativeCommands.js +2 -2
  137. package/Libraries/Utilities/codegenNativeComponent.js +4 -4
  138. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +2 -2
  139. package/Libraries/Utilities/stringifySafe.js +1 -1
  140. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  141. package/Libraries/vendor/core/ErrorUtils.js +4 -4
  142. package/Libraries/vendor/emitter/EventEmitter.js +27 -13
  143. package/React/Base/RCTBundleURLProvider.h +19 -1
  144. package/React/Base/RCTBundleURLProvider.mm +82 -0
  145. package/React/Base/RCTDefines.h +1 -1
  146. package/React/Base/RCTMultipartDataTask.h +1 -1
  147. package/React/Base/RCTMultipartDataTask.m +0 -3
  148. package/React/Base/RCTRootView.h +4 -0
  149. package/React/Base/RCTRootViewDelegate.h +5 -2
  150. package/React/Base/RCTVersion.m +3 -3
  151. package/React/Base/Surface/RCTSurface.h +3 -0
  152. package/React/Base/Surface/RCTSurfaceDelegate.h +7 -3
  153. package/React/Base/Surface/RCTSurfaceRootView.mm +1 -1
  154. package/React/Base/Surface/RCTSurfaceView.mm +2 -1
  155. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +2 -0
  156. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.h +0 -3
  157. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm +3 -1
  158. package/React/CoreModules/RCTDevMenuConfigurationDecorator.h +2 -2
  159. package/React/CoreModules/RCTRedBox2AnsiParser.mm +1 -1
  160. package/React/CoreModules/RCTWebSocketModule.mm +45 -6
  161. package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +0 -1
  162. package/React/DevSupport/RCTInspectorDevServerHelper.mm +4 -0
  163. package/React/DevSupport/RCTPackagerConnection.mm +13 -11
  164. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +108 -43
  165. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.h +1 -0
  166. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.mm +1 -0
  167. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.h +1 -1
  168. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +2 -2
  169. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +70 -8
  170. package/React/Fabric/RCTConversions.h +14 -0
  171. package/React/Fabric/RCTScheduler.mm +18 -0
  172. package/React/Fabric/RCTSurfacePointerHandler.mm +8 -2
  173. package/React/Fabric/RCTSurfaceTouchHandler.mm +1 -0
  174. package/React/Fabric/Surface/RCTFabricSurface.mm +3 -0
  175. package/React/I18n/strings/pt.lproj/fbt_language_pack.bin +0 -0
  176. package/React/Modules/RCTUIManager.mm +1 -1
  177. package/React/Profiler/RCTProfile.h +5 -0
  178. package/React/Profiler/RCTProfile.m +2 -1
  179. package/React/Profiler/RCTProfileTrampoline-arm.S +1 -1
  180. package/React/Profiler/RCTProfileTrampoline-arm64.S +1 -1
  181. package/React/Profiler/RCTProfileTrampoline-i386.S +1 -1
  182. package/React/Profiler/RCTProfileTrampoline-x86_64.S +1 -1
  183. package/React/Tests/Mounting/RCTViewComponentViewTests.mm +186 -0
  184. package/React/Tests/Text/RCTAttributedTextUtilsTest.mm +5 -5
  185. package/React/Views/RCTLayout.m +4 -3
  186. package/React/Views/ScrollView/RCTScrollView.h +6 -2
  187. package/ReactAndroid/api/ReactAndroid.api +37 -27
  188. package/ReactAndroid/build.gradle.kts +28 -21
  189. package/ReactAndroid/gradle.properties +1 -1
  190. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/HermesSamplingProfiler.kt +2 -0
  191. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +1 -3
  192. package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.kt +2 -0
  193. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +40 -110
  194. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +32 -87
  195. package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +1 -0
  196. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.kt +9 -99
  197. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.kt +7 -28
  198. package/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.kt +2 -19
  199. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.kt +15 -23
  200. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +36 -0
  201. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJNISoLoader.kt +2 -0
  202. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJniCommonSoLoader.kt +2 -0
  203. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +4 -0
  204. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultSoLoader.kt +2 -0
  205. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/FpsView.kt +2 -2
  206. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +2 -0
  207. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialogSurfaceDelegate.kt +15 -2
  208. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxDialogSurfaceDelegate.kt +1 -0
  209. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/DevSupportHttpClient.kt +9 -34
  210. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingsObserver.kt +9 -10
  211. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkRequestListener.kt +2 -0
  212. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt +10 -10
  213. package/ReactAndroid/src/main/java/com/facebook/react/fabric/AnimationBackendChoreographer.kt +15 -13
  214. package/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.kt +4 -1
  215. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +139 -43
  216. package/ReactAndroid/src/main/java/com/facebook/react/fabric/ViewTransitionSnapshotManager.kt +223 -0
  217. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.kt +25 -8
  218. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +34 -1
  219. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.kt +104 -65
  220. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.kt +9 -1
  221. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt +172 -36
  222. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.kt +1 -1
  223. package/ReactAndroid/src/main/java/com/facebook/react/interfaces/ExtraWindowEventListener.kt +29 -0
  224. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +41 -29
  225. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +71 -51
  226. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +15 -11
  227. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +16 -12
  228. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +79 -57
  229. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -3
  230. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +1 -4
  231. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +15 -11
  232. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlagsDefaults.kt +5 -9
  233. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/rewrite_feature_flag_defaults.py +76 -0
  234. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/tests/test_rewrite_feature_flag_defaults.py +63 -0
  235. package/ReactAndroid/src/main/java/com/facebook/react/internal/tracing/PerformanceTracer.kt +1 -1
  236. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +3 -0
  237. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt +10 -5
  238. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.kt +1 -2
  239. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/ClipboardModule.kt +3 -0
  240. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/DeviceEventManagerModule.kt +2 -1
  241. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.kt +21 -20
  242. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.kt +63 -3
  243. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.kt +59 -62
  244. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +8 -0
  245. package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.kt +45 -36
  246. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +3 -3
  247. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +5 -2
  248. package/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt +4 -0
  249. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +18 -5
  250. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImplDevHelper.kt +8 -1
  251. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.kt +21 -19
  252. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +4 -0
  253. package/ReactAndroid/src/main/java/com/facebook/react/soloader/OpenSourceMergedSoMapping.kt +4 -0
  254. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +77 -72
  255. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +7 -16
  256. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt +3 -2
  257. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.kt +3 -0
  258. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FilterHelper.kt +3 -1
  259. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +25 -0
  260. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.kt +2 -2
  261. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactRootViewTagGenerator.kt +3 -2
  262. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewUtil.kt +17 -7
  263. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.kt +18 -0
  264. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.kt +20 -12
  265. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +18 -24
  266. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIConstantsProviderBinding.kt +2 -0
  267. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +4 -0
  268. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.kt +11 -71
  269. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +10 -17
  270. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/ViewUtil.kt +29 -30
  271. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundImageDrawable.kt +5 -3
  272. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/InsetBoxShadowDrawable.kt +12 -13
  273. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +1 -0
  274. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +1 -0
  275. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.kt +30 -0
  276. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/SynchronousEventReceiver.kt +28 -0
  277. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.kt +9 -9
  278. package/ReactAndroid/src/main/java/com/facebook/react/util/AndroidVersion.kt +27 -3
  279. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +4 -0
  280. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt +1 -14
  281. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerViewManager.kt +1 -22
  282. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +18 -20
  283. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.java +20 -21
  284. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +19 -20
  285. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +14 -5
  286. package/ReactAndroid/src/main/java/com/facebook/react/views/text/FontMetricsUtil.kt +2 -3
  287. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +5 -162
  288. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.kt +1 -1
  289. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +71 -97
  290. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomStyleSpan.kt +1 -4
  291. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/DrawCommandSpan.kt +1 -1
  292. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +7 -13
  293. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +40 -2
  294. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.kt +59 -20
  295. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +84 -20
  296. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +41 -65
  297. package/ReactAndroid/src/main/java/com/facebook/react/views/view/WindowUtil.kt +85 -13
  298. package/ReactAndroid/src/main/java/com/facebook/soloader/annotation/SoLoaderLibrary.kt +17 -0
  299. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaAlign.java +5 -1
  300. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.kt +30 -0
  301. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDisplay.java +3 -1
  302. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.java +3 -1
  303. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGridTrackType.java +39 -0
  304. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaJustify.java +20 -12
  305. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +101 -0
  306. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.kt +33 -0
  307. package/ReactAndroid/src/main/jni/CMakeLists.txt +10 -1
  308. package/ReactAndroid/src/main/jni/react/fabric/ComponentFactory.cpp +0 -1
  309. package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +0 -2
  310. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.cpp +26 -6
  311. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.h +3 -3
  312. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +47 -0
  313. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +20 -6
  314. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +24 -1
  315. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +6 -0
  316. package/ReactAndroid/src/main/jni/react/fabric/FocusOrderingHelper.cpp +0 -1
  317. package/ReactAndroid/src/main/jni/react/fabric/SurfaceHandlerBinding.cpp +1 -0
  318. package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.cpp +85 -0
  319. package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.h +46 -0
  320. package/ReactAndroid/src/main/jni/react/fabric/test_helper/OnLoad.cpp +16 -0
  321. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +97 -69
  322. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +21 -15
  323. package/ReactAndroid/src/main/jni/react/hermes/instrumentation/HermesSamplingProfiler.cpp +1 -1
  324. package/ReactAndroid/src/main/jni/react/jni/OnLoad-common.cpp +0 -2
  325. package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +2 -1
  326. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.cpp +37 -30
  327. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.h +11 -8
  328. package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +2 -1
  329. package/ReactAndroid/src/main/jni/react/reactnativeblob/OnLoad.cpp +1 -1
  330. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +10 -0
  331. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +7 -0
  332. package/ReactAndroid/src/main/jni/react/tracing/CMakeLists.txt +28 -0
  333. package/ReactCommon/React-Fabric.podspec +7 -0
  334. package/ReactCommon/React-FabricComponents.podspec +1 -1
  335. package/ReactCommon/cxxreact/ReactNativeVersion.h +5 -5
  336. package/ReactCommon/jsc/JSCRuntime.cpp +9 -0
  337. package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +1 -0
  338. package/ReactCommon/jserrorhandler/JsErrorHandler.h +1 -1
  339. package/ReactCommon/jsi/jsi/JSIDynamic.cpp +1 -0
  340. package/ReactCommon/jsi/jsi/decorator.h +93 -0
  341. package/ReactCommon/jsi/jsi/jsi-inl.h +97 -68
  342. package/ReactCommon/jsi/jsi/jsi.cpp +208 -27
  343. package/ReactCommon/jsi/jsi/jsi.h +553 -224
  344. package/ReactCommon/jsi/jsi/test/testlib.cpp +453 -0
  345. package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +1 -1
  346. package/ReactCommon/jsinspector-modern/EmulationAgent.cpp +108 -0
  347. package/ReactCommon/jsinspector-modern/EmulationAgent.h +47 -0
  348. package/ReactCommon/jsinspector-modern/HostAgent.cpp +10 -1
  349. package/ReactCommon/jsinspector-modern/HostTarget.h +25 -0
  350. package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +6 -2
  351. package/ReactCommon/jsinspector-modern/InspectorFlags.h +5 -2
  352. package/ReactCommon/jsinspector-modern/InspectorPackagerConnection.cpp +19 -2
  353. package/ReactCommon/jsinspector-modern/InspectorPackagerConnectionImpl.h +3 -0
  354. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +10 -0
  355. package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +0 -1
  356. package/ReactCommon/logger/react_native_log.cpp +0 -1
  357. package/ReactCommon/react/bridging/Array.h +1 -1
  358. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +29 -21
  359. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +35 -25
  360. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +168 -132
  361. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +18 -14
  362. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +28 -20
  363. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +61 -43
  364. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +3 -3
  365. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +9 -7
  366. package/ReactCommon/react/featureflags/rewrite_feature_flag_defaults.py +111 -0
  367. package/ReactCommon/react/featureflags/tests/test_rewrite_feature_flag_defaults.py +60 -0
  368. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +3 -9
  369. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +0 -1
  370. package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +1 -0
  371. package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +7 -0
  372. package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +1 -0
  373. package/ReactCommon/react/nativemodule/fantomtestspecificmethods/NativeFantomTestSpecificMethods.cpp +2 -2
  374. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +35 -25
  375. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +15 -11
  376. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +3 -2
  377. package/ReactCommon/react/nativemodule/viewtransition/CMakeLists.txt +24 -0
  378. package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.cpp +92 -0
  379. package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.h +37 -0
  380. package/ReactCommon/react/nativemodule/viewtransition/React-viewtransitionnativemodule.podspec +58 -0
  381. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +10 -1
  382. package/ReactCommon/react/networking/NetworkReporter.h +0 -1
  383. package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.h +0 -1
  384. package/ReactCommon/react/performance/timeline/PerformanceEntry.h +1 -1
  385. package/ReactCommon/react/performance/timeline/tests/PerformanceEntryTest.cpp +62 -0
  386. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +24 -12
  387. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +1 -1
  388. package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +3 -0
  389. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +10 -3
  390. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +1 -0
  391. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +4 -0
  392. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +1 -1
  393. package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.h +0 -1
  394. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +8 -3
  395. package/ReactCommon/react/renderer/animations/tests/MutationComparatorTest.cpp +273 -0
  396. package/ReactCommon/react/renderer/animations/utils.h +12 -1
  397. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +1 -1
  398. package/ReactCommon/react/renderer/attributedstring/conversions.h +104 -3
  399. package/ReactCommon/react/renderer/components/image/conversions.h +2 -3
  400. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +0 -1
  401. package/ReactCommon/react/renderer/components/scrollview/conversions.h +0 -1
  402. package/ReactCommon/react/renderer/components/text/stateConversions.h +0 -1
  403. package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +531 -21
  404. package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +9 -0
  405. package/ReactCommon/react/renderer/components/view/BaseTouch.cpp +3 -2
  406. package/ReactCommon/react/renderer/components/view/BaseTouch.h +7 -0
  407. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +8 -0
  408. package/ReactCommon/react/renderer/components/view/PointerEvent.cpp +2 -0
  409. package/ReactCommon/react/renderer/components/view/PointerEvent.h +5 -0
  410. package/ReactCommon/react/renderer/components/view/TouchEvent.h +0 -2
  411. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +23 -5
  412. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +1 -0
  413. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +5 -0
  414. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +33 -28
  415. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +0 -1
  416. package/ReactCommon/react/renderer/components/view/conversions.h +44 -28
  417. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +53 -5
  418. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/NativeDrawable.h +47 -16
  419. package/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +2 -2
  420. package/ReactCommon/react/renderer/{graphics/DoubleConversions.h → components/view/platform/tvos/react/renderer/components/view/HostPlatformTouch.h} +2 -4
  421. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewEventEmitter.h +14 -0
  422. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.cpp +38 -0
  423. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.h +29 -0
  424. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +30 -0
  425. package/ReactCommon/react/renderer/components/view/propsConversions.h +8 -2
  426. package/ReactCommon/react/renderer/components/view/tests/ConversionsTest.cpp +86 -0
  427. package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +34 -0
  428. package/ReactCommon/react/renderer/core/EventEmitter.cpp +67 -2
  429. package/ReactCommon/react/renderer/core/EventEmitter.h +25 -0
  430. package/ReactCommon/react/renderer/core/EventPipe.h +3 -1
  431. package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +18 -10
  432. package/ReactCommon/react/renderer/core/EventTarget.cpp +8 -5
  433. package/ReactCommon/react/renderer/core/LayoutContext.h +9 -2
  434. package/ReactCommon/react/renderer/core/LayoutMetrics.cpp +5 -3
  435. package/ReactCommon/react/renderer/core/LayoutPrimitives.h +1 -0
  436. package/ReactCommon/react/renderer/core/Props.cpp +20 -0
  437. package/ReactCommon/react/renderer/core/RawEvent.cpp +4 -2
  438. package/ReactCommon/react/renderer/core/RawEvent.h +6 -6
  439. package/ReactCommon/react/renderer/core/ShadowNode.h +2 -2
  440. package/ReactCommon/react/renderer/core/conversions.h +4 -0
  441. package/ReactCommon/react/renderer/core/graphicsConversions.h +4 -4
  442. package/ReactCommon/react/renderer/core/propsConversions.h +1 -1
  443. package/ReactCommon/react/renderer/core/tests/EventQueueProcessorTest.cpp +52 -3
  444. package/ReactCommon/react/renderer/core/tests/EventTargetTests.cpp +26 -0
  445. package/ReactCommon/react/renderer/css/tests/CSSValueParserTest.cpp +1 -1
  446. package/ReactCommon/react/renderer/debug/DebugStringConvertible.cpp +42 -26
  447. package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +4 -2
  448. package/ReactCommon/react/renderer/debug/tests/DebugStringConvertibleTest.cpp +34 -3
  449. package/ReactCommon/react/renderer/graphics/BlendMode.h +5 -0
  450. package/ReactCommon/react/renderer/graphics/CMakeLists.txt +1 -0
  451. package/ReactCommon/react/renderer/graphics/ColorStop.h +3 -0
  452. package/ReactCommon/react/renderer/graphics/LinearGradient.h +3 -0
  453. package/ReactCommon/react/renderer/graphics/RadialGradient.h +4 -0
  454. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -0
  455. package/ReactCommon/react/renderer/graphics/ValueUnit.cpp +1 -1
  456. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +0 -5
  457. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +2 -2
  458. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h +0 -4
  459. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +5 -1
  460. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +12 -4
  461. package/ReactCommon/react/renderer/mounting/CMakeLists.txt +1 -0
  462. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +307 -4
  463. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +27 -2
  464. package/ReactCommon/react/renderer/mounting/internal/LongestIncreasingSubsequence.h +95 -0
  465. package/ReactCommon/react/renderer/mounting/tests/DifferentiatorUnflattenTest.cpp +212 -0
  466. package/ReactCommon/react/renderer/mounting/tests/LongestIncreasingSubsequenceTest.cpp +154 -0
  467. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +314 -18
  468. package/ReactCommon/react/renderer/mounting/updateMountedFlag.cpp +38 -20
  469. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +20 -22
  470. package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +1 -0
  471. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +76 -3
  472. package/ReactCommon/react/renderer/scheduler/Scheduler.h +12 -0
  473. package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +5 -0
  474. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +0 -7
  475. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +2 -1
  476. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +16 -1
  477. package/ReactCommon/react/renderer/uimanager/UIManager.h +8 -0
  478. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +1 -0
  479. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +347 -5
  480. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +5 -3
  481. package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +5 -0
  482. package/ReactCommon/react/renderer/uimanager/UIManagerViewTransitionDelegate.h +82 -0
  483. package/ReactCommon/react/renderer/viewtransition/CMakeLists.txt +22 -0
  484. package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp +520 -0
  485. package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.h +161 -0
  486. package/ReactCommon/react/runtime/TimerManager.cpp +4 -2
  487. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +37 -0
  488. package/ReactCommon/react/timing/PrivacyInfo.xcprivacy +21 -0
  489. package/ReactCommon/react/timing/React-timing.podspec +2 -0
  490. package/ReactCommon/react/timing/primitives.h +33 -1
  491. package/ReactCommon/yoga/yoga/YGEnums.cpp +32 -0
  492. package/ReactCommon/yoga/yoga/YGEnums.h +20 -4
  493. package/ReactCommon/yoga/yoga/YGMacros.h +2 -0
  494. package/ReactCommon/yoga/yoga/YGNode.h +1 -1
  495. package/ReactCommon/yoga/yoga/YGNodeStyle.cpp +269 -0
  496. package/ReactCommon/yoga/yoga/YGNodeStyle.h +93 -1
  497. package/ReactCommon/yoga/yoga/algorithm/AbsoluteLayout.cpp +40 -9
  498. package/ReactCommon/yoga/yoga/algorithm/Align.h +12 -1
  499. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +106 -14
  500. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.h +22 -0
  501. package/ReactCommon/yoga/yoga/enums/Align.h +3 -1
  502. package/ReactCommon/yoga/yoga/enums/Display.h +2 -1
  503. package/ReactCommon/yoga/yoga/enums/ExperimentalFeature.h +2 -1
  504. package/ReactCommon/yoga/yoga/enums/GridTrackType.h +43 -0
  505. package/ReactCommon/yoga/yoga/enums/Justify.h +5 -1
  506. package/ReactCommon/yoga/yoga/event/event.cpp +2 -0
  507. package/ReactCommon/yoga/yoga/event/event.h +1 -0
  508. package/ReactCommon/yoga/yoga/node/Node.cpp +6 -1
  509. package/ReactCommon/yoga/yoga/node/Node.h +4 -4
  510. package/ReactCommon/yoga/yoga/style/GridLine.h +53 -0
  511. package/ReactCommon/yoga/yoga/style/GridTrack.h +63 -0
  512. package/ReactCommon/yoga/yoga/style/Style.h +261 -71
  513. package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +7 -1
  514. package/ReactCommon/yoga/yoga/style/StyleValueHandle.h +8 -0
  515. package/ReactCommon/yoga/yoga/style/StyleValuePool.h +10 -0
  516. package/cli.js +1 -1
  517. package/flow/HermesInternalType.js +1 -1
  518. package/flow/bom.js.flow +95 -3
  519. package/flow/dom.js.flow +89 -89
  520. package/gradle/libs.versions.toml +3 -1
  521. package/index.js +30 -3
  522. package/index.js.flow +23 -1
  523. package/package.json +11 -11
  524. package/react-native.config.js +3 -3
  525. package/scripts/cocoapods/rncore.rb +65 -11
  526. package/scripts/cocoapods/rndependencies.rb +65 -11
  527. package/scripts/cocoapods/utils.rb +52 -0
  528. package/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js +1 -1
  529. package/scripts/codegen/generate-artifacts-executor/generateNativeCode.js +13 -4
  530. package/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js +1 -1
  531. package/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +1 -1
  532. package/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js +17 -6
  533. package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +1 -1
  534. package/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js +1 -1
  535. package/scripts/codegen/generate-artifacts-executor/index.js +2 -0
  536. package/scripts/codegen/generate-artifacts-executor/utils.js +1 -1
  537. package/scripts/codegen/generate-specs-cli-executor.js +1 -1
  538. package/scripts/generate-codegen-artifacts.js +20 -2
  539. package/scripts/generate-provider-cli.js +1 -1
  540. package/scripts/react_native_pods.rb +25 -2
  541. package/scripts/react_native_pods_utils/script_phases.rb +9 -3
  542. package/scripts/replace-rncore-version.js +20 -0
  543. package/scripts/xcode/with-environment.sh +7 -1
  544. package/sdks/.hermesv1version +1 -1
  545. package/sdks/.hermesversion +1 -1
  546. package/sdks/hermes-engine/hermes-utils.rb +92 -5
  547. package/sdks/hermes-engine/version.properties +2 -2
  548. package/src/private/animated/NativeAnimatedValidation.js +1 -1
  549. package/src/private/animated/createAnimatedPropsHook.js +2 -2
  550. package/src/private/components/virtualcollection/FlingConstants.js +21 -0
  551. package/src/private/components/virtualcollection/Virtual.js +62 -0
  552. package/src/private/components/virtualcollection/VirtualCollectionView.js +238 -0
  553. package/src/private/components/virtualcollection/column/VirtualColumn.js +43 -0
  554. package/src/private/components/virtualcollection/column/VirtualColumnGenerator.js +72 -0
  555. package/src/private/components/virtualcollection/debug/FlingItemOverlay.js +13 -0
  556. package/src/private/components/virtualcollection/dom/getScrollParent.js +43 -0
  557. package/src/private/components/virtualcollection/dom/isScrollableNode.js +22 -0
  558. package/src/private/components/virtualcollection/row/VirtualRow.js +43 -0
  559. package/src/private/components/virtualcollection/row/VirtualRowGenerator.js +72 -0
  560. package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +2 -2
  561. package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +1 -1
  562. package/src/private/devsupport/devmenu/specs/NativeDevMenu.js +1 -1
  563. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
  564. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsSettingsManager.js +2 -2
  565. package/src/private/featureflags/ReactNativeFeatureFlags.js +41 -37
  566. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +3 -3
  567. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +9 -7
  568. package/src/private/renderer/errorhandling/ErrorHandlers.js +3 -3
  569. package/src/private/renderer/events/LegacySyntheticEvent.js +90 -0
  570. package/src/private/renderer/events/ReactNativeEventTypeMapping.js +103 -0
  571. package/src/private/renderer/events/ReactNativeResponder.js +687 -0
  572. package/src/private/renderer/events/ResponderEvent.js +40 -0
  573. package/src/private/renderer/events/ResponderTouchHistoryStore.js +258 -0
  574. package/src/private/renderer/events/dispatchNativeEvent.js +83 -0
  575. package/src/private/setup/setUpDOM.js +20 -0
  576. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +2 -2
  577. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +2 -2
  578. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +2 -2
  579. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
  580. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
  581. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +2 -2
  582. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +2 -2
  583. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +2 -2
  584. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +2 -2
  585. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +2 -2
  586. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +2 -2
  587. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
  588. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +2 -2
  589. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js +1 -1
  590. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +1 -1
  591. package/src/private/specs_DEPRECATED/modules/NativeActionSheetManager.js +1 -1
  592. package/src/private/specs_DEPRECATED/modules/NativeAlertManager.js +1 -1
  593. package/src/private/specs_DEPRECATED/modules/NativeAppState.js +1 -1
  594. package/src/private/specs_DEPRECATED/modules/NativeAppearance.js +1 -1
  595. package/src/private/specs_DEPRECATED/modules/NativeBlobModule.js +1 -1
  596. package/src/private/specs_DEPRECATED/modules/NativeClipboard.js +1 -1
  597. package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +1 -1
  598. package/src/private/specs_DEPRECATED/modules/NativeDevSettings.js +1 -1
  599. package/src/private/specs_DEPRECATED/modules/NativeDeviceEventManager.js +1 -1
  600. package/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js +1 -1
  601. package/src/private/specs_DEPRECATED/modules/NativeFileReaderModule.js +2 -2
  602. package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
  603. package/src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport.js +1 -1
  604. package/src/private/specs_DEPRECATED/modules/NativeI18nManager.js +1 -1
  605. package/src/private/specs_DEPRECATED/modules/NativeImageEditor.js +2 -2
  606. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js +1 -1
  607. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
  608. package/src/private/specs_DEPRECATED/modules/NativeImageStoreAndroid.js +2 -2
  609. package/src/private/specs_DEPRECATED/modules/NativeImageStoreIOS.js +2 -2
  610. package/src/private/specs_DEPRECATED/modules/NativeIntentAndroid.js +1 -1
  611. package/src/private/specs_DEPRECATED/modules/NativeJSCHeapCapture.js +1 -1
  612. package/src/private/specs_DEPRECATED/modules/NativeKeyboardObserver.js +1 -1
  613. package/src/private/specs_DEPRECATED/modules/NativeLinkingManager.js +1 -1
  614. package/src/private/specs_DEPRECATED/modules/NativeLogBox.js +1 -1
  615. package/src/private/specs_DEPRECATED/modules/NativeModalManager.js +1 -1
  616. package/src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid.js +1 -1
  617. package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +1 -1
  618. package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
  619. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js +2 -2
  620. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsIOS.js +2 -2
  621. package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +2 -2
  622. package/src/private/specs_DEPRECATED/modules/NativeRedBox.js +1 -1
  623. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +2 -2
  624. package/src/private/specs_DEPRECATED/modules/NativeSegmentFetcher.js +1 -1
  625. package/src/private/specs_DEPRECATED/modules/NativeSettingsManager.js +2 -2
  626. package/src/private/specs_DEPRECATED/modules/NativeShareModule.js +1 -1
  627. package/src/private/specs_DEPRECATED/modules/NativeSoundManager.js +1 -1
  628. package/src/private/specs_DEPRECATED/modules/NativeTiming.js +1 -1
  629. package/src/private/specs_DEPRECATED/modules/NativeToastAndroid.js +1 -1
  630. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +1 -1
  631. package/src/private/specs_DEPRECATED/modules/NativeVibration.js +1 -1
  632. package/src/private/specs_DEPRECATED/modules/NativeWebSocketModule.js +2 -2
  633. package/src/private/styles/composeStyles.js +1 -1
  634. package/src/private/types/HostComponent.js +1 -1
  635. package/src/private/utilities/toExtendedError.js +1 -1
  636. package/src/private/viewtransition/specs/NativeViewTransition.js +33 -0
  637. package/src/private/webapis/dom/events/Event.js +10 -1
  638. package/src/private/webapis/dom/events/EventTarget.js +60 -18
  639. package/src/private/webapis/dom/events/internals/EventInternals.js +18 -1
  640. package/src/private/webapis/dom/events/internals/EventTargetInternals.js +12 -0
  641. package/src/private/webapis/dom/nodes/ReactNativeElement.js +24 -0
  642. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +4 -6
  643. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +70 -1
  644. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +10 -0
  645. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +1 -1
  646. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +2 -2
  647. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +5 -9
  648. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +2 -2
  649. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +2 -2
  650. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +2 -2
  651. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +1 -1
  652. package/src/private/webapis/performance/specs/NativePerformance.js +1 -1
  653. package/src/private/webapis/structuredClone/structuredClone.js +1 -1
  654. package/src/private/webapis/webidl/PlatformObjects.js +4 -4
  655. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +0 -19669
  656. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +0 -11129
  657. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +0 -12930
  658. package/Libraries/Renderer/shims/ReactNative.js +0 -27
  659. package/Libraries/Utilities/GlobalPerformanceLogger.js +0 -24
  660. package/Libraries/Utilities/PerformanceLoggerContext.js +0 -33
  661. package/Libraries/Utilities/createPerformanceLogger.js +0 -329
  662. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.kt +0 -442
  663. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobCollector.kt +0 -31
  664. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerLegacyView.kt +0 -47
  665. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.java +0 -31
  666. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.java +0 -35
  667. package/ReactCommon/react/renderer/graphics/DoubleConversions.cpp +0 -38
@@ -7,7 +7,7 @@
7
7
 
8
8
  package com.facebook.react.views.text
9
9
 
10
- import android.content.Context
10
+ import android.content.res.AssetManager
11
11
  import android.graphics.Color
12
12
  import android.graphics.Typeface
13
13
  import android.os.Build
@@ -31,6 +31,7 @@ import com.facebook.react.common.ReactConstants
31
31
  import com.facebook.react.common.mapbuffer.MapBuffer
32
32
  import com.facebook.react.common.mapbuffer.ReadableMapBuffer
33
33
  import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
34
+ import com.facebook.react.uimanager.DisplayMetricsHolder
34
35
  import com.facebook.react.uimanager.PixelUtil
35
36
  import com.facebook.react.uimanager.PixelUtil.dpToPx
36
37
  import com.facebook.react.uimanager.PixelUtil.pxToDp
@@ -104,6 +105,18 @@ internal object TextLayoutManager {
104
105
 
105
106
  private val tagToSpannableCache = ConcurrentHashMap<Int, Spannable>()
106
107
 
108
+ // Lazily cached Method for StaticLayout.Builder.setUseBoundsForWidth (API 35+).
109
+ // Reflection is needed because some internal targets compile against an SDK older than 35.
110
+ private val setUseBoundsForWidthMethod: java.lang.reflect.Method? by lazy {
111
+ try {
112
+ StaticLayout.Builder::class
113
+ .java
114
+ .getMethod("setUseBoundsForWidth", Boolean::class.javaPrimitiveType)
115
+ } catch (_: ReflectiveOperationException) {
116
+ null
117
+ }
118
+ }
119
+
107
120
  fun setCachedSpannableForTag(reactTag: Int, sp: Spannable): Unit {
108
121
  tagToSpannableCache[reactTag] = sp
109
122
  }
@@ -217,7 +230,7 @@ internal object TextLayoutManager {
217
230
  }
218
231
 
219
232
  private fun buildSpannableFromFragments(
220
- context: Context,
233
+ assets: AssetManager,
221
234
  fragments: MapBuffer,
222
235
  sb: SpannableStringBuilder,
223
236
  ops: MutableList<SetSpanOperation>,
@@ -296,7 +309,7 @@ internal object TextLayoutManager {
296
309
  textAttributes.fontWeight,
297
310
  textAttributes.fontFeatureSettings,
298
311
  textAttributes.fontFamily,
299
- context.assets,
312
+ assets,
300
313
  ),
301
314
  )
302
315
  )
@@ -352,7 +365,7 @@ internal object TextLayoutManager {
352
365
  )
353
366
 
354
367
  private fun buildSpannableFromFragmentsOptimized(
355
- context: Context,
368
+ assets: AssetManager,
356
369
  fragments: MapBuffer,
357
370
  outputReactTags: IntArray?,
358
371
  ): Spannable {
@@ -472,7 +485,7 @@ internal object TextLayoutManager {
472
485
  fragment.props.fontWeight,
473
486
  fragment.props.fontFeatureSettings,
474
487
  fragment.props.fontFamily,
475
- context.assets,
488
+ assets,
476
489
  ),
477
490
  start,
478
491
  end,
@@ -528,7 +541,7 @@ internal object TextLayoutManager {
528
541
  }
529
542
 
530
543
  fun getOrCreateSpannableForText(
531
- context: Context,
544
+ assets: AssetManager,
532
545
  attributedString: MapBuffer,
533
546
  reactTextViewManagerCallback: ReactTextViewManagerCallback?,
534
547
  ): Spannable {
@@ -539,7 +552,7 @@ internal object TextLayoutManager {
539
552
  } else {
540
553
  text =
541
554
  createSpannableFromAttributedString(
542
- context,
555
+ assets,
543
556
  attributedString.getMapBuffer(AS_KEY_FRAGMENTS),
544
557
  reactTextViewManagerCallback,
545
558
  null,
@@ -550,13 +563,13 @@ internal object TextLayoutManager {
550
563
  }
551
564
 
552
565
  private fun createSpannableFromAttributedString(
553
- context: Context,
566
+ assets: AssetManager,
554
567
  fragments: MapBuffer,
555
568
  reactTextViewManagerCallback: ReactTextViewManagerCallback?,
556
569
  outputReactTags: IntArray?,
557
570
  ): Spannable {
558
571
  if (ReactNativeFeatureFlags.enableAndroidTextMeasurementOptimizations()) {
559
- val spannable = buildSpannableFromFragmentsOptimized(context, fragments, outputReactTags)
572
+ val spannable = buildSpannableFromFragmentsOptimized(assets, fragments, outputReactTags)
560
573
 
561
574
  reactTextViewManagerCallback?.onPostProcessSpannable(spannable)
562
575
  return spannable
@@ -568,7 +581,7 @@ internal object TextLayoutManager {
568
581
  // a new spannable will be wiped out
569
582
  val ops: MutableList<SetSpanOperation> = ArrayList()
570
583
 
571
- buildSpannableFromFragments(context, fragments, sb, ops, outputReactTags)
584
+ buildSpannableFromFragments(assets, fragments, sb, ops, outputReactTags)
572
585
 
573
586
  // TODO T31905686: add support for inline Images
574
587
  // While setting the Spans on the final text, we also check whether any of them are images.
@@ -605,9 +618,12 @@ internal object TextLayoutManager {
605
618
  boring != null &&
606
619
  (widthYogaMeasureMode == YogaMeasureMode.UNDEFINED || boring.width <= floor(width))
607
620
  ) {
621
+ // Guard uses floor() but layout width below uses ceil() for EXACTLY mode intentionally:
622
+ // text that barely fails the floor-based guard falls through to StaticLayout, which also
623
+ // ceils for EXACTLY — no wrapping results, just a slightly less optimal layout class in a
624
+ // rare subpixel edge case.
608
625
  val layoutWidth =
609
- if (widthYogaMeasureMode == YogaMeasureMode.EXACTLY) floor(width).toInt()
610
- else boring.width
626
+ if (widthYogaMeasureMode == YogaMeasureMode.EXACTLY) ceil(width).toInt() else boring.width
611
627
  return BoringLayout.make(
612
628
  text,
613
629
  paint,
@@ -620,63 +636,14 @@ internal object TextLayoutManager {
620
636
  )
621
637
  }
622
638
 
623
- // Pre-Android 15: Use existing advance-based logic
624
- if (
625
- Build.VERSION.SDK_INT < Build.VERSION_CODES.VANILLA_ICE_CREAM ||
626
- !ReactNativeFeatureFlags.fixTextClippingAndroid15useBoundsForWidth()
627
- ) {
628
- val desiredWidth = ceil(Layout.getDesiredWidth(text, paint)).toInt()
629
-
630
- val layoutWidth =
631
- when (widthYogaMeasureMode) {
632
- YogaMeasureMode.EXACTLY -> floor(width).toInt()
633
- YogaMeasureMode.AT_MOST -> min(desiredWidth, floor(width).toInt())
634
- else -> desiredWidth
635
- }
636
- return buildLayout(
637
- text,
638
- layoutWidth,
639
- includeFontPadding,
640
- textBreakStrategy,
641
- hyphenationFrequency,
642
- alignment,
643
- justificationMode,
644
- ellipsizeMode,
645
- maxNumberOfLines,
646
- paint,
647
- )
648
- }
649
-
650
- // Android 15+: Need to account for visual bounds
651
- // Step 1: Create unconstrained layout to get visual bounds width
652
- val unconstrainedLayout =
653
- buildLayout(
654
- text,
655
- Int.MAX_VALUE / 2,
656
- includeFontPadding,
657
- textBreakStrategy,
658
- hyphenationFrequency,
659
- alignment,
660
- justificationMode,
661
- null,
662
- ReactConstants.UNSET,
663
- paint,
664
- )
665
-
666
- // Calculate visual bounds width from unconstrained layout
667
- var desiredVisualWidth = 0f
668
- for (i in 0 until unconstrainedLayout.lineCount) {
669
- val lineWidth = unconstrainedLayout.getLineRight(i) - unconstrainedLayout.getLineLeft(i)
670
- desiredVisualWidth = max(desiredVisualWidth, lineWidth)
671
- }
639
+ val desiredWidth = ceil(Layout.getDesiredWidth(text, paint)).toInt()
672
640
 
673
641
  val layoutWidth =
674
642
  when (widthYogaMeasureMode) {
675
- YogaMeasureMode.AT_MOST -> min(ceil(desiredVisualWidth).toInt(), floor(width).toInt())
676
- else -> ceil(desiredVisualWidth).toInt()
643
+ YogaMeasureMode.EXACTLY -> ceil(width).toInt()
644
+ YogaMeasureMode.AT_MOST -> min(desiredWidth, floor(width).toInt())
645
+ else -> desiredWidth
677
646
  }
678
-
679
- // Step 2: Create final layout with correct width
680
647
  return buildLayout(
681
648
  text,
682
649
  layoutWidth,
@@ -723,13 +690,6 @@ internal object TextLayoutManager {
723
690
  builder.setUseLineSpacingFromFallbacks(true)
724
691
  }
725
692
 
726
- if (
727
- Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM &&
728
- ReactNativeFeatureFlags.fixTextClippingAndroid15useBoundsForWidth()
729
- ) {
730
- builder.setUseBoundsForWidth(true)
731
- }
732
-
733
693
  return builder.build()
734
694
  }
735
695
 
@@ -740,7 +700,7 @@ internal object TextLayoutManager {
740
700
  private fun updateTextPaint(
741
701
  paint: TextPaint,
742
702
  baseTextAttributes: TextAttributeProps,
743
- context: Context,
703
+ assets: AssetManager,
744
704
  ) {
745
705
  if (baseTextAttributes.fontSize != ReactConstants.UNSET) {
746
706
  paint.textSize = baseTextAttributes.fontSize.toFloat()
@@ -757,7 +717,7 @@ internal object TextLayoutManager {
757
717
  baseTextAttributes.fontStyle,
758
718
  baseTextAttributes.fontWeight,
759
719
  baseTextAttributes.fontFamily,
760
- context.assets,
720
+ assets,
761
721
  )
762
722
  paint.setTypeface(typeface)
763
723
 
@@ -779,28 +739,28 @@ internal object TextLayoutManager {
779
739
  */
780
740
  private fun scratchPaintWithAttributes(
781
741
  baseTextAttributes: TextAttributeProps,
782
- context: Context,
742
+ assets: AssetManager,
783
743
  ): TextPaint {
784
744
  val paint = checkNotNull(textPaintInstance.get())
785
745
  paint.setTypeface(null)
786
746
  paint.textSize = 12f
787
747
  paint.isFakeBoldText = false
788
748
  paint.textSkewX = 0f
789
- updateTextPaint(paint, baseTextAttributes, context)
749
+ updateTextPaint(paint, baseTextAttributes, assets)
790
750
  return paint
791
751
  }
792
752
 
793
753
  private fun newPaintWithAttributes(
794
754
  baseTextAttributes: TextAttributeProps,
795
- context: Context,
755
+ assets: AssetManager,
796
756
  ): TextPaint {
797
757
  val paint = TextPaint(TextPaint.ANTI_ALIAS_FLAG)
798
- updateTextPaint(paint, baseTextAttributes, context)
758
+ updateTextPaint(paint, baseTextAttributes, assets)
799
759
  return paint
800
760
  }
801
761
 
802
762
  private fun createLayoutForMeasurement(
803
- context: Context,
763
+ assets: AssetManager,
804
764
  attributedString: MapBuffer,
805
765
  paragraphAttributes: MapBuffer,
806
766
  width: Float,
@@ -809,7 +769,7 @@ internal object TextLayoutManager {
809
769
  heightYogaMeasureMode: YogaMeasureMode,
810
770
  reactTextViewManagerCallback: ReactTextViewManagerCallback?,
811
771
  ): Layout {
812
- val text = getOrCreateSpannableForText(context, attributedString, reactTextViewManagerCallback)
772
+ val text = getOrCreateSpannableForText(assets, attributedString, reactTextViewManagerCallback)
813
773
 
814
774
  val paint: TextPaint
815
775
  if (attributedString.contains(AS_KEY_CACHE_ID)) {
@@ -817,7 +777,7 @@ internal object TextLayoutManager {
817
777
  } else {
818
778
  val baseTextAttributes =
819
779
  TextAttributeProps.fromMapBuffer(attributedString.getMapBuffer(AS_KEY_BASE_ATTRIBUTES))
820
- paint = scratchPaintWithAttributes(baseTextAttributes, context)
780
+ paint = scratchPaintWithAttributes(baseTextAttributes, assets)
821
781
  }
822
782
 
823
783
  return createLayout(
@@ -922,7 +882,7 @@ internal object TextLayoutManager {
922
882
 
923
883
  @JvmStatic
924
884
  fun createPreparedLayout(
925
- context: Context,
885
+ assets: AssetManager,
926
886
  attributedString: ReadableMapBuffer,
927
887
  paragraphAttributes: ReadableMapBuffer,
928
888
  width: Float,
@@ -935,7 +895,7 @@ internal object TextLayoutManager {
935
895
  val reactTags = IntArray(fragments.count)
936
896
  val text =
937
897
  createSpannableFromAttributedString(
938
- context,
898
+ assets,
939
899
  fragments,
940
900
  reactTextViewManagerCallback,
941
901
  reactTags,
@@ -945,7 +905,7 @@ internal object TextLayoutManager {
945
905
  val result =
946
906
  createLayout(
947
907
  text,
948
- newPaintWithAttributes(baseTextAttributes, context),
908
+ newPaintWithAttributes(baseTextAttributes, assets),
949
909
  attributedString,
950
910
  paragraphAttributes,
951
911
  width,
@@ -1085,7 +1045,7 @@ internal object TextLayoutManager {
1085
1045
 
1086
1046
  @JvmStatic
1087
1047
  fun measureText(
1088
- context: Context,
1048
+ assets: AssetManager,
1089
1049
  attributedString: MapBuffer,
1090
1050
  paragraphAttributes: MapBuffer,
1091
1051
  width: Float,
@@ -1098,7 +1058,7 @@ internal object TextLayoutManager {
1098
1058
  // TODO(5578671): Handle text direction (see View#getTextDirectionHeuristic)
1099
1059
  val layout =
1100
1060
  createLayoutForMeasurement(
1101
- context,
1061
+ assets,
1102
1062
  attributedString,
1103
1063
  paragraphAttributes,
1104
1064
  width,
@@ -1355,7 +1315,7 @@ internal object TextLayoutManager {
1355
1315
 
1356
1316
  @JvmStatic
1357
1317
  fun measureLines(
1358
- context: Context,
1318
+ assetManager: AssetManager,
1359
1319
  attributedString: MapBuffer,
1360
1320
  paragraphAttributes: MapBuffer,
1361
1321
  width: Float,
@@ -1364,7 +1324,7 @@ internal object TextLayoutManager {
1364
1324
  ): WritableArray {
1365
1325
  val layout =
1366
1326
  createLayoutForMeasurement(
1367
- context,
1327
+ assetManager,
1368
1328
  attributedString,
1369
1329
  paragraphAttributes,
1370
1330
  width,
@@ -1373,17 +1333,31 @@ internal object TextLayoutManager {
1373
1333
  YogaMeasureMode.EXACTLY,
1374
1334
  reactTextViewManagerCallback,
1375
1335
  )
1376
- return FontMetricsUtil.getFontMetrics(layout.text, layout, context)
1336
+ return FontMetricsUtil.getFontMetrics(
1337
+ layout.text,
1338
+ layout,
1339
+ DisplayMetricsHolder.getWindowDisplayMetrics(),
1340
+ )
1377
1341
  }
1378
1342
 
1379
- private fun isBoring(text: Spannable, paint: TextPaint): BoringLayout.Metrics? =
1380
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
1381
- BoringLayout.isBoring(text, paint)
1382
- } else {
1383
- // Default to include fallback line spacing on Android 13+, like TextView
1384
- // https://cs.android.com/android/_/android/platform/frameworks/base/+/78c774defb238c05c42b34a12b6b3b0c64844ed7
1385
- BoringLayout.isBoring(text, paint, TextDirectionHeuristics.FIRSTSTRONG_LTR, true, null)
1386
- }
1343
+ private fun isBoring(text: Spannable, paint: TextPaint): BoringLayout.Metrics? {
1344
+ val metrics =
1345
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
1346
+ BoringLayout.isBoring(text, paint)
1347
+ } else {
1348
+ // Default to include fallback line spacing on Android 13+, like TextView
1349
+ // https://cs.android.com/android/_/android/platform/frameworks/base/+/78c774defb238c05c42b34a12b6b3b0c64844ed7
1350
+ BoringLayout.isBoring(text, paint, TextDirectionHeuristics.FIRSTSTRONG_LTR, true, null)
1351
+ }
1352
+
1353
+ // BoringLayout.isBoring() sometimes thinks text width is negative for some strings, even on
1354
+ // Android 15+. Fallback to StaticLayout.
1355
+ if (metrics == null || metrics.width < 0) {
1356
+ return null
1357
+ }
1358
+
1359
+ return metrics
1360
+ }
1387
1361
 
1388
1362
  private class CreateLayoutResult(
1389
1363
  val layout: Layout,
@@ -14,7 +14,6 @@ import android.text.TextPaint
14
14
  import android.text.style.MetricAffectingSpan
15
15
  import com.facebook.react.common.ReactConstants
16
16
  import com.facebook.react.common.assets.ReactFontManager
17
- import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
18
17
  import com.facebook.react.views.text.ReactTypefaceUtils
19
18
 
20
19
  /**
@@ -74,9 +73,7 @@ internal class CustomStyleSpan(
74
73
  fontFeatureSettings = fontFeatureSettingsParam
75
74
  setTypeface(typeface)
76
75
  isSubpixelText = true
77
- if (ReactNativeFeatureFlags.enableAndroidLinearText()) {
78
- isLinearText = true
79
- }
76
+ isLinearText = true
80
77
  }
81
78
  }
82
79
  }
@@ -12,7 +12,7 @@ import android.text.Layout
12
12
  import android.text.style.UpdateAppearance
13
13
 
14
14
  /**
15
- * May be overriden to implement charater styles which are applied by [PreparedLayoutTextView]
15
+ * May be overridden to implement character styles which are applied by [PreparedLayoutTextView]
16
16
  * during the drawing of text, against the underlying Android canvas
17
17
  */
18
18
  public abstract class DrawCommandSpan : UpdateAppearance, ReactSpan {
@@ -62,8 +62,6 @@ import com.facebook.react.uimanager.PixelUtil.toDIPFromPixel
62
62
  import com.facebook.react.uimanager.ReactAccessibilityDelegate
63
63
  import com.facebook.react.uimanager.StateWrapper
64
64
  import com.facebook.react.uimanager.UIManagerHelper
65
- import com.facebook.react.uimanager.common.UIManagerType
66
- import com.facebook.react.uimanager.common.ViewUtil.getUIManagerType
67
65
  import com.facebook.react.uimanager.events.EventDispatcher
68
66
  import com.facebook.react.uimanager.style.BorderRadiusProp
69
67
  import com.facebook.react.uimanager.style.BorderStyle
@@ -117,6 +115,7 @@ public open class ReactEditText public constructor(context: Context) : AppCompat
117
115
  private var listeners: CopyOnWriteArrayList<TextWatcher>?
118
116
 
119
117
  public var stagedInputType: Int
118
+ internal var stagedAutoCapitalize: Int = 0
120
119
  public var submitBehavior: String? = null
121
120
  public var dragAndDropFilter: List<String>? = null
122
121
 
@@ -655,14 +654,12 @@ public open class ReactEditText public constructor(context: Context) : AppCompat
655
654
  paintFlags and Paint.SUBPIXEL_TEXT_FLAG.inv()
656
655
  }
657
656
 
658
- if (ReactNativeFeatureFlags.enableAndroidLinearText()) {
659
- paintFlags =
660
- if (enableSubpixelText) {
661
- paintFlags or Paint.LINEAR_TEXT_FLAG
662
- } else {
663
- paintFlags and Paint.LINEAR_TEXT_FLAG.inv()
664
- }
665
- }
657
+ paintFlags =
658
+ if (enableSubpixelText) {
659
+ paintFlags or Paint.LINEAR_TEXT_FLAG
660
+ } else {
661
+ paintFlags and Paint.LINEAR_TEXT_FLAG.inv()
662
+ }
666
663
  }
667
664
 
668
665
  public fun requestFocusFromJS() {
@@ -1159,9 +1156,6 @@ public open class ReactEditText public constructor(context: Context) : AppCompat
1159
1156
  if (!haveText) {
1160
1157
  if (hint != null && hint.isNotEmpty()) {
1161
1158
  sb.append(hint)
1162
- } else if (getUIManagerType(this) != UIManagerType.FABRIC) {
1163
- // Measure something so we have correct height, even if there's no string.
1164
- sb.append("I")
1165
1159
  }
1166
1160
  }
1167
1161
 
@@ -718,7 +718,9 @@ public open class ReactTextInputManager public constructor() :
718
718
  }
719
719
  }
720
720
 
721
- updateStagedInputTypeFlag(view, AUTOCAPITALIZE_FLAGS, autoCapitalizeValue)
721
+ // Deferred to onAfterUpdateTransaction() so we can reconcile with the resolved
722
+ // keyboard type — AUTOCAPITALIZE_FLAGS collides with numeric inputType flags.
723
+ view.stagedAutoCapitalize = autoCapitalizeValue
722
724
  }
723
725
 
724
726
  @ReactProp(name = "keyboardType")
@@ -882,6 +884,7 @@ public open class ReactTextInputManager public constructor() :
882
884
  override fun onAfterUpdateTransaction(view: ReactEditText) {
883
885
  super.onAfterUpdateTransaction(view)
884
886
  view.maybeUpdateTypeface()
887
+ reconcileAutoCapitalize(view)
885
888
  view.commitStagedInputType()
886
889
  }
887
890
 
@@ -1017,7 +1020,7 @@ public open class ReactTextInputManager public constructor() :
1017
1020
 
1018
1021
  val spanned =
1019
1022
  TextLayoutManager.getOrCreateSpannableForText(
1020
- view.context,
1023
+ view.context.assets,
1021
1024
  attributedString,
1022
1025
  reactTextViewManagerCallback,
1023
1026
  )
@@ -1058,6 +1061,7 @@ public open class ReactTextInputManager public constructor() :
1058
1061
 
1059
1062
  private val REACT_PROPS_AUTOFILL_HINTS_MAP: Map<String, String> =
1060
1063
  mapOf(
1064
+ "2fa-app-otp" to HintConstants.AUTOFILL_HINT_2FA_APP_OTP,
1061
1065
  "birthdate-day" to HintConstants.AUTOFILL_HINT_BIRTH_DATE_DAY,
1062
1066
  "birthdate-full" to HintConstants.AUTOFILL_HINT_BIRTH_DATE_FULL,
1063
1067
  "birthdate-month" to HintConstants.AUTOFILL_HINT_BIRTH_DATE_MONTH,
@@ -1069,7 +1073,13 @@ public open class ReactTextInputManager public constructor() :
1069
1073
  "cc-exp-year" to HintConstants.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR,
1070
1074
  "cc-number" to HintConstants.AUTOFILL_HINT_CREDIT_CARD_NUMBER,
1071
1075
  "email" to HintConstants.AUTOFILL_HINT_EMAIL_ADDRESS,
1076
+ "email-otp" to HintConstants.AUTOFILL_HINT_EMAIL_OTP,
1077
+ "flight-confirmation-code" to HintConstants.AUTOFILL_HINT_FLIGHT_CONFIRMATION_CODE,
1078
+ "flight-number" to HintConstants.AUTOFILL_HINT_FLIGHT_NUMBER,
1072
1079
  "gender" to HintConstants.AUTOFILL_HINT_GENDER,
1080
+ "gift-card-number" to HintConstants.AUTOFILL_HINT_GIFT_CARD_NUMBER,
1081
+ "gift-card-pin" to HintConstants.AUTOFILL_HINT_GIFT_CARD_PIN,
1082
+ "loyalty-account-number" to HintConstants.AUTOFILL_HINT_LOYALTY_ACCOUNT_NUMBER,
1073
1083
  "name" to HintConstants.AUTOFILL_HINT_PERSON_NAME,
1074
1084
  "name-family" to HintConstants.AUTOFILL_HINT_PERSON_NAME_FAMILY,
1075
1085
  "name-given" to HintConstants.AUTOFILL_HINT_PERSON_NAME_GIVEN,
@@ -1081,19 +1091,25 @@ public open class ReactTextInputManager public constructor() :
1081
1091
  "password-new" to HintConstants.AUTOFILL_HINT_NEW_PASSWORD,
1082
1092
  "postal-address" to HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS,
1083
1093
  "postal-address-country" to HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_COUNTRY,
1094
+ "postal-address-dependent-locality" to
1095
+ HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_DEPENDENT_LOCALITY,
1084
1096
  "postal-address-extended" to
1085
1097
  HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_EXTENDED_ADDRESS,
1086
1098
  "postal-address-extended-postal-code" to
1087
1099
  HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_EXTENDED_POSTAL_CODE,
1088
1100
  "postal-address-locality" to HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_LOCALITY,
1089
1101
  "postal-address-region" to HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_REGION,
1102
+ "postal-address-unit" to HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_APT_NUMBER,
1090
1103
  "postal-code" to HintConstants.AUTOFILL_HINT_POSTAL_CODE,
1104
+ "promo-code" to HintConstants.AUTOFILL_HINT_PROMO_CODE,
1091
1105
  "street-address" to HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_STREET_ADDRESS,
1092
1106
  "sms-otp" to HintConstants.AUTOFILL_HINT_SMS_OTP,
1093
1107
  "tel" to HintConstants.AUTOFILL_HINT_PHONE_NUMBER,
1094
1108
  "tel-country-code" to HintConstants.AUTOFILL_HINT_PHONE_COUNTRY_CODE,
1095
1109
  "tel-national" to HintConstants.AUTOFILL_HINT_PHONE_NATIONAL,
1096
1110
  "tel-device" to HintConstants.AUTOFILL_HINT_PHONE_NUMBER_DEVICE,
1111
+ "upi-vpa" to HintConstants.AUTOFILL_HINT_UPI_VPA,
1112
+ "wifi-password" to HintConstants.AUTOFILL_HINT_WIFI_PASSWORD,
1097
1113
  "username" to HintConstants.AUTOFILL_HINT_USERNAME,
1098
1114
  "username-new" to HintConstants.AUTOFILL_HINT_NEW_USERNAME,
1099
1115
  )
@@ -1134,6 +1150,28 @@ public open class ReactTextInputManager public constructor() :
1134
1150
 
1135
1151
  private const val IME_ACTION_ID = 0x670
1136
1152
 
1153
+ // AUTOCAPITALIZE_FLAGS (0x7000) shares bit positions with TYPE_NUMBER_FLAG_SIGNED
1154
+ // (0x1000) and TYPE_NUMBER_FLAG_DECIMAL (0x2000). We apply autocapitalize here
1155
+ // after all props are set so the resolved input class determines whether the
1156
+ // flags are meaningful.
1157
+ private fun reconcileAutoCapitalize(view: ReactEditText) {
1158
+ val autoCapValue = view.stagedAutoCapitalize
1159
+ val inputClass = view.stagedInputType and InputType.TYPE_MASK_CLASS
1160
+
1161
+ // Only strip 0x4000 (CAP_SENTENCES) for non-text classes — 0x1000/0x2000 are
1162
+ // valid numeric flags (SIGNED/DECIMAL) and must not be cleared.
1163
+ val reconciled =
1164
+ if (inputClass == InputType.TYPE_CLASS_TEXT) {
1165
+ (view.stagedInputType and AUTOCAPITALIZE_FLAGS.inv()) or autoCapValue
1166
+ } else {
1167
+ view.stagedInputType and InputType.TYPE_TEXT_FLAG_CAP_SENTENCES.inv()
1168
+ }
1169
+
1170
+ if (view.stagedInputType != reconciled) {
1171
+ view.stagedInputType = reconciled
1172
+ }
1173
+ }
1174
+
1137
1175
  // Sets the correct password type, since numeric and text passwords have different types
1138
1176
  private fun checkPasswordType(view: ReactEditText) {
1139
1177
  if (
@@ -15,10 +15,16 @@ import android.graphics.drawable.ColorDrawable
15
15
  import android.graphics.drawable.Drawable
16
16
  import android.graphics.drawable.RippleDrawable
17
17
  import android.util.TypedValue
18
+ import com.facebook.common.logging.FLog
19
+ import com.facebook.react.bridge.ColorPropConverter
20
+ import com.facebook.react.bridge.JSApplicationCausedNativeException
18
21
  import com.facebook.react.bridge.JSApplicationIllegalArgumentException
19
22
  import com.facebook.react.bridge.ReadableMap
23
+ import com.facebook.react.bridge.ReadableType
24
+ import com.facebook.react.common.ReactConstants
20
25
  import com.facebook.react.uimanager.PixelUtil
21
26
  import com.facebook.react.uimanager.ViewProps
27
+ import kotlin.math.roundToInt
22
28
 
23
29
  /**
24
30
  * Utility class that helps with converting android drawable description used in JS to an actual
@@ -73,11 +79,21 @@ public object ReactDrawableHelper {
73
79
  context: Context,
74
80
  drawableDescriptionDict: ReadableMap,
75
81
  ): RippleDrawable {
76
- val color = getColor(context, drawableDescriptionDict)
77
- val mask = getMask(drawableDescriptionDict)
78
- val colorStateList = ColorStateList(arrayOf(intArrayOf()), intArrayOf(color))
82
+ val resolvedColor = getColor(context, drawableDescriptionDict)
83
+ var color = resolvedColor ?: getFallbackColor(context)
84
+
85
+ if (
86
+ resolvedColor != null &&
87
+ drawableDescriptionDict.hasKey("alpha") &&
88
+ !drawableDescriptionDict.isNull("alpha")
89
+ ) {
90
+ val alphaFactor = drawableDescriptionDict.getDouble("alpha").coerceIn(0.0, 1.0)
91
+ val newAlpha = (Color.alpha(color) * alphaFactor).roundToInt()
92
+ color = Color.argb(newAlpha, Color.red(color), Color.green(color), Color.blue(color))
93
+ }
79
94
 
80
- return RippleDrawable(colorStateList, null, mask)
95
+ val mask = getMask(drawableDescriptionDict)
96
+ return RippleDrawable(ColorStateList(arrayOf(intArrayOf()), intArrayOf(color)), null, mask)
81
97
  }
82
98
 
83
99
  private fun setRadius(drawableDescriptionDict: ReadableMap, drawable: Drawable?): Drawable? {
@@ -88,26 +104,49 @@ public object ReactDrawableHelper {
88
104
  return drawable
89
105
  }
90
106
 
91
- private fun getColor(context: Context, drawableDescriptionDict: ReadableMap): Int =
92
- if (
93
- drawableDescriptionDict.hasKey(ViewProps.COLOR) &&
94
- !drawableDescriptionDict.isNull(ViewProps.COLOR)
95
- ) {
96
- drawableDescriptionDict.getInt(ViewProps.COLOR)
97
- } else {
107
+ /**
108
+ * Returns the resolved ripple color, or null if none was provided or the PlatformColor resource
109
+ * couldn't be found.
110
+ */
111
+ private fun getColor(context: Context, drawableDescriptionDict: ReadableMap): Int? {
112
+ val rawColor: Any? =
98
113
  if (
99
- context.theme.resolveAttribute(
100
- android.R.attr.colorControlHighlight,
101
- resolveOutValue,
102
- true,
103
- )
114
+ drawableDescriptionDict.hasKey(ViewProps.COLOR) &&
115
+ !drawableDescriptionDict.isNull(ViewProps.COLOR)
104
116
  ) {
105
- context.resources.getColor(resolveOutValue.resourceId, context.theme)
117
+ when (drawableDescriptionDict.getType(ViewProps.COLOR)) {
118
+ ReadableType.Number -> drawableDescriptionDict.getDouble(ViewProps.COLOR)
119
+ ReadableType.Map -> drawableDescriptionDict.getMap(ViewProps.COLOR)
120
+ else -> null
121
+ }
106
122
  } else {
107
- throw JSApplicationIllegalArgumentException(
108
- "Attribute colorControlHighlight couldn't be resolved into a drawable"
109
- )
123
+ null
110
124
  }
125
+ return try {
126
+ ColorPropConverter.getColor(rawColor, context)
127
+ } catch (e: JSApplicationCausedNativeException) {
128
+ FLog.w(
129
+ ReactConstants.TAG,
130
+ e,
131
+ "android_ripple: color resource not found, using colorControlHighlight",
132
+ )
133
+ null
134
+ }
135
+ }
136
+
137
+ private fun getFallbackColor(context: Context): Int =
138
+ if (
139
+ context.theme.resolveAttribute(
140
+ android.R.attr.colorControlHighlight,
141
+ resolveOutValue,
142
+ true,
143
+ )
144
+ ) {
145
+ context.resources.getColor(resolveOutValue.resourceId, context.theme)
146
+ } else {
147
+ throw JSApplicationIllegalArgumentException(
148
+ "Attribute colorControlHighlight couldn't be resolved into a drawable"
149
+ )
111
150
  }
112
151
 
113
152
  private fun getMask(drawableDescriptionDict: ReadableMap): Drawable? {