react-native-tvos 0.82.1-0 → 0.83.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 (1432) hide show
  1. package/Libraries/Animated/components/AnimatedFlatList.js +5 -3
  2. package/Libraries/Animated/components/AnimatedImage.js +4 -3
  3. package/Libraries/Animated/components/AnimatedSectionList.js +2 -2
  4. package/Libraries/Animated/components/AnimatedText.js +7 -3
  5. package/Libraries/Animated/components/AnimatedView.js +3 -2
  6. package/Libraries/Animated/createAnimatedComponent.js +24 -12
  7. package/Libraries/Animated/nodes/AnimatedColor.js +26 -10
  8. package/Libraries/AppDelegate/RCTAppDelegate.h +0 -2
  9. package/Libraries/AppDelegate/RCTAppDelegate.mm +1 -0
  10. package/Libraries/AppDelegate/RCTAppSetupUtils.mm +16 -4
  11. package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +5 -3
  12. package/Libraries/AppDelegate/RCTReactNativeFactory.h +3 -0
  13. package/Libraries/AppDelegate/RCTReactNativeFactory.mm +36 -1
  14. package/Libraries/AppDelegate/RCTRootViewFactory.h +13 -1
  15. package/Libraries/AppDelegate/RCTRootViewFactory.mm +33 -6
  16. package/Libraries/Blob/RCTBlobCollector.mm +1 -1
  17. package/Libraries/Blob/RCTFileReaderModule.mm +6 -9
  18. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +43 -15
  19. package/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts +2 -2
  20. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +2 -2
  21. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts +2 -2
  22. package/Libraries/Components/RefreshControl/RefreshControl.d.ts +3 -3
  23. package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +2 -2
  24. package/Libraries/Components/ScrollView/ScrollView.js +1 -0
  25. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +6 -6
  26. package/Libraries/Components/Switch/Switch.d.ts +2 -2
  27. package/Libraries/Components/TextInput/TextInput.d.ts +2 -5
  28. package/Libraries/Components/TextInput/TextInput.js +6 -0
  29. package/Libraries/Components/Touchable/TouchableBounce.js +7 -7
  30. package/Libraries/Components/View/ReactNativeStyleAttributes.js +19 -1
  31. package/Libraries/Components/View/View.d.ts +2 -2
  32. package/Libraries/Components/View/ViewNativeComponent.js +14 -0
  33. package/Libraries/Core/ReactNativeVersion.js +2 -2
  34. package/Libraries/Core/setUpPerformance.js +2 -0
  35. package/Libraries/Debugging/DebuggingOverlay.js +14 -14
  36. package/Libraries/Debugging/DebuggingOverlayRegistry.js +8 -2
  37. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +5 -2
  38. package/Libraries/FBLazyVector/FBLazyVector/FBLazyIterator.h +39 -23
  39. package/Libraries/FBLazyVector/FBLazyVector/FBLazyVector.h +25 -15
  40. package/Libraries/Image/Image.d.ts +3 -3
  41. package/Libraries/Image/ImageInjection.js +3 -6
  42. package/Libraries/Image/ImageTypes.flow.js +3 -7
  43. package/Libraries/Image/RCTBundleAssetImageLoader.mm +2 -2
  44. package/Libraries/Image/RCTGIFImageDecoder.mm +2 -2
  45. package/Libraries/Image/RCTImageBlurUtils.mm +6 -5
  46. package/Libraries/Image/RCTImageEditingManager.mm +3 -5
  47. package/Libraries/Image/RCTImageLoader.mm +26 -37
  48. package/Libraries/Image/RCTImageShadowView.h +1 -1
  49. package/Libraries/Image/RCTImageShadowView.mm +1 -1
  50. package/Libraries/Image/RCTImageStoreManager.mm +13 -15
  51. package/Libraries/Image/RCTImageUtils.mm +41 -30
  52. package/Libraries/Image/RCTImageView.h +2 -2
  53. package/Libraries/Image/RCTImageView.mm +2 -2
  54. package/Libraries/Image/RCTImageViewManager.h +2 -2
  55. package/Libraries/Image/RCTImageViewManager.mm +13 -18
  56. package/Libraries/Image/RCTLocalAssetImageLoader.mm +2 -2
  57. package/Libraries/LinkingIOS/RCTLinkingManager.mm +8 -14
  58. package/Libraries/Lists/FlatList.js +8 -8
  59. package/Libraries/Lists/SectionList.d.ts +5 -1
  60. package/Libraries/Lists/ViewabilityHelper.js +1 -1
  61. package/Libraries/Lists/VirtualizedList.js +1 -0
  62. package/Libraries/LogBox/UI/AnsiHighlight.js +4 -1
  63. package/Libraries/NativeAnimation/Drivers/RCTEventAnimation.mm +1 -1
  64. package/Libraries/NativeAnimation/Nodes/RCTAnimatedNode.mm +9 -9
  65. package/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.mm +3 -3
  66. package/Libraries/NativeAnimation/Nodes/RCTObjectAnimatedNode.mm +1 -1
  67. package/Libraries/NativeAnimation/Nodes/RCTStyleAnimatedNode.mm +3 -3
  68. package/Libraries/NativeAnimation/Nodes/RCTTrackingAnimatedNode.mm +1 -1
  69. package/Libraries/NativeAnimation/Nodes/RCTTransformAnimatedNode.mm +1 -1
  70. package/Libraries/NativeAnimation/RCTAnimationUtils.mm +8 -2
  71. package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +9 -13
  72. package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.mm +9 -9
  73. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +9 -13
  74. package/Libraries/NativeComponent/BaseViewConfig.android.js +11 -2
  75. package/Libraries/NativeComponent/NativeComponentRegistry.d.ts +98 -0
  76. package/Libraries/NativeComponent/NativeComponentRegistry.js +2 -0
  77. package/Libraries/NativeComponent/NativeComponentRegistryUnstable.js +3 -1
  78. package/Libraries/Network/RCTDataRequestHandler.mm +4 -4
  79. package/Libraries/Network/RCTHTTPRequestHandler.h +1 -1
  80. package/Libraries/Network/RCTHTTPRequestHandler.mm +4 -4
  81. package/Libraries/Network/RCTInspectorNetworkReporter.h +8 -8
  82. package/Libraries/Network/RCTInspectorNetworkReporter.mm +20 -22
  83. package/Libraries/Network/RCTNetworkTask.h +5 -1
  84. package/Libraries/Network/RCTNetworkTask.mm +13 -0
  85. package/Libraries/Network/RCTNetworking+Internal.h +21 -0
  86. package/Libraries/Network/RCTNetworking.android.js +3 -1
  87. package/Libraries/Network/RCTNetworking.h +3 -0
  88. package/Libraries/Network/RCTNetworking.ios.js +3 -0
  89. package/Libraries/Network/RCTNetworking.mm +84 -37
  90. package/Libraries/Network/React-RCTNetwork.podspec +1 -0
  91. package/Libraries/Network/XMLHttpRequest.js +1 -41
  92. package/Libraries/Pressability/usePressability.js +14 -3
  93. package/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +5 -7
  94. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +20 -82
  95. package/Libraries/ReactNative/getNativeComponentAttributes.js +12 -0
  96. package/Libraries/Renderer/implementations/ReactFabric-dev.js +6759 -4478
  97. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3169 -3119
  98. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +4732 -3535
  99. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +6646 -4070
  100. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3136 -2825
  101. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +4761 -3312
  102. package/Libraries/Renderer/shims/ReactNative.js +3 -1
  103. package/Libraries/Renderer/shims/ReactNativeTypes.js +2 -1
  104. package/Libraries/Required/RCTRequired.h +14 -10
  105. package/Libraries/Settings/RCTSettingsManager.mm +2 -2
  106. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +1 -1
  107. package/Libraries/StyleSheet/StyleSheetTypes.js +44 -0
  108. package/Libraries/StyleSheet/processBackgroundPosition.js +284 -0
  109. package/Libraries/StyleSheet/processBackgroundRepeat.js +105 -0
  110. package/Libraries/StyleSheet/processBackgroundSize.js +104 -0
  111. package/Libraries/Text/BaseText/RCTBaseTextShadowView.h +2 -2
  112. package/Libraries/Text/BaseText/RCTBaseTextShadowView.mm +2 -2
  113. package/Libraries/Text/BaseText/RCTBaseTextViewManager.h +2 -2
  114. package/Libraries/Text/BaseText/RCTBaseTextViewManager.mm +2 -2
  115. package/Libraries/Text/RCTTextAttributes.h +2 -2
  116. package/Libraries/Text/RCTTextAttributes.mm +2 -2
  117. package/Libraries/Text/RawText/RCTRawTextShadowView.h +2 -2
  118. package/Libraries/Text/RawText/RCTRawTextShadowView.mm +2 -2
  119. package/Libraries/Text/RawText/RCTRawTextViewManager.h +2 -2
  120. package/Libraries/Text/RawText/RCTRawTextViewManager.mm +2 -2
  121. package/Libraries/Text/Text/RCTTextShadowView.h +2 -2
  122. package/Libraries/Text/Text/RCTTextShadowView.mm +6 -7
  123. package/Libraries/Text/Text/RCTTextView.h +2 -2
  124. package/Libraries/Text/Text/RCTTextView.mm +2 -2
  125. package/Libraries/Text/Text/RCTTextViewManager.h +2 -2
  126. package/Libraries/Text/Text/RCTTextViewManager.mm +2 -2
  127. package/Libraries/Text/Text.d.ts +2 -2
  128. package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.h +2 -2
  129. package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.mm +2 -2
  130. package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputViewManager.h +2 -2
  131. package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputViewManager.mm +2 -2
  132. package/Libraries/Text/TextInput/RCTBaseTextInputShadowView.h +2 -2
  133. package/Libraries/Text/TextInput/RCTBaseTextInputShadowView.mm +6 -7
  134. package/Libraries/Text/TextInput/RCTBaseTextInputView.h +2 -2
  135. package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +2 -2
  136. package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.h +2 -2
  137. package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +6 -9
  138. package/Libraries/Text/TextInput/RCTInputAccessoryShadowView.h +2 -2
  139. package/Libraries/Text/TextInput/RCTInputAccessoryShadowView.mm +2 -2
  140. package/Libraries/Text/TextInput/RCTInputAccessoryView.h +2 -2
  141. package/Libraries/Text/TextInput/RCTInputAccessoryView.mm +2 -2
  142. package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.h +2 -2
  143. package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.mm +2 -2
  144. package/Libraries/Text/TextInput/RCTInputAccessoryViewManager.h +2 -2
  145. package/Libraries/Text/TextInput/RCTInputAccessoryViewManager.mm +2 -2
  146. package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputView.h +2 -2
  147. package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputView.mm +2 -2
  148. package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.h +2 -2
  149. package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.mm +2 -2
  150. package/Libraries/Text/TextNativeComponent.js +10 -0
  151. package/Libraries/Text/VirtualText/RCTVirtualTextShadowView.h +2 -2
  152. package/Libraries/Text/VirtualText/RCTVirtualTextShadowView.mm +2 -2
  153. package/Libraries/Text/VirtualText/RCTVirtualTextView.h +2 -2
  154. package/Libraries/Text/VirtualText/RCTVirtualTextView.mm +2 -2
  155. package/Libraries/Text/VirtualText/RCTVirtualTextViewManager.h +2 -2
  156. package/Libraries/Text/VirtualText/RCTVirtualTextViewManager.mm +2 -2
  157. package/Libraries/TurboModule/TurboModuleRegistry.js +3 -9
  158. package/Libraries/TypeSafety/RCTConvertHelpers.h +1 -1
  159. package/Libraries/TypeSafety/RCTTypedModuleConstants.mm +3 -5
  160. package/Libraries/Utilities/DevLoadingView.js +14 -6
  161. package/Libraries/Utilities/HMRClient.js +13 -5
  162. package/Libraries/Wrapper/Example/RCTWrapperExampleView.h +2 -2
  163. package/Libraries/Wrapper/Example/RCTWrapperExampleView.m +2 -2
  164. package/Libraries/Wrapper/Example/RCTWrapperExampleViewController.h +2 -2
  165. package/Libraries/Wrapper/Example/RCTWrapperExampleViewController.m +2 -2
  166. package/Libraries/Wrapper/Example/RCTWrapperReactRootViewController.h +2 -2
  167. package/Libraries/Wrapper/Example/RCTWrapperReactRootViewController.m +2 -2
  168. package/Libraries/Wrapper/Example/RCTWrapperReactRootViewManager.h +2 -2
  169. package/Libraries/Wrapper/Example/RCTWrapperReactRootViewManager.m +2 -2
  170. package/Libraries/Wrapper/RCTWrapper.h +2 -2
  171. package/Libraries/Wrapper/RCTWrapperShadowView.h +2 -2
  172. package/Libraries/Wrapper/RCTWrapperShadowView.m +2 -2
  173. package/Libraries/Wrapper/RCTWrapperView.h +2 -2
  174. package/Libraries/Wrapper/RCTWrapperView.m +2 -2
  175. package/Libraries/Wrapper/RCTWrapperViewControllerHostingView.h +2 -2
  176. package/Libraries/Wrapper/RCTWrapperViewControllerHostingView.m +2 -2
  177. package/Libraries/Wrapper/RCTWrapperViewManager.h +2 -2
  178. package/Libraries/Wrapper/RCTWrapperViewManager.m +2 -2
  179. package/README-core.md +5 -2
  180. package/React/Base/RCTAssert.h +7 -42
  181. package/React/Base/RCTAssert.m +1 -113
  182. package/React/Base/RCTBridge+Private.h +4 -4
  183. package/React/Base/RCTBridge.mm +5 -6
  184. package/React/Base/RCTBridgeDelegate.h +2 -2
  185. package/React/Base/RCTBridgeModule.h +24 -10
  186. package/React/Base/RCTBridgeProxy.mm +8 -8
  187. package/React/Base/RCTBundleManager.h +2 -2
  188. package/React/Base/RCTBundleManager.m +10 -10
  189. package/React/Base/RCTBundleURLProvider.mm +4 -4
  190. package/React/Base/RCTCallableJSModules.m +6 -6
  191. package/React/Base/RCTConvert.h +8 -3
  192. package/React/Base/RCTConvert.mm +2 -2
  193. package/React/Base/RCTDefines.h +0 -10
  194. package/React/Base/RCTJavaScriptExecutor.h +2 -2
  195. package/React/Base/RCTLog.h +6 -4
  196. package/React/Base/RCTMockDef.h +3 -6
  197. package/React/Base/RCTModuleData.mm +3 -3
  198. package/React/Base/RCTModuleMethod.mm +13 -11
  199. package/React/Base/RCTModuleRegistry.m +8 -8
  200. package/React/Base/RCTRootContentView.h +2 -2
  201. package/React/Base/RCTRootContentView.m +2 -2
  202. package/React/Base/RCTRootView.m +3 -3
  203. package/React/Base/RCTRootViewInternal.h +2 -2
  204. package/React/Base/RCTUtils.mm +5 -5
  205. package/React/Base/RCTVersion.m +2 -2
  206. package/React/Base/RCTViewRegistry.m +8 -8
  207. package/React/Base/Surface/RCTSurface.mm +3 -4
  208. package/React/Base/Surface/RCTSurfaceRootShadowView.m +3 -3
  209. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceSizeMeasureMode.mm +4 -4
  210. package/React/CoreModules/RCTAccessibilityManager.mm +25 -30
  211. package/React/CoreModules/RCTActionSheetManager.mm +38 -20
  212. package/React/CoreModules/RCTAlertController.mm +2 -2
  213. package/React/CoreModules/RCTAlertManager.mm +2 -2
  214. package/React/CoreModules/RCTAppearance.h +1 -1
  215. package/React/CoreModules/RCTDevLoadingView.mm +6 -14
  216. package/React/CoreModules/RCTDevMenu.h +30 -1
  217. package/React/CoreModules/RCTDevMenu.mm +99 -19
  218. package/React/CoreModules/RCTDevMenuConfigurationDecorator.h +23 -0
  219. package/React/CoreModules/RCTDevMenuConfigurationDecorator.mm +52 -0
  220. package/React/CoreModules/RCTDevSettings.h +5 -0
  221. package/React/CoreModules/RCTDevSettings.mm +8 -1
  222. package/React/CoreModules/RCTDevToolsRuntimeSettingsModule.mm +2 -2
  223. package/React/CoreModules/RCTDeviceInfo.h +2 -0
  224. package/React/CoreModules/RCTDeviceInfo.mm +21 -4
  225. package/React/CoreModules/RCTEventDispatcher.mm +10 -8
  226. package/React/CoreModules/RCTExceptionsManager.mm +13 -15
  227. package/React/CoreModules/RCTFPSGraph.mm +3 -3
  228. package/React/CoreModules/RCTLogBox.mm +8 -8
  229. package/React/CoreModules/RCTLogBoxView.h +2 -2
  230. package/React/CoreModules/RCTLogBoxView.mm +7 -9
  231. package/React/CoreModules/RCTPerfMonitor.mm +19 -19
  232. package/React/CoreModules/RCTTiming.mm +3 -5
  233. package/React/CoreModules/RCTWebSocketModule.mm +3 -5
  234. package/React/CoreModules/React-CoreModules.podspec +1 -0
  235. package/React/CxxBridge/RCTCxxBridge.mm +9 -28
  236. package/React/CxxBridge/RCTJSIExecutorRuntimeInstaller.h +3 -4
  237. package/React/CxxBridge/RCTJSIExecutorRuntimeInstaller.mm +2 -2
  238. package/React/CxxBridge/RCTMessageThread.h +6 -7
  239. package/React/CxxBridge/RCTMessageThread.mm +1 -1
  240. package/React/CxxBridge/RCTObjcExecutor.h +4 -7
  241. package/React/CxxBridge/RCTObjcExecutor.mm +5 -5
  242. package/React/CxxLogUtils/RCTDefaultCxxLogFunction.h +1 -1
  243. package/React/CxxModule/DispatchMessageQueueThread.h +2 -2
  244. package/React/CxxModule/RCTCxxMethod.mm +1 -1
  245. package/React/CxxModule/RCTCxxUtils.h +2 -2
  246. package/React/CxxModule/RCTCxxUtils.mm +8 -7
  247. package/React/CxxModule/RCTNativeModule.h +8 -12
  248. package/React/CxxModule/RCTNativeModule.mm +7 -7
  249. package/React/DevSupport/RCTInspectorDevServerHelper.mm +4 -4
  250. package/React/DevSupport/RCTInspectorNetworkHelper.mm +2 -2
  251. package/React/DevSupport/RCTPackagerConnection.h +1 -1
  252. package/React/DevSupport/RCTPackagerConnection.mm +1 -0
  253. package/React/DevSupport/RCTPausedInDebuggerOverlayController.mm +1 -1
  254. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +6 -0
  255. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +3709 -5764
  256. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/Props.cpp +8 -2
  257. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/Props.h +1 -0
  258. package/React/Fabric/AppleEventBeat.h +3 -4
  259. package/React/Fabric/Mounting/ComponentViews/Modal/RCTFabricModalHostViewController.mm +2 -2
  260. package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +6 -2
  261. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +2 -1
  262. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +311 -51
  263. package/React/Fabric/Mounting/RCTComponentViewFactory.mm +3 -11
  264. package/React/Fabric/Mounting/RCTMountingManager.mm +1 -1
  265. package/React/Fabric/Mounting/RCTMountingTransactionObserverCoordinator.h +7 -10
  266. package/React/Fabric/RCTSurfacePointerHandler.mm +1 -1
  267. package/React/Fabric/RCTSurfaceTouchHandler.mm +1 -1
  268. package/React/Fabric/Utils/PlatformRunLoopObserver.h +5 -11
  269. package/React/Fabric/Utils/PlatformRunLoopObserver.mm +1 -1
  270. package/React/Fabric/Utils/RCTBackgroundImageUtils.h +28 -0
  271. package/React/Fabric/Utils/RCTBackgroundImageUtils.mm +209 -0
  272. package/React/Fabric/Utils/RCTBoxShadow.mm +1 -1
  273. package/React/Fabric/Utils/RCTGradientUtils.mm +4 -0
  274. package/React/Fabric/Utils/RCTIdentifierPool.h +6 -3
  275. package/React/Fabric/Utils/RCTLinearGradient.mm +1 -0
  276. package/React/Fabric/Utils/RCTRadialGradient.mm +11 -9
  277. package/React/Inspector/RCTCxxInspectorPackagerConnectionDelegate.h +5 -8
  278. package/React/Inspector/RCTCxxInspectorPackagerConnectionDelegate.mm +1 -1
  279. package/React/Inspector/RCTCxxInspectorWebSocketAdapter.mm +2 -2
  280. package/React/Modules/RCTUIManager.mm +36 -55
  281. package/React/Profiler/RCTProfile.h +6 -6
  282. package/React/Profiler/RCTProfile.m +47 -44
  283. package/React/React-RCTFabric.podspec +2 -1
  284. package/React/Runtime/React-RCTRuntime.podspec +1 -0
  285. package/React/Views/RCTActivityIndicatorView.h +2 -2
  286. package/React/Views/RCTActivityIndicatorView.m +2 -2
  287. package/React/Views/RCTActivityIndicatorViewManager.h +3 -3
  288. package/React/Views/RCTActivityIndicatorViewManager.m +2 -2
  289. package/React/Views/RCTBorderDrawing.h +1 -1
  290. package/React/Views/RCTBorderDrawing.m +37 -35
  291. package/React/Views/RCTComponentData.mm +19 -19
  292. package/React/Views/RCTConvert+CoreLocation.m +2 -2
  293. package/React/Views/RCTDebuggingOverlayManager.h +2 -2
  294. package/React/Views/RCTDebuggingOverlayManager.m +2 -2
  295. package/React/Views/RCTFont+Private.h +16 -0
  296. package/React/Views/RCTFont.h +3 -1
  297. package/React/Views/RCTFont.mm +13 -2
  298. package/React/Views/RCTLayout.m +21 -25
  299. package/React/Views/RCTModalHostView.h +2 -2
  300. package/React/Views/RCTModalHostView.m +2 -2
  301. package/React/Views/RCTModalHostViewController.h +2 -2
  302. package/React/Views/RCTModalHostViewController.m +2 -2
  303. package/React/Views/RCTModalHostViewManager.h +2 -2
  304. package/React/Views/RCTModalHostViewManager.m +2 -2
  305. package/React/Views/RCTModalManager.h +2 -2
  306. package/React/Views/RCTModalManager.m +2 -2
  307. package/React/Views/RCTRootShadowView.m +3 -3
  308. package/React/Views/RCTShadowView+Layout.m +12 -15
  309. package/React/Views/RCTShadowView.m +5 -6
  310. package/React/Views/RCTSwitch.h +2 -2
  311. package/React/Views/RCTSwitch.m +2 -2
  312. package/React/Views/RCTSwitchManager.h +2 -2
  313. package/React/Views/RCTSwitchManager.m +2 -2
  314. package/React/Views/RCTViewManager.m +2 -2
  315. package/React/Views/RefreshControl/RCTRefreshControl.h +2 -2
  316. package/React/Views/RefreshControl/RCTRefreshControl.m +2 -2
  317. package/React/Views/RefreshControl/RCTRefreshControlManager.h +2 -2
  318. package/React/Views/RefreshControl/RCTRefreshControlManager.m +2 -2
  319. package/React/Views/SafeAreaView/RCTSafeAreaShadowView.h +2 -2
  320. package/React/Views/SafeAreaView/RCTSafeAreaShadowView.m +2 -2
  321. package/React/Views/SafeAreaView/RCTSafeAreaView.h +2 -2
  322. package/React/Views/SafeAreaView/RCTSafeAreaView.m +2 -2
  323. package/React/Views/SafeAreaView/RCTSafeAreaViewLocalData.h +2 -2
  324. package/React/Views/SafeAreaView/RCTSafeAreaViewLocalData.m +2 -2
  325. package/React/Views/SafeAreaView/RCTSafeAreaViewManager.h +2 -2
  326. package/React/Views/SafeAreaView/RCTSafeAreaViewManager.m +2 -2
  327. package/React/Views/ScrollView/RCTScrollContentShadowView.h +2 -2
  328. package/React/Views/ScrollView/RCTScrollContentShadowView.m +2 -2
  329. package/React/Views/ScrollView/RCTScrollContentView.h +2 -2
  330. package/React/Views/ScrollView/RCTScrollContentView.m +2 -2
  331. package/React/Views/ScrollView/RCTScrollContentViewManager.h +2 -2
  332. package/React/Views/ScrollView/RCTScrollContentViewManager.m +2 -2
  333. package/React/Views/ScrollView/RCTScrollView.h +2 -2
  334. package/React/Views/ScrollView/RCTScrollView.m +6 -7
  335. package/React/Views/ScrollView/RCTScrollViewManager.h +3 -3
  336. package/React/Views/ScrollView/RCTScrollViewManager.m +4 -7
  337. package/ReactAndroid/api/ReactAndroid.api +92 -10
  338. package/ReactAndroid/build.gradle.kts +8 -5
  339. package/ReactAndroid/external-artifacts/build.gradle.kts +2 -47
  340. package/ReactAndroid/gradle.properties +1 -1
  341. package/ReactAndroid/hermes-engine/build.gradle.kts +4 -11
  342. package/ReactAndroid/proguard-rules.pro +5 -0
  343. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +25 -1
  344. package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.kt +5 -1
  345. package/ReactAndroid/src/main/java/com/facebook/react/ReactHost.kt +21 -0
  346. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +0 -11
  347. package/ReactAndroid/src/main/java/com/facebook/react/animated/InterpolationAnimatedNode.kt +2 -2
  348. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +1 -1
  349. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContextBaseJavaModule.kt +1 -1
  350. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableNativeArray.kt +37 -9
  351. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableNativeMap.kt +87 -50
  352. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultNewArchitectureEntryPoint.kt +1 -7
  353. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgelessDevSupportManager.kt +1 -1
  354. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/CxxInspectorPackagerConnection.kt +1 -0
  355. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevLoadingViewImplementation.kt +13 -3
  356. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevMenuConfiguration.kt +20 -0
  357. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.kt +5 -1
  358. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt +134 -31
  359. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/ReleaseDevSupportManager.kt +13 -1
  360. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkRequestListener.kt +7 -0
  361. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevLoadingViewManager.kt +2 -0
  362. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.kt +16 -0
  363. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorDevHelper.kt +4 -0
  364. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorInspectorTargetBinding.kt +13 -2
  365. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayManager.kt +108 -0
  366. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt +219 -0
  367. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorUpdateListener.kt +4 -9
  368. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +41 -56
  369. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.kt +47 -32
  370. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.kt +13 -26
  371. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +143 -5
  372. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/DestroyUnmountedViewMountItem.kt +3 -3
  373. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.kt +2 -4
  374. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PrefetchResourcesMountItem.kt +35 -0
  375. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SendAccessibilityEventMountItem.kt +6 -6
  376. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SynchronousMountItem.kt +38 -0
  377. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +101 -11
  378. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +170 -20
  379. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +35 -5
  380. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +40 -10
  381. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +188 -23
  382. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android.kt +2 -2
  383. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -1
  384. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +3 -9
  385. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +35 -5
  386. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlagsDefaults.kt +5 -3
  387. package/ReactAndroid/src/main/java/com/facebook/react/internal/tracing/PerformanceTracer.kt +109 -0
  388. package/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.kt +3 -3
  389. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +12 -0
  390. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JavaTimerManager.kt +9 -2
  391. package/ReactAndroid/src/main/java/com/facebook/react/modules/devloading/DevLoadingModule.kt +3 -1
  392. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.kt +2 -2
  393. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/InspectorNetworkReporter.kt +11 -11
  394. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +20 -11
  395. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +126 -11
  396. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ProgressRequestBody.kt +20 -0
  397. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoHelpers.kt +3 -3
  398. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoModule.kt +1 -10
  399. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +2 -2
  400. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/PackagerConnectionSettings.kt +20 -4
  401. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.kt +13 -2
  402. package/ReactAndroid/src/main/java/com/facebook/react/runtime/JSTimerExecutor.kt +9 -4
  403. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +127 -91
  404. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImplDevHelper.kt +1 -1
  405. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostInspectorTarget.kt +15 -12
  406. package/ReactAndroid/src/main/java/com/facebook/react/runtime/{BridgelessReactStateTracker.kt → ReactHostStateTracker.kt} +6 -7
  407. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.kt +1 -5
  408. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactLifecycleStateManager.kt +9 -11
  409. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +0 -8
  410. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +261 -147
  411. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt +14 -1
  412. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ComponentNameResolver.kt +11 -1
  413. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ComponentNameResolverBinding.kt +12 -0
  414. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.kt +6 -1
  415. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FilterHelper.kt +16 -0
  416. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FloatUtil.kt +33 -0
  417. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LengthPercentage.kt +7 -9
  418. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +3 -5
  419. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactRoot.kt +66 -0
  420. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java +1 -3
  421. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.kt +2 -1
  422. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +1 -6
  423. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +2 -2
  424. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +3 -2
  425. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.kt +3 -0
  426. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundDrawable.kt +0 -48
  427. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundImageDrawable.kt +415 -0
  428. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/CompositeBackgroundDrawable.kt +15 -18
  429. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationController.kt +22 -174
  430. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BackgroundImageLayer.kt +1 -3
  431. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BackgroundPosition.kt +59 -0
  432. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BackgroundRepeat.kt +46 -0
  433. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BackgroundSize.kt +103 -0
  434. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderColors.kt +5 -5
  435. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BoxShadow.kt +1 -1
  436. package/ReactAndroid/src/main/java/com/facebook/react/views/image/MultiPostprocessor.kt +1 -1
  437. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +107 -14
  438. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.kt +6 -0
  439. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +101 -16
  440. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +63 -18
  441. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt +6 -0
  442. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.kt +5 -1
  443. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainer.kt +50 -51
  444. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainerStateClassic.kt +92 -0
  445. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainerStateExperimental.kt +526 -0
  446. package/ReactAndroid/src/main/java/com/facebook/react/views/text/DefaultStyleValuesUtil.kt +4 -0
  447. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.kt +3 -5
  448. package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageShadowNode.kt +2 -0
  449. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/ReactTextInlineImageShadowNode.kt +7 -0
  450. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomStyleSpan.kt +4 -0
  451. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +16 -7
  452. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +22 -0
  453. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +78 -1
  454. package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/view/ReactVirtualView.kt +16 -5
  455. package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/viewexperimental/ReactVirtualViewExperimental.kt +61 -3
  456. package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/viewexperimental/ReactVirtualViewExperimentalManager.kt +2 -2
  457. package/ReactAndroid/src/main/jni/CMakeLists.txt +15 -0
  458. package/ReactAndroid/src/main/jni/first-party/fbgloginit/fb/glog_init.h +1 -1
  459. package/ReactAndroid/src/main/jni/first-party/fbgloginit/glog_init.cpp +1 -1
  460. package/ReactAndroid/src/main/jni/first-party/jni-hack/real/jni.h +656 -643
  461. package/ReactAndroid/src/main/jni/first-party/jni-lib-merge/jni_lib_merge.h +57 -59
  462. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +3 -2
  463. package/ReactAndroid/src/main/jni/react/devsupport/CMakeLists.txt +8 -1
  464. package/ReactAndroid/src/main/jni/react/devsupport/JCxxInspectorPackagerConnection.h +10 -12
  465. package/ReactAndroid/src/main/jni/react/devsupport/JCxxInspectorPackagerConnectionDelegateImpl.h +6 -14
  466. package/ReactAndroid/src/main/jni/react/devsupport/JCxxInspectorPackagerConnectionWebSocket.h +2 -4
  467. package/ReactAndroid/src/main/jni/react/devsupport/JCxxInspectorPackagerConnectionWebSocketDelegate.h +4 -8
  468. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.h +3 -4
  469. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorNetworkReporter.cpp +26 -23
  470. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorNetworkReporter.h +13 -21
  471. package/ReactAndroid/src/main/jni/react/fabric/AndroidEventBeat.h +4 -5
  472. package/ReactAndroid/src/main/jni/react/fabric/ComponentFactory.h +2 -3
  473. package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +53 -47
  474. package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.h +3 -2
  475. package/ReactAndroid/src/main/jni/react/fabric/EventBeatManager.h +4 -6
  476. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.h +5 -7
  477. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +87 -58
  478. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +12 -23
  479. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +22 -46
  480. package/ReactAndroid/src/main/jni/react/fabric/FocusOrderingHelper.cpp +6 -4
  481. package/ReactAndroid/src/main/jni/react/fabric/FocusOrderingHelper.h +7 -7
  482. package/ReactAndroid/src/main/jni/react/fabric/JFabricUIManager.h +2 -3
  483. package/ReactAndroid/src/main/jni/react/fabric/MountItem.h +11 -19
  484. package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.h +3 -5
  485. package/ReactAndroid/src/main/jni/react/fabric/SurfaceHandlerBinding.h +5 -9
  486. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +236 -26
  487. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +51 -6
  488. package/ReactAndroid/src/main/jni/react/hermes/instrumentation/HermesMemoryDumper.h +13 -14
  489. package/ReactAndroid/src/main/jni/react/hermes/instrumentation/HermesSamplingProfiler.h +4 -7
  490. package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/OnLoad.cpp +2 -1
  491. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +5 -5
  492. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +23 -40
  493. package/ReactAndroid/src/main/jni/react/jni/CxxModuleWrapper.h +7 -8
  494. package/ReactAndroid/src/main/jni/react/jni/CxxModuleWrapperBase.h +6 -9
  495. package/ReactAndroid/src/main/jni/react/jni/InspectorNetworkRequestListener.h +5 -11
  496. package/ReactAndroid/src/main/jni/react/jni/JCallback.h +6 -6
  497. package/ReactAndroid/src/main/jni/react/jni/JDynamicNative.cpp +7 -4
  498. package/ReactAndroid/src/main/jni/react/jni/JDynamicNative.h +3 -3
  499. package/ReactAndroid/src/main/jni/react/jni/JMessageQueueThread.h +3 -4
  500. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h +1 -2
  501. package/ReactAndroid/src/main/jni/react/jni/JReactMarker.h +8 -22
  502. package/ReactAndroid/src/main/jni/react/jni/JReactSoftExceptionLogger.h +3 -7
  503. package/ReactAndroid/src/main/jni/react/jni/JRuntimeExecutor.h +1 -2
  504. package/ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.h +1 -2
  505. package/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp +1 -1
  506. package/ReactAndroid/src/main/jni/react/jni/JSLoader.h +2 -5
  507. package/ReactAndroid/src/main/jni/react/jni/JSLogging.h +1 -1
  508. package/ReactAndroid/src/main/jni/react/jni/JWeakRefUtils.h +2 -2
  509. package/ReactAndroid/src/main/jni/react/jni/JavaModuleWrapper.cpp +1 -1
  510. package/ReactAndroid/src/main/jni/react/jni/JavaModuleWrapper.h +19 -28
  511. package/ReactAndroid/src/main/jni/react/jni/JavaScriptExecutorHolder.h +6 -8
  512. package/ReactAndroid/src/main/jni/react/jni/JniJSModulesUnbundle.cpp +1 -1
  513. package/ReactAndroid/src/main/jni/react/jni/JniJSModulesUnbundle.h +10 -17
  514. package/ReactAndroid/src/main/jni/react/jni/MethodInvoker.cpp +1 -1
  515. package/ReactAndroid/src/main/jni/react/jni/MethodInvoker.h +11 -13
  516. package/ReactAndroid/src/main/jni/react/jni/ModuleRegistryBuilder.cpp +10 -8
  517. package/ReactAndroid/src/main/jni/react/jni/ModuleRegistryBuilder.h +6 -11
  518. package/ReactAndroid/src/main/jni/react/jni/NativeArray.h +7 -7
  519. package/ReactAndroid/src/main/jni/react/jni/NativeCommon.h +5 -6
  520. package/ReactAndroid/src/main/jni/react/jni/NativeMap.h +6 -6
  521. package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +1 -1
  522. package/ReactAndroid/src/main/jni/react/jni/ReactInstanceManagerInspectorTarget.h +16 -28
  523. package/ReactAndroid/src/main/jni/react/jni/ReadableNativeArray.h +6 -8
  524. package/ReactAndroid/src/main/jni/react/jni/ReadableNativeMap.h +4 -9
  525. package/ReactAndroid/src/main/jni/react/jni/SafeReleaseJniRef.h +20 -12
  526. package/ReactAndroid/src/main/jni/react/jni/TransformHelper.h +1 -2
  527. package/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.h +6 -9
  528. package/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.h +7 -10
  529. package/ReactAndroid/src/main/jni/react/mapbuffer/react/common/mapbuffer/JReadableMapBuffer.h +3 -5
  530. package/ReactAndroid/src/main/jni/react/mapbuffer/react/common/mapbuffer/JWritableMapBuffer.h +1 -2
  531. package/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.cpp +7 -6
  532. package/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.h +5 -11
  533. package/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultTurboModuleManagerDelegate.h +12 -21
  534. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.h +4 -8
  535. package/ReactAndroid/src/main/jni/react/reactperflogger/reactperflogger/JNativeModulePerfLogger.h +2 -4
  536. package/ReactAndroid/src/main/jni/react/runtime/cxxreactpackage/ReactCommon/CxxReactPackage.h +3 -4
  537. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.h +5 -11
  538. package/ReactAndroid/src/main/jni/react/runtime/jni/JBindingsInstaller.h +2 -4
  539. package/ReactAndroid/src/main/jni/react/runtime/jni/JJSRuntimeFactory.h +2 -4
  540. package/ReactAndroid/src/main/jni/react/runtime/jni/JJSTimerExecutor.cpp +6 -0
  541. package/ReactAndroid/src/main/jni/react/runtime/jni/JJSTimerExecutor.h +6 -5
  542. package/ReactAndroid/src/main/jni/react/runtime/jni/JJavaTimerManager.h +1 -2
  543. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.h +3 -7
  544. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +15 -12
  545. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +44 -58
  546. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +2 -10
  547. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.h +14 -36
  548. package/ReactAndroid/src/main/jni/react/runtime/jni/JavaTimerRegistry.h +1 -2
  549. package/ReactAndroid/src/main/jni/react/tracing/OnLoad.cpp +16 -0
  550. package/ReactAndroid/src/main/jni/react/tracing/PerformanceTracerCxxInterop.cpp +241 -0
  551. package/ReactAndroid/src/main/jni/react/tracing/PerformanceTracerCxxInterop.h +63 -0
  552. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/BindingsInstallerHolder.h +7 -14
  553. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/CallInvokerHolder.h +3 -3
  554. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/NativeMethodCallInvokerHolder.h +5 -7
  555. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.h +9 -19
  556. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManagerDelegate.h +6 -8
  557. package/ReactAndroid/src/main/jni/react/uimanager/ComponentNameResolverBinding.h +2 -4
  558. package/ReactAndroid/src/main/jni/react/uimanager/UIConstantsProviderBinding.h +19 -30
  559. package/ReactAndroid/src/main/res/devsupport/values/strings.xml +2 -0
  560. package/ReactAndroid/src/main/res/views/uimanager/values-bn/strings.xml +1 -1
  561. package/ReactApple/RCTAnimatedModuleProvider/RCTAnimatedModuleProvider.h +26 -0
  562. package/ReactApple/RCTAnimatedModuleProvider/RCTAnimatedModuleProvider.mm +94 -0
  563. package/ReactApple/RCTSwiftUI/RCTSwiftUI.podspec +39 -0
  564. package/ReactApple/RCTSwiftUI/RCTSwiftUIContainerView.swift +132 -0
  565. package/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.h +29 -0
  566. package/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIContainerViewWrapper.m +81 -0
  567. package/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIWrapper.podspec +38 -0
  568. package/ReactCommon/React-Fabric.podspec +17 -0
  569. package/ReactCommon/callinvoker/ReactCommon/CallInvoker.h +13 -16
  570. package/ReactCommon/callinvoker/ReactCommon/tests/TestCallInvoker.h +10 -7
  571. package/ReactCommon/cxxreact/CxxModule.h +58 -87
  572. package/ReactCommon/cxxreact/CxxNativeModule.cpp +2 -2
  573. package/ReactCommon/cxxreact/CxxNativeModule.h +10 -19
  574. package/ReactCommon/cxxreact/ErrorUtils.h +4 -6
  575. package/ReactCommon/cxxreact/Instance.cpp +2 -2
  576. package/ReactCommon/cxxreact/Instance.h +24 -41
  577. package/ReactCommon/cxxreact/JSBigString.cpp +1 -1
  578. package/ReactCommon/cxxreact/JSBigString.h +28 -20
  579. package/ReactCommon/cxxreact/JSBundleType.h +5 -4
  580. package/ReactCommon/cxxreact/JSExecutor.cpp +2 -2
  581. package/ReactCommon/cxxreact/JSExecutor.h +22 -40
  582. package/ReactCommon/cxxreact/JSIndexedRAMBundle.cpp +2 -2
  583. package/ReactCommon/cxxreact/JSIndexedRAMBundle.h +13 -20
  584. package/ReactCommon/cxxreact/JSModulesUnbundle.h +7 -7
  585. package/ReactCommon/cxxreact/JsArgumentHelpers-inl.h +33 -41
  586. package/ReactCommon/cxxreact/JsArgumentHelpers.h +17 -26
  587. package/ReactCommon/cxxreact/MessageQueueThread.h +2 -2
  588. package/ReactCommon/cxxreact/MethodCall.cpp +2 -2
  589. package/ReactCommon/cxxreact/MethodCall.h +8 -10
  590. package/ReactCommon/cxxreact/ModuleRegistry.cpp +3 -3
  591. package/ReactCommon/cxxreact/ModuleRegistry.h +10 -23
  592. package/ReactCommon/cxxreact/MoveWrapper.h +17 -11
  593. package/ReactCommon/cxxreact/NativeModule.h +9 -15
  594. package/ReactCommon/cxxreact/NativeToJsBridge.cpp +4 -4
  595. package/ReactCommon/cxxreact/NativeToJsBridge.h +11 -17
  596. package/ReactCommon/cxxreact/RAMBundleRegistry.cpp +4 -4
  597. package/ReactCommon/cxxreact/RAMBundleRegistry.h +8 -11
  598. package/ReactCommon/cxxreact/React-cxxreact.podspec +1 -0
  599. package/ReactCommon/cxxreact/ReactMarker.h +15 -23
  600. package/ReactCommon/cxxreact/ReactNativeVersion.h +4 -4
  601. package/ReactCommon/cxxreact/RecoverableError.h +6 -5
  602. package/ReactCommon/cxxreact/SystraceSection.h +4 -4
  603. package/ReactCommon/cxxreact/TraceSection.h +25 -35
  604. package/ReactCommon/devtoolsruntimesettings/DevToolsRuntimeSettings.h +9 -12
  605. package/ReactCommon/hermes/executor/HermesExecutorFactory.h +9 -14
  606. package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.cpp +3 -2
  607. package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.h +7 -14
  608. package/ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeAgentDelegate.cpp +26 -25
  609. package/ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeAgentDelegate.h +8 -11
  610. package/ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeSamplingProfileSerializer.h +4 -3
  611. package/ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeTargetDelegate.cpp +54 -0
  612. package/ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeTargetDelegate.h +9 -15
  613. package/ReactCommon/hermes/inspector-modern/chrome/Registration.h +1 -3
  614. package/ReactCommon/jsc/JSCRuntime.cpp +85 -62
  615. package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +1 -1
  616. package/ReactCommon/jserrorhandler/JsErrorHandler.h +7 -21
  617. package/ReactCommon/jserrorhandler/StackTraceParser.h +1 -3
  618. package/ReactCommon/jserrorhandler/tests/StackTraceParserTest.cpp +599 -233
  619. package/ReactCommon/jsi/jsi/decorator.h +112 -108
  620. package/ReactCommon/jsi/jsi/hermes.h +189 -0
  621. package/ReactCommon/jsi/jsi/instrumentation.h +3 -0
  622. package/ReactCommon/jsi/jsi/jsi.cpp +4 -0
  623. package/ReactCommon/jsi/jsi/test/testlib.cpp +86 -67
  624. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +1 -0
  625. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +13 -8
  626. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.h +32 -43
  627. package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +2 -2
  628. package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.h +5 -8
  629. package/ReactCommon/jsinspector-modern/Base64.h +11 -10
  630. package/ReactCommon/jsinspector-modern/CMakeLists.txt +1 -0
  631. package/ReactCommon/jsinspector-modern/ConsoleMessage.h +13 -18
  632. package/ReactCommon/jsinspector-modern/EnumArray.h +46 -0
  633. package/ReactCommon/jsinspector-modern/ExecutionContext.h +14 -22
  634. package/ReactCommon/jsinspector-modern/FallbackRuntimeAgentDelegate.cpp +10 -9
  635. package/ReactCommon/jsinspector-modern/FallbackRuntimeAgentDelegate.h +2 -2
  636. package/ReactCommon/jsinspector-modern/FallbackRuntimeTargetDelegate.cpp +6 -0
  637. package/ReactCommon/jsinspector-modern/FallbackRuntimeTargetDelegate.h +7 -9
  638. package/ReactCommon/jsinspector-modern/HostAgent.cpp +124 -40
  639. package/ReactCommon/jsinspector-modern/HostAgent.h +30 -14
  640. package/ReactCommon/jsinspector-modern/HostTarget.cpp +75 -34
  641. package/ReactCommon/jsinspector-modern/HostTarget.h +73 -51
  642. package/ReactCommon/jsinspector-modern/HostTargetTraceRecording.h +7 -7
  643. package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +9 -5
  644. package/ReactCommon/jsinspector-modern/InspectorFlags.h +14 -7
  645. package/ReactCommon/jsinspector-modern/InspectorInterfaces.cpp +42 -0
  646. package/ReactCommon/jsinspector-modern/InspectorInterfaces.h +22 -16
  647. package/ReactCommon/jsinspector-modern/InspectorPackagerConnection.cpp +9 -7
  648. package/ReactCommon/jsinspector-modern/InspectorPackagerConnection.h +2 -4
  649. package/ReactCommon/jsinspector-modern/InspectorPackagerConnectionImpl.h +18 -29
  650. package/ReactCommon/jsinspector-modern/InstanceAgent.cpp +17 -15
  651. package/ReactCommon/jsinspector-modern/InstanceAgent.h +7 -10
  652. package/ReactCommon/jsinspector-modern/InstanceTarget.h +15 -22
  653. package/ReactCommon/jsinspector-modern/NetworkIOAgent.cpp +84 -68
  654. package/ReactCommon/jsinspector-modern/NetworkIOAgent.h +30 -34
  655. package/ReactCommon/jsinspector-modern/PerfMonitorV2.cpp +6 -68
  656. package/ReactCommon/jsinspector-modern/PerfMonitorV2.h +7 -28
  657. package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +1 -1
  658. package/ReactCommon/jsinspector-modern/RuntimeAgent.cpp +52 -34
  659. package/ReactCommon/jsinspector-modern/RuntimeAgent.h +10 -29
  660. package/ReactCommon/jsinspector-modern/RuntimeAgentDelegate.h +3 -2
  661. package/ReactCommon/jsinspector-modern/RuntimeTarget.cpp +95 -18
  662. package/ReactCommon/jsinspector-modern/RuntimeTarget.h +93 -44
  663. package/ReactCommon/jsinspector-modern/RuntimeTargetConsole.cpp +43 -45
  664. package/ReactCommon/jsinspector-modern/RuntimeTargetNetwork.cpp +98 -0
  665. package/ReactCommon/jsinspector-modern/ScopedExecutor.h +43 -18
  666. package/ReactCommon/jsinspector-modern/SessionState.h +2 -2
  667. package/ReactCommon/jsinspector-modern/StackTrace.h +6 -5
  668. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +40 -26
  669. package/ReactCommon/jsinspector-modern/TracingAgent.h +10 -11
  670. package/ReactCommon/jsinspector-modern/UniqueMonostate.h +14 -9
  671. package/ReactCommon/jsinspector-modern/Utf8.h +4 -5
  672. package/ReactCommon/jsinspector-modern/WeakList.h +9 -5
  673. package/ReactCommon/jsinspector-modern/WebSocketInterfaces.h +1 -3
  674. package/ReactCommon/jsinspector-modern/cdp/CdpJson.cpp +2 -2
  675. package/ReactCommon/jsinspector-modern/cdp/CdpJson.h +6 -15
  676. package/ReactCommon/jsinspector-modern/network/BoundedRequestBuffer.cpp +2 -2
  677. package/ReactCommon/jsinspector-modern/network/BoundedRequestBuffer.h +3 -7
  678. package/ReactCommon/jsinspector-modern/network/CMakeLists.txt +1 -3
  679. package/ReactCommon/jsinspector-modern/network/CdpNetwork.cpp +9 -20
  680. package/ReactCommon/jsinspector-modern/network/CdpNetwork.h +7 -14
  681. package/ReactCommon/jsinspector-modern/network/HttpUtils.cpp +2 -1
  682. package/ReactCommon/jsinspector-modern/network/HttpUtils.h +4 -3
  683. package/ReactCommon/jsinspector-modern/network/NetworkHandler.cpp +246 -0
  684. package/ReactCommon/jsinspector-modern/network/NetworkHandler.h +147 -0
  685. package/ReactCommon/jsinspector-modern/network/React-jsinspectornetwork.podspec +0 -3
  686. package/ReactCommon/jsinspector-modern/tests/ConsoleApiTest.cpp +24 -14
  687. package/ReactCommon/jsinspector-modern/tests/DebuggerSessionObserverTest.cpp +195 -0
  688. package/ReactCommon/jsinspector-modern/tests/FollyDynamicMatchers.h +16 -22
  689. package/ReactCommon/jsinspector-modern/tests/GmockHelpers.h +25 -0
  690. package/ReactCommon/jsinspector-modern/tests/HostTargetTest.cpp +8 -5
  691. package/ReactCommon/jsinspector-modern/tests/InspectorMocks.h +55 -57
  692. package/ReactCommon/jsinspector-modern/tests/InspectorPackagerConnectionTest.cpp +163 -124
  693. package/ReactCommon/jsinspector-modern/tests/JsiIntegrationTest.cpp +120 -24
  694. package/ReactCommon/jsinspector-modern/tests/JsiIntegrationTest.h +107 -43
  695. package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +825 -0
  696. package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.cpp +15 -28
  697. package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.h +9 -12
  698. package/ReactCommon/jsinspector-modern/tests/ReactNativeMocks.h +5 -4
  699. package/ReactCommon/jsinspector-modern/tests/UniquePtrFactory.h +21 -20
  700. package/ReactCommon/jsinspector-modern/tests/engines/JsiIntegrationTestGenericEngineAdapter.cpp +0 -5
  701. package/ReactCommon/jsinspector-modern/tests/engines/JsiIntegrationTestGenericEngineAdapter.h +4 -4
  702. package/ReactCommon/jsinspector-modern/tests/engines/JsiIntegrationTestHermesEngineAdapter.cpp +6 -5
  703. package/ReactCommon/jsinspector-modern/tests/engines/JsiIntegrationTestHermesEngineAdapter.h +4 -4
  704. package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.cpp +12 -0
  705. package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.h +6 -7
  706. package/ReactCommon/jsinspector-modern/tracing/CMakeLists.txt +2 -0
  707. package/ReactCommon/jsinspector-modern/tracing/ConsoleTimeStamp.cpp +22 -0
  708. package/ReactCommon/jsinspector-modern/tracing/ConsoleTimeStamp.h +8 -3
  709. package/ReactCommon/jsinspector-modern/tracing/EventLoopReporter.h +4 -4
  710. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +369 -123
  711. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.h +144 -30
  712. package/ReactCommon/jsinspector-modern/tracing/ProfileTreeNode.h +22 -20
  713. package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +6 -0
  714. package/ReactCommon/jsinspector-modern/tracing/RuntimeSamplingProfile.h +22 -18
  715. package/ReactCommon/jsinspector-modern/tracing/RuntimeSamplingProfileTraceEventSerializer.h +8 -9
  716. package/ReactCommon/jsinspector-modern/tracing/TargetTracingAgent.h +3 -2
  717. package/ReactCommon/jsinspector-modern/tracing/Timing.h +8 -12
  718. package/ReactCommon/jsinspector-modern/tracing/TraceEvent.h +8 -2
  719. package/ReactCommon/jsinspector-modern/tracing/TraceEventSerializer.cpp +3 -0
  720. package/ReactCommon/jsinspector-modern/tracing/TraceEventSerializer.h +6 -10
  721. package/ReactCommon/jsinspector-modern/tracing/TraceRecordingStateSerializer.h +4 -4
  722. package/ReactCommon/jsinspector-modern/tracing/tests/ProfileTreeNodeTest.cpp +12 -4
  723. package/ReactCommon/jsitooling/React-jsitooling.podspec +1 -0
  724. package/ReactCommon/jsitooling/react/runtime/JSRuntimeFactory.h +7 -9
  725. package/ReactCommon/jsitooling/react/runtime/JSRuntimeFactoryCAPI.h +1 -1
  726. package/ReactCommon/logger/react_native_log.h +7 -7
  727. package/ReactCommon/react/bridging/AString.h +8 -6
  728. package/ReactCommon/react/bridging/Array.h +32 -49
  729. package/ReactCommon/react/bridging/Base.h +27 -76
  730. package/ReactCommon/react/bridging/Bool.h +4 -2
  731. package/ReactCommon/react/bridging/CallbackWrapper.h +19 -18
  732. package/ReactCommon/react/bridging/Class.h +25 -48
  733. package/ReactCommon/react/bridging/Convert.h +38 -31
  734. package/ReactCommon/react/bridging/Dynamic.h +4 -2
  735. package/ReactCommon/react/bridging/Error.h +11 -6
  736. package/ReactCommon/react/bridging/EventEmitter.h +47 -45
  737. package/ReactCommon/react/bridging/Function.h +69 -89
  738. package/ReactCommon/react/bridging/HighResTimeStamp.h +8 -8
  739. package/ReactCommon/react/bridging/LongLivedObject.h +6 -6
  740. package/ReactCommon/react/bridging/Number.h +16 -8
  741. package/ReactCommon/react/bridging/Object.h +17 -24
  742. package/ReactCommon/react/bridging/Promise.h +17 -17
  743. package/ReactCommon/react/bridging/Value.h +20 -29
  744. package/ReactCommon/react/bridging/tests/BridgingTest.cpp +16 -13
  745. package/ReactCommon/react/bridging/tests/BridgingTest.h +24 -16
  746. package/ReactCommon/react/bridging/tests/ClassTest.cpp +6 -5
  747. package/ReactCommon/react/debug/react_native_assert.h +2 -7
  748. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +69 -9
  749. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +85 -10
  750. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +361 -91
  751. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +36 -6
  752. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +70 -10
  753. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +151 -16
  754. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSCanary.h +2 -2
  755. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +5 -1
  756. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSStable.h +11 -7
  757. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +18 -3
  758. package/ReactCommon/react/nativemodule/core/ReactCommon/CxxTurboModuleUtils.h +2 -6
  759. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.h +7 -16
  760. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +24 -36
  761. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +0 -1
  762. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +8 -10
  763. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModulePerfLogger.h +38 -67
  764. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +5 -8
  765. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleWithJSIBindings.h +2 -4
  766. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaInteropTurboModule.h +5 -7
  767. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +2 -1
  768. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.h +11 -13
  769. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +8 -7
  770. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +15 -15
  771. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.h +7 -0
  772. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm +38 -12
  773. package/ReactCommon/react/nativemodule/core/tests/TurboModuleTestFixture.h +57 -37
  774. package/ReactCommon/react/nativemodule/cputime/CPUTime.h +17 -14
  775. package/ReactCommon/react/nativemodule/cputime/NativeCPUTime.h +2 -2
  776. package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +1 -0
  777. package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +7 -0
  778. package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.h +2 -2
  779. package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +7 -2
  780. package/ReactCommon/react/nativemodule/devtoolsruntimesettings/DevToolsRuntimeSettingsModule.h +3 -6
  781. package/ReactCommon/react/nativemodule/dom/NativeDOM.h +28 -66
  782. package/ReactCommon/react/nativemodule/fantomtestspecificmethods/NativeFantomTestSpecificMethods.h +4 -7
  783. package/ReactCommon/react/nativemodule/fantomtestspecificmethods/internal/FantomForcedCloneCommitHook.cpp +4 -3
  784. package/ReactCommon/react/nativemodule/fantomtestspecificmethods/internal/FantomForcedCloneCommitHook.h +5 -7
  785. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +86 -11
  786. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +36 -6
  787. package/ReactCommon/react/nativemodule/idlecallbacks/NativeIdleCallbacks.h +6 -10
  788. package/ReactCommon/react/nativemodule/intersectionobserver/NativeIntersectionObserver.cpp +2 -0
  789. package/ReactCommon/react/nativemodule/intersectionobserver/NativeIntersectionObserver.h +43 -48
  790. package/ReactCommon/react/nativemodule/intersectionobserver/React-intersectionobservernativemodule.podspec +66 -0
  791. package/ReactCommon/react/nativemodule/microtasks/NativeMicrotasks.h +1 -1
  792. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +8 -7
  793. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.h +20 -31
  794. package/ReactCommon/react/nativemodule/samples/platform/android/ReactCommon/SampleTurboModuleJSIBindings.h +4 -6
  795. package/ReactCommon/react/nativemodule/samples/platform/android/ReactCommon/SampleTurboModuleSpec.h +3 -3
  796. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleLegacyModule.mm +10 -16
  797. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.mm +6 -8
  798. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +3 -0
  799. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.h +40 -58
  800. package/ReactCommon/react/nativemodule/webperformance/React-webperformancenativemodule.podspec +2 -0
  801. package/ReactCommon/react/networking/CMakeLists.txt +30 -0
  802. package/ReactCommon/react/networking/NetworkReporter.cpp +251 -0
  803. package/ReactCommon/react/networking/NetworkReporter.h +148 -0
  804. package/ReactCommon/{jsinspector-modern/network → react/networking}/NetworkTypes.h +2 -2
  805. package/ReactCommon/react/networking/React-networking.podspec +52 -0
  806. package/ReactCommon/react/performance/cdpmetrics/CdpInteractionTypes.cpp +1 -1
  807. package/ReactCommon/react/performance/cdpmetrics/CdpInteractionTypes.h +3 -4
  808. package/ReactCommon/react/performance/cdpmetrics/CdpMetricsReporter.cpp +1 -24
  809. package/ReactCommon/react/performance/cdpmetrics/CdpMetricsReporter.h +5 -6
  810. package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.cpp +60 -0
  811. package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.h +37 -0
  812. package/ReactCommon/react/performance/timeline/CircularBuffer.h +24 -19
  813. package/ReactCommon/react/performance/timeline/PerformanceEntry.h +10 -9
  814. package/ReactCommon/react/performance/timeline/PerformanceEntryBuffer.h +4 -6
  815. package/ReactCommon/react/performance/timeline/PerformanceEntryCircularBuffer.h +4 -6
  816. package/ReactCommon/react/performance/timeline/PerformanceEntryKeyedBuffer.h +5 -7
  817. package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp +33 -26
  818. package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.h +42 -51
  819. package/ReactCommon/react/performance/timeline/PerformanceEntryReporterListeners.h +10 -4
  820. package/ReactCommon/react/performance/timeline/PerformanceObserver.h +16 -19
  821. package/ReactCommon/react/performance/timeline/PerformanceObserverRegistry.h +2 -5
  822. package/ReactCommon/react/performance/timeline/tests/PerformanceObserverTest.cpp +6 -2
  823. package/ReactCommon/react/renderer/animated/AnimatedModule.cpp +17 -14
  824. package/ReactCommon/react/renderer/animated/AnimatedModule.h +31 -40
  825. package/ReactCommon/react/renderer/animated/CMakeLists.txt +2 -0
  826. package/ReactCommon/react/renderer/animated/EventEmitterListener.h +10 -11
  827. package/ReactCommon/react/renderer/animated/MergedValueDispatcher.h +4 -7
  828. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +250 -30
  829. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +55 -51
  830. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp +52 -25
  831. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.h +18 -21
  832. package/ReactCommon/react/renderer/animated/drivers/AnimationDriver.h +16 -12
  833. package/ReactCommon/react/renderer/animated/drivers/AnimationDriverUtils.h +3 -3
  834. package/ReactCommon/react/renderer/animated/drivers/DecayAnimationDriver.h +1 -1
  835. package/ReactCommon/react/renderer/animated/drivers/FrameAnimationDriver.h +1 -1
  836. package/ReactCommon/react/renderer/animated/drivers/SpringAnimationDriver.h +2 -3
  837. package/ReactCommon/react/renderer/animated/event_drivers/EventAnimationDriver.h +9 -10
  838. package/ReactCommon/react/renderer/animated/internal/AnimatedMountingOverrideDelegate.cpp +6 -5
  839. package/ReactCommon/react/renderer/animated/internal/AnimatedMountingOverrideDelegate.h +4 -6
  840. package/ReactCommon/react/renderer/animated/internal/NativeAnimatedAllowlist.h +2 -1
  841. package/ReactCommon/react/renderer/animated/nodes/AdditionAnimatedNode.h +4 -5
  842. package/ReactCommon/react/renderer/animated/nodes/AnimatedNode.cpp +2 -0
  843. package/ReactCommon/react/renderer/animated/nodes/AnimatedNode.h +20 -17
  844. package/ReactCommon/react/renderer/animated/nodes/ColorAnimatedNode.h +1 -4
  845. package/ReactCommon/react/renderer/animated/nodes/DiffClampAnimatedNode.h +1 -4
  846. package/ReactCommon/react/renderer/animated/nodes/DivisionAnimatedNode.h +4 -5
  847. package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.h +1 -4
  848. package/ReactCommon/react/renderer/animated/nodes/ModulusAnimatedNode.h +1 -4
  849. package/ReactCommon/react/renderer/animated/nodes/MultiplicationAnimatedNode.h +4 -5
  850. package/ReactCommon/react/renderer/animated/nodes/ObjectAnimatedNode.cpp +121 -0
  851. package/ReactCommon/react/renderer/animated/nodes/ObjectAnimatedNode.h +33 -0
  852. package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.cpp +7 -0
  853. package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.h +5 -6
  854. package/ReactCommon/react/renderer/animated/nodes/RoundAnimatedNode.h +1 -4
  855. package/ReactCommon/react/renderer/animated/nodes/StyleAnimatedNode.cpp +7 -0
  856. package/ReactCommon/react/renderer/animated/nodes/StyleAnimatedNode.h +4 -6
  857. package/ReactCommon/react/renderer/animated/nodes/SubtractionAnimatedNode.h +4 -5
  858. package/ReactCommon/react/renderer/animated/nodes/TrackingAnimatedNode.h +1 -4
  859. package/ReactCommon/react/renderer/animated/nodes/TransformAnimatedNode.h +2 -5
  860. package/ReactCommon/react/renderer/animated/nodes/ValueAnimatedNode.h +5 -10
  861. package/ReactCommon/react/renderer/animated/tests/AnimatedNodeTests.cpp +51 -0
  862. package/ReactCommon/react/renderer/animated/tests/AnimationTestsBase.h +9 -5
  863. package/ReactCommon/react/renderer/animationbackend/AnimatedProps.h +40 -0
  864. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsBuilder.h +52 -0
  865. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +176 -0
  866. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +59 -0
  867. package/ReactCommon/react/renderer/animationbackend/CMakeLists.txt +28 -0
  868. package/ReactCommon/react/renderer/animations/LayoutAnimationCallbackWrapper.h +6 -3
  869. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +3 -2
  870. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.h +7 -10
  871. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +52 -42
  872. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.h +35 -47
  873. package/ReactCommon/react/renderer/animations/conversions.h +36 -45
  874. package/ReactCommon/react/renderer/animations/primitives.h +2 -9
  875. package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +50 -35
  876. package/ReactCommon/react/renderer/animations/utils.h +24 -38
  877. package/ReactCommon/react/renderer/attributedstring/AttributedString.cpp +6 -5
  878. package/ReactCommon/react/renderer/attributedstring/AttributedString.h +17 -18
  879. package/ReactCommon/react/renderer/attributedstring/AttributedStringBox.cpp +2 -2
  880. package/ReactCommon/react/renderer/attributedstring/AttributedStringBox.h +12 -14
  881. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h +4 -4
  882. package/ReactCommon/react/renderer/attributedstring/PlaceholderAttributedString.h +3 -5
  883. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +6 -6
  884. package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +3 -3
  885. package/ReactCommon/react/renderer/attributedstring/conversions.h +145 -208
  886. package/ReactCommon/react/renderer/attributedstring/primitives.h +1 -6
  887. package/ReactCommon/react/renderer/bridging/bridging.h +7 -12
  888. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorFactory.h +3 -4
  889. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProvider.h +6 -6
  890. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h +7 -12
  891. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +3 -3
  892. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.h +11 -18
  893. package/ReactCommon/react/renderer/componentregistry/native/NativeComponentRegistryBinding.h +2 -5
  894. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.cpp +2 -1
  895. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +3 -5
  896. package/ReactCommon/react/renderer/components/image/ImageEventEmitter.h +2 -2
  897. package/ReactCommon/react/renderer/components/image/ImageProps.cpp +2 -2
  898. package/ReactCommon/react/renderer/components/image/ImageProps.h +4 -10
  899. package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +18 -0
  900. package/ReactCommon/react/renderer/components/image/ImageShadowNode.h +9 -10
  901. package/ReactCommon/react/renderer/components/image/ImageState.h +9 -10
  902. package/ReactCommon/react/renderer/components/image/conversions.h +16 -25
  903. package/ReactCommon/react/renderer/components/inputaccessory/InputAccessoryComponentDescriptor.h +6 -12
  904. package/ReactCommon/react/renderer/components/inputaccessory/InputAccessoryShadowNode.h +2 -1
  905. package/ReactCommon/react/renderer/components/inputaccessory/InputAccessoryState.h +2 -2
  906. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.h +2 -3
  907. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +3 -3
  908. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.h +3 -3
  909. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticComponentDescriptor.h +5 -5
  910. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerAutomaticShadowNode.h +2 -3
  911. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerInteropComponentDescriptor.h +6 -7
  912. package/ReactCommon/react/renderer/components/modal/ModalHostViewComponentDescriptor.h +9 -18
  913. package/ReactCommon/react/renderer/components/modal/ModalHostViewShadowNode.h +2 -1
  914. package/ReactCommon/react/renderer/components/modal/ModalHostViewState.h +5 -7
  915. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarComponentDescriptor.h +10 -14
  916. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarMeasurementsManager.h +5 -7
  917. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarShadowNode.cpp +1 -0
  918. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarShadowNode.h +4 -6
  919. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/conversions.h +2 -1
  920. package/ReactCommon/react/renderer/components/root/RootProps.cpp +1 -1
  921. package/ReactCommon/react/renderer/components/root/RootProps.h +5 -8
  922. package/ReactCommon/react/renderer/components/root/RootShadowNode.h +7 -8
  923. package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewComponentDescriptor.h +5 -8
  924. package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewShadowNode.h +2 -5
  925. package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewState.h +8 -9
  926. package/ReactCommon/react/renderer/components/scrollview/BaseScrollViewProps.h +7 -12
  927. package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.h +8 -8
  928. package/ReactCommon/react/renderer/components/scrollview/ScrollViewComponentDescriptor.h +1 -2
  929. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +7 -8
  930. package/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.h +5 -8
  931. package/ReactCommon/react/renderer/components/scrollview/ScrollViewState.h +7 -12
  932. package/ReactCommon/react/renderer/components/scrollview/conversions.h +26 -34
  933. package/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewShadowNode.h +5 -1
  934. package/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/HostPlatformScrollViewProps.cpp +52 -4
  935. package/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/HostPlatformScrollViewProps.h +10 -10
  936. package/ReactCommon/react/renderer/components/scrollview/primitives.h +5 -8
  937. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchComponentDescriptor.h +9 -11
  938. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchMeasurementsManager.h +4 -3
  939. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchShadowNode.h +6 -10
  940. package/ReactCommon/react/renderer/components/switch/iosswitch/react/renderer/components/switch/AppleSwitchComponentDescriptor.h +6 -5
  941. package/ReactCommon/react/renderer/components/switch/iosswitch/react/renderer/components/switch/AppleSwitchShadowNode.h +5 -8
  942. package/ReactCommon/react/renderer/components/text/BaseParagraphProps.h +6 -9
  943. package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +1 -1
  944. package/ReactCommon/react/renderer/components/text/BaseTextProps.h +4 -12
  945. package/ReactCommon/react/renderer/components/text/BaseTextShadowNode.cpp +3 -2
  946. package/ReactCommon/react/renderer/components/text/BaseTextShadowNode.h +5 -5
  947. package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +8 -9
  948. package/ReactCommon/react/renderer/components/text/ParagraphEventEmitter.h +1 -1
  949. package/ReactCommon/react/renderer/components/text/ParagraphShadowNode.cpp +19 -16
  950. package/ReactCommon/react/renderer/components/text/ParagraphShadowNode.h +19 -29
  951. package/ReactCommon/react/renderer/components/text/RawTextComponentDescriptor.h +1 -2
  952. package/ReactCommon/react/renderer/components/text/RawTextProps.cpp +1 -1
  953. package/ReactCommon/react/renderer/components/text/RawTextProps.h +2 -5
  954. package/ReactCommon/react/renderer/components/text/RawTextShadowNode.cpp +1 -0
  955. package/ReactCommon/react/renderer/components/text/RawTextShadowNode.h +1 -4
  956. package/ReactCommon/react/renderer/components/text/TextProps.cpp +1 -1
  957. package/ReactCommon/react/renderer/components/text/TextProps.h +4 -10
  958. package/ReactCommon/react/renderer/components/text/TextShadowNode.h +8 -17
  959. package/ReactCommon/react/renderer/components/text/platform/android/react/renderer/components/text/HostPlatformParagraphProps.cpp +1 -1
  960. package/ReactCommon/react/renderer/components/text/platform/android/react/renderer/components/text/HostPlatformParagraphProps.h +6 -9
  961. package/ReactCommon/react/renderer/components/text/platform/android/react/renderer/components/text/ParagraphState.h +8 -9
  962. package/ReactCommon/react/renderer/components/text/platform/android/react/renderer/components/text/conversions.h +4 -5
  963. package/ReactCommon/react/renderer/components/text/stateConversions.h +2 -1
  964. package/ReactCommon/react/renderer/components/text/tests/BaseTextShadowNodeTest.cpp +26 -24
  965. package/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h +6 -9
  966. package/ReactCommon/react/renderer/components/textinput/BaseTextInputShadowNode.h +56 -78
  967. package/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h +12 -14
  968. package/ReactCommon/react/renderer/components/textinput/TextInputState.h +3 -1
  969. package/ReactCommon/react/renderer/components/textinput/baseConversions.h +4 -5
  970. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h +31 -49
  971. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.h +16 -19
  972. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp +6 -5
  973. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.h +10 -16
  974. package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputState.h +8 -12
  975. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputComponentDescriptor.h +8 -7
  976. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.cpp +1 -1
  977. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.h +1 -4
  978. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.h +2 -5
  979. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/conversions.h +11 -20
  980. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/primitives.h +2 -4
  981. package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/propsConversions.h +37 -115
  982. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.h +3 -6
  983. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewProps.h +1 -1
  984. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewShadowNode.h +1 -3
  985. package/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h +25 -95
  986. package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +7 -12
  987. package/ReactCommon/react/renderer/components/view/BackgroundImagePropsConversions.cpp +619 -0
  988. package/ReactCommon/react/renderer/components/view/BackgroundImagePropsConversions.h +44 -0
  989. package/ReactCommon/react/renderer/components/view/BaseTouch.h +7 -10
  990. package/ReactCommon/react/renderer/components/view/BaseViewEventEmitter.h +3 -4
  991. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +36 -0
  992. package/ReactCommon/react/renderer/components/view/BaseViewProps.h +23 -17
  993. package/ReactCommon/react/renderer/components/view/BoxShadowPropsConversions.h +27 -40
  994. package/ReactCommon/react/renderer/components/view/CSSConversions.h +12 -11
  995. package/ReactCommon/react/renderer/components/view/ConcreteViewShadowNode.h +27 -34
  996. package/ReactCommon/react/renderer/components/view/FilterPropsConversions.h +46 -70
  997. package/ReactCommon/react/renderer/components/view/LayoutConformanceComponentDescriptor.h +1 -2
  998. package/ReactCommon/react/renderer/components/view/LayoutConformanceProps.h +6 -9
  999. package/ReactCommon/react/renderer/components/view/LayoutConformanceShadowNode.h +6 -7
  1000. package/ReactCommon/react/renderer/components/view/PointerEvent.cpp +40 -21
  1001. package/ReactCommon/react/renderer/components/view/PointerEvent.h +3 -3
  1002. package/ReactCommon/react/renderer/components/view/TouchEvent.cpp +6 -4
  1003. package/ReactCommon/react/renderer/components/view/TouchEvent.h +2 -2
  1004. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +2 -8
  1005. package/ReactCommon/react/renderer/components/view/ViewComponentDescriptor.h +5 -4
  1006. package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +14 -20
  1007. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +1 -1
  1008. package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +7 -15
  1009. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +11 -9
  1010. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h +20 -40
  1011. package/ReactCommon/react/renderer/components/view/YogaStylableProps.h +10 -14
  1012. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +85 -42
  1013. package/ReactCommon/react/renderer/components/view/conversions.h +375 -430
  1014. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +97 -40
  1015. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h +14 -12
  1016. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +9 -9
  1017. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/NativeDrawable.h +15 -21
  1018. package/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +6 -3
  1019. package/ReactCommon/react/renderer/components/view/primitives.h +32 -34
  1020. package/ReactCommon/react/renderer/components/view/propsConversions.h +135 -522
  1021. package/ReactCommon/react/renderer/components/view/tests/ConversionsTest.cpp +11 -8
  1022. package/ReactCommon/react/renderer/components/view/tests/LayoutTest.cpp +1 -1
  1023. package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +13 -13
  1024. package/ReactCommon/react/renderer/components/virtualview/VirtualViewComponentDescriptor.h +1 -2
  1025. package/ReactCommon/react/renderer/components/virtualview/VirtualViewShadowNode.h +4 -5
  1026. package/ReactCommon/react/renderer/components/virtualviewexperimental/VirtualViewExperimentalComponentDescriptor.h +1 -2
  1027. package/ReactCommon/react/renderer/components/virtualviewexperimental/VirtualViewExperimentalShadowNode.h +7 -8
  1028. package/ReactCommon/react/renderer/consistency/ScopedShadowTreeRevisionLock.h +10 -11
  1029. package/ReactCommon/react/renderer/core/ComponentDescriptor.h +15 -23
  1030. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +49 -63
  1031. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +34 -35
  1032. package/ReactCommon/react/renderer/core/ConcreteState.h +23 -23
  1033. package/ReactCommon/react/renderer/core/DynamicEventPayload.cpp +3 -3
  1034. package/ReactCommon/react/renderer/core/DynamicEventPayload.h +3 -4
  1035. package/ReactCommon/react/renderer/core/DynamicPropsUtilities.h +4 -8
  1036. package/ReactCommon/react/renderer/core/EventBeat.h +6 -9
  1037. package/ReactCommon/react/renderer/core/EventDispatcher.h +5 -8
  1038. package/ReactCommon/react/renderer/core/EventEmitter.h +11 -16
  1039. package/ReactCommon/react/renderer/core/EventListener.h +3 -3
  1040. package/ReactCommon/react/renderer/core/EventPayload.h +7 -7
  1041. package/ReactCommon/react/renderer/core/EventPipe.h +5 -5
  1042. package/ReactCommon/react/renderer/core/EventQueue.h +6 -10
  1043. package/ReactCommon/react/renderer/core/EventQueueProcessor.h +2 -2
  1044. package/ReactCommon/react/renderer/core/EventTarget.h +4 -6
  1045. package/ReactCommon/react/renderer/core/InstanceHandle.h +2 -5
  1046. package/ReactCommon/react/renderer/core/LayoutConstraints.cpp +4 -2
  1047. package/ReactCommon/react/renderer/core/LayoutConstraints.h +10 -17
  1048. package/ReactCommon/react/renderer/core/LayoutContext.h +5 -3
  1049. package/ReactCommon/react/renderer/core/LayoutMetrics.cpp +14 -14
  1050. package/ReactCommon/react/renderer/core/LayoutMetrics.h +30 -25
  1051. package/ReactCommon/react/renderer/core/LayoutableShadowNode.cpp +16 -12
  1052. package/ReactCommon/react/renderer/core/LayoutableShadowNode.h +14 -26
  1053. package/ReactCommon/react/renderer/core/Props.h +16 -19
  1054. package/ReactCommon/react/renderer/core/PropsMacros.h +50 -79
  1055. package/ReactCommon/react/renderer/core/PropsParserContext.h +7 -7
  1056. package/ReactCommon/react/renderer/core/RawProps.cpp +2 -1
  1057. package/ReactCommon/react/renderer/core/RawProps.h +11 -14
  1058. package/ReactCommon/react/renderer/core/RawPropsKey.h +6 -6
  1059. package/ReactCommon/react/renderer/core/RawPropsKeyMap.h +4 -8
  1060. package/ReactCommon/react/renderer/core/RawPropsParser.h +7 -10
  1061. package/ReactCommon/react/renderer/core/RawPropsPrimitives.h +2 -5
  1062. package/ReactCommon/react/renderer/core/RawValue.h +145 -183
  1063. package/ReactCommon/react/renderer/core/ReactEventPriority.h +3 -4
  1064. package/ReactCommon/react/renderer/core/ReactPrimitives.h +1 -1
  1065. package/ReactCommon/react/renderer/core/Sealable.cpp +1 -1
  1066. package/ReactCommon/react/renderer/core/Sealable.h +6 -5
  1067. package/ReactCommon/react/renderer/core/ShadowNode.cpp +1 -1
  1068. package/ReactCommon/react/renderer/core/ShadowNode.h +44 -70
  1069. package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +15 -21
  1070. package/ReactCommon/react/renderer/core/ShadowNodeFragment.h +6 -6
  1071. package/ReactCommon/react/renderer/core/ShadowNodeTraits.h +8 -4
  1072. package/ReactCommon/react/renderer/core/State.cpp +1 -1
  1073. package/ReactCommon/react/renderer/core/State.h +4 -3
  1074. package/ReactCommon/react/renderer/core/StateData.h +1 -1
  1075. package/ReactCommon/react/renderer/core/StatePipe.h +1 -1
  1076. package/ReactCommon/react/renderer/core/StateUpdate.h +1 -2
  1077. package/ReactCommon/react/renderer/core/ValueFactory.h +1 -1
  1078. package/ReactCommon/react/renderer/core/ValueFactoryEventPayload.h +1 -1
  1079. package/ReactCommon/react/renderer/core/conversions.h +13 -10
  1080. package/ReactCommon/react/renderer/core/graphicsConversions.h +49 -62
  1081. package/ReactCommon/react/renderer/core/propsConversions.h +62 -42
  1082. package/ReactCommon/react/renderer/core/tests/ComponentDescriptorTest.cpp +47 -36
  1083. package/ReactCommon/react/renderer/core/tests/ConcreteShadowNodeTest.cpp +4 -1
  1084. package/ReactCommon/react/renderer/core/tests/FindNodeAtPointTest.cpp +53 -50
  1085. package/ReactCommon/react/renderer/core/tests/LayoutableShadowNodeTest.cpp +95 -95
  1086. package/ReactCommon/react/renderer/core/tests/RawPropsTest.cpp +12 -9
  1087. package/ReactCommon/react/renderer/core/tests/ShadowNodeFamilyTest.cpp +4 -1
  1088. package/ReactCommon/react/renderer/core/tests/ShadowNodeTest.cpp +81 -67
  1089. package/ReactCommon/react/renderer/core/tests/TestComponent.h +14 -17
  1090. package/ReactCommon/react/renderer/core/tests/benchmarks/RawPropsBenchmark.cpp +4 -2
  1091. package/ReactCommon/react/renderer/css/CSSAngle.h +3 -3
  1092. package/ReactCommon/react/renderer/css/CSSAngleUnit.h +4 -2
  1093. package/ReactCommon/react/renderer/css/CSSBackgroundImage.h +864 -0
  1094. package/ReactCommon/react/renderer/css/CSSColor.h +9 -8
  1095. package/ReactCommon/react/renderer/css/CSSColorFunction.h +65 -102
  1096. package/ReactCommon/react/renderer/css/CSSCompoundDataType.h +14 -46
  1097. package/ReactCommon/react/renderer/css/CSSDataType.h +10 -15
  1098. package/ReactCommon/react/renderer/css/CSSFilter.h +38 -58
  1099. package/ReactCommon/react/renderer/css/CSSFontVariant.h +1 -2
  1100. package/ReactCommon/react/renderer/css/CSSHexColor.h +10 -9
  1101. package/ReactCommon/react/renderer/css/CSSKeyword.h +6 -6
  1102. package/ReactCommon/react/renderer/css/CSSLength.h +5 -5
  1103. package/ReactCommon/react/renderer/css/CSSLengthUnit.h +2 -2
  1104. package/ReactCommon/react/renderer/css/CSSList.h +7 -12
  1105. package/ReactCommon/react/renderer/css/CSSNamedColor.h +2 -1
  1106. package/ReactCommon/react/renderer/css/CSSNumber.h +3 -3
  1107. package/ReactCommon/react/renderer/css/CSSPercentage.h +3 -3
  1108. package/ReactCommon/react/renderer/css/CSSRatio.h +10 -13
  1109. package/ReactCommon/react/renderer/css/CSSShadow.h +15 -32
  1110. package/ReactCommon/react/renderer/css/CSSSyntaxParser.h +66 -73
  1111. package/ReactCommon/react/renderer/css/CSSToken.h +18 -14
  1112. package/ReactCommon/react/renderer/css/CSSTokenizer.h +41 -32
  1113. package/ReactCommon/react/renderer/css/CSSTransform.h +70 -107
  1114. package/ReactCommon/react/renderer/css/CSSTransformOrigin.h +28 -49
  1115. package/ReactCommon/react/renderer/css/CSSValueParser.h +46 -76
  1116. package/ReactCommon/react/renderer/css/CSSZero.h +3 -3
  1117. package/ReactCommon/react/renderer/css/tests/CSSBackgroundImageTest.cpp +560 -0
  1118. package/ReactCommon/react/renderer/css/tests/CSSColorTest.cpp +6 -4
  1119. package/ReactCommon/react/renderer/css/tests/CSSFilterTest.cpp +5 -5
  1120. package/ReactCommon/react/renderer/css/tests/CSSFontVariantTest.cpp +3 -2
  1121. package/ReactCommon/react/renderer/css/tests/CSSListTest.cpp +12 -8
  1122. package/ReactCommon/react/renderer/css/tests/CSSShadowTest.cpp +6 -6
  1123. package/ReactCommon/react/renderer/css/tests/CSSSyntaxParserTest.cpp +11 -9
  1124. package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +78 -92
  1125. package/ReactCommon/react/renderer/debug/DebugStringConvertibleItem.h +1 -1
  1126. package/ReactCommon/react/renderer/debug/debugStringConvertibleUtils.h +18 -26
  1127. package/ReactCommon/react/renderer/dom/DOM.cpp +3 -1
  1128. package/ReactCommon/react/renderer/dom/DOM.h +24 -42
  1129. package/ReactCommon/react/renderer/element/ComponentBuilder.cpp +12 -9
  1130. package/ReactCommon/react/renderer/element/ComponentBuilder.h +8 -9
  1131. package/ReactCommon/react/renderer/element/Element.h +37 -35
  1132. package/ReactCommon/react/renderer/element/ElementFragment.h +3 -5
  1133. package/ReactCommon/react/renderer/element/testUtils.h +12 -20
  1134. package/ReactCommon/react/renderer/graphics/BackgroundImage.cpp +23 -0
  1135. package/ReactCommon/react/renderer/graphics/BackgroundImage.h +28 -2
  1136. package/ReactCommon/react/renderer/graphics/BackgroundPosition.h +27 -0
  1137. package/ReactCommon/react/renderer/graphics/BackgroundRepeat.h +29 -0
  1138. package/ReactCommon/react/renderer/graphics/BackgroundSize.h +39 -0
  1139. package/ReactCommon/react/renderer/graphics/BlendMode.h +4 -3
  1140. package/ReactCommon/react/renderer/graphics/BoxShadow.h +5 -3
  1141. package/ReactCommon/react/renderer/graphics/Color.cpp +22 -3
  1142. package/ReactCommon/react/renderer/graphics/Color.h +20 -10
  1143. package/ReactCommon/react/renderer/graphics/ColorStop.cpp +21 -0
  1144. package/ReactCommon/react/renderer/graphics/ColorStop.h +20 -2
  1145. package/ReactCommon/react/renderer/graphics/DoubleConversions.cpp +38 -0
  1146. package/ReactCommon/react/renderer/graphics/DoubleConversions.h +16 -0
  1147. package/ReactCommon/react/renderer/graphics/Filter.h +13 -8
  1148. package/ReactCommon/react/renderer/graphics/Isolation.h +2 -2
  1149. package/ReactCommon/react/renderer/graphics/LinearGradient.cpp +92 -0
  1150. package/ReactCommon/react/renderer/graphics/LinearGradient.h +19 -15
  1151. package/ReactCommon/react/renderer/graphics/Point.h +16 -9
  1152. package/ReactCommon/react/renderer/graphics/RadialGradient.cpp +138 -0
  1153. package/ReactCommon/react/renderer/graphics/RadialGradient.h +47 -29
  1154. package/ReactCommon/react/renderer/graphics/Rect.h +39 -33
  1155. package/ReactCommon/react/renderer/graphics/RectangleCorners.h +11 -17
  1156. package/ReactCommon/react/renderer/graphics/RectangleEdges.h +27 -31
  1157. package/ReactCommon/react/renderer/graphics/Size.h +10 -5
  1158. package/ReactCommon/react/renderer/graphics/Transform.cpp +91 -64
  1159. package/ReactCommon/react/renderer/graphics/Transform.h +39 -49
  1160. package/ReactCommon/react/renderer/graphics/ValueUnit.cpp +41 -0
  1161. package/ReactCommon/react/renderer/graphics/ValueUnit.h +24 -4
  1162. package/ReactCommon/react/renderer/graphics/fromRawValueShared.h +7 -7
  1163. package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/HostPlatformColor.h +19 -14
  1164. package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/PlatformColorParser.h +56 -36
  1165. package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/configurePlatformColorCacheInvalidationHook.cpp +27 -0
  1166. package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/configurePlatformColorCacheInvalidationHook.h +12 -0
  1167. package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/HostPlatformColor.h +21 -14
  1168. package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/PlatformColorParser.h +7 -11
  1169. package/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/HostPlatformColor.h +37 -26
  1170. package/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/HostPlatformColor.mm +14 -14
  1171. package/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/PlatformColorParser.h +5 -11
  1172. package/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/PlatformColorParser.mm +10 -9
  1173. package/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/RCTPlatformColorUtils.h +3 -5
  1174. package/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/RCTPlatformColorUtils.mm +3 -3
  1175. package/ReactCommon/react/renderer/graphics/rounding.h +28 -18
  1176. package/ReactCommon/react/renderer/imagemanager/ImageManager.h +5 -7
  1177. package/ReactCommon/react/renderer/imagemanager/ImageRequest.h +8 -9
  1178. package/ReactCommon/react/renderer/imagemanager/ImageResponseObserver.h +3 -4
  1179. package/ReactCommon/react/renderer/imagemanager/ImageResponseObserverCoordinator.cpp +3 -5
  1180. package/ReactCommon/react/renderer/imagemanager/ImageResponseObserverCoordinator.h +7 -12
  1181. package/ReactCommon/react/renderer/imagemanager/ImageTelemetry.h +2 -1
  1182. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +19 -41
  1183. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.h +14 -23
  1184. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageRequestParams.h +7 -4
  1185. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +21 -39
  1186. package/ReactCommon/react/renderer/imagemanager/platform/cxx/react/renderer/imagemanager/ImageRequestParams.h +4 -2
  1187. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/ImageRequestParams.h +4 -2
  1188. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h +2 -2
  1189. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +1 -1
  1190. package/ReactCommon/react/renderer/imagemanager/primitives.h +25 -31
  1191. package/ReactCommon/react/renderer/leakchecker/LeakChecker.h +1 -2
  1192. package/ReactCommon/react/renderer/leakchecker/WeakFamilyRegistry.h +1 -1
  1193. package/ReactCommon/react/renderer/mapbuffer/MapBuffer.h +6 -7
  1194. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.h +4 -10
  1195. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +3 -2
  1196. package/ReactCommon/react/renderer/mounting/Differentiator.h +2 -2
  1197. package/ReactCommon/react/renderer/mounting/MountingCoordinator.h +6 -9
  1198. package/ReactCommon/react/renderer/mounting/MountingOverrideDelegate.h +1 -1
  1199. package/ReactCommon/react/renderer/mounting/MountingTransaction.h +8 -10
  1200. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +22 -13
  1201. package/ReactCommon/react/renderer/mounting/ShadowTree.h +12 -23
  1202. package/ReactCommon/react/renderer/mounting/ShadowTreeDelegate.h +4 -4
  1203. package/ReactCommon/react/renderer/mounting/ShadowTreeRegistry.h +4 -9
  1204. package/ReactCommon/react/renderer/mounting/ShadowView.cpp +11 -8
  1205. package/ReactCommon/react/renderer/mounting/ShadowView.h +11 -10
  1206. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +14 -30
  1207. package/ReactCommon/react/renderer/mounting/TelemetryController.h +9 -11
  1208. package/ReactCommon/react/renderer/mounting/internal/CullingContext.cpp +14 -0
  1209. package/ReactCommon/react/renderer/mounting/internal/CullingContext.h +2 -3
  1210. package/ReactCommon/react/renderer/mounting/internal/ShadowViewNodePair.h +9 -6
  1211. package/ReactCommon/react/renderer/mounting/internal/TinyMap.h +18 -14
  1212. package/ReactCommon/react/renderer/mounting/internal/sliceChildShadowNodeViewPairs.cpp +5 -3
  1213. package/ReactCommon/react/renderer/mounting/internal/sliceChildShadowNodeViewPairs.h +4 -4
  1214. package/ReactCommon/react/renderer/mounting/stubs/StubView.h +7 -9
  1215. package/ReactCommon/react/renderer/mounting/stubs/StubViewTree.h +14 -16
  1216. package/ReactCommon/react/renderer/mounting/stubs/stubs.cpp +13 -10
  1217. package/ReactCommon/react/renderer/mounting/stubs/stubs.h +2 -4
  1218. package/ReactCommon/react/renderer/mounting/tests/OrderIndexTest.cpp +2 -1
  1219. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +40 -22
  1220. package/ReactCommon/react/renderer/mounting/tests/StackingContextTest.cpp +3 -2
  1221. package/ReactCommon/react/renderer/mounting/updateMountedFlag.cpp +6 -0
  1222. package/ReactCommon/react/renderer/mounting/updateMountedFlag.h +2 -2
  1223. package/ReactCommon/react/renderer/observers/events/EventPerformanceLogger.cpp +3 -1
  1224. package/ReactCommon/react/renderer/observers/events/EventPerformanceLogger.h +6 -10
  1225. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.cpp +175 -56
  1226. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.h +34 -19
  1227. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserverManager.cpp +15 -6
  1228. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserverManager.h +18 -30
  1229. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserverState.h +4 -9
  1230. package/ReactCommon/react/renderer/observers/mutation/MutationObserver.cpp +6 -5
  1231. package/ReactCommon/react/renderer/observers/mutation/MutationObserver.h +20 -24
  1232. package/ReactCommon/react/renderer/observers/mutation/MutationObserverManager.h +14 -17
  1233. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +36 -62
  1234. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +1 -1
  1235. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +4 -5
  1236. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.h +3 -4
  1237. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerEventTimingDelegate.h +1 -2
  1238. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerIntersectionObserverDelegate.h +1 -2
  1239. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h +23 -43
  1240. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.h +31 -56
  1241. package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +7 -7
  1242. package/ReactCommon/react/renderer/runtimescheduler/Task.h +6 -13
  1243. package/ReactCommon/react/renderer/runtimescheduler/primitives.h +4 -6
  1244. package/ReactCommon/react/renderer/runtimescheduler/tests/StubClock.h +8 -4
  1245. package/ReactCommon/react/renderer/runtimescheduler/tests/StubErrorUtils.h +9 -12
  1246. package/ReactCommon/react/renderer/runtimescheduler/tests/StubQueue.h +16 -13
  1247. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +12 -36
  1248. package/ReactCommon/react/renderer/scheduler/Scheduler.h +26 -33
  1249. package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +11 -22
  1250. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +3 -3
  1251. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +15 -22
  1252. package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +5 -5
  1253. package/ReactCommon/react/renderer/scheduler/SurfaceManager.h +13 -17
  1254. package/ReactCommon/react/renderer/telemetry/SurfaceTelemetry.h +1 -3
  1255. package/ReactCommon/react/renderer/telemetry/TransactionTelemetry.h +1 -1
  1256. package/ReactCommon/react/renderer/textlayoutmanager/TextLayoutContext.h +1 -1
  1257. package/ReactCommon/react/renderer/textlayoutmanager/TextLayoutManagerExtended.h +27 -34
  1258. package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.h +68 -106
  1259. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/JPreparedLayout.h +1 -2
  1260. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +9 -7
  1261. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.h +23 -28
  1262. package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/react/renderer/textlayoutmanager/TextLayoutManager.cpp +9 -4
  1263. package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/react/renderer/textlayoutmanager/TextLayoutManager.h +9 -10
  1264. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.h +1 -1
  1265. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm +10 -10
  1266. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.h +10 -2
  1267. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm +71 -40
  1268. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +6 -7
  1269. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.h +12 -13
  1270. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.mm +2 -2
  1271. package/ReactCommon/react/renderer/uimanager/AppRegistryBinding.h +7 -7
  1272. package/ReactCommon/react/renderer/uimanager/PointerEventsProcessor.cpp +5 -3
  1273. package/ReactCommon/react/renderer/uimanager/PointerEventsProcessor.h +28 -37
  1274. package/ReactCommon/react/renderer/uimanager/PointerHoverTracker.h +7 -14
  1275. package/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.h +1 -2
  1276. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +17 -5
  1277. package/ReactCommon/react/renderer/uimanager/UIManager.h +68 -77
  1278. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +24 -0
  1279. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationDelegate.h +5 -6
  1280. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +3 -3
  1281. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +13 -15
  1282. package/ReactCommon/react/renderer/uimanager/UIManagerCommitHook.h +12 -23
  1283. package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +14 -21
  1284. package/ReactCommon/react/renderer/uimanager/UIManagerMountHook.h +3 -4
  1285. package/ReactCommon/react/renderer/uimanager/UIManagerUpdateShadowTree.cpp +1 -2
  1286. package/ReactCommon/react/renderer/uimanager/consistency/LazyShadowTreeRevisionConsistencyManager.h +6 -11
  1287. package/ReactCommon/react/renderer/uimanager/primitives.h +37 -51
  1288. package/ReactCommon/react/renderer/uimanager/tests/PointerEventsProcessorTest.cpp +4 -2
  1289. package/ReactCommon/react/runtime/BindingsInstaller.h +2 -1
  1290. package/ReactCommon/react/runtime/BridgelessNativeMethodCallInvoker.h +3 -7
  1291. package/ReactCommon/react/runtime/BufferedRuntimeExecutor.h +4 -3
  1292. package/ReactCommon/react/runtime/ReactInstance.cpp +14 -1
  1293. package/ReactCommon/react/runtime/ReactInstance.h +14 -20
  1294. package/ReactCommon/react/runtime/TimerManager.h +17 -25
  1295. package/ReactCommon/react/runtime/nativeviewconfig/LegacyUIManagerConstantsProviderBinding.h +4 -7
  1296. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.h +14 -15
  1297. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.mm +3 -15
  1298. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.h +10 -1
  1299. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +22 -2
  1300. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.h +10 -0
  1301. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +31 -1
  1302. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTJscInstance.h +2 -3
  1303. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTLegacyUIManagerConstantsProvider.h +1 -1
  1304. package/ReactCommon/react/test_utils/Entropy.h +24 -18
  1305. package/ReactCommon/react/test_utils/MockClock.h +5 -4
  1306. package/ReactCommon/react/test_utils/MockSurfaceHandler.h +1 -1
  1307. package/ReactCommon/react/test_utils/ios/RCTSwizzleHelpers.h +1 -4
  1308. package/ReactCommon/react/test_utils/ios/Shims/ShimRCTInstance.mm +9 -6
  1309. package/ReactCommon/react/test_utils/shadowTreeGeneration.h +70 -91
  1310. package/ReactCommon/react/timing/primitives.h +127 -115
  1311. package/ReactCommon/react/utils/CMakeLists.txt +1 -1
  1312. package/ReactCommon/react/utils/ContextContainer.h +16 -13
  1313. package/ReactCommon/react/utils/FloatComparison.h +3 -4
  1314. package/ReactCommon/react/utils/OnScopeExit.h +7 -7
  1315. package/ReactCommon/react/utils/PackTraits.h +5 -4
  1316. package/ReactCommon/react/utils/React-utils.podspec +3 -1
  1317. package/ReactCommon/react/utils/RunLoopObserver.h +4 -7
  1318. package/ReactCommon/react/utils/SharedFunction.h +10 -9
  1319. package/ReactCommon/react/utils/SimpleThreadSafeCache.h +10 -11
  1320. package/ReactCommon/react/utils/Telemetry.h +19 -27
  1321. package/ReactCommon/react/utils/TemplateStringLiteral.h +4 -2
  1322. package/ReactCommon/react/utils/Uuid.cpp +69 -0
  1323. package/ReactCommon/react/utils/Uuid.h +20 -0
  1324. package/ReactCommon/react/utils/fnv1a.h +8 -6
  1325. package/ReactCommon/react/utils/hash_combine.h +5 -3
  1326. package/ReactCommon/react/utils/iequals.h +2 -1
  1327. package/ReactCommon/react/utils/jsi-utils.h +1 -4
  1328. package/ReactCommon/react/utils/platform/android/react/utils/LowPriorityExecutor.cpp +1 -1
  1329. package/ReactCommon/react/utils/platform/android/react/utils/LowPriorityExecutor.h +1 -1
  1330. package/ReactCommon/react/utils/platform/cxx/react/utils/LowPriorityExecutor.h +2 -1
  1331. package/ReactCommon/react/utils/platform/ios/react/utils/FollyConvert.mm +2 -2
  1332. package/ReactCommon/react/utils/platform/ios/react/utils/LowPriorityExecutor.h +1 -1
  1333. package/ReactCommon/react/utils/tests/UuidTest.cpp +28 -0
  1334. package/ReactCommon/react/utils/tests/hash_combineTests.cpp +2 -2
  1335. package/ReactCommon/react/utils/toLower.h +2 -1
  1336. package/ReactCommon/react/utils/to_underlying.h +2 -1
  1337. package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.cpp +24 -16
  1338. package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.h +7 -11
  1339. package/ReactCommon/reactperflogger/reactperflogger/BridgeNativeModulePerfLogger.h +38 -67
  1340. package/ReactCommon/reactperflogger/reactperflogger/FuseboxPerfettoDataSource.h +9 -11
  1341. package/ReactCommon/reactperflogger/reactperflogger/HermesPerfettoDataSource.h +9 -11
  1342. package/ReactCommon/reactperflogger/reactperflogger/NativeModulePerfLogger.h +38 -84
  1343. package/ReactCommon/reactperflogger/reactperflogger/ReactPerfetto.h +2 -2
  1344. package/ReactCommon/reactperflogger/reactperflogger/ReactPerfettoCategories.h +1 -2
  1345. package/ReactCommon/reactperflogger/reactperflogger/ReactPerfettoLogger.h +6 -6
  1346. package/ReactCommon/runtimeexecutor/ReactCommon/RuntimeExecutor.h +1 -2
  1347. package/ReactCommon/runtimeexecutor/platform/cxx/ReactCommon/RuntimeExecutorSyncUIThreadUtils.h +6 -6
  1348. package/ReactCommon/runtimeexecutor/platform/ios/ReactCommon/RuntimeExecutorSyncUIThreadUtils.h +6 -6
  1349. package/ReactCommon/yoga/cmake/yoga-config.cmake.in +1 -1
  1350. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +14 -11
  1351. package/flow/bom.js.flow +1 -0
  1352. package/index.js +6 -0
  1353. package/index.js.flow +4 -0
  1354. package/jest/mockComponent.js +6 -6
  1355. package/jest/setup.js +15 -10
  1356. package/package.json +15 -17
  1357. package/scripts/cocoapods/rncore.rb +261 -36
  1358. package/scripts/cocoapods/rndependencies.rb +56 -19
  1359. package/scripts/cocoapods/utils.rb +5 -0
  1360. package/scripts/codegen/codegen-utils.js +2 -2
  1361. package/scripts/codegen/generate-artifacts-executor/generatePackageSwift.js +44 -0
  1362. package/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js +12 -3
  1363. package/scripts/codegen/generate-artifacts-executor/index.js +75 -29
  1364. package/scripts/codegen/generate-artifacts-executor/utils.js +44 -6
  1365. package/scripts/codegen/templates/Package.swift.template +59 -0
  1366. package/scripts/hermes/hermes-utils.js +52 -304
  1367. package/scripts/react_native_pods.rb +13 -2
  1368. package/scripts/react_native_pods_utils/script_phases.sh +1 -3
  1369. package/sdks/.hermesv1version +1 -0
  1370. package/sdks/.hermesversion +1 -1
  1371. package/sdks/hermes-engine/hermes-engine.podspec +5 -9
  1372. package/sdks/hermes-engine/hermes-utils.rb +24 -27
  1373. package/sdks/hermes-engine/version.properties +2 -1
  1374. package/src/private/components/virtualview/VirtualView.js +22 -27
  1375. package/src/private/components/virtualview/VirtualViewExperimentalNativeComponent.js +6 -0
  1376. package/src/private/featureflags/ReactNativeFeatureFlags.js +100 -19
  1377. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +18 -3
  1378. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +6 -0
  1379. package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +1 -0
  1380. package/src/private/webapis/dom/nodes/ReactNativeElement.js +12 -2
  1381. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +76 -15
  1382. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +1 -0
  1383. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  1384. package/src/private/webapis/performance/ResourceTiming.js +31 -4
  1385. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +4 -1
  1386. package/src/private/webapis/performance/specs/NativePerformance.js +3 -0
  1387. package/types/index.d.ts +1 -0
  1388. package/types/public/ReactNativeTypes.d.ts +115 -2
  1389. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +0 -152
  1390. package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +0 -3371
  1391. package/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.kt +0 -207
  1392. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/PerfMonitorOverlayViewManager.kt +0 -278
  1393. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/PerfMonitorOverlayManager.kt +0 -20
  1394. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutDirectionUtil.kt +0 -36
  1395. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NoSuchNativeViewException.kt +0 -34
  1396. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactRoot.java +0 -76
  1397. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/YogaNodePool.kt +0 -34
  1398. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/CSSBackgroundDrawable.java +0 -1474
  1399. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/AbstractLayoutAnimation.kt +0 -137
  1400. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/AnimatedPropertyType.kt +0 -42
  1401. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/BaseLayoutAnimation.kt +0 -96
  1402. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/InterpolatorType.kt +0 -43
  1403. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationType.kt +0 -46
  1404. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutCreateAnimation.kt +0 -33
  1405. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutDeleteAnimation.kt +0 -37
  1406. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutHandlingAnimation.kt +0 -42
  1407. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutUpdateAnimation.kt +0 -66
  1408. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/OpacityAnimation.kt +0 -77
  1409. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/PositionAndSizeAnimation.kt +0 -98
  1410. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/SimpleSpringInterpolator.kt +0 -62
  1411. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactRawTextManager.kt +0 -54
  1412. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactRawTextShadowNode.kt +0 -38
  1413. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactVirtualTextShadowNode.kt +0 -34
  1414. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactVirtualTextViewManager.kt +0 -54
  1415. package/ReactCommon/jsinspector-modern/network/NetworkReporter.cpp +0 -316
  1416. package/ReactCommon/jsinspector-modern/network/NetworkReporter.h +0 -211
  1417. package/ReactCommon/jsinspector-modern/tests/RuntimeTargetDebuggerSessionObserverTest.cpp +0 -214
  1418. package/scripts/hermes/prepare-hermes-for-build.js +0 -49
  1419. package/sdks/hermesc/linux64-bin/hermesc +0 -0
  1420. package/sdks/hermesc/osx-bin/hermes +0 -0
  1421. package/sdks/hermesc/osx-bin/hermes-lit +0 -15
  1422. package/sdks/hermesc/osx-bin/hermesc +0 -0
  1423. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  1424. package/sdks/hermesc/win64-bin/icudt64.dll +0 -0
  1425. package/sdks/hermesc/win64-bin/icuin64.dll +0 -0
  1426. package/sdks/hermesc/win64-bin/icuio64.dll +0 -0
  1427. package/sdks/hermesc/win64-bin/icutest64.dll +0 -0
  1428. package/sdks/hermesc/win64-bin/icutu64.dll +0 -0
  1429. package/sdks/hermesc/win64-bin/icuuc64.dll +0 -0
  1430. package/sdks/hermesc/win64-bin/msvcp140.dll +0 -0
  1431. package/sdks/hermesc/win64-bin/vcruntime140.dll +0 -0
  1432. package/sdks/hermesc/win64-bin/vcruntime140_1.dll +0 -0
@@ -1,1474 +0,0 @@
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
-
8
- package com.facebook.react.uimanager.drawable;
9
-
10
- import android.annotation.SuppressLint;
11
- import android.content.Context;
12
- import android.graphics.Canvas;
13
- import android.graphics.Color;
14
- import android.graphics.ColorFilter;
15
- import android.graphics.ComposeShader;
16
- import android.graphics.DashPathEffect;
17
- import android.graphics.Outline;
18
- import android.graphics.Paint;
19
- import android.graphics.Path;
20
- import android.graphics.PathEffect;
21
- import android.graphics.PixelFormat;
22
- import android.graphics.PointF;
23
- import android.graphics.PorterDuff;
24
- import android.graphics.Rect;
25
- import android.graphics.RectF;
26
- import android.graphics.Region;
27
- import android.graphics.Shader;
28
- import android.graphics.drawable.Drawable;
29
- import android.view.View;
30
- import androidx.annotation.Nullable;
31
- import androidx.core.graphics.ColorUtils;
32
- import androidx.core.util.Preconditions;
33
- import com.facebook.infer.annotation.Nullsafe;
34
- import com.facebook.react.common.annotations.UnstableReactNativeAPI;
35
- import com.facebook.react.modules.i18nmanager.I18nUtil;
36
- import com.facebook.react.uimanager.FloatUtil;
37
- import com.facebook.react.uimanager.LengthPercentage;
38
- import com.facebook.react.uimanager.LengthPercentageType;
39
- import com.facebook.react.uimanager.PixelUtil;
40
- import com.facebook.react.uimanager.Spacing;
41
- import com.facebook.react.uimanager.style.BackgroundImageLayer;
42
- import com.facebook.react.uimanager.style.BorderRadiusProp;
43
- import com.facebook.react.uimanager.style.BorderRadiusStyle;
44
- import com.facebook.react.uimanager.style.BorderStyle;
45
- import com.facebook.react.uimanager.style.ComputedBorderRadius;
46
- import com.facebook.react.uimanager.style.CornerRadii;
47
- import java.util.List;
48
- import java.util.Locale;
49
- import java.util.Objects;
50
-
51
- /**
52
- * A subclass of {@link Drawable} used for background of {@link
53
- * com.facebook.react.views.view.ReactViewGroup}. It supports drawing background color and borders
54
- * (including rounded borders) by providing a react friendly API (setter for each of those
55
- * properties).
56
- *
57
- * <p>The implementation tries to allocate as few objects as possible depending on which properties
58
- * are set. E.g. for views with rounded background/borders we allocate {@code
59
- * mInnerClipPathForBorderRadius} and {@code mInnerClipTempRectForBorderRadius}. In case when view
60
- * have a rectangular borders we allocate {@code mBorderWidthResult} and similar. When only
61
- * background color is set we won't allocate any extra/unnecessary objects.
62
- */
63
- @UnstableReactNativeAPI
64
- @Nullsafe(Nullsafe.Mode.LOCAL)
65
- public class CSSBackgroundDrawable extends Drawable {
66
-
67
- private static final int DEFAULT_BORDER_COLOR = Color.BLACK;
68
- private static final int DEFAULT_BORDER_RGB = 0x00FFFFFF & DEFAULT_BORDER_COLOR;
69
- private static final int DEFAULT_BORDER_ALPHA = (0xFF000000 & DEFAULT_BORDER_COLOR) >>> 24;
70
- // ~0 == 0xFFFFFFFF, all bits set to 1.
71
- private static final int ALL_BITS_SET = ~0;
72
- // 0 == 0x00000000, all bits set to 0.
73
- private static final int ALL_BITS_UNSET = 0;
74
-
75
- private static @Nullable PathEffect getPathEffect(BorderStyle style, float borderWidth) {
76
- switch (style) {
77
- case SOLID:
78
- return null;
79
-
80
- case DASHED:
81
- return new DashPathEffect(
82
- new float[] {borderWidth * 3, borderWidth * 3, borderWidth * 3, borderWidth * 3}, 0);
83
-
84
- case DOTTED:
85
- return new DashPathEffect(
86
- new float[] {borderWidth, borderWidth, borderWidth, borderWidth}, 0);
87
-
88
- default:
89
- return null;
90
- }
91
- }
92
-
93
- /* Value at Spacing.ALL index used for rounded borders, whole array used by rectangular borders */
94
- private @Nullable Spacing mBorderWidth;
95
- private @Nullable Spacing mBorderRGB;
96
- private @Nullable Spacing mBorderAlpha;
97
- private @Nullable BorderStyle mBorderStyle;
98
-
99
- private @Nullable Path mInnerClipPathForBorderRadius;
100
- private @Nullable Path mBackgroundColorRenderPath;
101
- private @Nullable Path mOuterClipPathForBorderRadius;
102
- private @Nullable Path mPathForBorderRadiusOutline;
103
- private @Nullable Path mPathForBorder;
104
- private final Path mPathForSingleBorder = new Path();
105
- private @Nullable Path mCenterDrawPath;
106
- private @Nullable RectF mInnerClipTempRectForBorderRadius;
107
- private @Nullable RectF mOuterClipTempRectForBorderRadius;
108
- private @Nullable RectF mTempRectForBorderRadiusOutline;
109
- private @Nullable RectF mTempRectForCenterDrawPath;
110
- private @Nullable PointF mInnerTopLeftCorner;
111
- private @Nullable PointF mInnerTopRightCorner;
112
- private @Nullable PointF mInnerBottomRightCorner;
113
- private @Nullable PointF mInnerBottomLeftCorner;
114
- private boolean mNeedUpdatePathForBorderRadius = false;
115
-
116
- /* Used by all types of background and for drawing borders */
117
- private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
118
- private int mColor = Color.TRANSPARENT;
119
- private @Nullable List<BackgroundImageLayer> mBackgroundImageLayers = null;
120
- private int mAlpha = 255;
121
-
122
- // There is a small gap between the edges of adjacent paths
123
- // such as between the mBackgroundColorRenderPath and its border.
124
- // The smallest amount (found to be 0.8f) is used to extend
125
- // the paths, overlapping them and closing the visible gap.
126
- private final float mGapBetweenPaths = 0.8f;
127
-
128
- private BorderRadiusStyle mBorderRadius = new BorderRadiusStyle();
129
- private ComputedBorderRadius mComputedBorderRadius = new ComputedBorderRadius();
130
- private final Context mContext;
131
-
132
- // Should be removed after migrating to Android layout direction.
133
- private int mLayoutDirectionOverride = -1;
134
-
135
- public CSSBackgroundDrawable(Context context) {
136
- mContext = context;
137
- }
138
-
139
- @Override
140
- public void draw(Canvas canvas) {
141
- updatePathEffect();
142
- if (!hasRoundedBorders()) {
143
- drawRectangularBackgroundWithBorders(canvas);
144
- } else {
145
- drawRoundedBackgroundWithBorders(canvas);
146
- }
147
- }
148
-
149
- public boolean hasRoundedBorders() {
150
- return mBorderRadius.hasRoundedBorders();
151
- }
152
-
153
- @Override
154
- protected void onBoundsChange(Rect bounds) {
155
- super.onBoundsChange(bounds);
156
- mNeedUpdatePathForBorderRadius = true;
157
- }
158
-
159
- @Override
160
- public void setAlpha(int alpha) {
161
- if (alpha != mAlpha) {
162
- mAlpha = alpha;
163
- invalidateSelf();
164
- }
165
- }
166
-
167
- @Override
168
- public int getAlpha() {
169
- return mAlpha;
170
- }
171
-
172
- @Override
173
- public void setColorFilter(ColorFilter cf) {
174
- // do nothing
175
- }
176
-
177
- @Deprecated
178
- public void setLayoutDirectionOverride(int layoutDirection) {
179
- if (mLayoutDirectionOverride != layoutDirection) {
180
- mLayoutDirectionOverride = layoutDirection;
181
- }
182
- }
183
-
184
- @Override
185
- @SuppressLint("WrongConstant")
186
- public int getLayoutDirection() {
187
- return mLayoutDirectionOverride == -1 ? super.getLayoutDirection() : mLayoutDirectionOverride;
188
- }
189
-
190
- @Override
191
- public int getOpacity() {
192
- int alpha = (Color.alpha(mColor) * mAlpha) >> 8;
193
- switch (alpha) {
194
- case 255:
195
- return PixelFormat.OPAQUE;
196
- case 0:
197
- return PixelFormat.TRANSPARENT;
198
- default:
199
- return PixelFormat.TRANSLUCENT;
200
- }
201
- }
202
-
203
- /* Android's elevation implementation requires this to be implemented to know where to draw the shadow. */
204
- @Override
205
- public void getOutline(Outline outline) {
206
- if (hasRoundedBorders()) {
207
- updatePath();
208
-
209
- outline.setConvexPath(Preconditions.checkNotNull(mPathForBorderRadiusOutline));
210
- } else {
211
- outline.setRect(getBounds());
212
- }
213
- }
214
-
215
- public void setBorderWidth(int position, float width) {
216
- if (mBorderWidth == null) {
217
- mBorderWidth = new Spacing();
218
- }
219
- if (!FloatUtil.floatsEqual(mBorderWidth.getRaw(position), width)) {
220
- mBorderWidth.set(position, width);
221
- switch (position) {
222
- case Spacing.ALL:
223
- case Spacing.LEFT:
224
- case Spacing.BOTTOM:
225
- case Spacing.RIGHT:
226
- case Spacing.TOP:
227
- case Spacing.START:
228
- case Spacing.END:
229
- mNeedUpdatePathForBorderRadius = true;
230
- }
231
- invalidateSelf();
232
- }
233
- }
234
-
235
- public void setBorderColor(int position, @Nullable Integer color) {
236
- float rgbComponent = color == null ? Float.NaN : (float) ((int) color & 0x00FFFFFF);
237
- float alphaComponent = color == null ? Float.NaN : (float) ((int) color >>> 24);
238
-
239
- this.setBorderRGB(position, rgbComponent);
240
- this.setBorderAlpha(position, alphaComponent);
241
- mNeedUpdatePathForBorderRadius = true;
242
- }
243
-
244
- private void setBorderRGB(int position, float rgb) {
245
- // set RGB component
246
- if (mBorderRGB == null) {
247
- mBorderRGB = new Spacing(DEFAULT_BORDER_RGB);
248
- }
249
- if (!FloatUtil.floatsEqual(mBorderRGB.getRaw(position), rgb)) {
250
- mBorderRGB.set(position, rgb);
251
- invalidateSelf();
252
- }
253
- }
254
-
255
- private void setBorderAlpha(int position, float alpha) {
256
- // set Alpha component
257
- if (mBorderAlpha == null) {
258
- mBorderAlpha = new Spacing(DEFAULT_BORDER_ALPHA);
259
- }
260
- if (!FloatUtil.floatsEqual(mBorderAlpha.getRaw(position), alpha)) {
261
- mBorderAlpha.set(position, alpha);
262
- invalidateSelf();
263
- }
264
- }
265
-
266
- public void setBorderStyle(@Nullable String style) {
267
- BorderStyle borderStyle =
268
- style == null ? null : BorderStyle.valueOf(style.toUpperCase(Locale.US));
269
- setBorderStyle(borderStyle);
270
- }
271
-
272
- public void setBorderStyle(@Nullable BorderStyle borderStyle) {
273
- if (mBorderStyle != borderStyle) {
274
- mBorderStyle = borderStyle;
275
- mNeedUpdatePathForBorderRadius = true;
276
- invalidateSelf();
277
- }
278
- }
279
-
280
- public @Nullable BorderStyle getBorderStyle() {
281
- return mBorderStyle;
282
- }
283
-
284
- /**
285
- * @deprecated Use {@link #setBorderRadius(BorderRadiusProp, LengthPercentage)} instead.
286
- */
287
- @Deprecated(since = "0.75.0", forRemoval = true)
288
- public void setRadius(float radius) {
289
- @Nullable Float boxedRadius = Float.isNaN(radius) ? null : Float.valueOf(radius);
290
- if (boxedRadius == null) {
291
- setBorderRadius(BorderRadiusProp.BORDER_RADIUS, null);
292
- } else {
293
- setBorderRadius(
294
- BorderRadiusProp.BORDER_RADIUS,
295
- new LengthPercentage(boxedRadius, LengthPercentageType.POINT));
296
- }
297
- }
298
-
299
- /**
300
- * @deprecated Use {@link #setBorderRadius(BorderRadiusProp, LengthPercentage)} instead.
301
- */
302
- @Deprecated(since = "0.75.0", forRemoval = true)
303
- public void setRadius(float radius, int position) {
304
- @Nullable Float boxedRadius = Float.isNaN(radius) ? null : Float.valueOf(radius);
305
-
306
- if (boxedRadius == null) {
307
- mBorderRadius.set(BorderRadiusProp.values()[position], null);
308
- invalidateSelf();
309
- } else {
310
- setBorderRadius(
311
- BorderRadiusProp.values()[position],
312
- new LengthPercentage(boxedRadius, LengthPercentageType.POINT));
313
- }
314
- }
315
-
316
- public void setBorderRadius(BorderRadiusProp property, @Nullable LengthPercentage radius) {
317
- if (!Objects.equals(radius, mBorderRadius.get(property))) {
318
- mBorderRadius.set(property, radius);
319
- mNeedUpdatePathForBorderRadius = true;
320
- invalidateSelf();
321
- }
322
- }
323
-
324
- public void setBorderRadius(BorderRadiusStyle radius) {
325
- mBorderRadius = radius;
326
- }
327
-
328
- public BorderRadiusStyle getBorderRadius() {
329
- return mBorderRadius;
330
- }
331
-
332
- // Here, "inner" refers to the border radius on the inside of the border. So
333
- // it ends up being the "outer" border radius inset by the respective width.
334
- public float getInnerBorderRadius(float computedRadius, float borderWidth) {
335
- return Math.max(computedRadius - borderWidth, 0);
336
- }
337
-
338
- public void setColor(int color) {
339
- mColor = color;
340
- invalidateSelf();
341
- }
342
-
343
- public void setBackgroundImage(@Nullable List<BackgroundImageLayer> backgroundImageLayers) {
344
- mBackgroundImageLayers = backgroundImageLayers;
345
- invalidateSelf();
346
- }
347
-
348
- public int getColor() {
349
- return mColor;
350
- }
351
-
352
- public @Nullable Path getBorderBoxPath() {
353
- if (hasRoundedBorders()) {
354
- updatePath();
355
- return new Path(Preconditions.checkNotNull(mOuterClipPathForBorderRadius));
356
- }
357
-
358
- return null;
359
- }
360
-
361
- public RectF getBorderBoxRect() {
362
- return new RectF(getBounds());
363
- }
364
-
365
- public @Nullable Path getPaddingBoxPath() {
366
- if (hasRoundedBorders()) {
367
- updatePath();
368
- return new Path(Preconditions.checkNotNull(mInnerClipPathForBorderRadius));
369
- }
370
-
371
- return null;
372
- }
373
-
374
- public RectF getPaddingBoxRect() {
375
- @Nullable RectF insets = getDirectionAwareBorderInsets();
376
- if (insets == null) {
377
- return new RectF(0, 0, getBounds().width(), getBounds().height());
378
- }
379
-
380
- return new RectF(
381
- insets.left,
382
- insets.top,
383
- getBounds().width() - insets.right,
384
- getBounds().height() - insets.bottom);
385
- }
386
-
387
- private void drawRoundedBackgroundWithBorders(Canvas canvas) {
388
- updatePath();
389
- canvas.save();
390
-
391
- // Draws the View without its border first (with background color fill)
392
- int useColor = ColorUtils.setAlphaComponent(mColor, (Color.alpha(mColor) * mAlpha) >> 8);
393
- if (Color.alpha(useColor) != 0) {
394
- mPaint.setColor(useColor);
395
- mPaint.setStyle(Paint.Style.FILL);
396
- canvas.drawPath(Preconditions.checkNotNull(mBackgroundColorRenderPath), mPaint);
397
- }
398
-
399
- if (mBackgroundImageLayers != null && !mBackgroundImageLayers.isEmpty()) {
400
- mPaint.setShader(getBackgroundImageShader());
401
- mPaint.setStyle(Paint.Style.FILL);
402
- canvas.drawPath(Preconditions.checkNotNull(mBackgroundColorRenderPath), mPaint);
403
- mPaint.setShader(null);
404
- }
405
-
406
- final RectF borderWidth = getDirectionAwareBorderInsets();
407
- int colorLeft = getBorderColor(Spacing.LEFT);
408
- int colorTop = getBorderColor(Spacing.TOP);
409
- int colorRight = getBorderColor(Spacing.RIGHT);
410
- int colorBottom = getBorderColor(Spacing.BOTTOM);
411
-
412
- int colorBlock = getBorderColor(Spacing.BLOCK);
413
- int colorBlockStart = getBorderColor(Spacing.BLOCK_START);
414
- int colorBlockEnd = getBorderColor(Spacing.BLOCK_END);
415
-
416
- if (isBorderColorDefined(Spacing.BLOCK)) {
417
- colorBottom = colorBlock;
418
- colorTop = colorBlock;
419
- }
420
- if (isBorderColorDefined(Spacing.BLOCK_END)) {
421
- colorBottom = colorBlockEnd;
422
- }
423
- if (isBorderColorDefined(Spacing.BLOCK_START)) {
424
- colorTop = colorBlockStart;
425
- }
426
-
427
- if (borderWidth.top > 0
428
- || borderWidth.bottom > 0
429
- || borderWidth.left > 0
430
- || borderWidth.right > 0) {
431
-
432
- // Clip outer border
433
- canvas.clipPath(
434
- Preconditions.checkNotNull(mOuterClipPathForBorderRadius), Region.Op.INTERSECT);
435
-
436
- // If it's a full and even border draw inner rect path with stroke
437
- final float fullBorderWidth = getFullBorderWidth();
438
- int borderColor = getBorderColor(Spacing.ALL);
439
- if (borderWidth.top == fullBorderWidth
440
- && borderWidth.bottom == fullBorderWidth
441
- && borderWidth.left == fullBorderWidth
442
- && borderWidth.right == fullBorderWidth
443
- && colorLeft == borderColor
444
- && colorTop == borderColor
445
- && colorRight == borderColor
446
- && colorBottom == borderColor) {
447
- if (fullBorderWidth > 0) {
448
- mPaint.setColor(multiplyColorAlpha(borderColor, mAlpha));
449
- mPaint.setStyle(Paint.Style.STROKE);
450
- mPaint.setStrokeWidth(fullBorderWidth);
451
- canvas.drawPath(Preconditions.checkNotNull(mCenterDrawPath), mPaint);
452
- }
453
- }
454
- // In the case of uneven border widths/colors draw quadrilateral in each direction
455
- else {
456
- mPaint.setStyle(Paint.Style.FILL);
457
-
458
- // Clip inner border
459
- canvas.clipPath(
460
- Preconditions.checkNotNull(mInnerClipPathForBorderRadius), Region.Op.DIFFERENCE);
461
-
462
- final boolean isRTL = getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
463
- int colorStart = getBorderColor(Spacing.START);
464
- int colorEnd = getBorderColor(Spacing.END);
465
-
466
- if (I18nUtil.getInstance().doLeftAndRightSwapInRTL(mContext)) {
467
- if (!isBorderColorDefined(Spacing.START)) {
468
- colorStart = colorLeft;
469
- }
470
-
471
- if (!isBorderColorDefined(Spacing.END)) {
472
- colorEnd = colorRight;
473
- }
474
-
475
- final int directionAwareColorLeft = isRTL ? colorEnd : colorStart;
476
- final int directionAwareColorRight = isRTL ? colorStart : colorEnd;
477
-
478
- colorLeft = directionAwareColorLeft;
479
- colorRight = directionAwareColorRight;
480
- } else {
481
- final int directionAwareColorLeft = isRTL ? colorEnd : colorStart;
482
- final int directionAwareColorRight = isRTL ? colorStart : colorEnd;
483
-
484
- final boolean isColorStartDefined = isBorderColorDefined(Spacing.START);
485
- final boolean isColorEndDefined = isBorderColorDefined(Spacing.END);
486
- final boolean isDirectionAwareColorLeftDefined =
487
- isRTL ? isColorEndDefined : isColorStartDefined;
488
- final boolean isDirectionAwareColorRightDefined =
489
- isRTL ? isColorStartDefined : isColorEndDefined;
490
-
491
- if (isDirectionAwareColorLeftDefined) {
492
- colorLeft = directionAwareColorLeft;
493
- }
494
-
495
- if (isDirectionAwareColorRightDefined) {
496
- colorRight = directionAwareColorRight;
497
- }
498
- }
499
-
500
- final RectF outerClipTempRect =
501
- Preconditions.checkNotNull(mOuterClipTempRectForBorderRadius);
502
- final float left = outerClipTempRect.left;
503
- final float right = outerClipTempRect.right;
504
- final float top = outerClipTempRect.top;
505
- final float bottom = outerClipTempRect.bottom;
506
-
507
- final PointF innerTopLeftCorner = Preconditions.checkNotNull(mInnerTopLeftCorner);
508
- final PointF innerTopRightCorner = Preconditions.checkNotNull(mInnerTopRightCorner);
509
- final PointF innerBottomLeftCorner = Preconditions.checkNotNull(mInnerBottomLeftCorner);
510
- final PointF innerBottomRightCorner = Preconditions.checkNotNull(mInnerBottomRightCorner);
511
-
512
- // mGapBetweenPaths is used to close the gap between the diagonal
513
- // edges of the quadrilaterals on adjacent sides of the rectangle
514
- if (borderWidth.left > 0) {
515
- final float x1 = left;
516
- final float y1 = top - mGapBetweenPaths;
517
- final float x2 = innerTopLeftCorner.x;
518
- final float y2 = innerTopLeftCorner.y - mGapBetweenPaths;
519
- final float x3 = innerBottomLeftCorner.x;
520
- final float y3 = innerBottomLeftCorner.y + mGapBetweenPaths;
521
- final float x4 = left;
522
- final float y4 = bottom + mGapBetweenPaths;
523
-
524
- drawQuadrilateral(canvas, colorLeft, x1, y1, x2, y2, x3, y3, x4, y4);
525
- }
526
-
527
- if (borderWidth.top > 0) {
528
- final float x1 = left - mGapBetweenPaths;
529
- final float y1 = top;
530
- final float x2 = innerTopLeftCorner.x - mGapBetweenPaths;
531
- final float y2 = innerTopLeftCorner.y;
532
- final float x3 = innerTopRightCorner.x + mGapBetweenPaths;
533
- final float y3 = innerTopRightCorner.y;
534
- final float x4 = right + mGapBetweenPaths;
535
- final float y4 = top;
536
-
537
- drawQuadrilateral(canvas, colorTop, x1, y1, x2, y2, x3, y3, x4, y4);
538
- }
539
-
540
- if (borderWidth.right > 0) {
541
- final float x1 = right;
542
- final float y1 = top - mGapBetweenPaths;
543
- final float x2 = innerTopRightCorner.x;
544
- final float y2 = innerTopRightCorner.y - mGapBetweenPaths;
545
- final float x3 = innerBottomRightCorner.x;
546
- final float y3 = innerBottomRightCorner.y + mGapBetweenPaths;
547
- final float x4 = right;
548
- final float y4 = bottom + mGapBetweenPaths;
549
-
550
- drawQuadrilateral(canvas, colorRight, x1, y1, x2, y2, x3, y3, x4, y4);
551
- }
552
-
553
- if (borderWidth.bottom > 0) {
554
- final float x1 = left - mGapBetweenPaths;
555
- final float y1 = bottom;
556
- final float x2 = innerBottomLeftCorner.x - mGapBetweenPaths;
557
- final float y2 = innerBottomLeftCorner.y;
558
- final float x3 = innerBottomRightCorner.x + mGapBetweenPaths;
559
- final float y3 = innerBottomRightCorner.y;
560
- final float x4 = right + mGapBetweenPaths;
561
- final float y4 = bottom;
562
-
563
- drawQuadrilateral(canvas, colorBottom, x1, y1, x2, y2, x3, y3, x4, y4);
564
- }
565
- }
566
- }
567
-
568
- canvas.restore();
569
- }
570
-
571
- private void updatePath() {
572
- if (!mNeedUpdatePathForBorderRadius) {
573
- return;
574
- }
575
-
576
- mNeedUpdatePathForBorderRadius = false;
577
-
578
- if (mInnerClipPathForBorderRadius == null) {
579
- mInnerClipPathForBorderRadius = new Path();
580
- }
581
-
582
- if (mBackgroundColorRenderPath == null) {
583
- mBackgroundColorRenderPath = new Path();
584
- }
585
-
586
- if (mOuterClipPathForBorderRadius == null) {
587
- mOuterClipPathForBorderRadius = new Path();
588
- }
589
-
590
- if (mPathForBorderRadiusOutline == null) {
591
- mPathForBorderRadiusOutline = new Path();
592
- }
593
-
594
- if (mCenterDrawPath == null) {
595
- mCenterDrawPath = new Path();
596
- }
597
-
598
- if (mInnerClipTempRectForBorderRadius == null) {
599
- mInnerClipTempRectForBorderRadius = new RectF();
600
- }
601
-
602
- if (mOuterClipTempRectForBorderRadius == null) {
603
- mOuterClipTempRectForBorderRadius = new RectF();
604
- }
605
-
606
- if (mTempRectForBorderRadiusOutline == null) {
607
- mTempRectForBorderRadiusOutline = new RectF();
608
- }
609
-
610
- if (mTempRectForCenterDrawPath == null) {
611
- mTempRectForCenterDrawPath = new RectF();
612
- }
613
-
614
- mInnerClipPathForBorderRadius.reset();
615
- mBackgroundColorRenderPath.reset();
616
- mOuterClipPathForBorderRadius.reset();
617
- mPathForBorderRadiusOutline.reset();
618
- mCenterDrawPath.reset();
619
-
620
- mInnerClipTempRectForBorderRadius.set(getBounds());
621
- mOuterClipTempRectForBorderRadius.set(getBounds());
622
- mTempRectForBorderRadiusOutline.set(getBounds());
623
- mTempRectForCenterDrawPath.set(getBounds());
624
-
625
- final RectF borderWidth = getDirectionAwareBorderInsets();
626
-
627
- int colorLeft = getBorderColor(Spacing.LEFT);
628
- int colorTop = getBorderColor(Spacing.TOP);
629
- int colorRight = getBorderColor(Spacing.RIGHT);
630
- int colorBottom = getBorderColor(Spacing.BOTTOM);
631
- int borderColor = getBorderColor(Spacing.ALL);
632
-
633
- int colorBlock = getBorderColor(Spacing.BLOCK);
634
- int colorBlockStart = getBorderColor(Spacing.BLOCK_START);
635
- int colorBlockEnd = getBorderColor(Spacing.BLOCK_END);
636
-
637
- if (isBorderColorDefined(Spacing.BLOCK)) {
638
- colorBottom = colorBlock;
639
- colorTop = colorBlock;
640
- }
641
- if (isBorderColorDefined(Spacing.BLOCK_END)) {
642
- colorBottom = colorBlockEnd;
643
- }
644
- if (isBorderColorDefined(Spacing.BLOCK_START)) {
645
- colorTop = colorBlockStart;
646
- }
647
-
648
- // Clip border ONLY if at least one edge is non-transparent
649
- if (Color.alpha(colorLeft) != 0
650
- || Color.alpha(colorTop) != 0
651
- || Color.alpha(colorRight) != 0
652
- || Color.alpha(colorBottom) != 0
653
- || Color.alpha(borderColor) != 0) {
654
-
655
- mInnerClipTempRectForBorderRadius.top += borderWidth.top;
656
- mInnerClipTempRectForBorderRadius.bottom -= borderWidth.bottom;
657
- mInnerClipTempRectForBorderRadius.left += borderWidth.left;
658
- mInnerClipTempRectForBorderRadius.right -= borderWidth.right;
659
- }
660
-
661
- mTempRectForCenterDrawPath.top += borderWidth.top * 0.5f;
662
- mTempRectForCenterDrawPath.bottom -= borderWidth.bottom * 0.5f;
663
- mTempRectForCenterDrawPath.left += borderWidth.left * 0.5f;
664
- mTempRectForCenterDrawPath.right -= borderWidth.right * 0.5f;
665
-
666
- mComputedBorderRadius =
667
- mBorderRadius.resolve(
668
- getLayoutDirection(),
669
- mContext,
670
- PixelUtil.toDIPFromPixel(mOuterClipTempRectForBorderRadius.width()),
671
- PixelUtil.toDIPFromPixel(mOuterClipTempRectForBorderRadius.height()));
672
- CornerRadii topLeftRadius = mComputedBorderRadius.getTopLeft().toPixelFromDIP();
673
- CornerRadii topRightRadius = mComputedBorderRadius.getTopRight().toPixelFromDIP();
674
- CornerRadii bottomLeftRadius = mComputedBorderRadius.getBottomLeft().toPixelFromDIP();
675
- CornerRadii bottomRightRadius = mComputedBorderRadius.getBottomRight().toPixelFromDIP();
676
-
677
- final float innerTopLeftRadiusX =
678
- getInnerBorderRadius(topLeftRadius.getHorizontal(), borderWidth.left);
679
- final float innerTopLeftRadiusY =
680
- getInnerBorderRadius(topLeftRadius.getVertical(), borderWidth.top);
681
- final float innerTopRightRadiusX =
682
- getInnerBorderRadius(topRightRadius.getHorizontal(), borderWidth.right);
683
- final float innerTopRightRadiusY =
684
- getInnerBorderRadius(topRightRadius.getVertical(), borderWidth.top);
685
- final float innerBottomRightRadiusX =
686
- getInnerBorderRadius(bottomRightRadius.getHorizontal(), borderWidth.right);
687
- final float innerBottomRightRadiusY =
688
- getInnerBorderRadius(bottomRightRadius.getVertical(), borderWidth.bottom);
689
- final float innerBottomLeftRadiusX =
690
- getInnerBorderRadius(bottomLeftRadius.getHorizontal(), borderWidth.left);
691
- final float innerBottomLeftRadiusY =
692
- getInnerBorderRadius(bottomLeftRadius.getVertical(), borderWidth.bottom);
693
-
694
- mInnerClipPathForBorderRadius.addRoundRect(
695
- mInnerClipTempRectForBorderRadius,
696
- new float[] {
697
- innerTopLeftRadiusX,
698
- innerTopLeftRadiusY,
699
- innerTopRightRadiusX,
700
- innerTopRightRadiusY,
701
- innerBottomRightRadiusX,
702
- innerBottomRightRadiusY,
703
- innerBottomLeftRadiusX,
704
- innerBottomLeftRadiusY,
705
- },
706
- Path.Direction.CW);
707
-
708
- // There is a small gap between mBackgroundColorRenderPath and its
709
- // border. mGapBetweenPaths is used to slightly enlarge the rectangle
710
- // (mInnerClipTempRectForBorderRadius), ensuring the border can be
711
- // drawn on top without the gap.
712
- // only close gap between border and main path if we draw the border, otherwise
713
- // we wind up pixelating small pixel-radius curves
714
- mBackgroundColorRenderPath.addRoundRect(
715
- (borderWidth.left > 0)
716
- ? mInnerClipTempRectForBorderRadius.left - mGapBetweenPaths
717
- : mInnerClipTempRectForBorderRadius.left,
718
- (borderWidth.top > 0)
719
- ? mInnerClipTempRectForBorderRadius.top - mGapBetweenPaths
720
- : mInnerClipTempRectForBorderRadius.top,
721
- (borderWidth.right > 0)
722
- ? mInnerClipTempRectForBorderRadius.right + mGapBetweenPaths
723
- : mInnerClipTempRectForBorderRadius.right,
724
- (borderWidth.bottom > 0)
725
- ? mInnerClipTempRectForBorderRadius.bottom + mGapBetweenPaths
726
- : mInnerClipTempRectForBorderRadius.bottom,
727
- new float[] {
728
- innerTopLeftRadiusX,
729
- innerTopLeftRadiusY,
730
- innerTopRightRadiusX,
731
- innerTopRightRadiusY,
732
- innerBottomRightRadiusX,
733
- innerBottomRightRadiusY,
734
- innerBottomLeftRadiusX,
735
- innerBottomLeftRadiusY,
736
- },
737
- Path.Direction.CW);
738
-
739
- mOuterClipPathForBorderRadius.addRoundRect(
740
- mOuterClipTempRectForBorderRadius,
741
- new float[] {
742
- topLeftRadius.getHorizontal(),
743
- topLeftRadius.getVertical(),
744
- topRightRadius.getHorizontal(),
745
- topRightRadius.getVertical(),
746
- bottomRightRadius.getHorizontal(),
747
- bottomRightRadius.getVertical(),
748
- bottomLeftRadius.getHorizontal(),
749
- bottomLeftRadius.getVertical()
750
- },
751
- Path.Direction.CW);
752
-
753
- float extraRadiusForOutline = 0;
754
-
755
- if (mBorderWidth != null) {
756
- extraRadiusForOutline = mBorderWidth.get(Spacing.ALL) / 2f;
757
- }
758
-
759
- mPathForBorderRadiusOutline.addRoundRect(
760
- mTempRectForBorderRadiusOutline,
761
- new float[] {
762
- topLeftRadius.getHorizontal() + extraRadiusForOutline,
763
- topLeftRadius.getVertical() + extraRadiusForOutline,
764
- topRightRadius.getHorizontal() + extraRadiusForOutline,
765
- topRightRadius.getVertical() + extraRadiusForOutline,
766
- bottomRightRadius.getHorizontal() + extraRadiusForOutline,
767
- bottomRightRadius.getVertical() + extraRadiusForOutline,
768
- bottomLeftRadius.getHorizontal() + extraRadiusForOutline,
769
- bottomLeftRadius.getVertical() + extraRadiusForOutline
770
- },
771
- Path.Direction.CW);
772
-
773
- mCenterDrawPath.addRoundRect(
774
- mTempRectForCenterDrawPath,
775
- new float[] {
776
- topLeftRadius.getHorizontal() - borderWidth.left * 0.5f,
777
- topLeftRadius.getVertical() - borderWidth.top * 0.5f,
778
- topRightRadius.getHorizontal() - borderWidth.right * 0.5f,
779
- topRightRadius.getVertical() - borderWidth.top * 0.5f,
780
- bottomRightRadius.getHorizontal() - borderWidth.right * 0.5f,
781
- bottomRightRadius.getVertical() - borderWidth.bottom * 0.5f,
782
- bottomLeftRadius.getHorizontal() - borderWidth.left * 0.5f,
783
- bottomLeftRadius.getVertical() - borderWidth.bottom * 0.5f,
784
- },
785
- Path.Direction.CW);
786
-
787
- /**
788
- * Rounded Multi-Colored Border Algorithm:
789
- *
790
- * <p>Let O (for outer) = (top, left, bottom, right) be the rectangle that represents the size
791
- * and position of a view V. Since the box-sizing of all React Native views is border-box, any
792
- * border of V will render inside O.
793
- *
794
- * <p>Let BorderWidth = (borderTop, borderLeft, borderBottom, borderRight).
795
- *
796
- * <p>Let I (for inner) = O - BorderWidth.
797
- *
798
- * <p>Then, remembering that O and I are rectangles and that I is inside O, O - I gives us the
799
- * border of V. Therefore, we can use canvas.clipPath to draw V's border.
800
- *
801
- * <p>canvas.clipPath(O, Region.OP.INTERSECT);
802
- *
803
- * <p>canvas.clipPath(I, Region.OP.DIFFERENCE);
804
- *
805
- * <p>canvas.drawRect(O, paint);
806
- *
807
- * <p>This lets us draw non-rounded single-color borders.
808
- *
809
- * <p>To extend this algorithm to rounded single-color borders, we:
810
- *
811
- * <p>1. Curve the corners of O by the (border radii of V) using Path#addRoundRect.
812
- *
813
- * <p>2. Curve the corners of I by (border radii of V - border widths of V) using
814
- * Path#addRoundRect.
815
- *
816
- * <p>Let O' = curve(O, border radii of V).
817
- *
818
- * <p>Let I' = curve(I, border radii of V - border widths of V)
819
- *
820
- * <p>The rationale behind this decision is the (first sentence of the) following section in the
821
- * CSS Backgrounds and Borders Module Level 3:
822
- * https://www.w3.org/TR/css3-background/#the-border-radius.
823
- *
824
- * <p>After both O and I have been curved, we can execute the following lines once again to
825
- * render curved single-color borders:
826
- *
827
- * <p>canvas.clipPath(O, Region.OP.INTERSECT);
828
- *
829
- * <p>canvas.clipPath(I, Region.OP.DIFFERENCE);
830
- *
831
- * <p>canvas.drawRect(O, paint);
832
- *
833
- * <p>To extend this algorithm to rendering multi-colored rounded borders, we render each side
834
- * of the border as its own quadrilateral. Suppose that we were handling the case where all the
835
- * border radii are 0. Then, the four quadrilaterals would be:
836
- *
837
- * <p>Left: (O.left, O.top), (I.left, I.top), (I.left, I.bottom), (O.left, O.bottom)
838
- *
839
- * <p>Top: (O.left, O.top), (I.left, I.top), (I.right, I.top), (O.right, O.top)
840
- *
841
- * <p>Right: (O.right, O.top), (I.right, I.top), (I.right, I.bottom), (O.right, O.bottom)
842
- *
843
- * <p>Bottom: (O.right, O.bottom), (I.right, I.bottom), (I.left, I.bottom), (O.left, O.bottom)
844
- *
845
- * <p>Now, lets consider what happens when we render a rounded border (radii != 0). For the sake
846
- * of simplicity, let's focus on the top edge of the Left border:
847
- *
848
- * <p>Let borderTopLeftRadius = 5. Let borderLeftWidth = 1. Let borderTopWidth = 2.
849
- *
850
- * <p>We know that O is curved by the ellipse E_O (a = 5, b = 5). We know that I is curved by
851
- * the ellipse E_I (a = 5 - 1, b = 5 - 2).
852
- *
853
- * <p>Since we have clipping, it should be safe to set the top-left point of the Left
854
- * quadrilateral's top edge to (O.left, O.top).
855
- *
856
- * <p>But, what should the top-right point be?
857
- *
858
- * <p>The fact that the border is curved shouldn't change the slope (nor the position) of the
859
- * line connecting the top-left and top-right points of the Left quadrilateral's top edge.
860
- * Therefore, The top-right point should lie somewhere on the line L = (1 - a) * (O.left, O.top)
861
- * + a * (I.left, I.top).
862
- *
863
- * <p>a != 0, because then the top-left and top-right points would be the same and
864
- * borderLeftWidth = 1. a != 1, because then the top-right point would not touch an edge of the
865
- * ellipse E_I. We want the top-right point to touch an edge of the inner ellipse because the
866
- * border curves with E_I on the top-left corner of V.
867
- *
868
- * <p>Therefore, it must be the case that a > 1. Two natural locations of the top-right point
869
- * exist: 1. The first intersection of L with E_I. 2. The second intersection of L with E_I.
870
- *
871
- * <p>We choose the top-right point of the top edge of the Left quadrilateral to be an arbitrary
872
- * intersection of L with E_I.
873
- */
874
- if (mInnerTopLeftCorner == null) {
875
- mInnerTopLeftCorner = new PointF();
876
- }
877
-
878
- /** Compute mInnerTopLeftCorner */
879
- mInnerTopLeftCorner.x = mInnerClipTempRectForBorderRadius.left;
880
- mInnerTopLeftCorner.y = mInnerClipTempRectForBorderRadius.top;
881
-
882
- getEllipseIntersectionWithLine(
883
- // Ellipse Bounds
884
- mInnerClipTempRectForBorderRadius.left,
885
- mInnerClipTempRectForBorderRadius.top,
886
- mInnerClipTempRectForBorderRadius.left + 2 * innerTopLeftRadiusX,
887
- mInnerClipTempRectForBorderRadius.top + 2 * innerTopLeftRadiusY,
888
-
889
- // Line Start
890
- mOuterClipTempRectForBorderRadius.left,
891
- mOuterClipTempRectForBorderRadius.top,
892
-
893
- // Line End
894
- mInnerClipTempRectForBorderRadius.left,
895
- mInnerClipTempRectForBorderRadius.top,
896
-
897
- // Result
898
- mInnerTopLeftCorner);
899
-
900
- /** Compute mInnerBottomLeftCorner */
901
- if (mInnerBottomLeftCorner == null) {
902
- mInnerBottomLeftCorner = new PointF();
903
- }
904
-
905
- mInnerBottomLeftCorner.x = mInnerClipTempRectForBorderRadius.left;
906
- mInnerBottomLeftCorner.y = mInnerClipTempRectForBorderRadius.bottom;
907
-
908
- getEllipseIntersectionWithLine(
909
- // Ellipse Bounds
910
- mInnerClipTempRectForBorderRadius.left,
911
- mInnerClipTempRectForBorderRadius.bottom - 2 * innerBottomLeftRadiusY,
912
- mInnerClipTempRectForBorderRadius.left + 2 * innerBottomLeftRadiusX,
913
- mInnerClipTempRectForBorderRadius.bottom,
914
-
915
- // Line Start
916
- mOuterClipTempRectForBorderRadius.left,
917
- mOuterClipTempRectForBorderRadius.bottom,
918
-
919
- // Line End
920
- mInnerClipTempRectForBorderRadius.left,
921
- mInnerClipTempRectForBorderRadius.bottom,
922
-
923
- // Result
924
- mInnerBottomLeftCorner);
925
-
926
- /** Compute mInnerTopRightCorner */
927
- if (mInnerTopRightCorner == null) {
928
- mInnerTopRightCorner = new PointF();
929
- }
930
-
931
- mInnerTopRightCorner.x = mInnerClipTempRectForBorderRadius.right;
932
- mInnerTopRightCorner.y = mInnerClipTempRectForBorderRadius.top;
933
-
934
- getEllipseIntersectionWithLine(
935
- // Ellipse Bounds
936
- mInnerClipTempRectForBorderRadius.right - 2 * innerTopRightRadiusX,
937
- mInnerClipTempRectForBorderRadius.top,
938
- mInnerClipTempRectForBorderRadius.right,
939
- mInnerClipTempRectForBorderRadius.top + 2 * innerTopRightRadiusY,
940
-
941
- // Line Start
942
- mOuterClipTempRectForBorderRadius.right,
943
- mOuterClipTempRectForBorderRadius.top,
944
-
945
- // Line End
946
- mInnerClipTempRectForBorderRadius.right,
947
- mInnerClipTempRectForBorderRadius.top,
948
-
949
- // Result
950
- mInnerTopRightCorner);
951
-
952
- /** Compute mInnerBottomRightCorner */
953
- if (mInnerBottomRightCorner == null) {
954
- mInnerBottomRightCorner = new PointF();
955
- }
956
-
957
- mInnerBottomRightCorner.x = mInnerClipTempRectForBorderRadius.right;
958
- mInnerBottomRightCorner.y = mInnerClipTempRectForBorderRadius.bottom;
959
-
960
- getEllipseIntersectionWithLine(
961
- // Ellipse Bounds
962
- mInnerClipTempRectForBorderRadius.right - 2 * innerBottomRightRadiusX,
963
- mInnerClipTempRectForBorderRadius.bottom - 2 * innerBottomRightRadiusY,
964
- mInnerClipTempRectForBorderRadius.right,
965
- mInnerClipTempRectForBorderRadius.bottom,
966
-
967
- // Line Start
968
- mOuterClipTempRectForBorderRadius.right,
969
- mOuterClipTempRectForBorderRadius.bottom,
970
-
971
- // Line End
972
- mInnerClipTempRectForBorderRadius.right,
973
- mInnerClipTempRectForBorderRadius.bottom,
974
-
975
- // Result
976
- mInnerBottomRightCorner);
977
- }
978
-
979
- private static void getEllipseIntersectionWithLine(
980
- double ellipseBoundsLeft,
981
- double ellipseBoundsTop,
982
- double ellipseBoundsRight,
983
- double ellipseBoundsBottom,
984
- double lineStartX,
985
- double lineStartY,
986
- double lineEndX,
987
- double lineEndY,
988
- PointF result) {
989
- final double ellipseCenterX = (ellipseBoundsLeft + ellipseBoundsRight) / 2;
990
- final double ellipseCenterY = (ellipseBoundsTop + ellipseBoundsBottom) / 2;
991
-
992
- /**
993
- * Step 1:
994
- *
995
- * <p>Translate the line so that the ellipse is at the origin.
996
- *
997
- * <p>Why? It makes the math easier by changing the ellipse equation from ((x -
998
- * ellipseCenterX)/a)^2 + ((y - ellipseCenterY)/b)^2 = 1 to (x/a)^2 + (y/b)^2 = 1.
999
- */
1000
- lineStartX -= ellipseCenterX;
1001
- lineStartY -= ellipseCenterY;
1002
- lineEndX -= ellipseCenterX;
1003
- lineEndY -= ellipseCenterY;
1004
-
1005
- /**
1006
- * Step 2:
1007
- *
1008
- * <p>Ellipse equation: (x/a)^2 + (y/b)^2 = 1 Line equation: y = mx + c
1009
- */
1010
- final double a = Math.abs(ellipseBoundsRight - ellipseBoundsLeft) / 2;
1011
- final double b = Math.abs(ellipseBoundsBottom - ellipseBoundsTop) / 2;
1012
- final double m = (lineEndY - lineStartY) / (lineEndX - lineStartX);
1013
- final double c = lineStartY - m * lineStartX; // Just a point on the line
1014
-
1015
- /**
1016
- * Step 3:
1017
- *
1018
- * <p>Substitute the Line equation into the Ellipse equation. Solve for x. Eventually, you'll
1019
- * have to use the quadratic formula.
1020
- *
1021
- * <p>Quadratic formula: Ax^2 + Bx + C = 0
1022
- */
1023
- final double A = (b * b + a * a * m * m);
1024
- final double B = 2 * a * a * c * m;
1025
- final double C = (a * a * (c * c - b * b));
1026
-
1027
- /**
1028
- * Step 4:
1029
- *
1030
- * <p>Apply Quadratic formula. D = determinant / 2A
1031
- */
1032
- final double D = Math.sqrt(-C / A + Math.pow(B / (2 * A), 2));
1033
- final double x2 = -B / (2 * A) - D;
1034
- final double y2 = m * x2 + c;
1035
-
1036
- /**
1037
- * Step 5:
1038
- *
1039
- * <p>Undo the space transformation in Step 5.
1040
- */
1041
- final double x = x2 + ellipseCenterX;
1042
- final double y = y2 + ellipseCenterY;
1043
-
1044
- if (!Double.isNaN(x) && !Double.isNaN(y)) {
1045
- result.x = (float) x;
1046
- result.y = (float) y;
1047
- }
1048
- }
1049
-
1050
- public float getBorderWidthOrDefaultTo(final float defaultValue, final int spacingType) {
1051
- @Nullable Float width = getBorderWidth(spacingType);
1052
- if (width == null) {
1053
- return defaultValue;
1054
- }
1055
-
1056
- return width;
1057
- }
1058
-
1059
- public @Nullable Float getBorderWidth(int spacingType) {
1060
- if (mBorderWidth == null) {
1061
- return null;
1062
- }
1063
-
1064
- final float width = mBorderWidth.getRaw(spacingType);
1065
-
1066
- if (Float.isNaN(width)) {
1067
- return null;
1068
- }
1069
-
1070
- return width;
1071
- }
1072
-
1073
- /** Set type of border */
1074
- private void updatePathEffect() {
1075
- // Used for rounded border and rounded background
1076
- PathEffect mPathEffectForBorderStyle =
1077
- mBorderStyle != null ? getPathEffect(mBorderStyle, getFullBorderWidth()) : null;
1078
-
1079
- mPaint.setPathEffect(mPathEffectForBorderStyle);
1080
- }
1081
-
1082
- private void updatePathEffect(int borderWidth) {
1083
- PathEffect pathEffectForBorderStyle = null;
1084
- if (mBorderStyle != null) {
1085
- pathEffectForBorderStyle = getPathEffect(mBorderStyle, borderWidth);
1086
- }
1087
- mPaint.setPathEffect(pathEffectForBorderStyle);
1088
- }
1089
-
1090
- /** For rounded borders we use default "borderWidth" property. */
1091
- public float getFullBorderWidth() {
1092
- return (mBorderWidth != null && !Float.isNaN(mBorderWidth.getRaw(Spacing.ALL)))
1093
- ? mBorderWidth.getRaw(Spacing.ALL)
1094
- : 0f;
1095
- }
1096
-
1097
- /**
1098
- * Quickly determine if all the set border colors are equal. Bitwise AND all the set colors
1099
- * together, then OR them all together. If the AND and the OR are the same, then the colors are
1100
- * compatible, so return this color.
1101
- *
1102
- * <p>Used to avoid expensive path creation and expensive calls to canvas.drawPath
1103
- *
1104
- * @return A compatible border color, or zero if the border colors are not compatible.
1105
- */
1106
- private static int fastBorderCompatibleColorOrZero(
1107
- int borderLeft,
1108
- int borderTop,
1109
- int borderRight,
1110
- int borderBottom,
1111
- int colorLeft,
1112
- int colorTop,
1113
- int colorRight,
1114
- int colorBottom) {
1115
- int andSmear =
1116
- (borderLeft > 0 ? colorLeft : ALL_BITS_SET)
1117
- & (borderTop > 0 ? colorTop : ALL_BITS_SET)
1118
- & (borderRight > 0 ? colorRight : ALL_BITS_SET)
1119
- & (borderBottom > 0 ? colorBottom : ALL_BITS_SET);
1120
- int orSmear =
1121
- (borderLeft > 0 ? colorLeft : ALL_BITS_UNSET)
1122
- | (borderTop > 0 ? colorTop : ALL_BITS_UNSET)
1123
- | (borderRight > 0 ? colorRight : ALL_BITS_UNSET)
1124
- | (borderBottom > 0 ? colorBottom : ALL_BITS_UNSET);
1125
- return andSmear == orSmear ? andSmear : 0;
1126
- }
1127
-
1128
- private void drawRectangularBackgroundWithBorders(Canvas canvas) {
1129
- mPaint.setStyle(Paint.Style.FILL);
1130
-
1131
- int useColor = multiplyColorAlpha(mColor, mAlpha);
1132
- if (Color.alpha(useColor) != 0) {
1133
- mPaint.setColor(useColor);
1134
- canvas.drawRect(getBounds(), mPaint);
1135
- }
1136
-
1137
- if (mBackgroundImageLayers != null && !mBackgroundImageLayers.isEmpty()) {
1138
- mPaint.setShader(getBackgroundImageShader());
1139
- canvas.drawRect(getBounds(), mPaint);
1140
- mPaint.setShader(null);
1141
- }
1142
-
1143
- final RectF borderWidth = getDirectionAwareBorderInsets();
1144
-
1145
- final int borderLeft = Math.round(borderWidth.left);
1146
- final int borderTop = Math.round(borderWidth.top);
1147
- final int borderRight = Math.round(borderWidth.right);
1148
- final int borderBottom = Math.round(borderWidth.bottom);
1149
-
1150
- // maybe draw borders?
1151
- if (borderLeft > 0 || borderRight > 0 || borderTop > 0 || borderBottom > 0) {
1152
- Rect bounds = getBounds();
1153
-
1154
- int colorLeft = getBorderColor(Spacing.LEFT);
1155
- int colorTop = getBorderColor(Spacing.TOP);
1156
- int colorRight = getBorderColor(Spacing.RIGHT);
1157
- int colorBottom = getBorderColor(Spacing.BOTTOM);
1158
-
1159
- int colorBlock = getBorderColor(Spacing.BLOCK);
1160
- int colorBlockStart = getBorderColor(Spacing.BLOCK_START);
1161
- int colorBlockEnd = getBorderColor(Spacing.BLOCK_END);
1162
-
1163
- if (isBorderColorDefined(Spacing.BLOCK)) {
1164
- colorBottom = colorBlock;
1165
- colorTop = colorBlock;
1166
- }
1167
- if (isBorderColorDefined(Spacing.BLOCK_END)) {
1168
- colorBottom = colorBlockEnd;
1169
- }
1170
- if (isBorderColorDefined(Spacing.BLOCK_START)) {
1171
- colorTop = colorBlockStart;
1172
- }
1173
-
1174
- final boolean isRTL = getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
1175
- int colorStart = getBorderColor(Spacing.START);
1176
- int colorEnd = getBorderColor(Spacing.END);
1177
-
1178
- if (I18nUtil.getInstance().doLeftAndRightSwapInRTL(mContext)) {
1179
- if (!isBorderColorDefined(Spacing.START)) {
1180
- colorStart = colorLeft;
1181
- }
1182
-
1183
- if (!isBorderColorDefined(Spacing.END)) {
1184
- colorEnd = colorRight;
1185
- }
1186
-
1187
- final int directionAwareColorLeft = isRTL ? colorEnd : colorStart;
1188
- final int directionAwareColorRight = isRTL ? colorStart : colorEnd;
1189
-
1190
- colorLeft = directionAwareColorLeft;
1191
- colorRight = directionAwareColorRight;
1192
- } else {
1193
- final int directionAwareColorLeft = isRTL ? colorEnd : colorStart;
1194
- final int directionAwareColorRight = isRTL ? colorStart : colorEnd;
1195
-
1196
- final boolean isColorStartDefined = isBorderColorDefined(Spacing.START);
1197
- final boolean isColorEndDefined = isBorderColorDefined(Spacing.END);
1198
- final boolean isDirectionAwareColorLeftDefined =
1199
- isRTL ? isColorEndDefined : isColorStartDefined;
1200
- final boolean isDirectionAwareColorRightDefined =
1201
- isRTL ? isColorStartDefined : isColorEndDefined;
1202
-
1203
- if (isDirectionAwareColorLeftDefined) {
1204
- colorLeft = directionAwareColorLeft;
1205
- }
1206
-
1207
- if (isDirectionAwareColorRightDefined) {
1208
- colorRight = directionAwareColorRight;
1209
- }
1210
- }
1211
-
1212
- int left = bounds.left;
1213
- int top = bounds.top;
1214
-
1215
- // Check for fast path to border drawing.
1216
- int fastBorderColor =
1217
- fastBorderCompatibleColorOrZero(
1218
- borderLeft,
1219
- borderTop,
1220
- borderRight,
1221
- borderBottom,
1222
- colorLeft,
1223
- colorTop,
1224
- colorRight,
1225
- colorBottom);
1226
-
1227
- if (fastBorderColor != 0) {
1228
- if (Color.alpha(fastBorderColor) != 0) {
1229
- // Border color is not transparent.
1230
- int right = bounds.right;
1231
- int bottom = bounds.bottom;
1232
-
1233
- mPaint.setColor(fastBorderColor);
1234
- mPaint.setStyle(Paint.Style.STROKE);
1235
- if (borderLeft > 0) {
1236
- mPathForSingleBorder.reset();
1237
- int width = Math.round(borderWidth.left);
1238
- updatePathEffect(width);
1239
- mPaint.setStrokeWidth(width);
1240
- mPathForSingleBorder.moveTo(left + width / 2, top);
1241
- mPathForSingleBorder.lineTo(left + width / 2, bottom);
1242
- canvas.drawPath(mPathForSingleBorder, mPaint);
1243
- }
1244
- if (borderTop > 0) {
1245
- mPathForSingleBorder.reset();
1246
- int width = Math.round(borderWidth.top);
1247
- updatePathEffect(width);
1248
- mPaint.setStrokeWidth(width);
1249
- mPathForSingleBorder.moveTo(left, top + width / 2);
1250
- mPathForSingleBorder.lineTo(right, top + width / 2);
1251
- canvas.drawPath(mPathForSingleBorder, mPaint);
1252
- }
1253
- if (borderRight > 0) {
1254
- mPathForSingleBorder.reset();
1255
- int width = Math.round(borderWidth.right);
1256
- updatePathEffect(width);
1257
- mPaint.setStrokeWidth(width);
1258
- mPathForSingleBorder.moveTo(right - width / 2, top);
1259
- mPathForSingleBorder.lineTo(right - width / 2, bottom);
1260
- canvas.drawPath(mPathForSingleBorder, mPaint);
1261
- }
1262
- if (borderBottom > 0) {
1263
- mPathForSingleBorder.reset();
1264
- int width = Math.round(borderWidth.bottom);
1265
- updatePathEffect(width);
1266
- mPaint.setStrokeWidth(width);
1267
- mPathForSingleBorder.moveTo(left, bottom - width / 2);
1268
- mPathForSingleBorder.lineTo(right, bottom - width / 2);
1269
- canvas.drawPath(mPathForSingleBorder, mPaint);
1270
- }
1271
- }
1272
- } else {
1273
- // If the path drawn previously is of the same color,
1274
- // there would be a slight white space between borders
1275
- // with anti-alias set to true.
1276
- // Therefore we need to disable anti-alias, and
1277
- // after drawing is done, we will re-enable it.
1278
-
1279
- mPaint.setAntiAlias(false);
1280
-
1281
- int width = bounds.width();
1282
- int height = bounds.height();
1283
-
1284
- if (borderLeft > 0) {
1285
- final float x1 = left;
1286
- final float y1 = top;
1287
- final float x2 = left + borderLeft;
1288
- final float y2 = top + borderTop;
1289
- final float x3 = left + borderLeft;
1290
- final float y3 = top + height - borderBottom;
1291
- final float x4 = left;
1292
- final float y4 = top + height;
1293
-
1294
- drawQuadrilateral(canvas, colorLeft, x1, y1, x2, y2, x3, y3, x4, y4);
1295
- }
1296
-
1297
- if (borderTop > 0) {
1298
- final float x1 = left;
1299
- final float y1 = top;
1300
- final float x2 = left + borderLeft;
1301
- final float y2 = top + borderTop;
1302
- final float x3 = left + width - borderRight;
1303
- final float y3 = top + borderTop;
1304
- final float x4 = left + width;
1305
- final float y4 = top;
1306
-
1307
- drawQuadrilateral(canvas, colorTop, x1, y1, x2, y2, x3, y3, x4, y4);
1308
- }
1309
-
1310
- if (borderRight > 0) {
1311
- final float x1 = left + width;
1312
- final float y1 = top;
1313
- final float x2 = left + width;
1314
- final float y2 = top + height;
1315
- final float x3 = left + width - borderRight;
1316
- final float y3 = top + height - borderBottom;
1317
- final float x4 = left + width - borderRight;
1318
- final float y4 = top + borderTop;
1319
-
1320
- drawQuadrilateral(canvas, colorRight, x1, y1, x2, y2, x3, y3, x4, y4);
1321
- }
1322
-
1323
- if (borderBottom > 0) {
1324
- final float x1 = left;
1325
- final float y1 = top + height;
1326
- final float x2 = left + width;
1327
- final float y2 = top + height;
1328
- final float x3 = left + width - borderRight;
1329
- final float y3 = top + height - borderBottom;
1330
- final float x4 = left + borderLeft;
1331
- final float y4 = top + height - borderBottom;
1332
-
1333
- drawQuadrilateral(canvas, colorBottom, x1, y1, x2, y2, x3, y3, x4, y4);
1334
- }
1335
-
1336
- // re-enable anti alias
1337
- mPaint.setAntiAlias(true);
1338
- }
1339
- }
1340
- }
1341
-
1342
- private void drawQuadrilateral(
1343
- Canvas canvas,
1344
- int fillColor,
1345
- float x1,
1346
- float y1,
1347
- float x2,
1348
- float y2,
1349
- float x3,
1350
- float y3,
1351
- float x4,
1352
- float y4) {
1353
- if (fillColor == Color.TRANSPARENT) {
1354
- return;
1355
- }
1356
-
1357
- if (mPathForBorder == null) {
1358
- mPathForBorder = new Path();
1359
- }
1360
-
1361
- mPaint.setColor(fillColor);
1362
- mPathForBorder.reset();
1363
- mPathForBorder.moveTo(x1, y1);
1364
- mPathForBorder.lineTo(x2, y2);
1365
- mPathForBorder.lineTo(x3, y3);
1366
- mPathForBorder.lineTo(x4, y4);
1367
- mPathForBorder.lineTo(x1, y1);
1368
- canvas.drawPath(mPathForBorder, mPaint);
1369
- }
1370
-
1371
- private static int colorFromAlphaAndRGBComponents(float alpha, float rgb) {
1372
- int rgbComponent = 0x00FFFFFF & (int) rgb;
1373
- int alphaComponent = 0xFF000000 & ((int) alpha) << 24;
1374
-
1375
- return rgbComponent | alphaComponent;
1376
- }
1377
-
1378
- private boolean isBorderColorDefined(int position) {
1379
- final float rgb = mBorderRGB != null ? mBorderRGB.get(position) : Float.NaN;
1380
- final float alpha = mBorderAlpha != null ? mBorderAlpha.get(position) : Float.NaN;
1381
- return !Float.isNaN(rgb) && !Float.isNaN(alpha);
1382
- }
1383
-
1384
- public int getBorderColor(int position) {
1385
- float rgb = mBorderRGB != null ? mBorderRGB.get(position) : DEFAULT_BORDER_RGB;
1386
- float alpha = mBorderAlpha != null ? mBorderAlpha.get(position) : DEFAULT_BORDER_ALPHA;
1387
-
1388
- return CSSBackgroundDrawable.colorFromAlphaAndRGBComponents(alpha, rgb);
1389
- }
1390
-
1391
- public RectF getDirectionAwareBorderInsets() {
1392
- final float borderWidth = getBorderWidthOrDefaultTo(0, Spacing.ALL);
1393
- final float borderTopWidth = getBorderWidthOrDefaultTo(borderWidth, Spacing.TOP);
1394
- final float borderBottomWidth = getBorderWidthOrDefaultTo(borderWidth, Spacing.BOTTOM);
1395
- float borderLeftWidth = getBorderWidthOrDefaultTo(borderWidth, Spacing.LEFT);
1396
- float borderRightWidth = getBorderWidthOrDefaultTo(borderWidth, Spacing.RIGHT);
1397
-
1398
- if (mBorderWidth != null) {
1399
- final boolean isRTL = getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
1400
- float borderStartWidth = mBorderWidth.getRaw(Spacing.START);
1401
- float borderEndWidth = mBorderWidth.getRaw(Spacing.END);
1402
-
1403
- if (I18nUtil.getInstance().doLeftAndRightSwapInRTL(mContext)) {
1404
- if (Float.isNaN(borderStartWidth)) {
1405
- borderStartWidth = borderLeftWidth;
1406
- }
1407
-
1408
- if (Float.isNaN(borderEndWidth)) {
1409
- borderEndWidth = borderRightWidth;
1410
- }
1411
-
1412
- final float directionAwareBorderLeftWidth = isRTL ? borderEndWidth : borderStartWidth;
1413
- final float directionAwareBorderRightWidth = isRTL ? borderStartWidth : borderEndWidth;
1414
-
1415
- borderLeftWidth = directionAwareBorderLeftWidth;
1416
- borderRightWidth = directionAwareBorderRightWidth;
1417
- } else {
1418
- final float directionAwareBorderLeftWidth = isRTL ? borderEndWidth : borderStartWidth;
1419
- final float directionAwareBorderRightWidth = isRTL ? borderStartWidth : borderEndWidth;
1420
-
1421
- if (!Float.isNaN(directionAwareBorderLeftWidth)) {
1422
- borderLeftWidth = directionAwareBorderLeftWidth;
1423
- }
1424
-
1425
- if (!Float.isNaN(directionAwareBorderRightWidth)) {
1426
- borderRightWidth = directionAwareBorderRightWidth;
1427
- }
1428
- }
1429
- }
1430
-
1431
- return new RectF(borderLeftWidth, borderTopWidth, borderRightWidth, borderBottomWidth);
1432
- }
1433
-
1434
- private @Nullable Shader getBackgroundImageShader() {
1435
- if (mBackgroundImageLayers == null) {
1436
- return null;
1437
- }
1438
-
1439
- Shader compositeShader = null;
1440
- for (BackgroundImageLayer backgroundImageLayer : mBackgroundImageLayers) {
1441
- Shader currentShader = backgroundImageLayer.getShader(getBounds());
1442
- if (currentShader == null) {
1443
- continue;
1444
- }
1445
- if (compositeShader == null) {
1446
- compositeShader = currentShader;
1447
- } else {
1448
- compositeShader =
1449
- new ComposeShader(currentShader, compositeShader, PorterDuff.Mode.SRC_OVER);
1450
- }
1451
- }
1452
- return compositeShader;
1453
- }
1454
-
1455
- /**
1456
- * Multiplies the color with the given alpha.
1457
- *
1458
- * @param color color to be multiplied
1459
- * @param alpha value between 0 and 255
1460
- * @return multiplied color
1461
- */
1462
- private static int multiplyColorAlpha(int color, int alpha) {
1463
- if (alpha == 255) {
1464
- return color;
1465
- }
1466
- if (alpha == 0) {
1467
- return color & 0x00FFFFFF;
1468
- }
1469
- alpha = alpha + (alpha >> 7); // make it 0..256
1470
- int colorAlpha = color >>> 24;
1471
- int multipliedAlpha = colorAlpha * alpha >> 8;
1472
- return (multipliedAlpha << 24) | (color & 0x00FFFFFF);
1473
- }
1474
- }