react-native-tvos 0.72.6-0 → 0.73.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 (2416) hide show
  1. package/Libraries/ActionSheetIOS/React-RCTActionSheet.podspec +2 -2
  2. package/Libraries/Alert/RCTAlertManager.js.flow +18 -0
  3. package/Libraries/Animated/Animated.js +1 -1
  4. package/Libraries/Animated/AnimatedImplementation.js +1 -1
  5. package/Libraries/Animated/NativeAnimatedHelper.js +14 -10
  6. package/Libraries/Animated/NativeAnimatedModule.js +6 -2
  7. package/Libraries/Animated/NativeAnimatedTurboModule.js +7 -4
  8. package/Libraries/Animated/animations/Animation.js +57 -3
  9. package/Libraries/Animated/animations/DecayAnimation.js +9 -0
  10. package/Libraries/Animated/animations/SpringAnimation.js +8 -0
  11. package/Libraries/Animated/animations/TimingAnimation.js +8 -0
  12. package/Libraries/Animated/components/AnimatedFlatList.js +2 -1
  13. package/Libraries/Animated/components/AnimatedScrollView.js +2 -0
  14. package/Libraries/Animated/components/AnimatedSectionList.js +2 -1
  15. package/Libraries/Animated/createAnimatedComponent.js +1 -0
  16. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  17. package/Libraries/Animated/nodes/AnimatedObject.js +146 -0
  18. package/Libraries/Animated/nodes/AnimatedProps.js +19 -7
  19. package/Libraries/Animated/nodes/AnimatedStyle.js +30 -56
  20. package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -17
  21. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +17 -0
  22. package/Libraries/Animated/useAnimatedProps.js +9 -10
  23. package/Libraries/AppDelegate/RCTAppDelegate.h +31 -7
  24. package/Libraries/AppDelegate/RCTAppDelegate.mm +134 -30
  25. package/Libraries/AppDelegate/RCTAppSetupUtils.h +3 -3
  26. package/Libraries/AppDelegate/RCTAppSetupUtils.mm +29 -28
  27. package/Libraries/AppDelegate/RCTLegacyInteropComponents.mm +1 -1
  28. package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +42 -31
  29. package/Libraries/AppState/AppState.d.ts +1 -1
  30. package/Libraries/AppState/NativeAppState.js +8 -4
  31. package/Libraries/BatchedBridge/MessageQueue.js +45 -36
  32. package/Libraries/Blob/Blob.js +6 -2
  33. package/Libraries/Blob/BlobManager.js +9 -10
  34. package/Libraries/Blob/BlobRegistry.js +14 -9
  35. package/Libraries/Blob/File.js +1 -1
  36. package/Libraries/Blob/FileReader.js +1 -2
  37. package/Libraries/Blob/RCTBlobCollector.h +2 -4
  38. package/Libraries/Blob/RCTBlobCollector.mm +2 -4
  39. package/Libraries/Blob/RCTBlobPlugins.h +1 -1
  40. package/Libraries/Blob/RCTBlobPlugins.mm +1 -1
  41. package/Libraries/Blob/React-RCTBlob.podspec +12 -18
  42. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js.flow +20 -0
  43. package/Libraries/Components/Clipboard/Clipboard.d.ts +4 -4
  44. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -1
  45. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +26 -6
  46. package/Libraries/Components/Pressable/Pressable.js +3 -2
  47. package/Libraries/Components/Pressable/useAndroidRippleForView.js +1 -1
  48. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +20 -0
  49. package/Libraries/Components/SafeAreaView/SafeAreaView.js +7 -7
  50. package/Libraries/Components/ScrollView/ScrollView.js +3 -1
  51. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +39 -46
  52. package/Libraries/Components/Switch/Switch.js +1 -0
  53. package/Libraries/Components/TabBarIOS/RCTTabBarItemNativeComponent.js +1 -1
  54. package/Libraries/Components/TabBarIOS/RCTTabBarNativeComponent.js +1 -1
  55. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -0
  56. package/Libraries/Components/TextInput/TextInput.d.ts +49 -7
  57. package/Libraries/Components/TextInput/TextInput.flow.js +43 -10
  58. package/Libraries/Components/TextInput/TextInput.js +62 -10
  59. package/Libraries/Components/ToastAndroid/ToastAndroid.js +45 -0
  60. package/Libraries/Components/Touchable/TouchableBounce.js +1 -1
  61. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  62. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
  63. package/Libraries/Components/Touchable/TouchableOpacity.js +4 -1
  64. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -0
  65. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +16 -6
  66. package/Libraries/Components/View/ReactNativeStyleAttributes.js +9 -0
  67. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  68. package/Libraries/Components/View/View.js +70 -56
  69. package/Libraries/Components/View/ViewNativeComponent.js +1 -0
  70. package/Libraries/Components/View/ViewPropTypes.js +18 -3
  71. package/Libraries/Core/Devtools/loadBundleFromServer.js +152 -0
  72. package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -1
  73. package/Libraries/Core/ExceptionsManager.js +16 -7
  74. package/Libraries/Core/ExtendedError.js +12 -0
  75. package/Libraries/Core/ReactNativeVersion.js +2 -2
  76. package/Libraries/Core/ReactNativeVersionCheck.js +0 -2
  77. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +20 -0
  78. package/Libraries/Core/setUpDeveloperTools.js +5 -1
  79. package/Libraries/Core/setUpIntersectionObserver.js +16 -0
  80. package/Libraries/Core/setUpMutationObserver.js +16 -0
  81. package/Libraries/Core/setUpPerformance.js +6 -13
  82. package/Libraries/Core/setUpPerformanceObserver.js +16 -0
  83. package/Libraries/Core/setUpRegeneratorRuntime.js +4 -2
  84. package/Libraries/DOM/Nodes/ReactNativeElement.js +135 -18
  85. package/Libraries/DOM/Nodes/ReadOnlyCharacterData.js +72 -0
  86. package/Libraries/DOM/Nodes/ReadOnlyElement.js +209 -21
  87. package/Libraries/DOM/Nodes/ReadOnlyNode.js +206 -17
  88. package/Libraries/DOM/Nodes/ReadOnlyText.js +30 -0
  89. package/Libraries/DOM/Nodes/Utilities/Traversal.js +54 -0
  90. package/Libraries/DevToolsSettings/DevToolsSettingsManager.js.flow +19 -0
  91. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +0 -6
  92. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +15 -4
  93. package/Libraries/FBLazyVector/FBLazyVector/FBLazyIterator.h +12 -12
  94. package/Libraries/FBLazyVector/FBLazyVector.podspec +1 -1
  95. package/Libraries/Image/Image.android.js +8 -2
  96. package/Libraries/Image/Image.d.ts +1 -1
  97. package/Libraries/Image/Image.ios.js +4 -1
  98. package/Libraries/Image/Image.js.flow +40 -0
  99. package/Libraries/Image/ImageBackground.js +3 -0
  100. package/Libraries/Image/RCTAnimatedImage.mm +175 -0
  101. package/Libraries/Image/RCTBundleAssetImageLoader.h +12 -0
  102. package/Libraries/Image/RCTBundleAssetImageLoader.mm +83 -0
  103. package/Libraries/Image/RCTImageBlurUtils.mm +100 -0
  104. package/Libraries/Image/RCTImageLoader.h +7 -0
  105. package/Libraries/Image/RCTImageLoader.mm +9 -0
  106. package/Libraries/Image/RCTImageStoreManager.h +7 -0
  107. package/Libraries/Image/RCTImageStoreManager.mm +9 -0
  108. package/Libraries/Image/RCTImageURLLoaderWithAttribution.h +2 -4
  109. package/Libraries/Image/RCTImageUtils.mm +387 -0
  110. package/Libraries/Image/RCTImageView.mm +4 -9
  111. package/Libraries/Image/RCTLocalAssetImageLoader.h +2 -1
  112. package/Libraries/Image/RCTLocalAssetImageLoader.mm +6 -1
  113. package/Libraries/Image/RCTUIImageViewAnimated.mm +347 -0
  114. package/Libraries/Image/React-RCTImage.podspec +14 -17
  115. package/Libraries/Inspector/DevtoolsOverlay.js +6 -3
  116. package/Libraries/Inspector/NetworkOverlay.js +2 -2
  117. package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -5
  118. package/Libraries/Interaction/PanResponder.js +1 -4
  119. package/Libraries/IntersectionObserver/IntersectionObserver.js +252 -0
  120. package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +140 -0
  121. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +221 -0
  122. package/Libraries/IntersectionObserver/NativeIntersectionObserver.cpp +118 -0
  123. package/Libraries/IntersectionObserver/NativeIntersectionObserver.h +109 -0
  124. package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +41 -0
  125. package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +162 -0
  126. package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -1
  127. package/Libraries/LinkingIOS/RCTLinkingManager.h +2 -9
  128. package/Libraries/LinkingIOS/RCTLinkingManager.mm +1 -7
  129. package/Libraries/LinkingIOS/React-RCTLinking.podspec +8 -16
  130. package/Libraries/Lists/FlatList.d.ts +2 -1
  131. package/Libraries/Lists/FlatList.js +15 -5
  132. package/Libraries/Lists/SectionList.js +4 -0
  133. package/Libraries/LogBox/Data/LogBoxData.js +2 -1
  134. package/Libraries/LogBox/Data/LogBoxLog.js +4 -1
  135. package/Libraries/LogBox/Data/LogBoxSymbolication.js +5 -2
  136. package/Libraries/LogBox/Data/parseLogBoxLog.js +57 -20
  137. package/Libraries/LogBox/UI/AnsiHighlight.js +1 -1
  138. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +24 -33
  139. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  140. package/Libraries/LogBox/UI/LogBoxMessage.js +4 -7
  141. package/Libraries/MutationObserver/MutationObserver.js +184 -0
  142. package/Libraries/MutationObserver/MutationObserverManager.js +218 -0
  143. package/Libraries/MutationObserver/MutationRecord.js +82 -0
  144. package/Libraries/MutationObserver/NativeMutationObserver.cpp +165 -0
  145. package/Libraries/MutationObserver/NativeMutationObserver.h +104 -0
  146. package/Libraries/MutationObserver/NativeMutationObserver.js +58 -0
  147. package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +327 -0
  148. package/Libraries/NativeAnimation/Drivers/RCTDecayAnimation.mm +125 -0
  149. package/Libraries/NativeAnimation/Drivers/RCTFrameAnimation.mm +151 -0
  150. package/Libraries/NativeAnimation/Drivers/RCTSpringAnimation.mm +200 -0
  151. package/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.h +1 -1
  152. package/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.mm +171 -0
  153. package/Libraries/NativeAnimation/Nodes/RCTObjectAnimatedNode.h +14 -0
  154. package/Libraries/NativeAnimation/Nodes/RCTObjectAnimatedNode.mm +66 -0
  155. package/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.mm +146 -0
  156. package/Libraries/NativeAnimation/Nodes/RCTStyleAnimatedNode.mm +62 -0
  157. package/Libraries/NativeAnimation/RCTAnimationUtils.mm +129 -0
  158. package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.mm +484 -0
  159. package/Libraries/NativeAnimation/React-RCTAnimation.podspec +11 -17
  160. package/Libraries/NativeComponent/BaseViewConfig.android.js +18 -3
  161. package/Libraries/NativeComponent/BaseViewConfig.ios.js +33 -0
  162. package/Libraries/NativeComponent/BaseViewConfig.js.flow +14 -0
  163. package/Libraries/NativeComponent/NativeComponentRegistry.js +13 -9
  164. package/Libraries/NativeModules/specs/NativeSourceCode.js +6 -6
  165. package/Libraries/Network/RCTNetworkPlugins.h +1 -1
  166. package/Libraries/Network/RCTNetworkPlugins.mm +1 -1
  167. package/Libraries/Network/RCTNetworking.android.js +2 -1
  168. package/Libraries/Network/RCTNetworking.h +7 -0
  169. package/Libraries/Network/RCTNetworking.js.flow +88 -0
  170. package/Libraries/Network/RCTNetworking.mm +9 -0
  171. package/Libraries/Network/React-RCTNetwork.podspec +11 -21
  172. package/Libraries/Network/XMLHttpRequest.js +1 -1
  173. package/Libraries/NewAppScreen/components/DebugInstructions.js +4 -6
  174. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +9 -2
  175. package/Libraries/Performance/QuickPerformanceLogger.js +1 -1
  176. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
  177. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +1 -0
  178. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -1
  179. package/Libraries/Pressability/Pressability.js +28 -3
  180. package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +11 -17
  181. package/Libraries/RCTRequired/RCTRequired/RCTRequired.h +8 -8
  182. package/Libraries/RCTRequired/RCTRequired.podspec +1 -1
  183. package/Libraries/ReactNative/AppContainer.js +2 -3
  184. package/Libraries/ReactNative/AppRegistry.d.ts +0 -5
  185. package/Libraries/ReactNative/AppRegistry.js +66 -53
  186. package/Libraries/ReactNative/BridgelessUIManager.js +38 -9
  187. package/Libraries/ReactNative/FabricUIManager.js +143 -34
  188. package/Libraries/ReactNative/I18nManager.js +5 -11
  189. package/Libraries/ReactNative/NativeI18nManager.js +7 -5
  190. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +151 -0
  191. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +81 -0
  192. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +492 -0
  193. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +32 -0
  194. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +19 -3
  195. package/Libraries/ReactNative/UIManager.js +8 -0
  196. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +648 -0
  197. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +38 -2
  198. package/Libraries/Renderer/implementations/ReactFabric-dev.js +27 -27
  199. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -3
  200. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -3
  201. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +27 -27
  202. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3 -3
  203. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3 -3
  204. package/Libraries/Renderer/shims/ReactFabric.js +5 -6
  205. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -3
  206. package/Libraries/Renderer/shims/ReactNative.js +2 -3
  207. package/Libraries/Renderer/shims/ReactNativeTypes.js +35 -17
  208. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -3
  209. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -3
  210. package/Libraries/Settings/React-RCTSettings.podspec +11 -20
  211. package/Libraries/Settings/Settings.js +33 -0
  212. package/Libraries/Share/Share.d.ts +3 -9
  213. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +9 -4
  214. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +28 -13
  215. package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +22 -0
  216. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
  217. package/Libraries/StyleSheet/StyleSheet.d.ts +10 -1
  218. package/Libraries/StyleSheet/StyleSheet.js +3 -0
  219. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +31 -17
  220. package/Libraries/StyleSheet/StyleSheetTypes.js +90 -6
  221. package/Libraries/StyleSheet/flattenStyle.js +4 -0
  222. package/Libraries/StyleSheet/private/_TransformStyle.js +16 -2
  223. package/Libraries/StyleSheet/processColor.js +1 -2
  224. package/Libraries/StyleSheet/processTransformOrigin.js +136 -0
  225. package/Libraries/StyleSheet/splitLayoutProps.js +1 -0
  226. package/Libraries/Text/BaseText/RCTBaseTextShadowView.mm +158 -0
  227. package/Libraries/Text/RCTConvert+Text.h +1 -0
  228. package/Libraries/Text/RCTConvert+Text.mm +44 -0
  229. package/Libraries/Text/React-RCTText.podspec +5 -2
  230. package/Libraries/Text/Text/RCTTextShadowView.mm +420 -0
  231. package/Libraries/Text/Text/RCTTextView.h +5 -0
  232. package/Libraries/Text/Text.d.ts +5 -5
  233. package/Libraries/Text/Text.js +17 -11
  234. package/Libraries/Text/TextInput/Multiline/RCTUITextView.h +1 -0
  235. package/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +321 -0
  236. package/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h +1 -0
  237. package/Libraries/Text/TextInput/RCTBaseTextInputShadowView.mm +316 -0
  238. package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +752 -0
  239. package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +178 -0
  240. package/Libraries/Text/TextInput/RCTInputAccessoryShadowView.mm +20 -0
  241. package/Libraries/Text/TextInput/Singleline/RCTUITextField.h +1 -0
  242. package/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +237 -0
  243. package/Libraries/Text/VirtualText/RCTVirtualTextView.h +23 -0
  244. package/Libraries/Text/VirtualText/RCTVirtualTextView.mm +12 -0
  245. package/Libraries/Text/VirtualText/RCTVirtualTextViewManager.mm +26 -0
  246. package/Libraries/TurboModule/TurboModuleRegistry.js +47 -7
  247. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
  248. package/Libraries/TypeSafety/RCTConvertHelpers.h +2 -4
  249. package/Libraries/TypeSafety/RCTTypeSafety.podspec +2 -2
  250. package/Libraries/TypeSafety/RCTTypedModuleConstants.h +2 -4
  251. package/Libraries/Types/CoreEventTypes.d.ts +5 -2
  252. package/Libraries/Utilities/BackHandler.js.flow +27 -0
  253. package/Libraries/Utilities/GlobalPerformanceLogger.js +2 -12
  254. package/Libraries/Utilities/NativeDeviceInfo.js +8 -9
  255. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +23 -18
  256. package/Libraries/Utilities/NativePlatformConstantsIOS.js +16 -13
  257. package/Libraries/Utilities/PerformanceLoggerContext.js +1 -1
  258. package/Libraries/Utilities/Platform.android.js +12 -8
  259. package/Libraries/Utilities/Platform.d.ts +1 -0
  260. package/Libraries/Utilities/Platform.flow.js +84 -0
  261. package/Libraries/Utilities/Platform.ios.js +12 -8
  262. package/Libraries/Utilities/Platform.js.flow +13 -0
  263. package/Libraries/Utilities/PolyfillFunctions.js +1 -1
  264. package/Libraries/Utilities/ReactNativeTestTools.js +1 -2
  265. package/Libraries/Utilities/SceneTracker.js +1 -1
  266. package/Libraries/Utilities/createPerformanceLogger.js +63 -32
  267. package/Libraries/Utilities/useColorScheme.js +7 -8
  268. package/Libraries/Vibration/React-RCTVibration.podspec +10 -18
  269. package/Libraries/WebPerformance/BoundedConsumableBuffer.h +244 -0
  270. package/Libraries/WebPerformance/MemoryInfo.js +1 -1
  271. package/Libraries/WebPerformance/NativePerformance.cpp +38 -17
  272. package/Libraries/WebPerformance/NativePerformance.h +5 -21
  273. package/Libraries/WebPerformance/NativePerformance.js +3 -8
  274. package/Libraries/WebPerformance/NativePerformanceObserver.cpp +20 -10
  275. package/Libraries/WebPerformance/NativePerformanceObserver.h +14 -9
  276. package/Libraries/WebPerformance/NativePerformanceObserver.js +4 -0
  277. package/Libraries/WebPerformance/Performance.js +42 -15
  278. package/Libraries/WebPerformance/PerformanceEntry.js +14 -6
  279. package/Libraries/WebPerformance/PerformanceEntryReporter.cpp +220 -195
  280. package/Libraries/WebPerformance/PerformanceEntryReporter.h +78 -101
  281. package/Libraries/WebPerformance/PerformanceEventTiming.js +18 -1
  282. package/Libraries/WebPerformance/ReactNativeStartupTiming.js +40 -14
  283. package/Libraries/WebPerformance/__mocks__/NativePerformance.js +4 -2
  284. package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +21 -3
  285. package/Libraries/Wrapper/RCTWrapperShadowView.m +1 -1
  286. package/Libraries/promiseRejectionTrackingOptions.js +21 -9
  287. package/Libraries/vendor/emitter/EventEmitter.js +17 -17
  288. package/README.md +20 -26
  289. package/React/Base/RCTAssert.m +1 -1
  290. package/React/Base/RCTBridge.h +23 -22
  291. package/React/Base/RCTBridge.mm +423 -0
  292. package/React/Base/RCTBridgeModule.h +1 -13
  293. package/React/Base/RCTBridgeProxy.h +36 -0
  294. package/React/Base/RCTBridgeProxy.mm +467 -0
  295. package/React/Base/RCTBundleURLProvider.h +1 -1
  296. package/React/Base/RCTBundleURLProvider.mm +3 -5
  297. package/React/Base/RCTConstants.h +11 -20
  298. package/React/Base/RCTConstants.m +23 -7
  299. package/React/Base/RCTConvert.h +1 -0
  300. package/React/Base/RCTConvert.m +30 -27
  301. package/React/Base/RCTEventDispatcher.m +9 -0
  302. package/React/Base/RCTEventDispatcherProtocol.h +7 -0
  303. package/React/Base/RCTJSStackFrame.m +1 -1
  304. package/React/Base/RCTJavaScriptLoader.h +0 -2
  305. package/React/Base/RCTJavaScriptLoader.mm +2 -11
  306. package/React/Base/RCTManagedPointer.h +2 -4
  307. package/React/Base/RCTMockDef.h +2 -2
  308. package/React/Base/RCTModuleData.h +0 -4
  309. package/React/Base/RCTModuleData.mm +1 -12
  310. package/React/Base/RCTModuleRegistry.m +17 -0
  311. package/React/Base/RCTPLTag.h +2 -0
  312. package/React/Base/RCTPerformanceLogger.mm +135 -0
  313. package/React/Base/RCTPerformanceLoggerLabels.m +4 -0
  314. package/React/Base/RCTRedBoxSetEnabled.m +1 -1
  315. package/React/Base/RCTRootView.h +5 -13
  316. package/React/Base/RCTRootView.m +5 -12
  317. package/React/Base/RCTTouchHandlerTV.m +35 -0
  318. package/React/Base/RCTTurboModuleRegistry.h +0 -3
  319. package/React/Base/RCTUtils.h +4 -4
  320. package/React/Base/RCTUtils.m +10 -10
  321. package/React/Base/RCTVersion.m +2 -2
  322. package/React/Base/Surface/RCTSurfaceRootShadowView.h +1 -1
  323. package/React/Base/Surface/RCTSurfaceRootShadowView.m +1 -1
  324. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h +2 -18
  325. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +9 -68
  326. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.h +0 -17
  327. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm +2 -23
  328. package/React/CoreModules/CoreModulesPlugins.h +13 -14
  329. package/React/CoreModules/CoreModulesPlugins.mm +14 -15
  330. package/React/CoreModules/RCTAccessibilityManager+Internal.h +1 -1
  331. package/React/CoreModules/RCTAccessibilityManager.h +7 -0
  332. package/React/CoreModules/RCTAccessibilityManager.mm +18 -13
  333. package/React/CoreModules/RCTActionSheetManager.mm +25 -28
  334. package/React/CoreModules/RCTAlertController.mm +80 -0
  335. package/React/CoreModules/RCTAlertManager.mm +2 -7
  336. package/React/CoreModules/RCTAppState.mm +5 -1
  337. package/React/CoreModules/RCTAppearance.h +1 -0
  338. package/React/CoreModules/RCTAppearance.mm +40 -43
  339. package/React/CoreModules/RCTDevLoadingView.mm +20 -36
  340. package/React/CoreModules/RCTDevMenu.h +7 -0
  341. package/React/CoreModules/RCTDevMenu.mm +28 -63
  342. package/React/CoreModules/RCTDevSettings.h +7 -0
  343. package/React/CoreModules/RCTDevSettings.mm +24 -16
  344. package/React/CoreModules/RCTDeviceInfo.mm +41 -40
  345. package/React/CoreModules/RCTFPSGraph.mm +128 -0
  346. package/React/CoreModules/RCTLogBoxView.mm +2 -10
  347. package/React/CoreModules/RCTPerfMonitor.mm +13 -45
  348. package/React/CoreModules/RCTRedBox.h +7 -0
  349. package/React/CoreModules/RCTRedBox.mm +23 -7
  350. package/React/CoreModules/RCTSourceCode.mm +0 -3
  351. package/React/CoreModules/RCTStatusBarManager.mm +5 -19
  352. package/React/CoreModules/RCTTiming.mm +2 -2
  353. package/React/CoreModules/RCTWebSocketExecutor.mm +4 -1
  354. package/React/CoreModules/RCTWebSocketModule.h +7 -0
  355. package/React/CoreModules/RCTWebSocketModule.mm +9 -0
  356. package/React/CoreModules/React-CoreModules.podspec +9 -15
  357. package/React/CxxBridge/JSCExecutorFactory.h +2 -4
  358. package/React/CxxBridge/JSCExecutorFactory.mm +2 -4
  359. package/React/CxxBridge/NSDataBigString.h +2 -4
  360. package/React/CxxBridge/NSDataBigString.mm +2 -4
  361. package/React/CxxBridge/RCTCxxBridge.mm +25 -101
  362. package/React/CxxBridge/RCTCxxBridgeDelegate.h +2 -4
  363. package/React/CxxBridge/RCTJSIExecutorRuntimeInstaller.h +2 -4
  364. package/React/CxxBridge/RCTJSIExecutorRuntimeInstaller.mm +2 -5
  365. package/React/CxxBridge/RCTMessageThread.h +8 -9
  366. package/React/CxxBridge/RCTMessageThread.mm +2 -4
  367. package/React/CxxBridge/RCTObjcExecutor.h +2 -4
  368. package/React/CxxBridge/RCTObjcExecutor.mm +2 -4
  369. package/React/CxxLogUtils/RCTDefaultCxxLogFunction.h +3 -5
  370. package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +2 -4
  371. package/React/CxxModule/DispatchMessageQueueThread.h +2 -4
  372. package/React/CxxModule/RCTCxxModule.h +2 -6
  373. package/React/CxxModule/RCTCxxUtils.h +2 -4
  374. package/React/CxxModule/RCTCxxUtils.mm +2 -4
  375. package/React/CxxModule/RCTNativeModule.h +7 -9
  376. package/React/CxxModule/RCTNativeModule.mm +2 -4
  377. package/React/CxxUtils/RCTFollyConvert.h +3 -5
  378. package/React/CxxUtils/RCTFollyConvert.mm +2 -4
  379. package/React/DevSupport/RCTDevLoadingViewSetEnabled.m +2 -2
  380. package/React/DevSupport/RCTInspectorDevServerHelper.h +1 -1
  381. package/React/DevSupport/RCTInspectorDevServerHelper.mm +64 -12
  382. package/React/DevSupport/RCTPackagerConnection.mm +2 -1
  383. package/React/FBReactNativeSpec/FBReactNativeSpec.podspec +4 -4
  384. package/React/Fabric/Mounting/ComponentViews/ActivityIndicator/RCTActivityIndicatorViewComponentView.mm +5 -5
  385. package/React/Fabric/Mounting/ComponentViews/Image/RCTImageComponentView.mm +18 -21
  386. package/React/Fabric/Mounting/ComponentViews/InputAccessory/RCTInputAccessoryComponentView.mm +5 -5
  387. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +5 -5
  388. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropCoordinatorAdapter.h +1 -1
  389. package/React/Fabric/Mounting/ComponentViews/Modal/RCTFabricModalHostViewController.mm +2 -7
  390. package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +12 -12
  391. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.h +5 -9
  392. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.mm +5 -9
  393. package/React/Fabric/Mounting/ComponentViews/SafeAreaView/RCTSafeAreaViewComponentView.mm +4 -4
  394. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.mm +6 -6
  395. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +50 -38
  396. package/React/Fabric/Mounting/ComponentViews/Switch/RCTSwitchComponentView.mm +6 -6
  397. package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm +7 -7
  398. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +29 -28
  399. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputNativeCommands.h +1 -1
  400. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.h +4 -2
  401. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm +33 -12
  402. package/React/Fabric/Mounting/ComponentViews/UnimplementedComponent/RCTUnimplementedNativeComponentView.mm +3 -3
  403. package/React/Fabric/Mounting/ComponentViews/UnimplementedView/RCTUnimplementedViewComponentView.mm +4 -4
  404. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.h +5 -11
  405. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +90 -33
  406. package/React/Fabric/Mounting/RCTComponentViewDescriptor.h +3 -3
  407. package/React/Fabric/Mounting/RCTComponentViewFactory.h +17 -1
  408. package/React/Fabric/Mounting/RCTComponentViewFactory.mm +22 -10
  409. package/React/Fabric/Mounting/RCTComponentViewProtocol.h +8 -8
  410. package/React/Fabric/Mounting/RCTComponentViewRegistry.h +2 -2
  411. package/React/Fabric/Mounting/RCTComponentViewRegistry.mm +5 -6
  412. package/React/Fabric/Mounting/RCTMountingManager.h +2 -2
  413. package/React/Fabric/Mounting/RCTMountingManager.mm +18 -17
  414. package/React/Fabric/Mounting/RCTMountingTransactionObserverCoordinator.h +11 -11
  415. package/React/Fabric/Mounting/RCTMountingTransactionObserverCoordinator.mm +8 -8
  416. package/React/Fabric/Mounting/RCTMountingTransactionObserving.h +4 -4
  417. package/React/Fabric/Mounting/UIView+ComponentViewProtocol.h +7 -7
  418. package/React/Fabric/Mounting/UIView+ComponentViewProtocol.mm +6 -6
  419. package/React/Fabric/RCTConversions.h +5 -5
  420. package/React/Fabric/RCTImageResponseDelegate.h +3 -3
  421. package/React/Fabric/RCTImageResponseObserverProxy.h +3 -5
  422. package/React/Fabric/RCTImageResponseObserverProxy.mm +3 -5
  423. package/React/Fabric/RCTScheduler.h +15 -13
  424. package/React/Fabric/RCTScheduler.mm +18 -13
  425. package/React/Fabric/RCTSurfacePointerHandler.mm +143 -152
  426. package/React/Fabric/RCTSurfacePointerHandlerTV.mm +37 -0
  427. package/React/Fabric/RCTSurfacePresenter.h +1 -1
  428. package/React/Fabric/RCTSurfacePresenter.mm +40 -28
  429. package/React/Fabric/RCTSurfacePresenterBridgeAdapter.h +3 -0
  430. package/React/Fabric/RCTSurfacePresenterBridgeAdapter.mm +38 -2
  431. package/React/Fabric/RCTSurfaceTouchHandler.mm +1 -1
  432. package/React/Fabric/RCTSurfaceTouchHandlerTV.mm +30 -0
  433. package/React/Fabric/Surface/RCTFabricSurface.h +1 -1
  434. package/React/Fabric/Surface/RCTFabricSurface.mm +1 -1
  435. package/React/Fabric/Utils/PlatformRunLoopObserver.h +4 -6
  436. package/React/Fabric/Utils/PlatformRunLoopObserver.mm +3 -5
  437. package/React/Fabric/Utils/RCTIdentifierPool.h +2 -4
  438. package/React/I18n/.clang-format-ignore +2 -0
  439. package/React/I18n/FBXXHashUtils.h +118 -0
  440. package/React/I18n/RCTLocalizedString.h +34 -0
  441. package/React/I18n/RCTLocalizedString.mm +46 -0
  442. package/React/I18n/strings/ar.lproj/Localizable.strings +2 -0
  443. package/React/I18n/strings/ar.lproj/fbt_language_pack.bin +0 -0
  444. package/React/I18n/strings/cs.lproj/Localizable.strings +2 -0
  445. package/React/I18n/strings/cs.lproj/fbt_language_pack.bin +0 -0
  446. package/React/I18n/strings/da.lproj/Localizable.strings +2 -0
  447. package/React/I18n/strings/da.lproj/fbt_language_pack.bin +0 -0
  448. package/React/I18n/strings/de.lproj/Localizable.strings +2 -0
  449. package/React/I18n/strings/de.lproj/fbt_language_pack.bin +0 -0
  450. package/React/I18n/strings/el.lproj/Localizable.strings +2 -0
  451. package/React/I18n/strings/el.lproj/fbt_language_pack.bin +0 -0
  452. package/React/I18n/strings/en-GB.lproj/Localizable.strings +2 -0
  453. package/React/I18n/strings/en-GB.lproj/fbt_language_pack.bin +0 -0
  454. package/React/I18n/strings/en.lproj/Localizable.strings +2 -0
  455. package/React/I18n/strings/es-ES.lproj/Localizable.strings +2 -0
  456. package/React/I18n/strings/es-ES.lproj/fbt_language_pack.bin +0 -0
  457. package/React/I18n/strings/es.lproj/Localizable.strings +2 -0
  458. package/React/I18n/strings/es.lproj/fbt_language_pack.bin +0 -0
  459. package/React/I18n/strings/fi.lproj/Localizable.strings +2 -0
  460. package/React/I18n/strings/fi.lproj/fbt_language_pack.bin +0 -0
  461. package/React/I18n/strings/fr.lproj/Localizable.strings +2 -0
  462. package/React/I18n/strings/fr.lproj/fbt_language_pack.bin +0 -0
  463. package/React/I18n/strings/he.lproj/Localizable.strings +2 -0
  464. package/React/I18n/strings/he.lproj/fbt_language_pack.bin +0 -0
  465. package/React/I18n/strings/hi.lproj/Localizable.strings +2 -0
  466. package/React/I18n/strings/hi.lproj/fbt_language_pack.bin +0 -0
  467. package/React/I18n/strings/hr.lproj/Localizable.strings +2 -0
  468. package/React/I18n/strings/hr.lproj/fbt_language_pack.bin +0 -0
  469. package/React/I18n/strings/hu.lproj/Localizable.strings +2 -0
  470. package/React/I18n/strings/hu.lproj/fbt_language_pack.bin +0 -0
  471. package/React/I18n/strings/id.lproj/Localizable.strings +2 -0
  472. package/React/I18n/strings/id.lproj/fbt_language_pack.bin +0 -0
  473. package/React/I18n/strings/it.lproj/Localizable.strings +2 -0
  474. package/React/I18n/strings/it.lproj/fbt_language_pack.bin +0 -0
  475. package/React/I18n/strings/ja.lproj/Localizable.strings +2 -0
  476. package/React/I18n/strings/ja.lproj/fbt_language_pack.bin +0 -0
  477. package/React/I18n/strings/ko.lproj/Localizable.strings +2 -0
  478. package/React/I18n/strings/ko.lproj/fbt_language_pack.bin +0 -0
  479. package/React/I18n/strings/ms.lproj/Localizable.strings +2 -0
  480. package/React/I18n/strings/ms.lproj/fbt_language_pack.bin +0 -0
  481. package/React/I18n/strings/nb.lproj/Localizable.strings +2 -0
  482. package/React/I18n/strings/nb.lproj/fbt_language_pack.bin +0 -0
  483. package/React/I18n/strings/nl.lproj/Localizable.strings +2 -0
  484. package/React/I18n/strings/nl.lproj/fbt_language_pack.bin +0 -0
  485. package/React/I18n/strings/pl.lproj/Localizable.strings +2 -0
  486. package/React/I18n/strings/pl.lproj/fbt_language_pack.bin +0 -0
  487. package/React/I18n/strings/pt-PT.lproj/Localizable.strings +2 -0
  488. package/React/I18n/strings/pt-PT.lproj/fbt_language_pack.bin +0 -0
  489. package/React/I18n/strings/pt.lproj/Localizable.strings +2 -0
  490. package/React/I18n/strings/pt.lproj/fbt_language_pack.bin +0 -0
  491. package/React/I18n/strings/ro.lproj/Localizable.strings +2 -0
  492. package/React/I18n/strings/ro.lproj/fbt_language_pack.bin +0 -0
  493. package/React/I18n/strings/ru.lproj/Localizable.strings +2 -0
  494. package/React/I18n/strings/ru.lproj/fbt_language_pack.bin +0 -0
  495. package/React/I18n/strings/sk.lproj/Localizable.strings +2 -0
  496. package/React/I18n/strings/sk.lproj/fbt_language_pack.bin +0 -0
  497. package/React/I18n/strings/sv.lproj/Localizable.strings +2 -0
  498. package/React/I18n/strings/sv.lproj/fbt_language_pack.bin +0 -0
  499. package/React/I18n/strings/th.lproj/Localizable.strings +2 -0
  500. package/React/I18n/strings/th.lproj/fbt_language_pack.bin +0 -0
  501. package/React/I18n/strings/tr.lproj/Localizable.strings +2 -0
  502. package/React/I18n/strings/tr.lproj/fbt_language_pack.bin +0 -0
  503. package/React/I18n/strings/uk.lproj/Localizable.strings +2 -0
  504. package/React/I18n/strings/uk.lproj/fbt_language_pack.bin +0 -0
  505. package/React/I18n/strings/vi.lproj/Localizable.strings +2 -0
  506. package/React/I18n/strings/vi.lproj/fbt_language_pack.bin +0 -0
  507. package/React/I18n/strings/zh-Hans.lproj/Localizable.strings +2 -0
  508. package/React/I18n/strings/zh-Hans.lproj/fbt_language_pack.bin +0 -0
  509. package/React/I18n/strings/zh-Hant-HK.lproj/Localizable.strings +2 -0
  510. package/React/I18n/strings/zh-Hant-HK.lproj/fbt_language_pack.bin +0 -0
  511. package/React/I18n/strings/zh-Hant.lproj/Localizable.strings +2 -0
  512. package/React/I18n/strings/zh-Hant.lproj/fbt_language_pack.bin +0 -0
  513. package/React/I18n/strings/zu.lproj/Localizable.strings +2 -0
  514. package/React/I18n/strings/zu.lproj/fbt_language_pack.bin +0 -0
  515. package/React/Inspector/RCTInspector.mm +3 -2
  516. package/React/Modules/RCTSurfacePresenterStub.h +8 -0
  517. package/React/Modules/RCTSurfacePresenterStub.m +14 -0
  518. package/React/Modules/RCTUIManager.h +14 -0
  519. package/React/Modules/RCTUIManager.m +32 -12
  520. package/React/Modules/RCTUIManagerUtils.m +3 -3
  521. package/React/React-RCTFabric.podspec +39 -28
  522. package/React/Tests/Text/RCTParagraphComponentViewTests.mm +17 -16
  523. package/React/UIUtils/RCTUIUtils.h +1 -1
  524. package/React/Views/RCTActivityIndicatorViewManager.m +3 -3
  525. package/React/Views/RCTComponentData.h +3 -0
  526. package/React/Views/RCTComponentData.m +67 -15
  527. package/React/Views/RCTFont.mm +32 -0
  528. package/React/Views/RCTLayout.h +1 -1
  529. package/React/Views/RCTModalHostView.m +3 -3
  530. package/React/Views/RCTModalHostViewController.m +3 -34
  531. package/React/Views/RCTRootShadowView.h +1 -1
  532. package/React/Views/RCTRootShadowView.m +1 -1
  533. package/React/Views/RCTSegmentedControl.m +7 -21
  534. package/React/Views/RCTShadowView.m +4 -4
  535. package/React/Views/RCTTVView.m +2 -2
  536. package/React/Views/RCTTransformOrigin.h +15 -0
  537. package/React/Views/RCTView.h +3 -0
  538. package/React/Views/RCTView.m +56 -63
  539. package/React/Views/RCTViewManager.m +123 -50
  540. package/React/Views/SafeAreaView/RCTSafeAreaView.m +6 -1
  541. package/React/Views/ScrollView/RCTScrollView.h +8 -0
  542. package/React/Views/ScrollView/RCTScrollView.m +27 -7
  543. package/React/Views/ScrollView/RCTScrollViewManager.m +0 -2
  544. package/React/Views/UIView+React.h +11 -0
  545. package/React/Views/UIView+React.m +111 -0
  546. package/React/third-party.xcconfig +2 -2
  547. package/React-Core.podspec +20 -24
  548. package/React.podspec +2 -4
  549. package/ReactAndroid/build.gradle +151 -105
  550. package/ReactAndroid/cmake-utils/ReactNative-application.cmake +4 -2
  551. package/ReactAndroid/cmake-utils/default-app-setup/OnLoad.cpp +8 -10
  552. package/ReactAndroid/cmake-utils/folly-flags.cmake +2 -1
  553. package/ReactAndroid/external-artifacts/build.gradle.kts +70 -0
  554. package/ReactAndroid/flipper-integration/build.gradle.kts +64 -0
  555. package/ReactAndroid/flipper-integration/src/debug/java/com/facebook/react/flipper/ReactNativeFlipper.kt +66 -0
  556. package/ReactAndroid/flipper-integration/src/release/java/com/facebook/react/flipper/ReactNativeFlipper.kt +23 -0
  557. package/ReactAndroid/gradle.properties +8 -33
  558. package/ReactAndroid/hermes-engine/build.gradle +52 -15
  559. package/ReactAndroid/src/debug/AndroidManifest.xml +15 -0
  560. package/ReactAndroid/src/main/AndroidManifest.xml +15 -0
  561. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/HermesExecutor.java +1 -14
  562. package/ReactAndroid/src/main/java/com/facebook/react/CompositeReactPackageTurboModuleManagerDelegate.java +0 -14
  563. package/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java +1 -13
  564. package/ReactAndroid/src/main/java/com/facebook/react/DebugCorePackage.java +6 -19
  565. package/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java +9 -18
  566. package/ReactAndroid/src/main/java/com/facebook/react/LazyTurboModuleManagerDelegate.java +104 -0
  567. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +46 -27
  568. package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.java +98 -0
  569. package/ReactAndroid/src/main/java/com/facebook/react/ReactApplication.kt +24 -0
  570. package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java +90 -29
  571. package/ReactAndroid/src/main/java/com/facebook/react/ReactHost.kt +107 -0
  572. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +147 -156
  573. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +7 -6
  574. package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +3 -1
  575. package/ReactAndroid/src/main/java/com/facebook/react/ReactPackage.java +21 -1
  576. package/ReactAndroid/src/main/java/com/facebook/react/ReactPackageHelper.java +2 -1
  577. package/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.java +91 -52
  578. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +17 -58
  579. package/ReactAndroid/src/main/java/com/facebook/react/TurboReactPackage.java +11 -16
  580. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java +12 -1
  581. package/ReactAndroid/src/main/java/com/facebook/react/animated/ObjectAnimatedNode.java +159 -0
  582. package/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.java +3 -1
  583. package/ReactAndroid/src/main/java/com/facebook/react/animated/StyleAnimatedNode.java +3 -1
  584. package/ReactAndroid/src/main/java/com/facebook/react/animated/TransformAnimatedNode.java +1 -1
  585. package/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java +4 -0
  586. package/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java +0 -5
  587. package/ReactAndroid/src/main/java/com/facebook/react/bridge/Callback.java +1 -1
  588. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java +3 -2
  589. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +7 -13
  590. package/ReactAndroid/src/main/java/com/facebook/react/bridge/FallbackJSBundleLoader.java +2 -2
  591. package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedAsyncTask.java +0 -1
  592. package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedResultAsyncTask.java +0 -1
  593. package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedRunnable.java +0 -1
  594. package/ReactAndroid/src/main/java/com/facebook/react/bridge/Inspector.java +5 -1
  595. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoader.java +6 -6
  596. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JSCJavaScriptExecutor.java +2 -0
  597. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JSCJavaScriptExecutorFactory.java +2 -0
  598. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.java +13 -7
  599. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java +3 -42
  600. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java +0 -5
  601. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModule.java +1 -0
  602. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java +0 -22
  603. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +17 -7
  604. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarker.java +85 -10
  605. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarkerConstants.java +29 -10
  606. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactModuleWithSpec.java +2 -4
  607. package/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManagerProvider.java +18 -0
  608. package/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThread.java +4 -0
  609. package/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadImpl.java +6 -0
  610. package/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadSpec.java +1 -1
  611. package/ReactAndroid/src/main/java/com/facebook/react/common/DebugServerException.java +4 -2
  612. package/ReactAndroid/src/main/java/com/facebook/react/common/StandardCharsets.java +6 -1
  613. package/ReactAndroid/src/main/java/com/facebook/react/common/annotations/DeprecatedInNewArchitecture.kt +16 -0
  614. package/ReactAndroid/src/main/java/com/facebook/react/common/annotations/FrameworkAPI.kt +18 -0
  615. package/ReactAndroid/src/main/java/com/facebook/react/common/annotations/UnstableReactNativeAPI.kt +15 -0
  616. package/ReactAndroid/src/main/java/com/facebook/react/common/annotations/VisibleForTesting.kt +14 -0
  617. package/ReactAndroid/src/main/java/com/facebook/react/common/assets/ReactFontManager.java +239 -0
  618. package/ReactAndroid/src/main/java/com/facebook/react/common/build/ReactBuildConfig.java +0 -1
  619. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/ReadableMapBuffer.kt +1 -0
  620. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/WritableMapBuffer.kt +6 -0
  621. package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +47 -27
  622. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultBindingsInstaller.kt +18 -0
  623. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultJSIModulePackage.kt +1 -0
  624. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultNewArchitectureEntryPoint.kt +12 -1
  625. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHost.kt +109 -0
  626. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHostDelegate.kt +56 -0
  627. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt +16 -0
  628. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java +0 -32
  629. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevLoadingViewImplementation.java +25 -15
  630. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java +29 -29
  631. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +126 -182
  632. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +202 -339
  633. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorPackagerConnection.java +1 -1
  634. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSDebuggerWebSocketClient.java +10 -5
  635. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/PerftestDevSupportManager.java +2 -6
  636. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/ReactInstanceDevHelper.java +2 -2
  637. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevOptionHandler.java +1 -1
  638. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java +1 -1
  639. package/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.java +15 -57
  640. package/ReactAndroid/src/main/java/com/facebook/react/fabric/BindingImpl.java +122 -0
  641. package/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.java +67 -21
  642. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java +2 -2
  643. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +149 -108
  644. package/ReactAndroid/src/main/java/com/facebook/react/fabric/GuardedFrameCallback.java +0 -1
  645. package/ReactAndroid/src/main/java/com/facebook/react/fabric/ReactNativeConfig.kt +54 -0
  646. package/ReactAndroid/src/main/java/com/facebook/react/fabric/StateWrapperImpl.java +4 -4
  647. package/ReactAndroid/src/main/java/com/facebook/react/fabric/SurfaceHandlerBinding.java +1 -0
  648. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventBeatManager.java +6 -3
  649. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +12 -14
  650. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.java +7 -6
  651. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/LayoutMetricsConversions.java +4 -4
  652. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.java +12 -13
  653. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +20 -11
  654. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +109 -100
  655. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/BatchMountItem.java +14 -0
  656. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/DispatchIntCommandMountItem.java +3 -2
  657. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/DispatchStringCommandMountItem.java +3 -2
  658. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/FabricNameComponentMapping.java +50 -0
  659. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +6 -5
  660. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/MountItemFactory.java +57 -0
  661. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.java +10 -5
  662. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SendAccessibilityEventMountItem.java +55 -0
  663. package/ReactAndroid/src/main/java/com/facebook/react/interfaces/TaskInterface.kt +44 -0
  664. package/ReactAndroid/src/main/java/com/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler.kt +18 -0
  665. package/ReactAndroid/src/main/java/com/facebook/react/interfaces/fabric/ReactSurface.kt +49 -0
  666. package/ReactAndroid/src/main/java/com/facebook/react/interfaces/fabric/SurfaceHandler.kt +51 -0
  667. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/JSCExecutor.kt +36 -0
  668. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/JSCExecutorFactory.kt +37 -0
  669. package/ReactAndroid/src/main/java/com/facebook/react/module/annotations/ReactModule.java +4 -0
  670. package/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.java +20 -5
  671. package/ReactAndroid/src/main/java/com/facebook/react/module/processing/ReactModuleSpecProcessor.java +0 -2
  672. package/ReactAndroid/src/main/java/com/facebook/react/modules/appstate/AppStateModule.java +0 -1
  673. package/ReactAndroid/src/main/java/com/facebook/react/modules/common/ModuleDataCleaner.java +1 -0
  674. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactAndroidHWInputDeviceHelper.java +2 -0
  675. package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/FpsDebugFrameCallback.java +9 -7
  676. package/ReactAndroid/src/main/java/com/facebook/react/modules/devloading/DevLoadingModule.java +6 -10
  677. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java +6 -6
  678. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/CustomClientBuilder.java +14 -0
  679. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +1 -87
  680. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.java +39 -38
  681. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/RequestBodyUtil.java +7 -1
  682. package/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/PermissionsModule.java +12 -3
  683. package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.java +0 -2
  684. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoModule.java +5 -0
  685. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
  686. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.java +20 -4
  687. package/ReactAndroid/src/main/java/com/facebook/react/runtime/.clang-format +91 -0
  688. package/ReactAndroid/src/main/java/com/facebook/react/runtime/.clang-tidy +22 -0
  689. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BindingsInstaller.kt +22 -0
  690. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BoltsFutureTask.java +93 -0
  691. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessAtomicRef.java +131 -0
  692. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessDevSupportManager.java +154 -0
  693. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.java +167 -0
  694. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactStateTracker.java +32 -0
  695. package/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.java +118 -0
  696. package/ReactAndroid/src/main/java/com/facebook/react/runtime/JSCInstance.java +27 -0
  697. package/ReactAndroid/src/main/java/com/facebook/react/runtime/JSEngineInstance.java +26 -0
  698. package/ReactAndroid/src/main/java/com/facebook/react/runtime/JSTimerExecutor.java +50 -0
  699. package/ReactAndroid/src/main/java/com/facebook/react/runtime/README.md +3 -0
  700. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostDelegate.kt +82 -0
  701. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +1757 -0
  702. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.java +581 -0
  703. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactLifecycleStateManager.java +90 -0
  704. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceImpl.java +251 -0
  705. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.java +248 -0
  706. package/ReactAndroid/src/main/java/com/facebook/react/runtime/hermes/HermesInstance.kt +24 -0
  707. package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/AggregateException.java +129 -0
  708. package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/AndroidExecutors.java +137 -0
  709. package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/BoltsExecutors.java +120 -0
  710. package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/CancellationToken.java +74 -0
  711. package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/CancellationTokenRegistration.java +60 -0
  712. package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/CancellationTokenSource.java +216 -0
  713. package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/Capture.java +33 -0
  714. package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/Continuation.java +24 -0
  715. package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/ExecutorException.java +21 -0
  716. package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/Task.java +1022 -0
  717. package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/TaskCompletionSource.java +71 -0
  718. package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/UnobservedErrorNotifier.java +42 -0
  719. package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/UnobservedTaskException.java +17 -0
  720. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +34 -151
  721. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/CallInvokerHolderImpl.java +6 -12
  722. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/NativeMethodCallInvokerHolderImpl.java +31 -0
  723. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/NativeModuleSoLoader.kt +25 -0
  724. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleInteropUtils.java +290 -0
  725. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java +186 -69
  726. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManagerDelegate.java +26 -13
  727. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModulePerfLogger.java +6 -11
  728. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/CallInvokerHolder.kt +17 -0
  729. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/NativeMethodCallInvokerHolder.kt +13 -0
  730. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/TurboModule.kt +19 -0
  731. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/TurboModuleRegistry.kt +37 -0
  732. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +110 -35
  733. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerAdapter.java +3 -0
  734. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerDelegate.java +6 -0
  735. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerInterface.java +4 -0
  736. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FabricViewStateManager.java +10 -0
  737. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java +181 -44
  738. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +2 -7
  739. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java +179 -8
  740. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java +2 -2
  741. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java +25 -6
  742. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactYogaConfigProvider.java +2 -1
  743. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootView.java +4 -1
  744. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.java +100 -44
  745. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIConstantsProvider.java +18 -0
  746. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIConstantsProviderManager.java +41 -0
  747. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +34 -23
  748. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.java +1 -1
  749. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +1 -1
  750. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstants.java +0 -1
  751. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstantsHelper.java +35 -1
  752. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +12 -1
  753. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +11 -17
  754. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerRegistry.java +22 -6
  755. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java +5 -0
  756. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java +3 -0
  757. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/ViewUtil.java +35 -6
  758. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +0 -28
  759. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.java +187 -0
  760. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.java +51 -11
  761. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEventHelper.java +5 -0
  762. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +13 -15
  763. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +62 -59
  764. package/ReactAndroid/src/main/java/com/facebook/react/util/RNLog.java +4 -18
  765. package/ReactAndroid/src/main/java/com/facebook/react/views/common/ViewUtils.java +34 -0
  766. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayout.java +2 -2
  767. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.java +6 -4
  768. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerClosedEvent.java +2 -1
  769. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerOpenedEvent.java +2 -1
  770. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerSlideEvent.java +2 -1
  771. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerStateChangedEvent.java +2 -1
  772. package/ReactAndroid/src/main/java/com/facebook/react/views/image/ImageLoadEvent.java +6 -5
  773. package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.java +3 -0
  774. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java +1 -1
  775. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java +26 -29
  776. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/RequestCloseEvent.java +2 -1
  777. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ShowEvent.java +2 -1
  778. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerView.java +1 -2
  779. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +148 -29
  780. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +4 -3
  781. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +28 -29
  782. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewAccessibilityDelegate.java +4 -3
  783. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.java +39 -51
  784. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +2 -1
  785. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java +2 -1
  786. package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/RefreshEvent.java +2 -1
  787. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitch.java +0 -3
  788. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchEvent.java +2 -1
  789. package/ReactAndroid/src/main/java/com/facebook/react/views/text/CustomLetterSpacingSpan.java +0 -3
  790. package/ReactAndroid/src/main/java/com/facebook/react/views/text/CustomStyleSpan.java +5 -2
  791. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java +22 -6
  792. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactFontManager.java +14 -129
  793. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +10 -0
  794. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +1 -1
  795. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +40 -2
  796. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTypefaceUtils.java +31 -3
  797. package/ReactAndroid/src/main/java/com/facebook/react/views/text/SetSpanOperation.java +7 -0
  798. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +50 -16
  799. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +12 -2
  800. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +50 -32
  801. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ContentSizeWatcher.java +1 -1
  802. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactContentSizeChangedEvent.java +2 -1
  803. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +37 -110
  804. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextChangedEvent.java +2 -1
  805. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputBlurEvent.java +2 -1
  806. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputEndEditingEvent.java +2 -1
  807. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputEvent.java +2 -1
  808. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputFocusEvent.java +2 -1
  809. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputKeyPressEvent.java +2 -1
  810. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +10 -21
  811. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputSelectionEvent.java +2 -1
  812. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputShadowNode.java +10 -1
  813. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputSubmitEditingEvent.java +2 -1
  814. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.java +0 -3
  815. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactMapBufferPropSetter.kt +10 -0
  816. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +0 -4
  817. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +0 -2
  818. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +11 -2
  819. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManagerWrapper.kt +13 -2
  820. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ViewGroupClickEvent.java +2 -1
  821. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfig.java +4 -6
  822. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIBase.java +6 -7
  823. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaErrata.java +37 -0
  824. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.java +1 -3
  825. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNative.java +5 -4
  826. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +2 -2
  827. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.java +1 -1
  828. package/ReactAndroid/src/main/jni/CMakeLists.txt +19 -26
  829. package/ReactAndroid/src/main/jni/first-party/fb/CMakeLists.txt +1 -1
  830. package/ReactAndroid/src/main/jni/first-party/fb/assert.cpp +2 -2
  831. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ALog.h +8 -8
  832. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/Environment.h +11 -11
  833. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ProgramLocation.h +6 -6
  834. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/RefPtr.h +33 -35
  835. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/StaticInitialized.h +3 -3
  836. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/ThreadLocal.h +12 -12
  837. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/assert.h +2 -2
  838. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/log.h +7 -7
  839. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/noncopyable.h +2 -2
  840. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/nonmovable.h +2 -2
  841. package/ReactAndroid/src/main/jni/first-party/fb/log.cpp +8 -8
  842. package/ReactAndroid/src/main/jni/first-party/fbgloginit/fb/glog_init.h +1 -1
  843. package/ReactAndroid/src/main/jni/first-party/fbgloginit/glog_init.cpp +14 -14
  844. package/ReactAndroid/src/main/jni/first-party/jni-hack/real/jni.h +381 -432
  845. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/LayoutContext.cpp +34 -0
  846. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/LayoutContext.h +29 -0
  847. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/ScopedGlobalRef.h +14 -12
  848. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/ScopedLocalRef.h +14 -12
  849. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNI.h +15 -9
  850. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +320 -331
  851. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJTypesVanilla.h +17 -12
  852. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YogaJniException.cpp +4 -7
  853. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YogaJniException.h +5 -8
  854. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/common.cpp +7 -12
  855. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/common.h +5 -11
  856. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/corefunctions.cpp +5 -8
  857. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/corefunctions.h +2 -6
  858. package/ReactAndroid/src/main/jni/react/fabric/AsyncEventBeat.cpp +3 -3
  859. package/ReactAndroid/src/main/jni/react/fabric/AsyncEventBeat.h +3 -3
  860. package/ReactAndroid/src/main/jni/react/fabric/Binding.cpp +93 -102
  861. package/ReactAndroid/src/main/jni/react/fabric/Binding.h +39 -34
  862. package/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt +1 -2
  863. package/ReactAndroid/src/main/jni/react/fabric/ComponentFactory.cpp +2 -4
  864. package/ReactAndroid/src/main/jni/react/fabric/ComponentFactory.h +3 -5
  865. package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +9 -12
  866. package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.h +6 -8
  867. package/ReactAndroid/src/main/jni/react/fabric/EventBeatManager.cpp +7 -9
  868. package/ReactAndroid/src/main/jni/react/fabric/EventBeatManager.h +6 -8
  869. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.cpp +8 -18
  870. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.h +8 -13
  871. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +131 -171
  872. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +27 -34
  873. package/ReactAndroid/src/main/jni/react/fabric/JBackgroundExecutor.cpp +4 -6
  874. package/ReactAndroid/src/main/jni/react/fabric/JBackgroundExecutor.h +3 -5
  875. package/ReactAndroid/src/main/jni/react/fabric/JFabricUIManager.cpp +6 -3
  876. package/ReactAndroid/src/main/jni/react/fabric/JFabricUIManager.h +3 -3
  877. package/ReactAndroid/src/main/jni/react/fabric/MountItem.cpp +64 -0
  878. package/ReactAndroid/src/main/jni/react/fabric/MountItem.h +86 -0
  879. package/ReactAndroid/src/main/jni/react/fabric/OnLoad.cpp +1 -1
  880. package/ReactAndroid/src/main/jni/react/fabric/ReactNativeConfigHolder.cpp +4 -4
  881. package/ReactAndroid/src/main/jni/react/fabric/ReactNativeConfigHolder.h +6 -8
  882. package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.cpp +21 -13
  883. package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.h +5 -7
  884. package/ReactAndroid/src/main/jni/react/fabric/SurfaceHandlerBinding.cpp +5 -7
  885. package/ReactAndroid/src/main/jni/react/fabric/SurfaceHandlerBinding.h +6 -8
  886. package/ReactAndroid/src/main/jni/react/fabric/viewPropConversions.h +17 -19
  887. package/ReactAndroid/src/main/jni/react/hermes/instrumentation/OnLoad.cpp +1 -1
  888. package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/CMakeLists.txt +1 -1
  889. package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/OnLoad.cpp +8 -24
  890. package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +1 -2
  891. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +38 -68
  892. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +16 -19
  893. package/ReactAndroid/src/main/jni/react/jni/CxxModuleWrapper.cpp +7 -9
  894. package/ReactAndroid/src/main/jni/react/jni/CxxModuleWrapper.h +5 -7
  895. package/ReactAndroid/src/main/jni/react/jni/CxxModuleWrapperBase.h +4 -6
  896. package/ReactAndroid/src/main/jni/react/jni/CxxSharedModuleWrapper.h +2 -4
  897. package/ReactAndroid/src/main/jni/react/jni/JCallback.h +3 -5
  898. package/ReactAndroid/src/main/jni/react/jni/JInspector.cpp +13 -12
  899. package/ReactAndroid/src/main/jni/react/jni/JInspector.h +11 -11
  900. package/ReactAndroid/src/main/jni/react/jni/JMessageQueueThread.cpp +8 -10
  901. package/ReactAndroid/src/main/jni/react/jni/JMessageQueueThread.h +2 -2
  902. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h +3 -5
  903. package/ReactAndroid/src/main/jni/react/jni/JReactMarker.cpp +75 -18
  904. package/ReactAndroid/src/main/jni/react/jni/JReactMarker.h +14 -12
  905. package/ReactAndroid/src/main/jni/react/jni/JReactSoftExceptionLogger.h +3 -5
  906. package/ReactAndroid/src/main/jni/react/jni/JRuntimeExecutor.cpp +2 -4
  907. package/ReactAndroid/src/main/jni/react/jni/JRuntimeExecutor.h +2 -4
  908. package/ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.cpp +2 -4
  909. package/ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.h +2 -4
  910. package/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp +10 -12
  911. package/ReactAndroid/src/main/jni/react/jni/JSLoader.h +5 -7
  912. package/ReactAndroid/src/main/jni/react/jni/JSLogging.cpp +4 -6
  913. package/ReactAndroid/src/main/jni/react/jni/JSLogging.h +4 -6
  914. package/ReactAndroid/src/main/jni/react/jni/JavaModuleWrapper.cpp +7 -9
  915. package/ReactAndroid/src/main/jni/react/jni/JavaModuleWrapper.h +4 -6
  916. package/ReactAndroid/src/main/jni/react/jni/JavaScriptExecutorHolder.h +2 -4
  917. package/ReactAndroid/src/main/jni/react/jni/JniJSModulesUnbundle.cpp +14 -16
  918. package/ReactAndroid/src/main/jni/react/jni/JniJSModulesUnbundle.h +11 -13
  919. package/ReactAndroid/src/main/jni/react/jni/MethodInvoker.cpp +16 -18
  920. package/ReactAndroid/src/main/jni/react/jni/MethodInvoker.h +4 -6
  921. package/ReactAndroid/src/main/jni/react/jni/ModuleRegistryBuilder.cpp +5 -7
  922. package/ReactAndroid/src/main/jni/react/jni/ModuleRegistryBuilder.h +3 -5
  923. package/ReactAndroid/src/main/jni/react/jni/NativeArray.cpp +2 -4
  924. package/ReactAndroid/src/main/jni/react/jni/NativeArray.h +6 -8
  925. package/ReactAndroid/src/main/jni/react/jni/NativeCommon.cpp +4 -6
  926. package/ReactAndroid/src/main/jni/react/jni/NativeCommon.h +4 -6
  927. package/ReactAndroid/src/main/jni/react/jni/NativeMap.cpp +2 -4
  928. package/ReactAndroid/src/main/jni/react/jni/NativeMap.h +5 -7
  929. package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +5 -5
  930. package/ReactAndroid/src/main/jni/react/jni/OnLoad.h +2 -4
  931. package/ReactAndroid/src/main/jni/react/jni/ProxyExecutor.cpp +11 -13
  932. package/ReactAndroid/src/main/jni/react/jni/ProxyExecutor.h +9 -11
  933. package/ReactAndroid/src/main/jni/react/jni/ReadableNativeArray.cpp +3 -13
  934. package/ReactAndroid/src/main/jni/react/jni/ReadableNativeArray.h +4 -7
  935. package/ReactAndroid/src/main/jni/react/jni/ReadableNativeMap.cpp +8 -18
  936. package/ReactAndroid/src/main/jni/react/jni/ReadableNativeMap.h +4 -7
  937. package/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.cpp +5 -7
  938. package/ReactAndroid/src/main/jni/react/jni/WritableNativeArray.h +6 -8
  939. package/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.cpp +6 -8
  940. package/ReactAndroid/src/main/jni/react/jni/WritableNativeMap.h +6 -8
  941. package/ReactAndroid/src/main/jni/react/jscexecutor/OnLoad.cpp +6 -9
  942. package/ReactAndroid/src/main/jni/react/mapbuffer/CMakeLists.txt +1 -1
  943. package/ReactAndroid/src/main/jni/react/mapbuffer/react/common/mapbuffer/JReadableMapBuffer.cpp +4 -6
  944. package/ReactAndroid/src/main/jni/react/mapbuffer/react/common/mapbuffer/JReadableMapBuffer.h +4 -6
  945. package/ReactAndroid/src/main/jni/react/mapbuffer/react/common/mapbuffer/OnLoad.cpp +1 -1
  946. package/ReactAndroid/src/main/jni/react/newarchdefaults/CMakeLists.txt +1 -1
  947. package/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.cpp +10 -14
  948. package/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.h +7 -9
  949. package/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultTurboModuleManagerDelegate.cpp +10 -12
  950. package/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultTurboModuleManagerDelegate.h +10 -12
  951. package/ReactAndroid/src/main/jni/react/newarchdefaults/OnLoad.cpp +1 -1
  952. package/ReactAndroid/src/main/jni/react/perftests/OnLoad.cpp +12 -14
  953. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.cpp +7 -9
  954. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.h +3 -5
  955. package/ReactAndroid/src/main/jni/react/reactnativeblob/OnLoad.cpp +1 -1
  956. package/ReactAndroid/src/main/jni/react/reactperflogger/CMakeLists.txt +1 -1
  957. package/ReactAndroid/src/main/jni/react/reactperflogger/reactperflogger/JNativeModulePerfLogger.h +2 -4
  958. package/ReactAndroid/src/main/jni/react/reactperflogger/reactperflogger/OnLoad.cpp +1 -1
  959. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/.clang-tidy +20 -0
  960. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/CMakeLists.txt +29 -0
  961. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.cpp +31 -0
  962. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.h +42 -0
  963. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/OnLoad.cpp +15 -0
  964. package/ReactAndroid/src/main/jni/react/runtime/jni/.clang-tidy +20 -0
  965. package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +31 -0
  966. package/ReactAndroid/src/main/jni/react/runtime/jni/JBindingsInstaller.h +32 -0
  967. package/ReactAndroid/src/main/jni/react/runtime/jni/JJSEngineInstance.h +26 -0
  968. package/ReactAndroid/src/main/jni/react/runtime/jni/JJSTimerExecutor.cpp +34 -0
  969. package/ReactAndroid/src/main/jni/react/runtime/jni/JJSTimerExecutor.h +37 -0
  970. package/ReactAndroid/src/main/jni/react/runtime/jni/JJavaTimerManager.cpp +30 -0
  971. package/ReactAndroid/src/main/jni/react/runtime/jni/JJavaTimerManager.h +26 -0
  972. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.cpp +26 -0
  973. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.h +25 -0
  974. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +236 -0
  975. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.h +110 -0
  976. package/ReactAndroid/src/main/jni/react/runtime/jni/JavaTimerRegistry.cpp +28 -0
  977. package/ReactAndroid/src/main/jni/react/runtime/jni/JavaTimerRegistry.h +38 -0
  978. package/ReactAndroid/src/main/jni/react/runtime/jni/OnLoad.cpp +20 -0
  979. package/ReactAndroid/src/main/jni/react/runtime/jsc/jni/CMakeLists.txt +22 -0
  980. package/ReactAndroid/src/main/jni/react/runtime/jsc/jni/OnLoad.cpp +48 -0
  981. package/ReactAndroid/src/main/jni/react/turbomodule/CMakeLists.txt +2 -1
  982. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/CallInvokerHolder.cpp +2 -4
  983. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/CallInvokerHolder.h +2 -4
  984. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/CompositeTurboModuleManagerDelegate.cpp +12 -13
  985. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/CompositeTurboModuleManagerDelegate.h +11 -12
  986. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/NativeMethodCallInvokerHolder.cpp +23 -0
  987. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/NativeMethodCallInvokerHolder.h +32 -0
  988. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/OnLoad.cpp +1 -1
  989. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.cpp +249 -88
  990. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.h +14 -10
  991. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManagerDelegate.h +6 -8
  992. package/ReactAndroid/src/main/jni/react/uimanager/CMakeLists.txt +2 -1
  993. package/ReactAndroid/src/main/jni/react/uimanager/ComponentNameResolverManager.cpp +5 -8
  994. package/ReactAndroid/src/main/jni/react/uimanager/ComponentNameResolverManager.h +2 -4
  995. package/ReactAndroid/src/main/jni/react/uimanager/OnLoad.cpp +3 -1
  996. package/ReactAndroid/src/main/jni/react/uimanager/UIConstantsProviderManager.cpp +64 -0
  997. package/ReactAndroid/src/main/jni/react/uimanager/UIConstantsProviderManager.h +47 -0
  998. package/ReactAndroid/src/main/jni/third-party/boost/CMakeLists.txt +1 -1
  999. package/ReactAndroid/src/main/jni/third-party/folly/CMakeLists.txt +3 -8
  1000. package/ReactAndroid/src/main/res/devsupport/values/strings.xml +4 -7
  1001. package/ReactAndroid/src/main/res/devsupport/values-af/strings.xml +2 -0
  1002. package/ReactAndroid/src/main/res/devsupport/values-ar/strings.xml +2 -0
  1003. package/ReactAndroid/src/main/res/devsupport/values-bg/strings.xml +1 -0
  1004. package/ReactAndroid/src/main/res/devsupport/values-bn/strings.xml +2 -0
  1005. package/ReactAndroid/src/main/res/devsupport/values-bs/strings.xml +1 -0
  1006. package/ReactAndroid/src/main/res/devsupport/values-cs/strings.xml +2 -0
  1007. package/ReactAndroid/src/main/res/devsupport/values-da/strings.xml +1 -0
  1008. package/ReactAndroid/src/main/res/devsupport/values-el/strings.xml +1 -0
  1009. package/ReactAndroid/src/main/res/devsupport/values-en-rGB/strings.xml +1 -0
  1010. package/ReactAndroid/src/main/res/devsupport/values-es/strings.xml +2 -0
  1011. package/ReactAndroid/src/main/res/devsupport/values-es-rES/strings.xml +2 -0
  1012. package/ReactAndroid/src/main/res/devsupport/values-et/strings.xml +2 -0
  1013. package/ReactAndroid/src/main/res/devsupport/values-fa/strings.xml +2 -0
  1014. package/ReactAndroid/src/main/res/devsupport/values-fb/strings.xml +2 -0
  1015. package/ReactAndroid/src/main/res/devsupport/values-fb-rLS/strings.xml +2 -0
  1016. package/ReactAndroid/src/main/res/devsupport/values-fi/strings.xml +2 -0
  1017. package/ReactAndroid/src/main/res/devsupport/values-fr/strings.xml +1 -0
  1018. package/ReactAndroid/src/main/res/devsupport/values-fr-rCA/strings.xml +1 -0
  1019. package/ReactAndroid/src/main/res/devsupport/values-gu/strings.xml +2 -0
  1020. package/ReactAndroid/src/main/res/devsupport/values-ha/strings.xml +2 -0
  1021. package/ReactAndroid/src/main/res/devsupport/values-hi/strings.xml +2 -0
  1022. package/ReactAndroid/src/main/res/devsupport/values-hr/strings.xml +2 -0
  1023. package/ReactAndroid/src/main/res/devsupport/values-hu/strings.xml +2 -0
  1024. package/ReactAndroid/src/main/res/devsupport/values-in/strings.xml +2 -0
  1025. package/ReactAndroid/src/main/res/devsupport/values-it/strings.xml +2 -0
  1026. package/ReactAndroid/src/main/res/devsupport/values-iw/strings.xml +2 -0
  1027. package/ReactAndroid/src/main/res/devsupport/values-ja/strings.xml +2 -0
  1028. package/ReactAndroid/src/main/res/devsupport/values-jv/strings.xml +2 -0
  1029. package/ReactAndroid/src/main/res/devsupport/values-ka/strings.xml +2 -0
  1030. package/ReactAndroid/src/main/res/devsupport/values-km/strings.xml +2 -0
  1031. package/ReactAndroid/src/main/res/devsupport/values-kn/strings.xml +2 -0
  1032. package/ReactAndroid/src/main/res/devsupport/values-ko/strings.xml +2 -0
  1033. package/ReactAndroid/src/main/res/devsupport/values-lt/strings.xml +2 -0
  1034. package/ReactAndroid/src/main/res/devsupport/values-lv/strings.xml +2 -0
  1035. package/ReactAndroid/src/main/res/devsupport/values-mk/strings.xml +2 -0
  1036. package/ReactAndroid/src/main/res/devsupport/values-ml/strings.xml +2 -0
  1037. package/ReactAndroid/src/main/res/devsupport/values-mr/strings.xml +2 -0
  1038. package/ReactAndroid/src/main/res/devsupport/values-ms/strings.xml +2 -0
  1039. package/ReactAndroid/src/main/res/devsupport/values-my/strings.xml +2 -0
  1040. package/ReactAndroid/src/main/res/devsupport/values-nb/strings.xml +2 -0
  1041. package/ReactAndroid/src/main/res/devsupport/values-nl/strings.xml +2 -0
  1042. package/ReactAndroid/src/main/res/devsupport/values-pa/strings.xml +2 -0
  1043. package/ReactAndroid/src/main/res/devsupport/values-pl/strings.xml +2 -0
  1044. package/ReactAndroid/src/main/res/devsupport/values-pt/strings.xml +2 -0
  1045. package/ReactAndroid/src/main/res/devsupport/values-pt-rPT/strings.xml +2 -0
  1046. package/ReactAndroid/src/main/res/devsupport/values-ro/strings.xml +2 -0
  1047. package/ReactAndroid/src/main/res/devsupport/values-ru/strings.xml +2 -0
  1048. package/ReactAndroid/src/main/res/devsupport/values-si/strings.xml +2 -0
  1049. package/ReactAndroid/src/main/res/devsupport/values-sk/strings.xml +2 -0
  1050. package/ReactAndroid/src/main/res/devsupport/values-sl/strings.xml +1 -0
  1051. package/ReactAndroid/src/main/res/devsupport/values-sq/strings.xml +2 -0
  1052. package/ReactAndroid/src/main/res/devsupport/values-sr/strings.xml +2 -0
  1053. package/ReactAndroid/src/main/res/devsupport/values-sv/strings.xml +1 -0
  1054. package/ReactAndroid/src/main/res/devsupport/values-sw/strings.xml +1 -0
  1055. package/ReactAndroid/src/main/res/devsupport/values-ta/strings.xml +2 -0
  1056. package/ReactAndroid/src/main/res/devsupport/values-te/strings.xml +2 -0
  1057. package/ReactAndroid/src/main/res/devsupport/values-th/strings.xml +2 -0
  1058. package/ReactAndroid/src/main/res/devsupport/values-tl/strings.xml +1 -0
  1059. package/ReactAndroid/src/main/res/devsupport/values-tr/strings.xml +1 -0
  1060. package/ReactAndroid/src/main/res/devsupport/values-uk/strings.xml +2 -0
  1061. package/ReactAndroid/src/main/res/devsupport/values-ur/strings.xml +2 -0
  1062. package/ReactAndroid/src/main/res/devsupport/values-vi/strings.xml +2 -0
  1063. package/ReactAndroid/src/main/res/devsupport/values-zh-rCN/strings.xml +2 -0
  1064. package/ReactAndroid/src/main/res/devsupport/values-zh-rHK/strings.xml +2 -0
  1065. package/ReactAndroid/src/main/res/devsupport/values-zh-rTW/strings.xml +2 -0
  1066. package/ReactAndroid/src/main/res/shell/values/styles.xml +4 -0
  1067. package/ReactAndroid/src/main/res/views/uimanager/values/ids.xml +12 -0
  1068. package/ReactAndroid/src/main/res/views/uimanager/values/strings.xml +103 -0
  1069. package/ReactAndroid/src/main/res/views/uimanager/values-af/strings.xml +31 -0
  1070. package/ReactAndroid/src/main/res/views/uimanager/values-ar/strings.xml +31 -0
  1071. package/ReactAndroid/src/main/res/views/uimanager/values-as/strings.xml +13 -0
  1072. package/ReactAndroid/src/main/res/views/uimanager/values-az/strings.xml +13 -0
  1073. package/ReactAndroid/src/main/res/views/uimanager/values-be/strings.xml +8 -0
  1074. package/ReactAndroid/src/main/res/views/uimanager/values-bg/strings.xml +31 -0
  1075. package/ReactAndroid/src/main/res/views/uimanager/values-bn/strings.xml +31 -0
  1076. package/ReactAndroid/src/main/res/views/uimanager/values-bs/strings.xml +31 -0
  1077. package/ReactAndroid/src/main/res/views/uimanager/values-ca/strings.xml +6 -0
  1078. package/ReactAndroid/src/main/res/views/uimanager/values-cb/strings.xml +13 -0
  1079. package/ReactAndroid/src/main/res/views/uimanager/values-cs/strings.xml +31 -0
  1080. package/ReactAndroid/src/main/res/views/uimanager/values-da/strings.xml +28 -0
  1081. package/ReactAndroid/src/main/res/views/uimanager/values-de/strings.xml +28 -0
  1082. package/ReactAndroid/src/main/res/views/uimanager/values-el/strings.xml +31 -0
  1083. package/ReactAndroid/src/main/res/views/uimanager/values-en-rGB/strings.xml +16 -0
  1084. package/ReactAndroid/src/main/res/views/uimanager/values-es/strings.xml +31 -0
  1085. package/ReactAndroid/src/main/res/views/uimanager/values-es-rES/strings.xml +31 -0
  1086. package/ReactAndroid/src/main/res/views/uimanager/values-et/strings.xml +30 -0
  1087. package/ReactAndroid/src/main/res/views/uimanager/values-fa/strings.xml +31 -0
  1088. package/ReactAndroid/src/main/res/views/uimanager/values-fb/strings.xml +31 -0
  1089. package/ReactAndroid/src/main/res/views/uimanager/values-fb-rLS/strings.xml +26 -0
  1090. package/ReactAndroid/src/main/res/views/uimanager/values-fi/strings.xml +31 -0
  1091. package/ReactAndroid/src/main/res/views/uimanager/values-fr/strings.xml +29 -0
  1092. package/ReactAndroid/src/main/res/views/uimanager/values-fr-rCA/strings.xml +29 -0
  1093. package/ReactAndroid/src/main/res/views/uimanager/values-gu/strings.xml +31 -0
  1094. package/ReactAndroid/src/main/res/views/uimanager/values-ha/strings.xml +31 -0
  1095. package/ReactAndroid/src/main/res/views/uimanager/values-hi/strings.xml +31 -0
  1096. package/ReactAndroid/src/main/res/views/uimanager/values-hr/strings.xml +31 -0
  1097. package/ReactAndroid/src/main/res/views/uimanager/values-hu/strings.xml +31 -0
  1098. package/ReactAndroid/src/main/res/views/uimanager/values-hy/strings.xml +13 -0
  1099. package/ReactAndroid/src/main/res/views/uimanager/values-in/strings.xml +29 -0
  1100. package/ReactAndroid/src/main/res/views/uimanager/values-is/strings.xml +6 -0
  1101. package/ReactAndroid/src/main/res/views/uimanager/values-it/strings.xml +27 -0
  1102. package/ReactAndroid/src/main/res/views/uimanager/values-iw/strings.xml +31 -0
  1103. package/ReactAndroid/src/main/res/views/uimanager/values-ja/strings.xml +31 -0
  1104. package/ReactAndroid/src/main/res/views/uimanager/values-jv/strings.xml +28 -0
  1105. package/ReactAndroid/src/main/res/views/uimanager/values-ka/strings.xml +30 -0
  1106. package/ReactAndroid/src/main/res/views/uimanager/values-kk/strings.xml +12 -0
  1107. package/ReactAndroid/src/main/res/views/uimanager/values-km/strings.xml +31 -0
  1108. package/ReactAndroid/src/main/res/views/uimanager/values-kn/strings.xml +31 -0
  1109. package/ReactAndroid/src/main/res/views/uimanager/values-ko/strings.xml +31 -0
  1110. package/ReactAndroid/src/main/res/views/uimanager/values-ku/strings.xml +12 -0
  1111. package/ReactAndroid/src/main/res/views/uimanager/values-ky/strings.xml +12 -0
  1112. package/ReactAndroid/src/main/res/views/uimanager/values-lo/strings.xml +13 -0
  1113. package/ReactAndroid/src/main/res/views/uimanager/values-lt/strings.xml +31 -0
  1114. package/ReactAndroid/src/main/res/views/uimanager/values-lv/strings.xml +31 -0
  1115. package/ReactAndroid/src/main/res/views/uimanager/values-mk/strings.xml +31 -0
  1116. package/ReactAndroid/src/main/res/views/uimanager/values-ml/strings.xml +31 -0
  1117. package/ReactAndroid/src/main/res/views/uimanager/values-mn/strings.xml +12 -0
  1118. package/ReactAndroid/src/main/res/views/uimanager/values-mr/strings.xml +31 -0
  1119. package/ReactAndroid/src/main/res/views/uimanager/values-ms/strings.xml +29 -0
  1120. package/ReactAndroid/src/main/res/views/uimanager/values-my/strings.xml +31 -0
  1121. package/ReactAndroid/src/main/res/views/uimanager/values-nb/strings.xml +31 -0
  1122. package/ReactAndroid/src/main/res/views/uimanager/values-ne/strings.xml +13 -0
  1123. package/ReactAndroid/src/main/res/views/uimanager/values-nl/strings.xml +28 -0
  1124. package/ReactAndroid/src/main/res/views/uimanager/values-pa/strings.xml +31 -0
  1125. package/ReactAndroid/src/main/res/views/uimanager/values-pl/strings.xml +28 -0
  1126. package/ReactAndroid/src/main/res/views/uimanager/values-ps/strings.xml +13 -0
  1127. package/ReactAndroid/src/main/res/views/uimanager/values-pt/strings.xml +31 -0
  1128. package/ReactAndroid/src/main/res/views/uimanager/values-pt-rPT/strings.xml +30 -0
  1129. package/ReactAndroid/src/main/res/views/uimanager/values-qz/strings.xml +6 -0
  1130. package/ReactAndroid/src/main/res/views/uimanager/values-ro/strings.xml +29 -0
  1131. package/ReactAndroid/src/main/res/views/uimanager/values-ru/strings.xml +31 -0
  1132. package/ReactAndroid/src/main/res/views/uimanager/values-si/strings.xml +31 -0
  1133. package/ReactAndroid/src/main/res/views/uimanager/values-sk/strings.xml +31 -0
  1134. package/ReactAndroid/src/main/res/views/uimanager/values-sl/strings.xml +31 -0
  1135. package/ReactAndroid/src/main/res/views/uimanager/values-sn/strings.xml +6 -0
  1136. package/ReactAndroid/src/main/res/views/uimanager/values-so/strings.xml +12 -0
  1137. package/ReactAndroid/src/main/res/views/uimanager/values-sq/strings.xml +31 -0
  1138. package/ReactAndroid/src/main/res/views/uimanager/values-sr/strings.xml +31 -0
  1139. package/ReactAndroid/src/main/res/views/uimanager/values-sv/strings.xml +30 -0
  1140. package/ReactAndroid/src/main/res/views/uimanager/values-sw/strings.xml +31 -0
  1141. package/ReactAndroid/src/main/res/views/uimanager/values-ta/strings.xml +31 -0
  1142. package/ReactAndroid/src/main/res/views/uimanager/values-te/strings.xml +31 -0
  1143. package/ReactAndroid/src/main/res/views/uimanager/values-tg/strings.xml +12 -0
  1144. package/ReactAndroid/src/main/res/views/uimanager/values-th/strings.xml +31 -0
  1145. package/ReactAndroid/src/main/res/views/uimanager/values-tk/strings.xml +6 -0
  1146. package/ReactAndroid/src/main/res/views/uimanager/values-tl/strings.xml +14 -0
  1147. package/ReactAndroid/src/main/res/views/uimanager/values-tr/strings.xml +31 -0
  1148. package/ReactAndroid/src/main/res/views/uimanager/values-uk/strings.xml +31 -0
  1149. package/ReactAndroid/src/main/res/views/uimanager/values-ur/strings.xml +31 -0
  1150. package/ReactAndroid/src/main/res/views/uimanager/values-uz/strings.xml +13 -0
  1151. package/ReactAndroid/src/main/res/views/uimanager/values-vi/strings.xml +29 -0
  1152. package/ReactAndroid/src/main/res/views/uimanager/values-wo/strings.xml +6 -0
  1153. package/ReactAndroid/src/main/res/views/uimanager/values-zh-rCN/strings.xml +31 -0
  1154. package/ReactAndroid/src/main/res/views/uimanager/values-zh-rHK/strings.xml +31 -0
  1155. package/ReactAndroid/src/main/res/views/uimanager/values-zh-rTW/strings.xml +31 -0
  1156. package/ReactAndroid/src/main/res/views/uimanager/values-zu/strings.xml +6 -0
  1157. package/ReactCommon/React-Fabric.podspec +25 -62
  1158. package/ReactCommon/React-FabricImage.podspec +93 -0
  1159. package/ReactCommon/React-Mapbuffer.podspec +43 -0
  1160. package/ReactCommon/React-nativeconfig.podspec +36 -0
  1161. package/ReactCommon/React-rncore.podspec +4 -5
  1162. package/ReactCommon/ReactCommon.podspec +6 -5
  1163. package/ReactCommon/butter/CMakeLists.txt +1 -1
  1164. package/ReactCommon/butter/butter.h +1 -1
  1165. package/ReactCommon/callinvoker/CMakeLists.txt +1 -1
  1166. package/ReactCommon/callinvoker/React-callinvoker.podspec +3 -3
  1167. package/ReactCommon/callinvoker/ReactCommon/CallInvoker.h +12 -7
  1168. package/ReactCommon/callinvoker/ReactCommon/SchedulerPriority.h +2 -4
  1169. package/ReactCommon/cxxreact/CMakeLists.txt +1 -1
  1170. package/ReactCommon/cxxreact/CxxModule.h +16 -18
  1171. package/ReactCommon/cxxreact/CxxNativeModule.cpp +15 -17
  1172. package/ReactCommon/cxxreact/CxxNativeModule.h +7 -9
  1173. package/ReactCommon/cxxreact/ErrorUtils.h +3 -5
  1174. package/ReactCommon/cxxreact/Instance.cpp +30 -30
  1175. package/ReactCommon/cxxreact/Instance.h +24 -26
  1176. package/ReactCommon/cxxreact/JSBigString.cpp +36 -18
  1177. package/ReactCommon/cxxreact/JSBigString.h +12 -14
  1178. package/ReactCommon/cxxreact/JSBundleType.cpp +5 -12
  1179. package/ReactCommon/cxxreact/JSBundleType.h +5 -8
  1180. package/ReactCommon/cxxreact/JSExecutor.cpp +3 -5
  1181. package/ReactCommon/cxxreact/JSExecutor.h +14 -16
  1182. package/ReactCommon/cxxreact/JSIndexedRAMBundle.cpp +8 -11
  1183. package/ReactCommon/cxxreact/JSIndexedRAMBundle.h +5 -7
  1184. package/ReactCommon/cxxreact/JSModulesUnbundle.h +3 -5
  1185. package/ReactCommon/cxxreact/JsArgumentHelpers-inl.h +19 -19
  1186. package/ReactCommon/cxxreact/JsArgumentHelpers.h +16 -16
  1187. package/ReactCommon/cxxreact/MessageQueueThread.h +4 -6
  1188. package/ReactCommon/cxxreact/MethodCall.cpp +7 -9
  1189. package/ReactCommon/cxxreact/MethodCall.h +4 -6
  1190. package/ReactCommon/cxxreact/ModuleRegistry.cpp +7 -9
  1191. package/ReactCommon/cxxreact/ModuleRegistry.h +6 -8
  1192. package/ReactCommon/cxxreact/NativeModule.h +4 -6
  1193. package/ReactCommon/cxxreact/NativeToJsBridge.cpp +40 -38
  1194. package/ReactCommon/cxxreact/NativeToJsBridge.h +14 -16
  1195. package/ReactCommon/cxxreact/RAMBundleRegistry.cpp +6 -5
  1196. package/ReactCommon/cxxreact/RAMBundleRegistry.h +5 -7
  1197. package/ReactCommon/cxxreact/React-cxxreact.podspec +9 -6
  1198. package/ReactCommon/cxxreact/ReactMarker.cpp +53 -21
  1199. package/ReactCommon/cxxreact/ReactMarker.h +37 -23
  1200. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  1201. package/ReactCommon/cxxreact/RecoverableError.h +5 -7
  1202. package/ReactCommon/cxxreact/SampleCxxModule.cpp +5 -5
  1203. package/ReactCommon/cxxreact/SampleCxxModule.h +3 -3
  1204. package/ReactCommon/cxxreact/SystraceSection.h +6 -8
  1205. package/ReactCommon/cxxreact/tests/RecoverableErrorTest.cpp +3 -3
  1206. package/ReactCommon/cxxreact/tests/jsarg_helpers.cpp +4 -4
  1207. package/ReactCommon/cxxreact/tests/jsbigstring.cpp +1 -1
  1208. package/ReactCommon/cxxreact/tests/main.cpp +1 -1
  1209. package/ReactCommon/cxxreact/tests/methodcall.cpp +7 -7
  1210. package/ReactCommon/hermes/React-hermes.podspec +10 -12
  1211. package/ReactCommon/hermes/executor/CMakeLists.txt +2 -2
  1212. package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +33 -22
  1213. package/ReactCommon/hermes/executor/HermesExecutorFactory.h +5 -7
  1214. package/ReactCommon/hermes/executor/JSITracing.cpp +1 -1
  1215. package/ReactCommon/hermes/executor/JSITracing.h +1 -1
  1216. package/ReactCommon/hermes/executor/React-jsitracing.podspec +41 -0
  1217. package/ReactCommon/hermes/inspector-modern/AsyncPauseState.h +34 -0
  1218. package/ReactCommon/hermes/inspector-modern/CMakeLists.txt +40 -0
  1219. package/ReactCommon/hermes/inspector-modern/Exceptions.h +60 -0
  1220. package/ReactCommon/hermes/inspector-modern/Inspector.cpp +745 -0
  1221. package/ReactCommon/hermes/inspector-modern/Inspector.h +384 -0
  1222. package/ReactCommon/hermes/inspector-modern/InspectorState.cpp +511 -0
  1223. package/ReactCommon/hermes/inspector-modern/InspectorState.h +412 -0
  1224. package/ReactCommon/hermes/inspector-modern/README.md +113 -0
  1225. package/ReactCommon/hermes/inspector-modern/RuntimeAdapter.cpp +30 -0
  1226. package/ReactCommon/hermes/inspector-modern/RuntimeAdapter.h +76 -0
  1227. package/ReactCommon/hermes/inspector-modern/chrome/Connection.cpp +1667 -0
  1228. package/ReactCommon/hermes/inspector-modern/chrome/Connection.h +68 -0
  1229. package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.cpp +147 -0
  1230. package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.h +68 -0
  1231. package/ReactCommon/hermes/inspector-modern/chrome/MessageConverters.cpp +378 -0
  1232. package/ReactCommon/hermes/inspector-modern/chrome/MessageConverters.h +136 -0
  1233. package/ReactCommon/hermes/inspector-modern/chrome/MessageInterfaces.h +74 -0
  1234. package/ReactCommon/hermes/inspector-modern/chrome/MessageTypes.cpp +1948 -0
  1235. package/ReactCommon/hermes/inspector-modern/chrome/MessageTypes.h +1129 -0
  1236. package/ReactCommon/hermes/inspector-modern/chrome/MessageTypesInlines.h +190 -0
  1237. package/ReactCommon/hermes/inspector-modern/chrome/Registration.cpp +43 -0
  1238. package/ReactCommon/hermes/inspector-modern/chrome/Registration.h +47 -0
  1239. package/ReactCommon/hermes/inspector-modern/chrome/RemoteObjectsTable.cpp +146 -0
  1240. package/ReactCommon/hermes/inspector-modern/chrome/RemoteObjectsTable.h +124 -0
  1241. package/ReactCommon/hermes/inspector-modern/chrome/cli/main.cpp +275 -0
  1242. package/ReactCommon/hermes/inspector-modern/chrome/tests/ConnectionDemuxTests.cpp +148 -0
  1243. package/ReactCommon/hermes/inspector-modern/detail/CallbackOStream.cpp +77 -0
  1244. package/ReactCommon/hermes/inspector-modern/detail/CallbackOStream.h +89 -0
  1245. package/ReactCommon/hermes/inspector-modern/detail/SerialExecutor.cpp +60 -0
  1246. package/ReactCommon/hermes/inspector-modern/detail/SerialExecutor.h +57 -0
  1247. package/ReactCommon/hermes/inspector-modern/detail/Thread.cpp +39 -0
  1248. package/ReactCommon/hermes/inspector-modern/detail/Thread.h +85 -0
  1249. package/ReactCommon/hermes/inspector-modern/tools/run_msggen +32 -0
  1250. package/ReactCommon/hermes/inspector-modern/tools/sandcastle/build_and_test.sh +13 -0
  1251. package/ReactCommon/jsc/CMakeLists.txt +1 -1
  1252. package/ReactCommon/jsc/JSCRuntime.cpp +239 -304
  1253. package/ReactCommon/jsc/React-jsc.podspec +1 -1
  1254. package/ReactCommon/jserrorhandler/CMakeLists.txt +22 -0
  1255. package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +4 -6
  1256. package/ReactCommon/jserrorhandler/JsErrorHandler.h +5 -5
  1257. package/ReactCommon/jserrorhandler/React-jserrorhandler.podspec +52 -0
  1258. package/ReactCommon/jsi/React-jsi.podspec +17 -17
  1259. package/ReactCommon/jsi/jsi/jsi.cpp +6 -0
  1260. package/ReactCommon/jsi/jsi/jsi.h +21 -12
  1261. package/ReactCommon/jsi/jsi/test/testlib.cpp +32 -5
  1262. package/ReactCommon/jsiexecutor/CMakeLists.txt +1 -1
  1263. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +6 -5
  1264. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +46 -42
  1265. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.h +21 -23
  1266. package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +5 -7
  1267. package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.h +5 -7
  1268. package/ReactCommon/jsinspector-modern/CMakeLists.txt +16 -0
  1269. package/ReactCommon/jsinspector-modern/InspectorInterfaces.cpp +106 -0
  1270. package/ReactCommon/jsinspector-modern/InspectorInterfaces.h +92 -0
  1271. package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +31 -0
  1272. package/ReactCommon/logger/React-logger.podspec +3 -3
  1273. package/ReactCommon/logger/react_native_log.cpp +6 -6
  1274. package/ReactCommon/logger/react_native_log.h +7 -7
  1275. package/ReactCommon/react/bridging/AString.h +5 -5
  1276. package/ReactCommon/react/bridging/Array.h +16 -16
  1277. package/ReactCommon/react/bridging/Base.h +20 -21
  1278. package/ReactCommon/react/bridging/Bool.h +2 -2
  1279. package/ReactCommon/react/bridging/Bridging.h +1 -0
  1280. package/ReactCommon/react/bridging/CMakeLists.txt +2 -2
  1281. package/ReactCommon/react/bridging/CallbackWrapper.h +10 -12
  1282. package/ReactCommon/react/bridging/Class.h +6 -8
  1283. package/ReactCommon/react/bridging/Convert.h +15 -7
  1284. package/ReactCommon/react/bridging/Dynamic.h +26 -0
  1285. package/ReactCommon/react/bridging/Error.h +6 -6
  1286. package/ReactCommon/react/bridging/Function.h +36 -39
  1287. package/ReactCommon/react/bridging/LongLivedObject.cpp +8 -10
  1288. package/ReactCommon/react/bridging/LongLivedObject.h +6 -8
  1289. package/ReactCommon/react/bridging/Number.h +8 -8
  1290. package/ReactCommon/react/bridging/Object.h +12 -19
  1291. package/ReactCommon/react/bridging/Promise.h +3 -3
  1292. package/ReactCommon/react/bridging/Value.h +20 -20
  1293. package/ReactCommon/react/bridging/tests/BridgingTest.cpp +116 -42
  1294. package/ReactCommon/react/bridging/tests/BridgingTest.h +5 -5
  1295. package/ReactCommon/react/bridging/tests/ClassTest.cpp +5 -5
  1296. package/ReactCommon/react/config/CMakeLists.txt +1 -1
  1297. package/ReactCommon/react/config/ReactNativeConfig.cpp +6 -8
  1298. package/ReactCommon/react/config/ReactNativeConfig.h +10 -12
  1299. package/ReactCommon/react/debug/CMakeLists.txt +2 -2
  1300. package/ReactCommon/react/debug/React-debug.podspec +3 -2
  1301. package/ReactCommon/react/debug/flags.h +11 -10
  1302. package/ReactCommon/react/debug/react_native_assert.cpp +6 -6
  1303. package/ReactCommon/react/debug/react_native_assert.h +3 -3
  1304. package/ReactCommon/react/nativemodule/core/CMakeLists.txt +2 -1
  1305. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.cpp +22 -23
  1306. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.h +8 -10
  1307. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.cpp +5 -22
  1308. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +43 -35
  1309. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +129 -37
  1310. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +11 -18
  1311. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModulePerfLogger.cpp +92 -94
  1312. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModulePerfLogger.h +52 -54
  1313. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleUtils.cpp +13 -15
  1314. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +11 -13
  1315. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaInteropTurboModule.cpp +190 -0
  1316. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaInteropTurboModule.h +50 -0
  1317. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +190 -82
  1318. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.h +10 -12
  1319. package/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec +9 -6
  1320. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +95 -0
  1321. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +654 -0
  1322. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.h +65 -16
  1323. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +213 -152
  1324. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.h +24 -9
  1325. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm +370 -188
  1326. package/ReactCommon/react/nativemodule/samples/ReactCommon/NativeSampleTurboCxxModuleSpecJSI.cpp +46 -48
  1327. package/ReactCommon/react/nativemodule/samples/ReactCommon/NativeSampleTurboCxxModuleSpecJSI.h +16 -18
  1328. package/ReactCommon/react/nativemodule/samples/ReactCommon/SampleTurboCxxModule.cpp +20 -22
  1329. package/ReactCommon/react/nativemodule/samples/ReactCommon/SampleTurboCxxModule.h +15 -17
  1330. package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +23 -8
  1331. package/ReactCommon/react/nativemodule/samples/platform/android/CMakeLists.txt +1 -1
  1332. package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +19 -2
  1333. package/ReactCommon/react/nativemodule/samples/platform/android/ReactCommon/SampleTurboModuleSpec.cpp +167 -55
  1334. package/ReactCommon/react/nativemodule/samples/platform/android/ReactCommon/SampleTurboModuleSpec.h +5 -7
  1335. package/ReactCommon/react/nativemodule/samples/platform/android/SampleLegacyModule.java +246 -0
  1336. package/ReactCommon/react/nativemodule/samples/platform/android/SampleTurboModule.java +45 -2
  1337. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.h +8 -4
  1338. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.mm +68 -4
  1339. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleLegacyModule.h +16 -0
  1340. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleLegacyModule.mm +222 -0
  1341. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.mm +47 -0
  1342. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/SampleTurboCxxModuleLegacyImpl.cpp +11 -13
  1343. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/SampleTurboCxxModuleLegacyImpl.h +11 -13
  1344. package/ReactCommon/react/renderer/animations/CMakeLists.txt +1 -1
  1345. package/ReactCommon/react/renderer/animations/LayoutAnimationCallbackWrapper.h +4 -6
  1346. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +9 -9
  1347. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.h +5 -7
  1348. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +138 -107
  1349. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.h +42 -34
  1350. package/ReactCommon/react/renderer/animations/conversions.h +12 -14
  1351. package/ReactCommon/react/renderer/animations/primitives.h +2 -4
  1352. package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +6 -8
  1353. package/ReactCommon/react/renderer/animations/utils.cpp +2 -2
  1354. package/ReactCommon/react/renderer/animations/utils.h +8 -10
  1355. package/ReactCommon/react/renderer/attributedstring/AttributedString.cpp +21 -16
  1356. package/ReactCommon/react/renderer/attributedstring/AttributedString.h +22 -26
  1357. package/ReactCommon/react/renderer/attributedstring/AttributedStringBox.cpp +13 -13
  1358. package/ReactCommon/react/renderer/attributedstring/AttributedStringBox.h +12 -14
  1359. package/ReactCommon/react/renderer/attributedstring/CMakeLists.txt +2 -2
  1360. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +2 -2
  1361. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h +7 -10
  1362. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +6 -2
  1363. package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +9 -8
  1364. package/ReactCommon/react/renderer/attributedstring/conversions.h +97 -223
  1365. package/ReactCommon/react/renderer/attributedstring/primitives.h +14 -54
  1366. package/ReactCommon/react/renderer/attributedstring/tests/AttributedStringTest.cpp +2 -4
  1367. package/ReactCommon/react/renderer/attributedstring/tests/TextAttributesTest.cpp +2 -4
  1368. package/ReactCommon/react/renderer/componentregistry/CMakeLists.txt +1 -1
  1369. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorFactory.h +4 -6
  1370. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProvider.h +6 -8
  1371. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProviderRegistry.cpp +5 -5
  1372. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h +7 -8
  1373. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +17 -17
  1374. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.h +17 -18
  1375. package/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.cpp +1 -0
  1376. package/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.h +2 -4
  1377. package/ReactCommon/react/renderer/componentregistry/native/CMakeLists.txt +2 -1
  1378. package/ReactCommon/react/renderer/componentregistry/native/NativeComponentRegistryBinding.cpp +6 -44
  1379. package/ReactCommon/react/renderer/componentregistry/native/NativeComponentRegistryBinding.h +9 -39
  1380. package/ReactCommon/react/renderer/components/image/CMakeLists.txt +2 -1
  1381. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +6 -9
  1382. package/ReactCommon/react/renderer/components/image/ImageEventEmitter.cpp +1 -1
  1383. package/ReactCommon/react/renderer/components/image/ImageEventEmitter.h +2 -4
  1384. package/ReactCommon/react/renderer/components/image/ImageProps.cpp +7 -7
  1385. package/ReactCommon/react/renderer/components/image/ImageProps.h +8 -10
  1386. package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +3 -3
  1387. package/ReactCommon/react/renderer/components/image/ImageShadowNode.h +7 -8
  1388. package/ReactCommon/react/renderer/components/image/ImageState.cpp +1 -1
  1389. package/ReactCommon/react/renderer/components/image/ImageState.h +7 -9
  1390. package/ReactCommon/react/renderer/components/image/conversions.h +14 -15
  1391. package/ReactCommon/react/renderer/components/inputaccessory/InputAccessoryComponentDescriptor.h +11 -16
  1392. package/ReactCommon/react/renderer/components/inputaccessory/InputAccessoryShadowNode.cpp +2 -4
  1393. package/ReactCommon/react/renderer/components/inputaccessory/InputAccessoryShadowNode.h +2 -4
  1394. package/ReactCommon/react/renderer/components/inputaccessory/InputAccessoryState.h +2 -4
  1395. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/CMakeLists.txt +1 -1
  1396. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.h +5 -7
  1397. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +41 -16
  1398. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropShadowNode.cpp +2 -4
  1399. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropShadowNode.h +2 -4
  1400. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropState.h +2 -4
  1401. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropState.mm +2 -4
  1402. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewEventEmitter.cpp +4 -6
  1403. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewEventEmitter.h +3 -5
  1404. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.cpp +5 -7
  1405. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.h +5 -7
  1406. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.h +4 -2
  1407. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mm +47 -11
  1408. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/UnstableLegacyViewManagerInteropComponentDescriptor.h +4 -6
  1409. package/ReactCommon/react/renderer/components/modal/CMakeLists.txt +1 -1
  1410. package/ReactCommon/react/renderer/components/modal/ModalHostViewComponentDescriptor.h +11 -17
  1411. package/ReactCommon/react/renderer/components/modal/ModalHostViewShadowNode.h +2 -4
  1412. package/ReactCommon/react/renderer/components/modal/ModalHostViewState.h +3 -5
  1413. package/ReactCommon/react/renderer/components/progressbar/CMakeLists.txt +1 -1
  1414. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarComponentDescriptor.h +8 -10
  1415. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarMeasurementsManager.cpp +4 -4
  1416. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarMeasurementsManager.h +4 -6
  1417. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarShadowNode.cpp +4 -4
  1418. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarShadowNode.h +6 -8
  1419. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/conversions.h +3 -5
  1420. package/ReactCommon/react/renderer/components/root/CMakeLists.txt +1 -1
  1421. package/ReactCommon/react/renderer/components/root/RootComponentDescriptor.h +2 -4
  1422. package/ReactCommon/react/renderer/components/root/RootProps.cpp +7 -7
  1423. package/ReactCommon/react/renderer/components/root/RootProps.h +9 -11
  1424. package/ReactCommon/react/renderer/components/root/RootShadowNode.cpp +5 -5
  1425. package/ReactCommon/react/renderer/components/root/RootShadowNode.h +7 -9
  1426. package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewComponentDescriptor.h +9 -22
  1427. package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewShadowNode.cpp +2 -4
  1428. package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewShadowNode.h +2 -11
  1429. package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewState.cpp +1 -3
  1430. package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewState.h +2 -4
  1431. package/ReactCommon/react/renderer/components/scrollview/CMakeLists.txt +1 -1
  1432. package/ReactCommon/react/renderer/components/scrollview/RCTComponentViewHelpers.h +1 -1
  1433. package/ReactCommon/react/renderer/components/scrollview/ScrollViewComponentDescriptor.h +2 -4
  1434. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.cpp +10 -10
  1435. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +8 -10
  1436. package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.cpp +7 -7
  1437. package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.h +8 -10
  1438. package/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.cpp +8 -1
  1439. package/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.h +8 -4
  1440. package/ReactCommon/react/renderer/components/scrollview/ScrollViewState.cpp +8 -0
  1441. package/ReactCommon/react/renderer/components/scrollview/ScrollViewState.h +9 -6
  1442. package/ReactCommon/react/renderer/components/scrollview/conversions.h +24 -25
  1443. package/ReactCommon/react/renderer/components/scrollview/primitives.h +5 -6
  1444. package/ReactCommon/react/renderer/components/switch/CMakeLists.txt +1 -1
  1445. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchComponentDescriptor.h +8 -10
  1446. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchMeasurementsManager.cpp +3 -3
  1447. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchMeasurementsManager.h +3 -5
  1448. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchShadowNode.cpp +4 -4
  1449. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchShadowNode.h +6 -8
  1450. package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +19 -11
  1451. package/ReactCommon/react/renderer/components/text/BaseTextProps.h +8 -10
  1452. package/ReactCommon/react/renderer/components/text/BaseTextShadowNode.cpp +8 -8
  1453. package/ReactCommon/react/renderer/components/text/BaseTextShadowNode.h +7 -9
  1454. package/ReactCommon/react/renderer/components/text/CMakeLists.txt +1 -1
  1455. package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +7 -10
  1456. package/ReactCommon/react/renderer/components/text/ParagraphEventEmitter.cpp +6 -6
  1457. package/ReactCommon/react/renderer/components/text/ParagraphEventEmitter.h +3 -5
  1458. package/ReactCommon/react/renderer/components/text/ParagraphLayoutManager.cpp +54 -41
  1459. package/ReactCommon/react/renderer/components/text/ParagraphLayoutManager.h +32 -11
  1460. package/ReactCommon/react/renderer/components/text/ParagraphProps.cpp +7 -7
  1461. package/ReactCommon/react/renderer/components/text/ParagraphProps.h +8 -10
  1462. package/ReactCommon/react/renderer/components/text/ParagraphShadowNode.cpp +36 -22
  1463. package/ReactCommon/react/renderer/components/text/ParagraphShadowNode.h +15 -13
  1464. package/ReactCommon/react/renderer/components/text/ParagraphState.h +5 -5
  1465. package/ReactCommon/react/renderer/components/text/RawTextComponentDescriptor.h +2 -4
  1466. package/ReactCommon/react/renderer/components/text/RawTextProps.cpp +3 -3
  1467. package/ReactCommon/react/renderer/components/text/RawTextProps.h +5 -7
  1468. package/ReactCommon/react/renderer/components/text/RawTextShadowNode.h +2 -4
  1469. package/ReactCommon/react/renderer/components/text/TextComponentDescriptor.h +2 -4
  1470. package/ReactCommon/react/renderer/components/text/TextProps.cpp +6 -6
  1471. package/ReactCommon/react/renderer/components/text/TextProps.h +8 -10
  1472. package/ReactCommon/react/renderer/components/text/TextShadowNode.h +4 -6
  1473. package/ReactCommon/react/renderer/components/text/conversions.h +4 -6
  1474. package/ReactCommon/react/renderer/components/text/tests/ParagraphLocalDataTest.cpp +2 -4
  1475. package/ReactCommon/react/renderer/components/textinput/CMakeLists.txt +1 -1
  1476. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h +46 -53
  1477. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputEventEmitter.h +2 -4
  1478. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp +8 -8
  1479. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h +15 -19
  1480. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp +5 -15
  1481. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.h +6 -8
  1482. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputState.cpp +2 -8
  1483. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputState.h +4 -22
  1484. package/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputComponentDescriptor.h +8 -12
  1485. package/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputEventEmitter.cpp +25 -25
  1486. package/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputEventEmitter.h +17 -19
  1487. package/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputProps.cpp +6 -6
  1488. package/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputProps.h +15 -17
  1489. package/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputShadowNode.cpp +8 -8
  1490. package/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputShadowNode.h +9 -11
  1491. package/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputState.cpp +2 -2
  1492. package/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/TextInputState.h +5 -7
  1493. package/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/conversions.h +20 -22
  1494. package/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/primitives.h +11 -4
  1495. package/ReactCommon/react/renderer/components/textinput/iostextinput/react/renderer/components/iostextinput/propsConversions.h +18 -14
  1496. package/ReactCommon/react/renderer/components/unimplementedview/CMakeLists.txt +1 -1
  1497. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.cpp +5 -5
  1498. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.h +5 -7
  1499. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewProps.h +2 -4
  1500. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewShadowNode.h +2 -4
  1501. package/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h +145 -20
  1502. package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +31 -18
  1503. package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +10 -11
  1504. package/ReactCommon/react/renderer/components/view/BaseTouch.cpp +50 -0
  1505. package/ReactCommon/react/renderer/components/view/BaseTouch.h +91 -0
  1506. package/ReactCommon/react/renderer/components/view/BaseViewEventEmitter.cpp +121 -0
  1507. package/ReactCommon/react/renderer/components/view/BaseViewEventEmitter.h +67 -0
  1508. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +505 -0
  1509. package/ReactCommon/react/renderer/components/view/BaseViewProps.h +101 -0
  1510. package/ReactCommon/react/renderer/components/view/CMakeLists.txt +10 -3
  1511. package/ReactCommon/react/renderer/components/view/ConcreteViewShadowNode.h +12 -30
  1512. package/ReactCommon/react/renderer/components/view/PointerEvent.cpp +41 -2
  1513. package/ReactCommon/react/renderer/components/view/PointerEvent.h +12 -7
  1514. package/ReactCommon/react/renderer/components/view/Touch.h +4 -78
  1515. package/ReactCommon/react/renderer/components/view/TouchEvent.cpp +2 -2
  1516. package/ReactCommon/react/renderer/components/view/TouchEvent.h +4 -6
  1517. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +48 -81
  1518. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +21 -20
  1519. package/ReactCommon/react/renderer/components/view/ViewComponentDescriptor.h +3 -5
  1520. package/ReactCommon/react/renderer/components/view/ViewEventEmitter.h +4 -62
  1521. package/ReactCommon/react/renderer/components/view/ViewProps.h +5 -124
  1522. package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +11 -13
  1523. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +20 -36
  1524. package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +9 -11
  1525. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +295 -177
  1526. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h +65 -39
  1527. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +228 -38
  1528. package/ReactCommon/react/renderer/components/view/YogaStylableProps.h +24 -18
  1529. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +515 -33
  1530. package/ReactCommon/react/renderer/components/view/conversions.h +255 -219
  1531. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/AccessibilityPropsMapBuffer.cpp +165 -0
  1532. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/AccessibilityPropsMapBuffer.h +35 -0
  1533. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformTouch.h +14 -0
  1534. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewEventEmitter.h +14 -0
  1535. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +162 -0
  1536. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.h +68 -0
  1537. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +31 -0
  1538. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/NativeDrawable.h +106 -0
  1539. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/ViewPropsMapBuffer.cpp +191 -0
  1540. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/ViewPropsMapBuffer.h +51 -0
  1541. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/YogaStylablePropsMapBuffer.cpp +80 -0
  1542. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/YogaStylablePropsMapBuffer.h +22 -0
  1543. package/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/HostPlatformTouch.h +14 -0
  1544. package/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/HostPlatformViewEventEmitter.h +14 -0
  1545. package/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/HostPlatformViewProps.h +14 -0
  1546. package/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +27 -0
  1547. package/ReactCommon/react/renderer/components/view/primitives.h +22 -58
  1548. package/ReactCommon/react/renderer/components/view/propsConversions.h +126 -133
  1549. package/ReactCommon/react/renderer/components/view/tests/LayoutTest.cpp +18 -18
  1550. package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +22 -23
  1551. package/ReactCommon/react/renderer/components/view/viewPropConversions.h +16 -18
  1552. package/ReactCommon/react/renderer/core/BatchedEventQueue.h +2 -4
  1553. package/ReactCommon/react/renderer/core/CMakeLists.txt +3 -1
  1554. package/ReactCommon/react/renderer/core/ComponentDescriptor.cpp +2 -2
  1555. package/ReactCommon/react/renderer/core/ComponentDescriptor.h +47 -35
  1556. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +39 -77
  1557. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +22 -23
  1558. package/ReactCommon/react/renderer/core/ConcreteState.h +28 -22
  1559. package/ReactCommon/react/renderer/core/DynamicPropsUtilities.cpp +3 -3
  1560. package/ReactCommon/react/renderer/core/DynamicPropsUtilities.h +2 -2
  1561. package/ReactCommon/react/renderer/core/EventBeat.cpp +1 -1
  1562. package/ReactCommon/react/renderer/core/EventBeat.h +6 -8
  1563. package/ReactCommon/react/renderer/core/EventDispatcher.cpp +11 -11
  1564. package/ReactCommon/react/renderer/core/EventDispatcher.h +14 -16
  1565. package/ReactCommon/react/renderer/core/EventEmitter.cpp +34 -11
  1566. package/ReactCommon/react/renderer/core/EventEmitter.h +20 -11
  1567. package/ReactCommon/react/renderer/core/EventHandler.h +2 -4
  1568. package/ReactCommon/react/renderer/core/EventListener.cpp +6 -4
  1569. package/ReactCommon/react/renderer/core/EventListener.h +7 -9
  1570. package/ReactCommon/react/renderer/core/EventLogger.cpp +3 -3
  1571. package/ReactCommon/react/renderer/core/EventLogger.h +5 -3
  1572. package/ReactCommon/react/renderer/core/EventPayload.h +40 -0
  1573. package/ReactCommon/react/renderer/core/EventPayloadType.h +14 -0
  1574. package/ReactCommon/react/renderer/core/EventPipe.h +9 -8
  1575. package/ReactCommon/react/renderer/core/EventPriority.h +2 -4
  1576. package/ReactCommon/react/renderer/core/EventQueue.cpp +12 -12
  1577. package/ReactCommon/react/renderer/core/EventQueue.h +7 -9
  1578. package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +30 -10
  1579. package/ReactCommon/react/renderer/core/EventQueueProcessor.h +11 -9
  1580. package/ReactCommon/react/renderer/core/EventTarget.cpp +17 -14
  1581. package/ReactCommon/react/renderer/core/EventTarget.h +10 -12
  1582. package/ReactCommon/react/renderer/core/InstanceHandle.cpp +28 -0
  1583. package/ReactCommon/react/renderer/core/InstanceHandle.h +41 -0
  1584. package/ReactCommon/react/renderer/core/LayoutConstraints.cpp +1 -1
  1585. package/ReactCommon/react/renderer/core/LayoutConstraints.h +10 -13
  1586. package/ReactCommon/react/renderer/core/LayoutContext.h +5 -7
  1587. package/ReactCommon/react/renderer/core/LayoutMetrics.cpp +2 -2
  1588. package/ReactCommon/react/renderer/core/LayoutMetrics.h +38 -14
  1589. package/ReactCommon/react/renderer/core/LayoutPrimitives.h +4 -6
  1590. package/ReactCommon/react/renderer/core/LayoutableShadowNode.cpp +74 -47
  1591. package/ReactCommon/react/renderer/core/LayoutableShadowNode.h +22 -18
  1592. package/ReactCommon/react/renderer/core/Props.cpp +41 -22
  1593. package/ReactCommon/react/renderer/core/Props.h +18 -14
  1594. package/ReactCommon/react/renderer/core/PropsParserContext.cpp +27 -0
  1595. package/ReactCommon/react/renderer/core/PropsParserContext.h +19 -8
  1596. package/ReactCommon/react/renderer/core/RawEvent.cpp +2 -2
  1597. package/ReactCommon/react/renderer/core/RawEvent.h +5 -7
  1598. package/ReactCommon/react/renderer/core/RawProps.cpp +11 -12
  1599. package/ReactCommon/react/renderer/core/RawProps.h +16 -26
  1600. package/ReactCommon/react/renderer/core/RawPropsKey.cpp +4 -4
  1601. package/ReactCommon/react/renderer/core/RawPropsKey.h +8 -10
  1602. package/ReactCommon/react/renderer/core/RawPropsKeyMap.cpp +27 -15
  1603. package/ReactCommon/react/renderer/core/RawPropsKeyMap.h +10 -14
  1604. package/ReactCommon/react/renderer/core/RawPropsParser.cpp +29 -28
  1605. package/ReactCommon/react/renderer/core/RawPropsParser.h +9 -14
  1606. package/ReactCommon/react/renderer/core/RawPropsPrimitives.h +2 -18
  1607. package/ReactCommon/react/renderer/core/RawValue.h +59 -60
  1608. package/ReactCommon/react/renderer/core/ReactEventPriority.h +2 -4
  1609. package/ReactCommon/react/renderer/core/ReactPrimitives.h +3 -7
  1610. package/ReactCommon/react/renderer/core/Sealable.cpp +4 -4
  1611. package/ReactCommon/react/renderer/core/Sealable.h +6 -8
  1612. package/ReactCommon/react/renderer/core/ShadowNode.cpp +56 -38
  1613. package/ReactCommon/react/renderer/core/ShadowNode.h +48 -42
  1614. package/ReactCommon/react/renderer/core/ShadowNodeFamily.cpp +19 -13
  1615. package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +48 -30
  1616. package/ReactCommon/react/renderer/core/ShadowNodeFragment.cpp +13 -7
  1617. package/ReactCommon/react/renderer/core/ShadowNodeFragment.h +9 -11
  1618. package/ReactCommon/react/renderer/core/ShadowNodeTraits.h +3 -5
  1619. package/ReactCommon/react/renderer/core/State.cpp +4 -4
  1620. package/ReactCommon/react/renderer/core/State.h +6 -8
  1621. package/ReactCommon/react/renderer/core/StateData.h +4 -6
  1622. package/ReactCommon/react/renderer/core/StatePipe.h +3 -5
  1623. package/ReactCommon/react/renderer/core/StateUpdate.h +4 -6
  1624. package/ReactCommon/react/renderer/core/TraitCast.h +10 -10
  1625. package/ReactCommon/react/renderer/core/UnbatchedEventQueue.h +2 -4
  1626. package/ReactCommon/react/renderer/core/ValueFactory.h +3 -5
  1627. package/ReactCommon/react/renderer/core/ValueFactoryEventPayload.cpp +23 -0
  1628. package/ReactCommon/react/renderer/core/ValueFactoryEventPayload.h +25 -0
  1629. package/ReactCommon/react/renderer/core/conversions.h +8 -10
  1630. package/ReactCommon/react/renderer/core/graphicsConversions.h +41 -41
  1631. package/ReactCommon/react/renderer/core/propsConversions.h +26 -28
  1632. package/ReactCommon/react/renderer/core/tests/ComponentDescriptorTest.cpp +31 -41
  1633. package/ReactCommon/react/renderer/core/tests/EventQueueProcessorTest.cpp +16 -14
  1634. package/ReactCommon/react/renderer/core/tests/FindNodeAtPointTest.cpp +2 -1
  1635. package/ReactCommon/react/renderer/core/tests/LayoutableShadowNodeTest.cpp +249 -101
  1636. package/ReactCommon/react/renderer/core/tests/RawPropsTest.cpp +27 -27
  1637. package/ReactCommon/react/renderer/core/tests/ShadowNodeTest.cpp +19 -21
  1638. package/ReactCommon/react/renderer/core/tests/TestComponent.h +23 -6
  1639. package/ReactCommon/react/renderer/core/tests/benchmarks/RawPropsBenchmark.cpp +6 -6
  1640. package/ReactCommon/react/renderer/core/tests/traitCastTest.cpp +39 -41
  1641. package/ReactCommon/react/renderer/debug/CMakeLists.txt +1 -1
  1642. package/ReactCommon/react/renderer/debug/DebugStringConvertible.cpp +8 -8
  1643. package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +34 -35
  1644. package/ReactCommon/react/renderer/debug/DebugStringConvertibleItem.h +3 -5
  1645. package/ReactCommon/react/renderer/debug/React-rendererdebug.podspec +61 -0
  1646. package/ReactCommon/react/renderer/debug/SystraceSection.h +6 -8
  1647. package/ReactCommon/react/renderer/debug/debugStringConvertibleUtils.h +6 -7
  1648. package/ReactCommon/react/renderer/debug/flags.h +4 -0
  1649. package/ReactCommon/react/renderer/element/CMakeLists.txt +1 -2
  1650. package/ReactCommon/react/renderer/element/ComponentBuilder.cpp +9 -11
  1651. package/ReactCommon/react/renderer/element/ComponentBuilder.h +7 -10
  1652. package/ReactCommon/react/renderer/element/Element.h +30 -26
  1653. package/ReactCommon/react/renderer/element/ElementFragment.h +6 -7
  1654. package/ReactCommon/react/renderer/element/testUtils.h +6 -6
  1655. package/ReactCommon/react/renderer/graphics/CMakeLists.txt +2 -3
  1656. package/ReactCommon/react/renderer/graphics/Color.cpp +3 -14
  1657. package/ReactCommon/react/renderer/graphics/Color.h +8 -8
  1658. package/ReactCommon/react/renderer/graphics/ColorComponents.h +2 -4
  1659. package/ReactCommon/react/renderer/graphics/Point.h +12 -14
  1660. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +8 -4
  1661. package/ReactCommon/react/renderer/graphics/Rect.h +30 -14
  1662. package/ReactCommon/react/renderer/graphics/RectangleCorners.h +7 -10
  1663. package/ReactCommon/react/renderer/graphics/RectangleEdges.h +16 -18
  1664. package/ReactCommon/react/renderer/graphics/Size.h +9 -11
  1665. package/ReactCommon/react/renderer/graphics/Transform.cpp +35 -32
  1666. package/ReactCommon/react/renderer/graphics/Transform.h +41 -24
  1667. package/ReactCommon/react/renderer/graphics/ValueUnit.h +32 -0
  1668. package/ReactCommon/react/renderer/graphics/Vector.h +2 -4
  1669. package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/Float.h +2 -4
  1670. package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/HostPlatformColor.h +39 -0
  1671. package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/PlatformColorParser.h +13 -13
  1672. package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/Float.h +2 -4
  1673. package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/HostPlatformColor.h +39 -0
  1674. package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/PlatformColorParser.h +7 -9
  1675. package/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/Float.h +2 -4
  1676. package/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/HostPlatformColor.h +39 -0
  1677. package/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/PlatformColorParser.h +12 -12
  1678. package/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/RCTPlatformColorUtils.h +1 -1
  1679. package/ReactCommon/react/renderer/graphics/rounding.h +2 -4
  1680. package/ReactCommon/react/renderer/graphics/tests/TransformTest.cpp +16 -0
  1681. package/ReactCommon/react/renderer/imagemanager/CMakeLists.txt +1 -1
  1682. package/ReactCommon/react/renderer/imagemanager/ImageManager.h +5 -7
  1683. package/ReactCommon/react/renderer/imagemanager/ImageRequest.h +9 -11
  1684. package/ReactCommon/react/renderer/imagemanager/ImageResponse.h +2 -4
  1685. package/ReactCommon/react/renderer/imagemanager/ImageResponseObserver.h +3 -5
  1686. package/ReactCommon/react/renderer/imagemanager/ImageResponseObserverCoordinator.cpp +4 -4
  1687. package/ReactCommon/react/renderer/imagemanager/ImageResponseObserverCoordinator.h +6 -9
  1688. package/ReactCommon/react/renderer/imagemanager/ImageTelemetry.h +3 -5
  1689. package/ReactCommon/react/renderer/imagemanager/platform/cxx/react/renderer/imagemanager/ImageManager.cpp +2 -2
  1690. package/ReactCommon/react/renderer/imagemanager/platform/cxx/react/renderer/imagemanager/ImageRequest.cpp +3 -3
  1691. package/ReactCommon/react/renderer/imagemanager/platform/ios/React-ImageManager.podspec +15 -17
  1692. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/ImageManager.mm +3 -5
  1693. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/ImageRequest.cpp +7 -9
  1694. package/ReactCommon/react/renderer/imagemanager/primitives.h +4 -6
  1695. package/ReactCommon/react/renderer/leakchecker/CMakeLists.txt +1 -1
  1696. package/ReactCommon/react/renderer/leakchecker/LeakChecker.cpp +3 -3
  1697. package/ReactCommon/react/renderer/leakchecker/LeakChecker.h +4 -6
  1698. package/ReactCommon/react/renderer/leakchecker/WeakFamilyRegistry.cpp +4 -4
  1699. package/ReactCommon/react/renderer/leakchecker/WeakFamilyRegistry.h +3 -5
  1700. package/ReactCommon/react/renderer/mapbuffer/CMakeLists.txt +1 -1
  1701. package/ReactCommon/react/renderer/mapbuffer/MapBuffer.cpp +10 -10
  1702. package/ReactCommon/react/renderer/mapbuffer/MapBuffer.h +7 -9
  1703. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +16 -16
  1704. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.h +7 -9
  1705. package/ReactCommon/react/renderer/mounting/CMakeLists.txt +1 -2
  1706. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +118 -119
  1707. package/ReactCommon/react/renderer/mounting/Differentiator.h +7 -9
  1708. package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +19 -8
  1709. package/ReactCommon/react/renderer/mounting/MountingCoordinator.h +20 -11
  1710. package/ReactCommon/react/renderer/mounting/MountingOverrideDelegate.h +3 -5
  1711. package/ReactCommon/react/renderer/mounting/MountingTransaction.cpp +3 -3
  1712. package/ReactCommon/react/renderer/mounting/MountingTransaction.h +9 -11
  1713. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +126 -54
  1714. package/ReactCommon/react/renderer/mounting/ShadowTree.h +19 -16
  1715. package/ReactCommon/react/renderer/mounting/ShadowTreeDelegate.h +5 -7
  1716. package/ReactCommon/react/renderer/mounting/ShadowTreeRegistry.cpp +5 -5
  1717. package/ReactCommon/react/renderer/mounting/ShadowTreeRegistry.h +8 -11
  1718. package/ReactCommon/react/renderer/mounting/ShadowTreeRevision.h +2 -4
  1719. package/ReactCommon/react/renderer/mounting/ShadowView.cpp +12 -12
  1720. package/ReactCommon/react/renderer/mounting/ShadowView.h +24 -31
  1721. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +2 -2
  1722. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +4 -6
  1723. package/ReactCommon/react/renderer/mounting/StubView.cpp +7 -7
  1724. package/ReactCommon/react/renderer/mounting/StubView.h +9 -11
  1725. package/ReactCommon/react/renderer/mounting/StubViewTree.cpp +60 -60
  1726. package/ReactCommon/react/renderer/mounting/StubViewTree.h +18 -14
  1727. package/ReactCommon/react/renderer/mounting/TelemetryController.cpp +5 -5
  1728. package/ReactCommon/react/renderer/mounting/TelemetryController.h +11 -13
  1729. package/ReactCommon/react/renderer/mounting/stubs.cpp +8 -8
  1730. package/ReactCommon/react/renderer/mounting/stubs.h +4 -6
  1731. package/ReactCommon/react/renderer/mounting/tests/MountingTest.cpp +50 -40
  1732. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +20 -20
  1733. package/ReactCommon/react/renderer/mounting/tests/StackingContextTest.cpp +82 -66
  1734. package/ReactCommon/react/renderer/mounting/tests/StateReconciliationTest.cpp +167 -46
  1735. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.cpp +202 -0
  1736. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.h +80 -0
  1737. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserverManager.cpp +213 -0
  1738. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserverManager.h +74 -0
  1739. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserverState.cpp +60 -0
  1740. package/ReactCommon/react/renderer/observers/intersection/IntersectionObserverState.h +46 -0
  1741. package/ReactCommon/react/renderer/observers/mutation/MutationObserver.cpp +200 -0
  1742. package/ReactCommon/react/renderer/observers/mutation/MutationObserver.h +64 -0
  1743. package/ReactCommon/react/renderer/observers/mutation/MutationObserverManager.cpp +142 -0
  1744. package/ReactCommon/react/renderer/observers/mutation/MutationObserverManager.h +63 -0
  1745. package/ReactCommon/react/renderer/runtimescheduler/CMakeLists.txt +2 -1
  1746. package/ReactCommon/react/renderer/runtimescheduler/ErrorUtils.h +4 -6
  1747. package/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec +12 -9
  1748. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +46 -30
  1749. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +15 -12
  1750. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +23 -25
  1751. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +6 -8
  1752. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.cpp +7 -7
  1753. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.h +5 -8
  1754. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerClock.h +2 -4
  1755. package/ReactCommon/react/renderer/runtimescheduler/Task.cpp +2 -2
  1756. package/ReactCommon/react/renderer/runtimescheduler/Task.h +4 -4
  1757. package/ReactCommon/react/renderer/runtimescheduler/primitives.h +20 -11
  1758. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +20 -20
  1759. package/ReactCommon/react/renderer/runtimescheduler/tests/StubErrorUtils.h +7 -9
  1760. package/ReactCommon/react/renderer/runtimescheduler/tests/StubQueue.h +8 -7
  1761. package/ReactCommon/react/renderer/scheduler/AsynchronousEventBeat.cpp +2 -2
  1762. package/ReactCommon/react/renderer/scheduler/AsynchronousEventBeat.h +1 -1
  1763. package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +1 -1
  1764. package/ReactCommon/react/renderer/scheduler/InspectorData.h +2 -4
  1765. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +71 -51
  1766. package/ReactCommon/react/renderer/scheduler/Scheduler.h +27 -27
  1767. package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +8 -8
  1768. package/ReactCommon/react/renderer/scheduler/SchedulerToolbox.h +3 -6
  1769. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +43 -24
  1770. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +16 -18
  1771. package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +15 -15
  1772. package/ReactCommon/react/renderer/scheduler/SurfaceManager.h +15 -17
  1773. package/ReactCommon/react/renderer/scheduler/SynchronousEventBeat.cpp +3 -3
  1774. package/ReactCommon/react/renderer/scheduler/SynchronousEventBeat.h +3 -5
  1775. package/ReactCommon/react/renderer/telemetry/CMakeLists.txt +1 -2
  1776. package/ReactCommon/react/renderer/telemetry/SurfaceTelemetry.cpp +1 -1
  1777. package/ReactCommon/react/renderer/telemetry/SurfaceTelemetry.h +4 -9
  1778. package/ReactCommon/react/renderer/telemetry/TransactionTelemetry.cpp +11 -2
  1779. package/ReactCommon/react/renderer/telemetry/TransactionTelemetry.h +8 -5
  1780. package/ReactCommon/react/renderer/templateprocessor/CMakeLists.txt +1 -1
  1781. package/ReactCommon/react/renderer/templateprocessor/UITemplateProcessor.cpp +25 -25
  1782. package/ReactCommon/react/renderer/templateprocessor/UITemplateProcessor.h +18 -20
  1783. package/ReactCommon/react/renderer/templateprocessor/tests/UITemplateProcessorTest.cpp +14 -14
  1784. package/ReactCommon/react/renderer/textlayoutmanager/CMakeLists.txt +1 -1
  1785. package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.cpp +3 -3
  1786. package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.h +23 -26
  1787. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +29 -29
  1788. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.h +20 -22
  1789. package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.cpp +5 -7
  1790. package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.h +4 -6
  1791. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.h +5 -3
  1792. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm +11 -92
  1793. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.h +1 -1
  1794. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.h +3 -5
  1795. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.mm +4 -6
  1796. package/ReactCommon/react/renderer/timeline/Timeline.cpp +18 -17
  1797. package/ReactCommon/react/renderer/timeline/Timeline.h +11 -14
  1798. package/ReactCommon/react/renderer/timeline/TimelineController.cpp +12 -13
  1799. package/ReactCommon/react/renderer/timeline/TimelineController.h +14 -19
  1800. package/ReactCommon/react/renderer/timeline/TimelineFrame.h +4 -6
  1801. package/ReactCommon/react/renderer/timeline/TimelineHandler.cpp +4 -4
  1802. package/ReactCommon/react/renderer/timeline/TimelineHandler.h +9 -11
  1803. package/ReactCommon/react/renderer/timeline/TimelineSnapshot.h +2 -4
  1804. package/ReactCommon/react/renderer/uimanager/CMakeLists.txt +2 -1
  1805. package/ReactCommon/react/renderer/uimanager/PointerEventsProcessor.cpp +399 -0
  1806. package/ReactCommon/react/renderer/uimanager/PointerEventsProcessor.h +84 -0
  1807. package/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.cpp +66 -90
  1808. package/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.h +7 -7
  1809. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +241 -98
  1810. package/ReactCommon/react/renderer/uimanager/UIManager.h +78 -51
  1811. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationDelegate.h +5 -5
  1812. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +920 -185
  1813. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +27 -12
  1814. package/ReactCommon/react/renderer/uimanager/UIManagerCommitHook.h +5 -6
  1815. package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +7 -7
  1816. package/ReactCommon/react/renderer/uimanager/UIManagerMountHook.h +34 -0
  1817. package/ReactCommon/react/renderer/uimanager/bindingUtils.cpp +7 -7
  1818. package/ReactCommon/react/renderer/uimanager/bindingUtils.h +3 -3
  1819. package/ReactCommon/react/renderer/uimanager/primitives.h +102 -29
  1820. package/ReactCommon/react/runtime/.clang-tidy +17 -0
  1821. package/ReactCommon/react/runtime/BindingsInstaller.h +21 -0
  1822. package/ReactCommon/react/runtime/BridgelessJSCallInvoker.cpp +28 -0
  1823. package/ReactCommon/react/runtime/BridgelessJSCallInvoker.h +28 -0
  1824. package/ReactCommon/react/runtime/BridgelessNativeMethodCallInvoker.cpp +28 -0
  1825. package/ReactCommon/react/runtime/BridgelessNativeMethodCallInvoker.h +28 -0
  1826. package/ReactCommon/react/runtime/BufferedRuntimeExecutor.cpp +60 -0
  1827. package/ReactCommon/react/runtime/BufferedRuntimeExecutor.h +49 -0
  1828. package/ReactCommon/react/runtime/CMakeLists.txt +37 -0
  1829. package/ReactCommon/react/runtime/JSEngineInstance.h +27 -0
  1830. package/ReactCommon/react/runtime/PlatformTimerRegistry.h +32 -0
  1831. package/ReactCommon/react/runtime/README.md +3 -0
  1832. package/ReactCommon/react/runtime/React-RuntimeCore.podspec +62 -0
  1833. package/ReactCommon/react/runtime/React-RuntimeHermes.podspec +58 -0
  1834. package/ReactCommon/react/runtime/ReactInstance.cpp +468 -0
  1835. package/ReactCommon/react/runtime/ReactInstance.h +78 -0
  1836. package/ReactCommon/react/runtime/TimerManager.cpp +414 -0
  1837. package/ReactCommon/react/runtime/TimerManager.h +115 -0
  1838. package/ReactCommon/react/runtime/hermes/CMakeLists.txt +33 -0
  1839. package/ReactCommon/react/runtime/hermes/HermesInstance.cpp +144 -0
  1840. package/ReactCommon/react/runtime/hermes/HermesInstance.h +25 -0
  1841. package/ReactCommon/react/runtime/iostests/RCTHostTests.mm +158 -0
  1842. package/ReactCommon/react/runtime/nativeviewconfig/CMakeLists.txt +19 -0
  1843. package/ReactCommon/react/runtime/nativeviewconfig/LegacyUIManagerConstantsProviderBinding.cpp +30 -0
  1844. package/ReactCommon/react/runtime/nativeviewconfig/LegacyUIManagerConstantsProviderBinding.h +22 -0
  1845. package/ReactCommon/react/runtime/platform/ios/React-RuntimeApple.podspec +76 -0
  1846. package/ReactCommon/react/runtime/platform/ios/ReactCommon/ObjCTimerRegistry.h +32 -0
  1847. package/ReactCommon/react/runtime/platform/ios/ReactCommon/ObjCTimerRegistry.mm +73 -0
  1848. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTContextContainerHandling.h +16 -0
  1849. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.h +40 -0
  1850. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.mm +31 -0
  1851. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost+Internal.h +20 -0
  1852. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.h +75 -0
  1853. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +318 -0
  1854. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.h +75 -0
  1855. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +460 -0
  1856. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTJSThreadManager.h +21 -0
  1857. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTJSThreadManager.mm +124 -0
  1858. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTJscInstance.h +25 -0
  1859. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTJscInstance.mm +23 -0
  1860. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTLegacyUIManagerConstantsProvider.h +19 -0
  1861. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTLegacyUIManagerConstantsProvider.mm +44 -0
  1862. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTPerformanceLoggerUtils.h +16 -0
  1863. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTPerformanceLoggerUtils.mm +74 -0
  1864. package/ReactCommon/react/runtime/tests/cxx/ReactInstanceTest.cpp +868 -0
  1865. package/ReactCommon/react/test_utils/Entropy.h +8 -10
  1866. package/ReactCommon/react/test_utils/MockSurfaceHandler.h +2 -4
  1867. package/ReactCommon/react/test_utils/ios/Memory/RCTMemoryUtils.h +19 -0
  1868. package/ReactCommon/react/test_utils/ios/Memory/RCTMemoryUtils.m +45 -0
  1869. package/ReactCommon/react/test_utils/ios/RCTSwizzleHelpers.h +19 -0
  1870. package/ReactCommon/react/test_utils/ios/RCTSwizzleHelpers.m +17 -0
  1871. package/ReactCommon/react/test_utils/ios/Shims/ShimRCTInstance.h +21 -0
  1872. package/ReactCommon/react/test_utils/ios/Shims/ShimRCTInstance.mm +72 -0
  1873. package/ReactCommon/react/test_utils/shadowTreeGeneration.h +51 -50
  1874. package/ReactCommon/react/utils/CMakeLists.txt +1 -1
  1875. package/ReactCommon/react/utils/CalledOnceMovableOnlyFunction.h +9 -11
  1876. package/ReactCommon/react/utils/ContextContainer.h +13 -16
  1877. package/ReactCommon/react/utils/CoreFeatures.cpp +27 -0
  1878. package/ReactCommon/react/utils/CoreFeatures.h +72 -0
  1879. package/ReactCommon/react/utils/FloatComparison.h +2 -4
  1880. package/ReactCommon/react/utils/ManagedObjectWrapper.h +4 -6
  1881. package/ReactCommon/react/utils/ManagedObjectWrapper.mm +2 -4
  1882. package/ReactCommon/react/utils/React-utils.podspec +8 -11
  1883. package/ReactCommon/react/utils/RunLoopObserver.cpp +4 -6
  1884. package/ReactCommon/react/utils/RunLoopObserver.h +12 -14
  1885. package/ReactCommon/react/utils/SharedFunction.h +10 -10
  1886. package/ReactCommon/react/utils/SimpleThreadSafeCache.h +5 -7
  1887. package/ReactCommon/react/utils/Telemetry.h +3 -5
  1888. package/ReactCommon/react/utils/hash_combine.h +31 -0
  1889. package/ReactCommon/react/utils/tests/hash_combineTests.cpp +82 -0
  1890. package/ReactCommon/reactperflogger/CMakeLists.txt +1 -1
  1891. package/ReactCommon/reactperflogger/React-perflogger.podspec +4 -3
  1892. package/ReactCommon/reactperflogger/reactperflogger/BridgeNativeModulePerfLogger.cpp +92 -94
  1893. package/ReactCommon/reactperflogger/reactperflogger/BridgeNativeModulePerfLogger.h +52 -54
  1894. package/ReactCommon/reactperflogger/reactperflogger/NativeModulePerfLogger.h +59 -61
  1895. package/ReactCommon/runtimeexecutor/CMakeLists.txt +1 -1
  1896. package/ReactCommon/runtimeexecutor/React-runtimeexecutor.podspec +3 -3
  1897. package/ReactCommon/runtimeexecutor/ReactCommon/RuntimeExecutor.h +15 -17
  1898. package/ReactCommon/yoga/CMakeLists.txt +5 -13
  1899. package/ReactCommon/yoga/Yoga.podspec +12 -5
  1900. package/ReactCommon/yoga/cmake/project-defaults.cmake +52 -0
  1901. package/ReactCommon/yoga/cmake/yoga-config.cmake.in +10 -0
  1902. package/ReactCommon/yoga/yoga/CMakeLists.txt +1 -1
  1903. package/ReactCommon/yoga/yoga/YGEnums.cpp +16 -4
  1904. package/ReactCommon/yoga/yoga/YGEnums.h +12 -7
  1905. package/ReactCommon/yoga/yoga/YGMacros.h +73 -42
  1906. package/ReactCommon/yoga/yoga/YGValue.cpp +1 -1
  1907. package/ReactCommon/yoga/yoga/YGValue.h +12 -48
  1908. package/ReactCommon/yoga/yoga/Yoga-internal.h +4 -140
  1909. package/ReactCommon/yoga/yoga/Yoga.cpp +499 -3897
  1910. package/ReactCommon/yoga/yoga/Yoga.h +177 -226
  1911. package/ReactCommon/yoga/yoga/algorithm/Align.h +29 -0
  1912. package/ReactCommon/yoga/yoga/algorithm/Baseline.cpp +82 -0
  1913. package/ReactCommon/yoga/yoga/algorithm/Baseline.h +21 -0
  1914. package/ReactCommon/yoga/yoga/algorithm/BoundAxis.h +73 -0
  1915. package/ReactCommon/yoga/yoga/algorithm/Cache.cpp +121 -0
  1916. package/ReactCommon/yoga/yoga/algorithm/Cache.h +30 -0
  1917. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +2753 -0
  1918. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.h +21 -0
  1919. package/ReactCommon/yoga/yoga/algorithm/FlexDirection.h +94 -0
  1920. package/ReactCommon/yoga/yoga/algorithm/FlexLine.cpp +107 -0
  1921. package/ReactCommon/yoga/yoga/algorithm/FlexLine.h +74 -0
  1922. package/ReactCommon/yoga/yoga/algorithm/PixelGrid.cpp +132 -0
  1923. package/ReactCommon/yoga/yoga/algorithm/PixelGrid.h +29 -0
  1924. package/ReactCommon/yoga/yoga/algorithm/ResolveValue.h +32 -0
  1925. package/ReactCommon/yoga/yoga/bits/BitCast.h +30 -0
  1926. package/ReactCommon/yoga/yoga/bits/NumericBitfield.h +67 -0
  1927. package/ReactCommon/yoga/yoga/config/Config.cpp +128 -0
  1928. package/ReactCommon/yoga/yoga/config/Config.h +93 -0
  1929. package/ReactCommon/yoga/yoga/debug/AssertFatal.cpp +50 -0
  1930. package/ReactCommon/yoga/yoga/debug/AssertFatal.h +28 -0
  1931. package/ReactCommon/yoga/yoga/debug/Log.cpp +107 -0
  1932. package/ReactCommon/yoga/yoga/debug/Log.h +34 -0
  1933. package/ReactCommon/yoga/yoga/debug/NodeToString.cpp +244 -0
  1934. package/ReactCommon/yoga/yoga/debug/NodeToString.h +29 -0
  1935. package/ReactCommon/yoga/yoga/enums/Align.h +51 -0
  1936. package/ReactCommon/yoga/yoga/enums/Dimension.h +45 -0
  1937. package/ReactCommon/yoga/yoga/enums/Direction.h +46 -0
  1938. package/ReactCommon/yoga/yoga/enums/Display.h +45 -0
  1939. package/ReactCommon/yoga/yoga/enums/Edge.h +52 -0
  1940. package/ReactCommon/yoga/yoga/enums/Errata.h +49 -0
  1941. package/ReactCommon/yoga/yoga/enums/ExperimentalFeature.h +45 -0
  1942. package/ReactCommon/yoga/yoga/enums/FlexDirection.h +47 -0
  1943. package/ReactCommon/yoga/yoga/enums/Gutter.h +46 -0
  1944. package/ReactCommon/yoga/yoga/enums/Justify.h +49 -0
  1945. package/ReactCommon/yoga/yoga/enums/LogLevel.h +49 -0
  1946. package/ReactCommon/yoga/yoga/enums/MeasureMode.h +46 -0
  1947. package/ReactCommon/yoga/yoga/enums/NodeType.h +45 -0
  1948. package/ReactCommon/yoga/yoga/enums/Overflow.h +46 -0
  1949. package/ReactCommon/yoga/yoga/enums/PositionType.h +46 -0
  1950. package/ReactCommon/yoga/yoga/enums/PrintOptions.h +48 -0
  1951. package/ReactCommon/yoga/yoga/enums/Unit.h +47 -0
  1952. package/ReactCommon/yoga/yoga/enums/Wrap.h +46 -0
  1953. package/ReactCommon/yoga/yoga/enums/YogaEnums.h +18 -0
  1954. package/ReactCommon/yoga/yoga/event/event.cpp +6 -5
  1955. package/ReactCommon/yoga/yoga/event/event.h +16 -33
  1956. package/ReactCommon/yoga/yoga/node/CachedMeasurement.h +53 -0
  1957. package/ReactCommon/yoga/yoga/node/LayoutResults.cpp +47 -0
  1958. package/ReactCommon/yoga/yoga/node/LayoutResults.h +88 -0
  1959. package/ReactCommon/yoga/yoga/node/Node.cpp +606 -0
  1960. package/ReactCommon/yoga/yoga/node/Node.h +344 -0
  1961. package/ReactCommon/yoga/yoga/numeric/Comparison.h +91 -0
  1962. package/ReactCommon/yoga/yoga/numeric/FloatOptional.h +77 -0
  1963. package/ReactCommon/yoga/yoga/style/CompactValue.h +184 -0
  1964. package/ReactCommon/yoga/yoga/style/Style.h +333 -0
  1965. package/build.gradle.kts +4 -4
  1966. package/cli.js +60 -2
  1967. package/flow/global.js +1 -3
  1968. package/flow/jest.js +5 -1
  1969. package/gradle/libs.versions.toml +80 -0
  1970. package/jest/ReactNativeInternalFeatureFlagsMock.js +13 -0
  1971. package/jest/__tests__/setup-test.js +18 -0
  1972. package/jest/mockModal.js +6 -4
  1973. package/jest/setup.js +61 -30
  1974. package/package.json +44 -26
  1975. package/react-native.config.js +12 -13
  1976. package/scripts/cocoapods/codegen.rb +17 -19
  1977. package/scripts/cocoapods/codegen_utils.rb +26 -21
  1978. package/scripts/cocoapods/fabric.rb +2 -1
  1979. package/scripts/cocoapods/flipper.rb +1 -9
  1980. package/scripts/cocoapods/helpers.rb +1 -1
  1981. package/scripts/cocoapods/jsengine.rb +1 -8
  1982. package/scripts/cocoapods/new_architecture.rb +74 -12
  1983. package/scripts/cocoapods/runtime.rb +18 -0
  1984. package/scripts/cocoapods/utils.rb +182 -66
  1985. package/scripts/codegen/generate-artifacts-executor.js +34 -24
  1986. package/scripts/codegen/generate-legacy-interop-components.js +8 -2
  1987. package/scripts/find-node-for-xcode.sh +4 -4
  1988. package/scripts/packager.sh +0 -5
  1989. package/scripts/react-native-xcode.sh +4 -17
  1990. package/scripts/react_native_pods.rb +88 -56
  1991. package/scripts/react_native_pods_utils/script_phases.sh +1 -1
  1992. package/sdks/.hermesversion +1 -1
  1993. package/sdks/hermes-engine/hermes-engine.podspec +74 -43
  1994. package/sdks/hermes-engine/hermes-utils.rb +196 -81
  1995. package/sdks/hermes-engine/utils/build-apple-framework.sh +73 -7
  1996. package/sdks/hermes-engine/utils/build-hermes-xcode.sh +4 -10
  1997. package/sdks/hermes-engine/utils/build-hermesc-xcode.sh +3 -2
  1998. package/sdks/hermes-engine/utils/build-ios-framework.sh +68 -12
  1999. package/sdks/hermes-engine/utils/replace_hermes_version.js +106 -0
  2000. package/sdks/hermesc/linux64-bin/hermesc +0 -0
  2001. package/sdks/hermesc/osx-bin/hermes +0 -0
  2002. package/sdks/hermesc/osx-bin/hermes-lit +15 -0
  2003. package/sdks/hermesc/osx-bin/hermesc +0 -0
  2004. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  2005. package/settings.gradle.kts +8 -1
  2006. package/template/App.tsx +2 -2
  2007. package/template/__tests__/App.test.tsx +1 -1
  2008. package/template/android/app/build.gradle +7 -12
  2009. package/template/android/app/src/debug/AndroidManifest.xml +1 -5
  2010. package/template/android/app/src/main/java/com/helloworld/MainActivity.kt +22 -0
  2011. package/template/android/app/src/main/java/com/helloworld/MainApplication.kt +43 -0
  2012. package/template/android/build.gradle +8 -8
  2013. package/template/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  2014. package/template/android/gradle/wrapper/gradle-wrapper.properties +2 -1
  2015. package/template/android/gradle.properties +0 -3
  2016. package/template/android/gradlew +12 -7
  2017. package/template/babel.config.js +1 -1
  2018. package/template/ios/HelloWorld/AppDelegate.mm +5 -0
  2019. package/template/ios/HelloWorld/Info.plist +5 -8
  2020. package/template/ios/Podfile +13 -14
  2021. package/template/package.json +11 -11
  2022. package/template/tsconfig.json +1 -1
  2023. package/third-party-podspecs/DoubleConversion.podspec +1 -1
  2024. package/third-party-podspecs/RCT-Folly.podspec +17 -20
  2025. package/third-party-podspecs/boost.podspec +4 -4
  2026. package/third-party-podspecs/fmt.podspec +2 -2
  2027. package/third-party-podspecs/glog.podspec +19 -3
  2028. package/types/experimental.d.ts +44 -0
  2029. package/types/index.d.ts +2 -1
  2030. package/types/modules/Devtools.d.ts +1 -0
  2031. package/types/modules/globals.d.ts +16 -1
  2032. package/types/public/ReactNativeTVTypes.d.ts +25 -25
  2033. package/Libraries/Alert/Alert.js.flow +0 -49
  2034. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.ios.js +0 -12
  2035. package/Libraries/Components/TextInput/InputAccessoryView.js.flow +0 -25
  2036. package/Libraries/Components/ToastAndroid/ToastAndroid.ios.js +0 -37
  2037. package/Libraries/FBLazyVector/BUCK +0 -22
  2038. package/Libraries/Image/ImageBackground.js.flow +0 -17
  2039. package/Libraries/Image/ImageViewNativeComponent.js.flow +0 -42
  2040. package/Libraries/Image/RCTAnimatedImage.m +0 -175
  2041. package/Libraries/Image/RCTImageBlurUtils.m +0 -101
  2042. package/Libraries/Image/RCTImageUtils.m +0 -387
  2043. package/Libraries/Image/RCTUIImageViewAnimated.m +0 -347
  2044. package/Libraries/Image/TextInlineImageNativeComponent.js.flow +0 -27
  2045. package/Libraries/Lists/FlatList.js.flow +0 -116
  2046. package/Libraries/NativeAnimation/Drivers/RCTDecayAnimation.m +0 -125
  2047. package/Libraries/NativeAnimation/Drivers/RCTFrameAnimation.m +0 -151
  2048. package/Libraries/NativeAnimation/Drivers/RCTSpringAnimation.m +0 -200
  2049. package/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.m +0 -171
  2050. package/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.m +0 -142
  2051. package/Libraries/NativeAnimation/Nodes/RCTStyleAnimatedNode.m +0 -58
  2052. package/Libraries/NativeAnimation/RCTAnimationUtils.m +0 -129
  2053. package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.m +0 -482
  2054. package/Libraries/RCTRequired/BUCK +0 -19
  2055. package/Libraries/Renderer/REVISION +0 -1
  2056. package/Libraries/Settings/Settings.android.js +0 -33
  2057. package/Libraries/SurfaceBackedComponent/RCTSurfaceBackedComponent.h +0 -28
  2058. package/Libraries/SurfaceBackedComponent/RCTSurfaceBackedComponent.mm +0 -76
  2059. package/Libraries/SurfaceBackedComponent/RCTSurfaceBackedComponentState.h +0 -18
  2060. package/Libraries/SurfaceBackedComponent/RCTSurfaceBackedComponentState.mm +0 -26
  2061. package/Libraries/SurfaceHostingComponent/RCTSurfaceHostingComponent+Internal.h +0 -19
  2062. package/Libraries/SurfaceHostingComponent/RCTSurfaceHostingComponent.h +0 -19
  2063. package/Libraries/SurfaceHostingComponent/RCTSurfaceHostingComponent.mm +0 -116
  2064. package/Libraries/SurfaceHostingComponent/RCTSurfaceHostingComponentController.h +0 -12
  2065. package/Libraries/SurfaceHostingComponent/RCTSurfaceHostingComponentController.mm +0 -161
  2066. package/Libraries/SurfaceHostingComponent/RCTSurfaceHostingComponentOptions.h +0 -20
  2067. package/Libraries/SurfaceHostingComponent/RCTSurfaceHostingComponentState.h +0 -19
  2068. package/Libraries/SurfaceHostingComponent/RCTSurfaceHostingComponentState.mm +0 -36
  2069. package/Libraries/Text/BaseText/RCTBaseTextShadowView.m +0 -158
  2070. package/Libraries/Text/RCTConvert+Text.m +0 -37
  2071. package/Libraries/Text/Text/RCTTextShadowView.m +0 -416
  2072. package/Libraries/Text/TextInput/Multiline/RCTUITextView.m +0 -308
  2073. package/Libraries/Text/TextInput/RCTBaseTextInputShadowView.m +0 -316
  2074. package/Libraries/Text/TextInput/RCTBaseTextInputView.m +0 -713
  2075. package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.m +0 -177
  2076. package/Libraries/Text/TextInput/RCTInputAccessoryShadowView.m +0 -20
  2077. package/Libraries/Text/TextInput/Singleline/RCTUITextField.m +0 -224
  2078. package/Libraries/Text/VirtualText/RCTVirtualTextViewManager.m +0 -26
  2079. package/Libraries/Utilities/AcessibilityMapping.js +0 -154
  2080. package/Libraries/Utilities/NativeDevSplitBundleLoader.js +0 -19
  2081. package/React/AccessibilityResources/en.lproj/Localizable.strings +0 -26
  2082. package/React/Base/RCTBridge.m +0 -410
  2083. package/React/Base/RCTJSScriptLoaderModule.h +0 -22
  2084. package/React/Base/RCTPerformanceLogger.m +0 -99
  2085. package/React/Base/RCTRuntimeExecutorFromBridge.h +0 -19
  2086. package/React/Base/RCTRuntimeExecutorFromBridge.mm +0 -56
  2087. package/React/CoreModules/BUCK +0 -139
  2088. package/React/CoreModules/RCTAlertController.m +0 -79
  2089. package/React/CoreModules/RCTDevSplitBundleLoader.h +0 -13
  2090. package/React/CoreModules/RCTDevSplitBundleLoader.mm +0 -108
  2091. package/React/CoreModules/RCTFPSGraph.m +0 -128
  2092. package/React/Fabric/Surface/RCTFabricSurfaceHostingProxyRootView.h +0 -15
  2093. package/React/Fabric/Surface/RCTFabricSurfaceHostingProxyRootView.mm +0 -21
  2094. package/ReactAndroid/external-artifacts/build.gradle +0 -44
  2095. package/ReactAndroid/libs/BUCK +0 -25
  2096. package/ReactAndroid/src/main/java/com/facebook/BUCK +0 -14
  2097. package/ReactAndroid/src/main/java/com/facebook/debug/debugoverlay/model/BUCK +0 -14
  2098. package/ReactAndroid/src/main/java/com/facebook/debug/holder/BUCK +0 -20
  2099. package/ReactAndroid/src/main/java/com/facebook/debug/tags/BUCK +0 -20
  2100. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/BUCK +0 -28
  2101. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/BUCK +0 -40
  2102. package/ReactAndroid/src/main/java/com/facebook/hermes/unicode/BUCK +0 -14
  2103. package/ReactAndroid/src/main/java/com/facebook/perftest/BUCK +0 -11
  2104. package/ReactAndroid/src/main/java/com/facebook/proguard/annotations/BUCK +0 -28
  2105. package/ReactAndroid/src/main/java/com/facebook/react/BUCK +0 -61
  2106. package/ReactAndroid/src/main/java/com/facebook/react/ReactApplication.java +0 -14
  2107. package/ReactAndroid/src/main/java/com/facebook/react/animated/BUCK +0 -34
  2108. package/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK +0 -92
  2109. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ContextBaseJavaModule.java +0 -27
  2110. package/ReactAndroid/src/main/java/com/facebook/react/common/ArrayUtils.java +0 -26
  2111. package/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +0 -48
  2112. package/ReactAndroid/src/main/java/com/facebook/react/common/annotations/VisibleForTesting.java +0 -14
  2113. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/BUCK +0 -32
  2114. package/ReactAndroid/src/main/java/com/facebook/react/common/network/BUCK +0 -18
  2115. package/ReactAndroid/src/main/java/com/facebook/react/config/BUCK +0 -17
  2116. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK +0 -64
  2117. package/ReactAndroid/src/main/java/com/facebook/react/fabric/BUCK +0 -51
  2118. package/ReactAndroid/src/main/java/com/facebook/react/fabric/CppComponentRegistry.java +0 -28
  2119. package/ReactAndroid/src/main/java/com/facebook/react/fabric/ReactNativeConfig.java +0 -59
  2120. package/ReactAndroid/src/main/java/com/facebook/react/fabric/SurfaceHandler.java +0 -50
  2121. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/BUCK +0 -19
  2122. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/JSCExecutor.java +0 -37
  2123. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/JSCExecutorFactory.java +0 -48
  2124. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/BUCK +0 -22
  2125. package/ReactAndroid/src/main/java/com/facebook/react/module/annotations/BUCK +0 -20
  2126. package/ReactAndroid/src/main/java/com/facebook/react/module/model/BUCK +0 -17
  2127. package/ReactAndroid/src/main/java/com/facebook/react/module/processing/BUCK +0 -31
  2128. package/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/BUCK +0 -25
  2129. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/BUCK +0 -24
  2130. package/ReactAndroid/src/main/java/com/facebook/react/modules/appregistry/BUCK +0 -17
  2131. package/ReactAndroid/src/main/java/com/facebook/react/modules/appstate/BUCK +0 -24
  2132. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BUCK +0 -36
  2133. package/ReactAndroid/src/main/java/com/facebook/react/modules/bundleloader/BUCK +0 -22
  2134. package/ReactAndroid/src/main/java/com/facebook/react/modules/bundleloader/NativeDevSplitBundleLoaderModule.java +0 -50
  2135. package/ReactAndroid/src/main/java/com/facebook/react/modules/camera/BUCK +0 -26
  2136. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/BUCK +0 -25
  2137. package/ReactAndroid/src/main/java/com/facebook/react/modules/common/BUCK +0 -21
  2138. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK +0 -29
  2139. package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/BUCK +0 -46
  2140. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/BUCK +0 -27
  2141. package/ReactAndroid/src/main/java/com/facebook/react/modules/devloading/BUCK +0 -25
  2142. package/ReactAndroid/src/main/java/com/facebook/react/modules/devtoolssettings/BUCK +0 -25
  2143. package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/BUCK +0 -24
  2144. package/ReactAndroid/src/main/java/com/facebook/react/modules/fabric/BUCK +0 -17
  2145. package/ReactAndroid/src/main/java/com/facebook/react/modules/fabric/ReactFabric.java +0 -25
  2146. package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/BUCK +0 -41
  2147. package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/BUCK +0 -26
  2148. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/BUCK +0 -32
  2149. package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/BUCK +0 -23
  2150. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/BUCK +0 -32
  2151. package/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/BUCK +0 -23
  2152. package/ReactAndroid/src/main/java/com/facebook/react/modules/share/BUCK +0 -23
  2153. package/ReactAndroid/src/main/java/com/facebook/react/modules/sound/BUCK +0 -24
  2154. package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/BUCK +0 -28
  2155. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/BUCK +0 -53
  2156. package/ReactAndroid/src/main/java/com/facebook/react/modules/toast/BUCK +0 -22
  2157. package/ReactAndroid/src/main/java/com/facebook/react/modules/vibration/BUCK +0 -24
  2158. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/BUCK +0 -30
  2159. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK +0 -28
  2160. package/ReactAndroid/src/main/java/com/facebook/react/processing/BUCK +0 -31
  2161. package/ReactAndroid/src/main/java/com/facebook/react/reactperflogger/BUCK +0 -24
  2162. package/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK +0 -69
  2163. package/ReactAndroid/src/main/java/com/facebook/react/surface/BUCK +0 -27
  2164. package/ReactAndroid/src/main/java/com/facebook/react/touch/BUCK +0 -19
  2165. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/BUCK +0 -60
  2166. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/BUCK +0 -21
  2167. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/CallInvokerHolder.java +0 -18
  2168. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/TurboModule.java +0 -17
  2169. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/TurboModuleRegistry.java +0 -37
  2170. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK +0 -112
  2171. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/annotations/BUCK +0 -19
  2172. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/BUCK +0 -22
  2173. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/util/BUCK +0 -19
  2174. package/ReactAndroid/src/main/java/com/facebook/react/util/BUCK +0 -20
  2175. package/ReactAndroid/src/main/java/com/facebook/react/views/common/BUCK +0 -21
  2176. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/BUCK +0 -32
  2177. package/ReactAndroid/src/main/java/com/facebook/react/views/image/BUCK +0 -67
  2178. package/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/BUCK +0 -44
  2179. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/BUCK +0 -34
  2180. package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/BUCK +0 -27
  2181. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/BUCK +0 -34
  2182. package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/BUCK +0 -31
  2183. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/BUCK +0 -28
  2184. package/ReactAndroid/src/main/java/com/facebook/react/views/text/BUCK +0 -39
  2185. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TypefaceStyle.java +0 -72
  2186. package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/BUCK +0 -33
  2187. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/BUCK +0 -41
  2188. package/ReactAndroid/src/main/java/com/facebook/react/views/traceupdateoverlay/BUCK +0 -29
  2189. package/ReactAndroid/src/main/java/com/facebook/react/views/unimplementedview/BUCK +0 -28
  2190. package/ReactAndroid/src/main/java/com/facebook/react/views/view/BUCK +0 -39
  2191. package/ReactAndroid/src/main/java/com/facebook/systrace/BUCK +0 -14
  2192. package/ReactAndroid/src/main/jni/CircularDepsValidator.cmake +0 -32
  2193. package/ReactAndroid/src/main/jni/first-party/fb/BUCK +0 -35
  2194. package/ReactAndroid/src/main/jni/first-party/fbgloginit/BUCK +0 -21
  2195. package/ReactAndroid/src/main/jni/first-party/jni-hack/BUCK +0 -17
  2196. package/ReactAndroid/src/main/jni/first-party/yogajni/BUCK +0 -22
  2197. package/ReactAndroid/src/main/jni/prebuilt/BUCK +0 -21
  2198. package/ReactAndroid/src/main/jni/react/fabric/BUCK +0 -54
  2199. package/ReactAndroid/src/main/jni/react/fabric/FabricMountItem.cpp +0 -66
  2200. package/ReactAndroid/src/main/jni/react/fabric/FabricMountItem.h +0 -88
  2201. package/ReactAndroid/src/main/jni/react/hermes/instrumentation/BUCK +0 -27
  2202. package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/BUCK +0 -19
  2203. package/ReactAndroid/src/main/jni/react/jni/BUCK +0 -76
  2204. package/ReactAndroid/src/main/jni/react/jscexecutor/BUCK +0 -22
  2205. package/ReactAndroid/src/main/jni/react/mapbuffer/BUCK +0 -30
  2206. package/ReactAndroid/src/main/jni/react/perftests/BUCK +0 -16
  2207. package/ReactAndroid/src/main/jni/react/reactnativeblob/BUCK +0 -19
  2208. package/ReactAndroid/src/main/jni/react/reactperflogger/BUCK +0 -31
  2209. package/ReactAndroid/src/main/jni/react/turbomodule/BUCK +0 -69
  2210. package/ReactAndroid/src/main/jni/react/uimanager/BUCK +0 -36
  2211. package/ReactAndroid/src/main/jni/third-party/glibc/BUCK +0 -69
  2212. package/ReactAndroid/src/main/libraries/fbcore/src/main/java/com/facebook/common/logging/BUCK +0 -11
  2213. package/ReactAndroid/src/main/libraries/fbjni/BUCK +0 -20
  2214. package/ReactAndroid/src/main/libraries/fresco/fresco-react-native/BUCK +0 -189
  2215. package/ReactAndroid/src/main/libraries/soloader/java/com/facebook/soloader/BUCK +0 -44
  2216. package/ReactAndroid/src/main/res/BUCK +0 -51
  2217. package/ReactAndroid/src/main/res/views/uimanager/values/strings_unlocalized.xml +0 -103
  2218. package/ReactCommon/butter/BUCK +0 -47
  2219. package/ReactCommon/butter/function.h +0 -51
  2220. package/ReactCommon/butter/set.h +0 -38
  2221. package/ReactCommon/butter/small_vector.h +0 -39
  2222. package/ReactCommon/callinvoker/BUCK +0 -25
  2223. package/ReactCommon/cxxreact/BUCK +0 -163
  2224. package/ReactCommon/cxxreact/tests/BUCK +0 -28
  2225. package/ReactCommon/hermes/inspector/AsyncPauseState.h +0 -34
  2226. package/ReactCommon/hermes/inspector/BUCK +0 -234
  2227. package/ReactCommon/hermes/inspector/CMakeLists.txt +0 -40
  2228. package/ReactCommon/hermes/inspector/DEFS.bzl +0 -7
  2229. package/ReactCommon/hermes/inspector/Exceptions.h +0 -60
  2230. package/ReactCommon/hermes/inspector/Inspector.cpp +0 -744
  2231. package/ReactCommon/hermes/inspector/Inspector.h +0 -384
  2232. package/ReactCommon/hermes/inspector/InspectorState.cpp +0 -511
  2233. package/ReactCommon/hermes/inspector/InspectorState.h +0 -412
  2234. package/ReactCommon/hermes/inspector/README.md +0 -113
  2235. package/ReactCommon/hermes/inspector/RuntimeAdapter.cpp +0 -30
  2236. package/ReactCommon/hermes/inspector/RuntimeAdapter.h +0 -76
  2237. package/ReactCommon/hermes/inspector/chrome/Connection.cpp +0 -1626
  2238. package/ReactCommon/hermes/inspector/chrome/Connection.h +0 -67
  2239. package/ReactCommon/hermes/inspector/chrome/ConnectionDemux.cpp +0 -131
  2240. package/ReactCommon/hermes/inspector/chrome/ConnectionDemux.h +0 -59
  2241. package/ReactCommon/hermes/inspector/chrome/MessageConverters.cpp +0 -258
  2242. package/ReactCommon/hermes/inspector/chrome/MessageConverters.h +0 -135
  2243. package/ReactCommon/hermes/inspector/chrome/MessageInterfaces.h +0 -74
  2244. package/ReactCommon/hermes/inspector/chrome/MessageTypes.cpp +0 -1856
  2245. package/ReactCommon/hermes/inspector/chrome/MessageTypes.h +0 -974
  2246. package/ReactCommon/hermes/inspector/chrome/MessageTypesInlines.h +0 -160
  2247. package/ReactCommon/hermes/inspector/chrome/Registration.cpp +0 -38
  2248. package/ReactCommon/hermes/inspector/chrome/Registration.h +0 -43
  2249. package/ReactCommon/hermes/inspector/chrome/RemoteObjectsTable.cpp +0 -146
  2250. package/ReactCommon/hermes/inspector/chrome/RemoteObjectsTable.h +0 -124
  2251. package/ReactCommon/hermes/inspector/chrome/cli/main.cpp +0 -274
  2252. package/ReactCommon/hermes/inspector/chrome/tests/AsyncHermesRuntime.cpp +0 -166
  2253. package/ReactCommon/hermes/inspector/chrome/tests/AsyncHermesRuntime.h +0 -148
  2254. package/ReactCommon/hermes/inspector/chrome/tests/ConnectionDemuxTests.cpp +0 -147
  2255. package/ReactCommon/hermes/inspector/chrome/tests/ConnectionTests.cpp +0 -2939
  2256. package/ReactCommon/hermes/inspector/chrome/tests/MessageTests.cpp +0 -1535
  2257. package/ReactCommon/hermes/inspector/chrome/tests/RemoteObjectsTableTest.cpp +0 -111
  2258. package/ReactCommon/hermes/inspector/chrome/tests/SyncConnection.cpp +0 -133
  2259. package/ReactCommon/hermes/inspector/chrome/tests/SyncConnection.h +0 -69
  2260. package/ReactCommon/hermes/inspector/detail/CallbackOStream.cpp +0 -77
  2261. package/ReactCommon/hermes/inspector/detail/CallbackOStream.h +0 -89
  2262. package/ReactCommon/hermes/inspector/detail/SerialExecutor.cpp +0 -60
  2263. package/ReactCommon/hermes/inspector/detail/SerialExecutor.h +0 -57
  2264. package/ReactCommon/hermes/inspector/detail/Thread.cpp +0 -39
  2265. package/ReactCommon/hermes/inspector/detail/Thread.h +0 -85
  2266. package/ReactCommon/hermes/inspector/detail/tests/CallbackOStreamTests.cpp +0 -104
  2267. package/ReactCommon/hermes/inspector/detail/tests/SerialExecutorTests.cpp +0 -41
  2268. package/ReactCommon/hermes/inspector/tests/InspectorTests.cpp +0 -410
  2269. package/ReactCommon/hermes/inspector/tools/run_msggen +0 -32
  2270. package/ReactCommon/hermes/inspector/tools/sandcastle/build_and_test.sh +0 -13
  2271. package/ReactCommon/jsc/BUCK +0 -34
  2272. package/ReactCommon/jserrorhandler/BUCK +0 -30
  2273. package/ReactCommon/jsi/BUCK +0 -58
  2274. package/ReactCommon/jsiexecutor/BUCK +0 -45
  2275. package/ReactCommon/jsinspector/BUCK +0 -40
  2276. package/ReactCommon/jsinspector/CMakeLists.txt +0 -16
  2277. package/ReactCommon/jsinspector/InspectorInterfaces.cpp +0 -108
  2278. package/ReactCommon/jsinspector/InspectorInterfaces.h +0 -94
  2279. package/ReactCommon/jsinspector/React-jsinspector.podspec +0 -31
  2280. package/ReactCommon/libraries/fbcore/src/test/java/com/facebook/powermock/BUCK +0 -179
  2281. package/ReactCommon/logger/BUCK +0 -41
  2282. package/ReactCommon/react/bridging/BUCK +0 -56
  2283. package/ReactCommon/react/config/BUCK +0 -43
  2284. package/ReactCommon/react/debug/BUCK +0 -65
  2285. package/ReactCommon/react/nativemodule/core/BUCK +0 -87
  2286. package/ReactCommon/react/nativemodule/samples/BUCK +0 -103
  2287. package/ReactCommon/react/renderer/animations/BUCK +0 -94
  2288. package/ReactCommon/react/renderer/attributedstring/BUCK +0 -83
  2289. package/ReactCommon/react/renderer/componentregistry/BUCK +0 -53
  2290. package/ReactCommon/react/renderer/componentregistry/native/BUCK +0 -49
  2291. package/ReactCommon/react/renderer/components/image/BUCK +0 -76
  2292. package/ReactCommon/react/renderer/components/inputaccessory/BUCK +0 -45
  2293. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/BUCK +0 -50
  2294. package/ReactCommon/react/renderer/components/modal/BUCK +0 -87
  2295. package/ReactCommon/react/renderer/components/progressbar/BUCK +0 -116
  2296. package/ReactCommon/react/renderer/components/root/BUCK +0 -74
  2297. package/ReactCommon/react/renderer/components/safeareaview/BUCK +0 -45
  2298. package/ReactCommon/react/renderer/components/scrollview/BUCK +0 -81
  2299. package/ReactCommon/react/renderer/components/switch/BUCK +0 -87
  2300. package/ReactCommon/react/renderer/components/text/BUCK +0 -99
  2301. package/ReactCommon/react/renderer/components/textinput/BUCK +0 -97
  2302. package/ReactCommon/react/renderer/components/textinput/iostextinput/BUCK +0 -95
  2303. package/ReactCommon/react/renderer/components/unimplementedview/BUCK +0 -69
  2304. package/ReactCommon/react/renderer/components/view/AccessibilityPropsMapBuffer.cpp +0 -166
  2305. package/ReactCommon/react/renderer/components/view/AccessibilityPropsMapBuffer.h +0 -35
  2306. package/ReactCommon/react/renderer/components/view/BUCK +0 -87
  2307. package/ReactCommon/react/renderer/components/view/Touch.cpp +0 -34
  2308. package/ReactCommon/react/renderer/components/view/ViewEventEmitter.cpp +0 -117
  2309. package/ReactCommon/react/renderer/components/view/ViewProps.cpp +0 -564
  2310. package/ReactCommon/react/renderer/components/view/ViewPropsMapBuffer.cpp +0 -202
  2311. package/ReactCommon/react/renderer/components/view/ViewPropsMapBuffer.h +0 -56
  2312. package/ReactCommon/react/renderer/components/view/YogaStylablePropsMapBuffer.cpp +0 -87
  2313. package/ReactCommon/react/renderer/components/view/YogaStylablePropsMapBuffer.h +0 -24
  2314. package/ReactCommon/react/renderer/core/BUCK +0 -115
  2315. package/ReactCommon/react/renderer/core/CoreFeatures.cpp +0 -22
  2316. package/ReactCommon/react/renderer/core/CoreFeatures.h +0 -54
  2317. package/ReactCommon/react/renderer/core/PropsMapBuffer.cpp +0 -36
  2318. package/ReactCommon/react/renderer/core/PropsMapBuffer.h +0 -24
  2319. package/ReactCommon/react/renderer/core/ShadowNodeFamilyFragment.cpp +0 -34
  2320. package/ReactCommon/react/renderer/core/ShadowNodeFamilyFragment.h +0 -55
  2321. package/ReactCommon/react/renderer/debug/BUCK +0 -75
  2322. package/ReactCommon/react/renderer/element/BUCK +0 -86
  2323. package/ReactCommon/react/renderer/graphics/BUCK +0 -128
  2324. package/ReactCommon/react/renderer/imagemanager/BUCK +0 -113
  2325. package/ReactCommon/react/renderer/leakchecker/BUCK +0 -51
  2326. package/ReactCommon/react/renderer/mapbuffer/BUCK +0 -73
  2327. package/ReactCommon/react/renderer/mounting/BUCK +0 -87
  2328. package/ReactCommon/react/renderer/runtimescheduler/BUCK +0 -76
  2329. package/ReactCommon/react/renderer/scheduler/BUCK +0 -63
  2330. package/ReactCommon/react/renderer/scheduler/SchedulerToolbox.cpp +0 -8
  2331. package/ReactCommon/react/renderer/telemetry/BUCK +0 -77
  2332. package/ReactCommon/react/renderer/templateprocessor/BUCK +0 -89
  2333. package/ReactCommon/react/renderer/textlayoutmanager/BUCK +0 -155
  2334. package/ReactCommon/react/renderer/timeline/BUCK +0 -75
  2335. package/ReactCommon/react/renderer/uimanager/BUCK +0 -92
  2336. package/ReactCommon/react/test_utils/BUCK +0 -54
  2337. package/ReactCommon/react/utils/BUCK +0 -67
  2338. package/ReactCommon/reactperflogger/BUCK +0 -27
  2339. package/ReactCommon/runtimeexecutor/BUCK +0 -50
  2340. package/ReactCommon/yoga/BUCK +0 -16
  2341. package/ReactCommon/yoga/yoga/BitUtils.h +0 -71
  2342. package/ReactCommon/yoga/yoga/CompactValue.h +0 -216
  2343. package/ReactCommon/yoga/yoga/Utils.cpp +0 -83
  2344. package/ReactCommon/yoga/yoga/Utils.h +0 -150
  2345. package/ReactCommon/yoga/yoga/YGConfig.cpp +0 -44
  2346. package/ReactCommon/yoga/yoga/YGConfig.h +0 -81
  2347. package/ReactCommon/yoga/yoga/YGFloatOptional.h +0 -74
  2348. package/ReactCommon/yoga/yoga/YGLayout.cpp +0 -42
  2349. package/ReactCommon/yoga/yoga/YGLayout.h +0 -67
  2350. package/ReactCommon/yoga/yoga/YGNode.cpp +0 -579
  2351. package/ReactCommon/yoga/yoga/YGNode.h +0 -355
  2352. package/ReactCommon/yoga/yoga/YGNodePrint.cpp +0 -244
  2353. package/ReactCommon/yoga/yoga/YGNodePrint.h +0 -32
  2354. package/ReactCommon/yoga/yoga/YGStyle.cpp +0 -56
  2355. package/ReactCommon/yoga/yoga/YGStyle.h +0 -241
  2356. package/ReactCommon/yoga/yoga/log.cpp +0 -64
  2357. package/ReactCommon/yoga/yoga/log.h +0 -42
  2358. package/flow/use-sync-external-store.js +0 -20
  2359. package/flow-typed/npm/base64-js_v1.x.x.js +0 -12
  2360. package/flow-typed/npm/glob_v7.x.x.js +0 -79
  2361. package/flow-typed/npm/pretty-format_v26.x.x.js +0 -49
  2362. package/flow-typed/npm/promise_v8.x.x.js +0 -30
  2363. package/flow-typed/npm/react-dom_v17.x.x.js +0 -139
  2364. package/flow-typed/npm/react-test-renderer_v16.x.x.js +0 -79
  2365. package/flow-typed/npm/stacktrace-parser_v0.1.x.js +0 -17
  2366. package/flow-typed/npm/yargs_v17.x.x.js +0 -341
  2367. package/scripts/launchPackager.bat +0 -12
  2368. package/scripts/launchPackager.command +0 -34
  2369. package/template/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java +0 -75
  2370. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +0 -32
  2371. package/template/android/app/src/main/java/com/helloworld/MainApplication.java +0 -64
  2372. package/template/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java +0 -20
  2373. package/third-party-podspecs/hermes-engine.podspec +0 -45
  2374. /package/Libraries/Components/DrawerAndroid/{DrawerLayoutAndroid.ios.js → DrawerLayoutAndroid.js} +0 -0
  2375. /package/Libraries/Image/{RCTDisplayWeakRefreshable.m → RCTDisplayWeakRefreshable.mm} +0 -0
  2376. /package/Libraries/Image/{RCTImageCache.m → RCTImageCache.mm} +0 -0
  2377. /package/Libraries/Image/{RCTImageShadowView.m → RCTImageShadowView.mm} +0 -0
  2378. /package/Libraries/Image/{RCTResizeMode.m → RCTResizeMode.mm} +0 -0
  2379. /package/Libraries/NativeAnimation/Drivers/{RCTEventAnimation.m → RCTEventAnimation.mm} +0 -0
  2380. /package/Libraries/NativeAnimation/Nodes/{RCTAdditionAnimatedNode.m → RCTAdditionAnimatedNode.mm} +0 -0
  2381. /package/Libraries/NativeAnimation/Nodes/{RCTAnimatedNode.m → RCTAnimatedNode.mm} +0 -0
  2382. /package/Libraries/NativeAnimation/Nodes/{RCTColorAnimatedNode.m → RCTColorAnimatedNode.mm} +0 -0
  2383. /package/Libraries/NativeAnimation/Nodes/{RCTDiffClampAnimatedNode.m → RCTDiffClampAnimatedNode.mm} +0 -0
  2384. /package/Libraries/NativeAnimation/Nodes/{RCTDivisionAnimatedNode.m → RCTDivisionAnimatedNode.mm} +0 -0
  2385. /package/Libraries/NativeAnimation/Nodes/{RCTModuloAnimatedNode.m → RCTModuloAnimatedNode.mm} +0 -0
  2386. /package/Libraries/NativeAnimation/Nodes/{RCTMultiplicationAnimatedNode.m → RCTMultiplicationAnimatedNode.mm} +0 -0
  2387. /package/Libraries/NativeAnimation/Nodes/{RCTSubtractionAnimatedNode.m → RCTSubtractionAnimatedNode.mm} +0 -0
  2388. /package/Libraries/NativeAnimation/Nodes/{RCTTrackingAnimatedNode.m → RCTTrackingAnimatedNode.mm} +0 -0
  2389. /package/Libraries/NativeAnimation/Nodes/{RCTTransformAnimatedNode.m → RCTTransformAnimatedNode.mm} +0 -0
  2390. /package/Libraries/NativeAnimation/Nodes/{RCTValueAnimatedNode.m → RCTValueAnimatedNode.mm} +0 -0
  2391. /package/Libraries/{Renderer/public → ReactNative/ReactFabricPublicInstance}/ReactFabricPublicInstanceUtils.js +0 -0
  2392. /package/Libraries/Text/BaseText/{RCTBaseTextViewManager.m → RCTBaseTextViewManager.mm} +0 -0
  2393. /package/Libraries/Text/{RCTTextAttributes.m → RCTTextAttributes.mm} +0 -0
  2394. /package/Libraries/Text/RawText/{RCTRawTextShadowView.m → RCTRawTextShadowView.mm} +0 -0
  2395. /package/Libraries/Text/RawText/{RCTRawTextViewManager.m → RCTRawTextViewManager.mm} +0 -0
  2396. /package/Libraries/Text/Text/{RCTDynamicTypeRamp.m → RCTDynamicTypeRamp.mm} +0 -0
  2397. /package/Libraries/Text/Text/{RCTTextView.m → RCTTextView.mm} +0 -0
  2398. /package/Libraries/Text/Text/{RCTTextViewManager.m → RCTTextViewManager.mm} +0 -0
  2399. /package/Libraries/Text/TextInput/Multiline/{RCTMultilineTextInputView.m → RCTMultilineTextInputView.mm} +0 -0
  2400. /package/Libraries/Text/TextInput/Multiline/{RCTMultilineTextInputViewManager.m → RCTMultilineTextInputViewManager.mm} +0 -0
  2401. /package/Libraries/Text/TextInput/{RCTBackedTextInputDelegateAdapter.m → RCTBackedTextInputDelegateAdapter.mm} +0 -0
  2402. /package/Libraries/Text/TextInput/{RCTInputAccessoryView.m → RCTInputAccessoryView.mm} +0 -0
  2403. /package/Libraries/Text/TextInput/{RCTInputAccessoryViewContent.m → RCTInputAccessoryViewContent.mm} +0 -0
  2404. /package/Libraries/Text/TextInput/{RCTInputAccessoryViewManager.m → RCTInputAccessoryViewManager.mm} +0 -0
  2405. /package/Libraries/Text/TextInput/{RCTTextSelection.m → RCTTextSelection.mm} +0 -0
  2406. /package/Libraries/Text/TextInput/Singleline/{RCTSinglelineTextInputView.m → RCTSinglelineTextInputView.mm} +0 -0
  2407. /package/Libraries/Text/TextInput/Singleline/{RCTSinglelineTextInputViewManager.m → RCTSinglelineTextInputViewManager.mm} +0 -0
  2408. /package/Libraries/Text/VirtualText/{RCTVirtualTextShadowView.m → RCTVirtualTextShadowView.mm} +0 -0
  2409. /package/ReactCommon/hermes/{inspector → inspector-modern}/.clang-format +0 -0
  2410. /package/ReactCommon/hermes/{inspector → inspector-modern}/docs/GenerateInspectorFSM.sh +0 -0
  2411. /package/ReactCommon/hermes/{inspector → inspector-modern}/docs/InspectorFSM.gv +0 -0
  2412. /package/ReactCommon/hermes/{inspector → inspector-modern}/docs/InspectorFSM.pdf +0 -0
  2413. /package/ReactCommon/hermes/{inspector → inspector-modern}/tools/format +0 -0
  2414. /package/ReactCommon/hermes/{inspector → inspector-modern}/tools/message_types.txt +0 -0
  2415. /package/ReactCommon/hermes/{inspector → inspector-modern}/tools/sandcastle/setup.sh +0 -0
  2416. /package/ReactCommon/{jsinspector → jsinspector-modern}/.clang-tidy +0 -0
@@ -0,0 +1,2753 @@
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
+ #include <algorithm>
9
+ #include <atomic>
10
+ #include <cfloat>
11
+ #include <cmath>
12
+ #include <cstring>
13
+
14
+ #include <yoga/Yoga.h>
15
+
16
+ #include <yoga/algorithm/Align.h>
17
+ #include <yoga/algorithm/Baseline.h>
18
+ #include <yoga/algorithm/BoundAxis.h>
19
+ #include <yoga/algorithm/Cache.h>
20
+ #include <yoga/algorithm/CalculateLayout.h>
21
+ #include <yoga/algorithm/FlexDirection.h>
22
+ #include <yoga/algorithm/FlexLine.h>
23
+ #include <yoga/algorithm/PixelGrid.h>
24
+ #include <yoga/algorithm/ResolveValue.h>
25
+ #include <yoga/debug/AssertFatal.h>
26
+ #include <yoga/debug/Log.h>
27
+ #include <yoga/debug/NodeToString.h>
28
+ #include <yoga/event/event.h>
29
+ #include <yoga/node/Node.h>
30
+ #include <yoga/numeric/Comparison.h>
31
+ #include <yoga/numeric/FloatOptional.h>
32
+
33
+ namespace facebook::yoga {
34
+
35
+ std::atomic<uint32_t> gCurrentGenerationCount(0);
36
+
37
+ bool calculateLayoutInternal(
38
+ yoga::Node* const node,
39
+ const float availableWidth,
40
+ const float availableHeight,
41
+ const Direction ownerDirection,
42
+ const MeasureMode widthMeasureMode,
43
+ const MeasureMode heightMeasureMode,
44
+ const float ownerWidth,
45
+ const float ownerHeight,
46
+ const bool performLayout,
47
+ const LayoutPassReason reason,
48
+ LayoutData& layoutMarkerData,
49
+ const uint32_t depth,
50
+ const uint32_t generationCount);
51
+
52
+ static inline float dimensionWithMargin(
53
+ const yoga::Node* const node,
54
+ const FlexDirection axis,
55
+ const float widthSize) {
56
+ return node->getLayout().measuredDimension(dimension(axis)) +
57
+ (node->getLeadingMargin(axis, widthSize) +
58
+ node->getTrailingMargin(axis, widthSize))
59
+ .unwrap();
60
+ }
61
+
62
+ static inline bool styleDefinesDimension(
63
+ const yoga::Node* const node,
64
+ const FlexDirection axis,
65
+ const float ownerSize) {
66
+ bool isUndefined =
67
+ yoga::isUndefined(node->getResolvedDimension(dimension(axis)).value);
68
+
69
+ auto resolvedDimension = node->getResolvedDimension(dimension(axis));
70
+ return !(
71
+ resolvedDimension.unit == YGUnitAuto ||
72
+ resolvedDimension.unit == YGUnitUndefined ||
73
+ (resolvedDimension.unit == YGUnitPoint && !isUndefined &&
74
+ resolvedDimension.value < 0.0f) ||
75
+ (resolvedDimension.unit == YGUnitPercent && !isUndefined &&
76
+ (resolvedDimension.value < 0.0f || yoga::isUndefined(ownerSize))));
77
+ }
78
+
79
+ static inline bool isLayoutDimensionDefined(
80
+ const yoga::Node* const node,
81
+ const FlexDirection axis) {
82
+ const float value = node->getLayout().measuredDimension(dimension(axis));
83
+ return !yoga::isUndefined(value) && value >= 0.0f;
84
+ }
85
+
86
+ static void setChildTrailingPosition(
87
+ const yoga::Node* const node,
88
+ yoga::Node* const child,
89
+ const FlexDirection axis) {
90
+ const float size = child->getLayout().measuredDimension(dimension(axis));
91
+ child->setLayoutPosition(
92
+ node->getLayout().measuredDimension(dimension(axis)) - size -
93
+ child->getLayout().position[leadingEdge(axis)],
94
+ trailingEdge(axis));
95
+ }
96
+
97
+ static void constrainMaxSizeForMode(
98
+ const yoga::Node* const node,
99
+ const enum FlexDirection axis,
100
+ const float ownerAxisSize,
101
+ const float ownerWidth,
102
+ MeasureMode* mode,
103
+ float* size) {
104
+ const FloatOptional maxSize =
105
+ yoga::resolveValue(
106
+ node->getStyle().maxDimension(dimension(axis)), ownerAxisSize) +
107
+ FloatOptional(node->getMarginForAxis(axis, ownerWidth));
108
+ switch (*mode) {
109
+ case MeasureMode::Exactly:
110
+ case MeasureMode::AtMost:
111
+ *size = (maxSize.isUndefined() || *size < maxSize.unwrap())
112
+ ? *size
113
+ : maxSize.unwrap();
114
+ break;
115
+ case MeasureMode::Undefined:
116
+ if (!maxSize.isUndefined()) {
117
+ *mode = MeasureMode::AtMost;
118
+ *size = maxSize.unwrap();
119
+ }
120
+ break;
121
+ }
122
+ }
123
+
124
+ static void computeFlexBasisForChild(
125
+ const yoga::Node* const node,
126
+ yoga::Node* const child,
127
+ const float width,
128
+ const MeasureMode widthMode,
129
+ const float height,
130
+ const float ownerWidth,
131
+ const float ownerHeight,
132
+ const MeasureMode heightMode,
133
+ const Direction direction,
134
+ LayoutData& layoutMarkerData,
135
+ const uint32_t depth,
136
+ const uint32_t generationCount) {
137
+ const FlexDirection mainAxis =
138
+ resolveDirection(node->getStyle().flexDirection(), direction);
139
+ const bool isMainAxisRow = isRow(mainAxis);
140
+ const float mainAxisSize = isMainAxisRow ? width : height;
141
+ const float mainAxisownerSize = isMainAxisRow ? ownerWidth : ownerHeight;
142
+
143
+ float childWidth;
144
+ float childHeight;
145
+ MeasureMode childWidthMeasureMode;
146
+ MeasureMode childHeightMeasureMode;
147
+
148
+ const FloatOptional resolvedFlexBasis =
149
+ yoga::resolveValue(child->resolveFlexBasisPtr(), mainAxisownerSize);
150
+ const bool isRowStyleDimDefined =
151
+ styleDefinesDimension(child, FlexDirection::Row, ownerWidth);
152
+ const bool isColumnStyleDimDefined =
153
+ styleDefinesDimension(child, FlexDirection::Column, ownerHeight);
154
+
155
+ if (!resolvedFlexBasis.isUndefined() && !yoga::isUndefined(mainAxisSize)) {
156
+ if (child->getLayout().computedFlexBasis.isUndefined() ||
157
+ (child->getConfig()->isExperimentalFeatureEnabled(
158
+ ExperimentalFeature::WebFlexBasis) &&
159
+ child->getLayout().computedFlexBasisGeneration != generationCount)) {
160
+ const FloatOptional paddingAndBorder =
161
+ FloatOptional(paddingAndBorderForAxis(child, mainAxis, ownerWidth));
162
+ child->setLayoutComputedFlexBasis(
163
+ yoga::maxOrDefined(resolvedFlexBasis, paddingAndBorder));
164
+ }
165
+ } else if (isMainAxisRow && isRowStyleDimDefined) {
166
+ // The width is definite, so use that as the flex basis.
167
+ const FloatOptional paddingAndBorder = FloatOptional(
168
+ paddingAndBorderForAxis(child, FlexDirection::Row, ownerWidth));
169
+
170
+ child->setLayoutComputedFlexBasis(yoga::maxOrDefined(
171
+ yoga::resolveValue(
172
+ child->getResolvedDimension(YGDimensionWidth), ownerWidth),
173
+ paddingAndBorder));
174
+ } else if (!isMainAxisRow && isColumnStyleDimDefined) {
175
+ // The height is definite, so use that as the flex basis.
176
+ const FloatOptional paddingAndBorder = FloatOptional(
177
+ paddingAndBorderForAxis(child, FlexDirection::Column, ownerWidth));
178
+ child->setLayoutComputedFlexBasis(yoga::maxOrDefined(
179
+ yoga::resolveValue(
180
+ child->getResolvedDimension(YGDimensionHeight), ownerHeight),
181
+ paddingAndBorder));
182
+ } else {
183
+ // Compute the flex basis and hypothetical main size (i.e. the clamped flex
184
+ // basis).
185
+ childWidth = YGUndefined;
186
+ childHeight = YGUndefined;
187
+ childWidthMeasureMode = MeasureMode::Undefined;
188
+ childHeightMeasureMode = MeasureMode::Undefined;
189
+
190
+ auto marginRow =
191
+ child->getMarginForAxis(FlexDirection::Row, ownerWidth).unwrap();
192
+ auto marginColumn =
193
+ child->getMarginForAxis(FlexDirection::Column, ownerWidth).unwrap();
194
+
195
+ if (isRowStyleDimDefined) {
196
+ childWidth =
197
+ yoga::resolveValue(
198
+ child->getResolvedDimension(YGDimensionWidth), ownerWidth)
199
+ .unwrap() +
200
+ marginRow;
201
+ childWidthMeasureMode = MeasureMode::Exactly;
202
+ }
203
+ if (isColumnStyleDimDefined) {
204
+ childHeight =
205
+ yoga::resolveValue(
206
+ child->getResolvedDimension(YGDimensionHeight), ownerHeight)
207
+ .unwrap() +
208
+ marginColumn;
209
+ childHeightMeasureMode = MeasureMode::Exactly;
210
+ }
211
+
212
+ // The W3C spec doesn't say anything about the 'overflow' property, but all
213
+ // major browsers appear to implement the following logic.
214
+ if ((!isMainAxisRow && node->getStyle().overflow() == Overflow::Scroll) ||
215
+ node->getStyle().overflow() != Overflow::Scroll) {
216
+ if (yoga::isUndefined(childWidth) && !yoga::isUndefined(width)) {
217
+ childWidth = width;
218
+ childWidthMeasureMode = MeasureMode::AtMost;
219
+ }
220
+ }
221
+
222
+ if ((isMainAxisRow && node->getStyle().overflow() == Overflow::Scroll) ||
223
+ node->getStyle().overflow() != Overflow::Scroll) {
224
+ if (yoga::isUndefined(childHeight) && !yoga::isUndefined(height)) {
225
+ childHeight = height;
226
+ childHeightMeasureMode = MeasureMode::AtMost;
227
+ }
228
+ }
229
+
230
+ const auto& childStyle = child->getStyle();
231
+ if (!childStyle.aspectRatio().isUndefined()) {
232
+ if (!isMainAxisRow && childWidthMeasureMode == MeasureMode::Exactly) {
233
+ childHeight = marginColumn +
234
+ (childWidth - marginRow) / childStyle.aspectRatio().unwrap();
235
+ childHeightMeasureMode = MeasureMode::Exactly;
236
+ } else if (
237
+ isMainAxisRow && childHeightMeasureMode == MeasureMode::Exactly) {
238
+ childWidth = marginRow +
239
+ (childHeight - marginColumn) * childStyle.aspectRatio().unwrap();
240
+ childWidthMeasureMode = MeasureMode::Exactly;
241
+ }
242
+ }
243
+
244
+ // If child has no defined size in the cross axis and is set to stretch, set
245
+ // the cross axis to be measured exactly with the available inner width
246
+
247
+ const bool hasExactWidth =
248
+ !yoga::isUndefined(width) && widthMode == MeasureMode::Exactly;
249
+ const bool childWidthStretch =
250
+ resolveChildAlignment(node, child) == Align::Stretch &&
251
+ childWidthMeasureMode != MeasureMode::Exactly;
252
+ if (!isMainAxisRow && !isRowStyleDimDefined && hasExactWidth &&
253
+ childWidthStretch) {
254
+ childWidth = width;
255
+ childWidthMeasureMode = MeasureMode::Exactly;
256
+ if (!childStyle.aspectRatio().isUndefined()) {
257
+ childHeight =
258
+ (childWidth - marginRow) / childStyle.aspectRatio().unwrap();
259
+ childHeightMeasureMode = MeasureMode::Exactly;
260
+ }
261
+ }
262
+
263
+ const bool hasExactHeight =
264
+ !yoga::isUndefined(height) && heightMode == MeasureMode::Exactly;
265
+ const bool childHeightStretch =
266
+ resolveChildAlignment(node, child) == Align::Stretch &&
267
+ childHeightMeasureMode != MeasureMode::Exactly;
268
+ if (isMainAxisRow && !isColumnStyleDimDefined && hasExactHeight &&
269
+ childHeightStretch) {
270
+ childHeight = height;
271
+ childHeightMeasureMode = MeasureMode::Exactly;
272
+
273
+ if (!childStyle.aspectRatio().isUndefined()) {
274
+ childWidth =
275
+ (childHeight - marginColumn) * childStyle.aspectRatio().unwrap();
276
+ childWidthMeasureMode = MeasureMode::Exactly;
277
+ }
278
+ }
279
+
280
+ constrainMaxSizeForMode(
281
+ child,
282
+ FlexDirection::Row,
283
+ ownerWidth,
284
+ ownerWidth,
285
+ &childWidthMeasureMode,
286
+ &childWidth);
287
+ constrainMaxSizeForMode(
288
+ child,
289
+ FlexDirection::Column,
290
+ ownerHeight,
291
+ ownerWidth,
292
+ &childHeightMeasureMode,
293
+ &childHeight);
294
+
295
+ // Measure the child
296
+ calculateLayoutInternal(
297
+ child,
298
+ childWidth,
299
+ childHeight,
300
+ direction,
301
+ childWidthMeasureMode,
302
+ childHeightMeasureMode,
303
+ ownerWidth,
304
+ ownerHeight,
305
+ false,
306
+ LayoutPassReason::kMeasureChild,
307
+ layoutMarkerData,
308
+ depth,
309
+ generationCount);
310
+
311
+ child->setLayoutComputedFlexBasis(FloatOptional(yoga::maxOrDefined(
312
+ child->getLayout().measuredDimension(dimension(mainAxis)),
313
+ paddingAndBorderForAxis(child, mainAxis, ownerWidth))));
314
+ }
315
+ child->setLayoutComputedFlexBasisGeneration(generationCount);
316
+ }
317
+
318
+ static void layoutAbsoluteChild(
319
+ const yoga::Node* const node,
320
+ yoga::Node* const child,
321
+ const float width,
322
+ const MeasureMode widthMode,
323
+ const float height,
324
+ const Direction direction,
325
+ LayoutData& layoutMarkerData,
326
+ const uint32_t depth,
327
+ const uint32_t generationCount) {
328
+ const FlexDirection mainAxis =
329
+ resolveDirection(node->getStyle().flexDirection(), direction);
330
+ const FlexDirection crossAxis = resolveCrossDirection(mainAxis, direction);
331
+ const bool isMainAxisRow = isRow(mainAxis);
332
+
333
+ float childWidth = YGUndefined;
334
+ float childHeight = YGUndefined;
335
+ MeasureMode childWidthMeasureMode = MeasureMode::Undefined;
336
+ MeasureMode childHeightMeasureMode = MeasureMode::Undefined;
337
+
338
+ auto marginRow = child->getMarginForAxis(FlexDirection::Row, width).unwrap();
339
+ auto marginColumn =
340
+ child->getMarginForAxis(FlexDirection::Column, width).unwrap();
341
+
342
+ if (styleDefinesDimension(child, FlexDirection::Row, width)) {
343
+ childWidth =
344
+ yoga::resolveValue(child->getResolvedDimension(YGDimensionWidth), width)
345
+ .unwrap() +
346
+ marginRow;
347
+ } else {
348
+ // If the child doesn't have a specified width, compute the width based on
349
+ // the left/right offsets if they're defined.
350
+ if (child->isLeadingPositionDefined(FlexDirection::Row) &&
351
+ child->isTrailingPosDefined(FlexDirection::Row)) {
352
+ childWidth = node->getLayout().measuredDimension(YGDimensionWidth) -
353
+ (node->getLeadingBorder(FlexDirection::Row) +
354
+ node->getTrailingBorder(FlexDirection::Row)) -
355
+ (child->getLeadingPosition(FlexDirection::Row, width) +
356
+ child->getTrailingPosition(FlexDirection::Row, width))
357
+ .unwrap();
358
+ childWidth =
359
+ boundAxis(child, FlexDirection::Row, childWidth, width, width);
360
+ }
361
+ }
362
+
363
+ if (styleDefinesDimension(child, FlexDirection::Column, height)) {
364
+ childHeight = yoga::resolveValue(
365
+ child->getResolvedDimension(YGDimensionHeight), height)
366
+ .unwrap() +
367
+ marginColumn;
368
+ } else {
369
+ // If the child doesn't have a specified height, compute the height based on
370
+ // the top/bottom offsets if they're defined.
371
+ if (child->isLeadingPositionDefined(FlexDirection::Column) &&
372
+ child->isTrailingPosDefined(FlexDirection::Column)) {
373
+ childHeight = node->getLayout().measuredDimension(YGDimensionHeight) -
374
+ (node->getLeadingBorder(FlexDirection::Column) +
375
+ node->getTrailingBorder(FlexDirection::Column)) -
376
+ (child->getLeadingPosition(FlexDirection::Column, height) +
377
+ child->getTrailingPosition(FlexDirection::Column, height))
378
+ .unwrap();
379
+ childHeight =
380
+ boundAxis(child, FlexDirection::Column, childHeight, height, width);
381
+ }
382
+ }
383
+
384
+ // Exactly one dimension needs to be defined for us to be able to do aspect
385
+ // ratio calculation. One dimension being the anchor and the other being
386
+ // flexible.
387
+ const auto& childStyle = child->getStyle();
388
+ if (yoga::isUndefined(childWidth) ^ yoga::isUndefined(childHeight)) {
389
+ if (!childStyle.aspectRatio().isUndefined()) {
390
+ if (yoga::isUndefined(childWidth)) {
391
+ childWidth = marginRow +
392
+ (childHeight - marginColumn) * childStyle.aspectRatio().unwrap();
393
+ } else if (yoga::isUndefined(childHeight)) {
394
+ childHeight = marginColumn +
395
+ (childWidth - marginRow) / childStyle.aspectRatio().unwrap();
396
+ }
397
+ }
398
+ }
399
+
400
+ // If we're still missing one or the other dimension, measure the content.
401
+ if (yoga::isUndefined(childWidth) || yoga::isUndefined(childHeight)) {
402
+ childWidthMeasureMode = yoga::isUndefined(childWidth)
403
+ ? MeasureMode::Undefined
404
+ : MeasureMode::Exactly;
405
+ childHeightMeasureMode = yoga::isUndefined(childHeight)
406
+ ? MeasureMode::Undefined
407
+ : MeasureMode::Exactly;
408
+
409
+ // If the size of the owner is defined then try to constrain the absolute
410
+ // child to that size as well. This allows text within the absolute child to
411
+ // wrap to the size of its owner. This is the same behavior as many browsers
412
+ // implement.
413
+ if (!isMainAxisRow && yoga::isUndefined(childWidth) &&
414
+ widthMode != MeasureMode::Undefined && !yoga::isUndefined(width) &&
415
+ width > 0) {
416
+ childWidth = width;
417
+ childWidthMeasureMode = MeasureMode::AtMost;
418
+ }
419
+
420
+ calculateLayoutInternal(
421
+ child,
422
+ childWidth,
423
+ childHeight,
424
+ direction,
425
+ childWidthMeasureMode,
426
+ childHeightMeasureMode,
427
+ childWidth,
428
+ childHeight,
429
+ false,
430
+ LayoutPassReason::kAbsMeasureChild,
431
+ layoutMarkerData,
432
+ depth,
433
+ generationCount);
434
+ childWidth = child->getLayout().measuredDimension(YGDimensionWidth) +
435
+ child->getMarginForAxis(FlexDirection::Row, width).unwrap();
436
+ childHeight = child->getLayout().measuredDimension(YGDimensionHeight) +
437
+ child->getMarginForAxis(FlexDirection::Column, width).unwrap();
438
+ }
439
+
440
+ calculateLayoutInternal(
441
+ child,
442
+ childWidth,
443
+ childHeight,
444
+ direction,
445
+ MeasureMode::Exactly,
446
+ MeasureMode::Exactly,
447
+ childWidth,
448
+ childHeight,
449
+ true,
450
+ LayoutPassReason::kAbsLayout,
451
+ layoutMarkerData,
452
+ depth,
453
+ generationCount);
454
+
455
+ if (child->isTrailingPosDefined(mainAxis) &&
456
+ !child->isLeadingPositionDefined(mainAxis)) {
457
+ child->setLayoutPosition(
458
+ node->getLayout().measuredDimension(dimension(mainAxis)) -
459
+ child->getLayout().measuredDimension(dimension(mainAxis)) -
460
+ node->getTrailingBorder(mainAxis) -
461
+ child->getTrailingMargin(mainAxis, isMainAxisRow ? width : height)
462
+ .unwrap() -
463
+ child->getTrailingPosition(mainAxis, isMainAxisRow ? width : height)
464
+ .unwrap(),
465
+ leadingEdge(mainAxis));
466
+ } else if (
467
+ !child->isLeadingPositionDefined(mainAxis) &&
468
+ node->getStyle().justifyContent() == Justify::Center) {
469
+ child->setLayoutPosition(
470
+ (node->getLayout().measuredDimension(dimension(mainAxis)) -
471
+ child->getLayout().measuredDimension(dimension(mainAxis))) /
472
+ 2.0f,
473
+ leadingEdge(mainAxis));
474
+ } else if (
475
+ !child->isLeadingPositionDefined(mainAxis) &&
476
+ node->getStyle().justifyContent() == Justify::FlexEnd) {
477
+ child->setLayoutPosition(
478
+ (node->getLayout().measuredDimension(dimension(mainAxis)) -
479
+ child->getLayout().measuredDimension(dimension(mainAxis))),
480
+ leadingEdge(mainAxis));
481
+ } else if (
482
+ node->getConfig()->isExperimentalFeatureEnabled(
483
+ ExperimentalFeature::AbsolutePercentageAgainstPaddingEdge) &&
484
+ child->isLeadingPositionDefined(mainAxis)) {
485
+ child->setLayoutPosition(
486
+ child->getLeadingPosition(
487
+ mainAxis,
488
+ node->getLayout().measuredDimension(dimension(mainAxis)))
489
+ .unwrap() +
490
+ node->getLeadingBorder(mainAxis) +
491
+ child
492
+ ->getLeadingMargin(
493
+ mainAxis,
494
+ node->getLayout().measuredDimension(dimension(mainAxis)))
495
+ .unwrap(),
496
+ leadingEdge(mainAxis));
497
+ }
498
+
499
+ if (child->isTrailingPosDefined(crossAxis) &&
500
+ !child->isLeadingPositionDefined(crossAxis)) {
501
+ child->setLayoutPosition(
502
+ node->getLayout().measuredDimension(dimension(crossAxis)) -
503
+ child->getLayout().measuredDimension(dimension(crossAxis)) -
504
+ node->getTrailingBorder(crossAxis) -
505
+ child->getTrailingMargin(crossAxis, isMainAxisRow ? height : width)
506
+ .unwrap() -
507
+ child
508
+ ->getTrailingPosition(crossAxis, isMainAxisRow ? height : width)
509
+ .unwrap(),
510
+ leadingEdge(crossAxis));
511
+
512
+ } else if (
513
+ !child->isLeadingPositionDefined(crossAxis) &&
514
+ resolveChildAlignment(node, child) == Align::Center) {
515
+ child->setLayoutPosition(
516
+ (node->getLayout().measuredDimension(dimension(crossAxis)) -
517
+ child->getLayout().measuredDimension(dimension(crossAxis))) /
518
+ 2.0f,
519
+ leadingEdge(crossAxis));
520
+ } else if (
521
+ !child->isLeadingPositionDefined(crossAxis) &&
522
+ ((resolveChildAlignment(node, child) == Align::FlexEnd) ^
523
+ (node->getStyle().flexWrap() == Wrap::WrapReverse))) {
524
+ child->setLayoutPosition(
525
+ (node->getLayout().measuredDimension(dimension(crossAxis)) -
526
+ child->getLayout().measuredDimension(dimension(crossAxis))),
527
+ leadingEdge(crossAxis));
528
+ } else if (
529
+ node->getConfig()->isExperimentalFeatureEnabled(
530
+ ExperimentalFeature::AbsolutePercentageAgainstPaddingEdge) &&
531
+ child->isLeadingPositionDefined(crossAxis)) {
532
+ child->setLayoutPosition(
533
+ child->getLeadingPosition(
534
+ crossAxis,
535
+ node->getLayout().measuredDimension(dimension(crossAxis)))
536
+ .unwrap() +
537
+ node->getLeadingBorder(crossAxis) +
538
+ child
539
+ ->getLeadingMargin(
540
+ crossAxis,
541
+ node->getLayout().measuredDimension(dimension(crossAxis)))
542
+ .unwrap(),
543
+ leadingEdge(crossAxis));
544
+ }
545
+ }
546
+
547
+ static void measureNodeWithMeasureFunc(
548
+ yoga::Node* const node,
549
+ float availableWidth,
550
+ float availableHeight,
551
+ const MeasureMode widthMeasureMode,
552
+ const MeasureMode heightMeasureMode,
553
+ const float ownerWidth,
554
+ const float ownerHeight,
555
+ LayoutData& layoutMarkerData,
556
+ const LayoutPassReason reason) {
557
+ yoga::assertFatalWithNode(
558
+ node,
559
+ node->hasMeasureFunc(),
560
+ "Expected node to have custom measure function");
561
+
562
+ if (widthMeasureMode == MeasureMode::Undefined) {
563
+ availableWidth = YGUndefined;
564
+ }
565
+ if (heightMeasureMode == MeasureMode::Undefined) {
566
+ availableHeight = YGUndefined;
567
+ }
568
+
569
+ const auto& padding = node->getLayout().padding;
570
+ const auto& border = node->getLayout().border;
571
+ const float paddingAndBorderAxisRow = padding[YGEdgeLeft] +
572
+ padding[YGEdgeRight] + border[YGEdgeLeft] + border[YGEdgeRight];
573
+ const float paddingAndBorderAxisColumn = padding[YGEdgeTop] +
574
+ padding[YGEdgeBottom] + border[YGEdgeTop] + border[YGEdgeBottom];
575
+
576
+ // We want to make sure we don't call measure with negative size
577
+ const float innerWidth = yoga::isUndefined(availableWidth)
578
+ ? availableWidth
579
+ : yoga::maxOrDefined(0, availableWidth - paddingAndBorderAxisRow);
580
+ const float innerHeight = yoga::isUndefined(availableHeight)
581
+ ? availableHeight
582
+ : yoga::maxOrDefined(0, availableHeight - paddingAndBorderAxisColumn);
583
+
584
+ if (widthMeasureMode == MeasureMode::Exactly &&
585
+ heightMeasureMode == MeasureMode::Exactly) {
586
+ // Don't bother sizing the text if both dimensions are already defined.
587
+ node->setLayoutMeasuredDimension(
588
+ boundAxis(
589
+ node, FlexDirection::Row, availableWidth, ownerWidth, ownerWidth),
590
+ YGDimensionWidth);
591
+ node->setLayoutMeasuredDimension(
592
+ boundAxis(
593
+ node,
594
+ FlexDirection::Column,
595
+ availableHeight,
596
+ ownerHeight,
597
+ ownerWidth),
598
+ YGDimensionHeight);
599
+ } else {
600
+ Event::publish<Event::MeasureCallbackStart>(node);
601
+
602
+ // Measure the text under the current constraints.
603
+ const YGSize measuredSize = node->measure(
604
+ innerWidth, widthMeasureMode, innerHeight, heightMeasureMode);
605
+
606
+ layoutMarkerData.measureCallbacks += 1;
607
+ layoutMarkerData.measureCallbackReasonsCount[static_cast<size_t>(reason)] +=
608
+ 1;
609
+
610
+ Event::publish<Event::MeasureCallbackEnd>(
611
+ node,
612
+ {innerWidth,
613
+ unscopedEnum(widthMeasureMode),
614
+ innerHeight,
615
+ unscopedEnum(heightMeasureMode),
616
+ measuredSize.width,
617
+ measuredSize.height,
618
+ reason});
619
+
620
+ node->setLayoutMeasuredDimension(
621
+ boundAxis(
622
+ node,
623
+ FlexDirection::Row,
624
+ (widthMeasureMode == MeasureMode::Undefined ||
625
+ widthMeasureMode == MeasureMode::AtMost)
626
+ ? measuredSize.width + paddingAndBorderAxisRow
627
+ : availableWidth,
628
+ ownerWidth,
629
+ ownerWidth),
630
+ YGDimensionWidth);
631
+
632
+ node->setLayoutMeasuredDimension(
633
+ boundAxis(
634
+ node,
635
+ FlexDirection::Column,
636
+ (heightMeasureMode == MeasureMode::Undefined ||
637
+ heightMeasureMode == MeasureMode::AtMost)
638
+ ? measuredSize.height + paddingAndBorderAxisColumn
639
+ : availableHeight,
640
+ ownerHeight,
641
+ ownerWidth),
642
+ YGDimensionHeight);
643
+ }
644
+ }
645
+
646
+ // For nodes with no children, use the available values if they were provided,
647
+ // or the minimum size as indicated by the padding and border sizes.
648
+ static void measureNodeWithoutChildren(
649
+ yoga::Node* const node,
650
+ const float availableWidth,
651
+ const float availableHeight,
652
+ const MeasureMode widthMeasureMode,
653
+ const MeasureMode heightMeasureMode,
654
+ const float ownerWidth,
655
+ const float ownerHeight) {
656
+ const auto& padding = node->getLayout().padding;
657
+ const auto& border = node->getLayout().border;
658
+
659
+ float width = availableWidth;
660
+ if (widthMeasureMode == MeasureMode::Undefined ||
661
+ widthMeasureMode == MeasureMode::AtMost) {
662
+ width = padding[YGEdgeLeft] + padding[YGEdgeRight] + border[YGEdgeLeft] +
663
+ border[YGEdgeRight];
664
+ }
665
+ node->setLayoutMeasuredDimension(
666
+ boundAxis(node, FlexDirection::Row, width, ownerWidth, ownerWidth),
667
+ YGDimensionWidth);
668
+
669
+ float height = availableHeight;
670
+ if (heightMeasureMode == MeasureMode::Undefined ||
671
+ heightMeasureMode == MeasureMode::AtMost) {
672
+ height = padding[YGEdgeTop] + padding[YGEdgeBottom] + border[YGEdgeTop] +
673
+ border[YGEdgeBottom];
674
+ }
675
+ node->setLayoutMeasuredDimension(
676
+ boundAxis(node, FlexDirection::Column, height, ownerHeight, ownerWidth),
677
+ YGDimensionHeight);
678
+ }
679
+
680
+ static bool measureNodeWithFixedSize(
681
+ yoga::Node* const node,
682
+ const float availableWidth,
683
+ const float availableHeight,
684
+ const MeasureMode widthMeasureMode,
685
+ const MeasureMode heightMeasureMode,
686
+ const float ownerWidth,
687
+ const float ownerHeight) {
688
+ if ((!yoga::isUndefined(availableWidth) &&
689
+ widthMeasureMode == MeasureMode::AtMost && availableWidth <= 0.0f) ||
690
+ (!yoga::isUndefined(availableHeight) &&
691
+ heightMeasureMode == MeasureMode::AtMost && availableHeight <= 0.0f) ||
692
+ (widthMeasureMode == MeasureMode::Exactly &&
693
+ heightMeasureMode == MeasureMode::Exactly)) {
694
+ node->setLayoutMeasuredDimension(
695
+ boundAxis(
696
+ node,
697
+ FlexDirection::Row,
698
+ yoga::isUndefined(availableWidth) ||
699
+ (widthMeasureMode == MeasureMode::AtMost &&
700
+ availableWidth < 0.0f)
701
+ ? 0.0f
702
+ : availableWidth,
703
+ ownerWidth,
704
+ ownerWidth),
705
+ YGDimensionWidth);
706
+
707
+ node->setLayoutMeasuredDimension(
708
+ boundAxis(
709
+ node,
710
+ FlexDirection::Column,
711
+ yoga::isUndefined(availableHeight) ||
712
+ (heightMeasureMode == MeasureMode::AtMost &&
713
+ availableHeight < 0.0f)
714
+ ? 0.0f
715
+ : availableHeight,
716
+ ownerHeight,
717
+ ownerWidth),
718
+ YGDimensionHeight);
719
+ return true;
720
+ }
721
+
722
+ return false;
723
+ }
724
+
725
+ static void zeroOutLayoutRecursively(yoga::Node* const node) {
726
+ node->getLayout() = {};
727
+ node->setLayoutDimension(0, YGDimensionWidth);
728
+ node->setLayoutDimension(0, YGDimensionHeight);
729
+ node->setHasNewLayout(true);
730
+
731
+ node->cloneChildrenIfNeeded();
732
+ for (const auto child : node->getChildren()) {
733
+ zeroOutLayoutRecursively(child);
734
+ }
735
+ }
736
+
737
+ static float calculateAvailableInnerDimension(
738
+ const yoga::Node* const node,
739
+ const YGDimension dimension,
740
+ const float availableDim,
741
+ const float paddingAndBorder,
742
+ const float ownerDim) {
743
+ float availableInnerDim = availableDim - paddingAndBorder;
744
+ // Max dimension overrides predefined dimension value; Min dimension in turn
745
+ // overrides both of the above
746
+ if (!yoga::isUndefined(availableInnerDim)) {
747
+ // We want to make sure our available height does not violate min and max
748
+ // constraints
749
+ const FloatOptional minDimensionOptional =
750
+ yoga::resolveValue(node->getStyle().minDimension(dimension), ownerDim);
751
+ const float minInnerDim = minDimensionOptional.isUndefined()
752
+ ? 0.0f
753
+ : minDimensionOptional.unwrap() - paddingAndBorder;
754
+
755
+ const FloatOptional maxDimensionOptional =
756
+ yoga::resolveValue(node->getStyle().maxDimension(dimension), ownerDim);
757
+
758
+ const float maxInnerDim = maxDimensionOptional.isUndefined()
759
+ ? FLT_MAX
760
+ : maxDimensionOptional.unwrap() - paddingAndBorder;
761
+ availableInnerDim = yoga::maxOrDefined(
762
+ yoga::minOrDefined(availableInnerDim, maxInnerDim), minInnerDim);
763
+ }
764
+
765
+ return availableInnerDim;
766
+ }
767
+
768
+ static float computeFlexBasisForChildren(
769
+ yoga::Node* const node,
770
+ const float availableInnerWidth,
771
+ const float availableInnerHeight,
772
+ MeasureMode widthMeasureMode,
773
+ MeasureMode heightMeasureMode,
774
+ Direction direction,
775
+ FlexDirection mainAxis,
776
+ bool performLayout,
777
+ LayoutData& layoutMarkerData,
778
+ const uint32_t depth,
779
+ const uint32_t generationCount) {
780
+ float totalOuterFlexBasis = 0.0f;
781
+ YGNodeRef singleFlexChild = nullptr;
782
+ const auto& children = node->getChildren();
783
+ MeasureMode measureModeMainDim =
784
+ isRow(mainAxis) ? widthMeasureMode : heightMeasureMode;
785
+ // If there is only one child with flexGrow + flexShrink it means we can set
786
+ // the computedFlexBasis to 0 instead of measuring and shrinking / flexing the
787
+ // child to exactly match the remaining space
788
+ if (measureModeMainDim == MeasureMode::Exactly) {
789
+ for (auto child : children) {
790
+ if (child->isNodeFlexible()) {
791
+ if (singleFlexChild != nullptr ||
792
+ yoga::inexactEquals(child->resolveFlexGrow(), 0.0f) ||
793
+ yoga::inexactEquals(child->resolveFlexShrink(), 0.0f)) {
794
+ // There is already a flexible child, or this flexible child doesn't
795
+ // have flexGrow and flexShrink, abort
796
+ singleFlexChild = nullptr;
797
+ break;
798
+ } else {
799
+ singleFlexChild = child;
800
+ }
801
+ }
802
+ }
803
+ }
804
+
805
+ for (auto child : children) {
806
+ child->resolveDimension();
807
+ if (child->getStyle().display() == Display::None) {
808
+ zeroOutLayoutRecursively(child);
809
+ child->setHasNewLayout(true);
810
+ child->setDirty(false);
811
+ continue;
812
+ }
813
+ if (performLayout) {
814
+ // Set the initial position (relative to the owner).
815
+ const Direction childDirection = child->resolveDirection(direction);
816
+ const float mainDim =
817
+ isRow(mainAxis) ? availableInnerWidth : availableInnerHeight;
818
+ const float crossDim =
819
+ isRow(mainAxis) ? availableInnerHeight : availableInnerWidth;
820
+ child->setPosition(
821
+ childDirection, mainDim, crossDim, availableInnerWidth);
822
+ }
823
+
824
+ if (child->getStyle().positionType() == PositionType::Absolute) {
825
+ continue;
826
+ }
827
+ if (child == singleFlexChild) {
828
+ child->setLayoutComputedFlexBasisGeneration(generationCount);
829
+ child->setLayoutComputedFlexBasis(FloatOptional(0));
830
+ } else {
831
+ computeFlexBasisForChild(
832
+ node,
833
+ child,
834
+ availableInnerWidth,
835
+ widthMeasureMode,
836
+ availableInnerHeight,
837
+ availableInnerWidth,
838
+ availableInnerHeight,
839
+ heightMeasureMode,
840
+ direction,
841
+ layoutMarkerData,
842
+ depth,
843
+ generationCount);
844
+ }
845
+
846
+ totalOuterFlexBasis +=
847
+ (child->getLayout().computedFlexBasis +
848
+ child->getMarginForAxis(mainAxis, availableInnerWidth))
849
+ .unwrap();
850
+ }
851
+
852
+ return totalOuterFlexBasis;
853
+ }
854
+
855
+ // It distributes the free space to the flexible items and ensures that the size
856
+ // of the flex items abide the min and max constraints. At the end of this
857
+ // function the child nodes would have proper size. Prior using this function
858
+ // please ensure that distributeFreeSpaceFirstPass is called.
859
+ static float distributeFreeSpaceSecondPass(
860
+ FlexLine& flexLine,
861
+ yoga::Node* const node,
862
+ const FlexDirection mainAxis,
863
+ const FlexDirection crossAxis,
864
+ const float mainAxisownerSize,
865
+ const float availableInnerMainDim,
866
+ const float availableInnerCrossDim,
867
+ const float availableInnerWidth,
868
+ const float availableInnerHeight,
869
+ const bool mainAxisOverflows,
870
+ const MeasureMode measureModeCrossDim,
871
+ const bool performLayout,
872
+ LayoutData& layoutMarkerData,
873
+ const uint32_t depth,
874
+ const uint32_t generationCount) {
875
+ float childFlexBasis = 0;
876
+ float flexShrinkScaledFactor = 0;
877
+ float flexGrowFactor = 0;
878
+ float deltaFreeSpace = 0;
879
+ const bool isMainAxisRow = isRow(mainAxis);
880
+ const bool isNodeFlexWrap = node->getStyle().flexWrap() != Wrap::NoWrap;
881
+
882
+ for (auto currentLineChild : flexLine.itemsInFlow) {
883
+ childFlexBasis = boundAxisWithinMinAndMax(
884
+ currentLineChild,
885
+ mainAxis,
886
+ currentLineChild->getLayout().computedFlexBasis,
887
+ mainAxisownerSize)
888
+ .unwrap();
889
+ float updatedMainSize = childFlexBasis;
890
+
891
+ if (!yoga::isUndefined(flexLine.layout.remainingFreeSpace) &&
892
+ flexLine.layout.remainingFreeSpace < 0) {
893
+ flexShrinkScaledFactor =
894
+ -currentLineChild->resolveFlexShrink() * childFlexBasis;
895
+ // Is this child able to shrink?
896
+ if (flexShrinkScaledFactor != 0) {
897
+ float childSize;
898
+
899
+ if (!yoga::isUndefined(flexLine.layout.totalFlexShrinkScaledFactors) &&
900
+ flexLine.layout.totalFlexShrinkScaledFactors == 0) {
901
+ childSize = childFlexBasis + flexShrinkScaledFactor;
902
+ } else {
903
+ childSize = childFlexBasis +
904
+ (flexLine.layout.remainingFreeSpace /
905
+ flexLine.layout.totalFlexShrinkScaledFactors) *
906
+ flexShrinkScaledFactor;
907
+ }
908
+
909
+ updatedMainSize = boundAxis(
910
+ currentLineChild,
911
+ mainAxis,
912
+ childSize,
913
+ availableInnerMainDim,
914
+ availableInnerWidth);
915
+ }
916
+ } else if (
917
+ !yoga::isUndefined(flexLine.layout.remainingFreeSpace) &&
918
+ flexLine.layout.remainingFreeSpace > 0) {
919
+ flexGrowFactor = currentLineChild->resolveFlexGrow();
920
+
921
+ // Is this child able to grow?
922
+ if (!std::isnan(flexGrowFactor) && flexGrowFactor != 0) {
923
+ updatedMainSize = boundAxis(
924
+ currentLineChild,
925
+ mainAxis,
926
+ childFlexBasis +
927
+ flexLine.layout.remainingFreeSpace /
928
+ flexLine.layout.totalFlexGrowFactors * flexGrowFactor,
929
+ availableInnerMainDim,
930
+ availableInnerWidth);
931
+ }
932
+ }
933
+
934
+ deltaFreeSpace += updatedMainSize - childFlexBasis;
935
+
936
+ const float marginMain =
937
+ currentLineChild->getMarginForAxis(mainAxis, availableInnerWidth)
938
+ .unwrap();
939
+ const float marginCross =
940
+ currentLineChild->getMarginForAxis(crossAxis, availableInnerWidth)
941
+ .unwrap();
942
+
943
+ float childCrossSize;
944
+ float childMainSize = updatedMainSize + marginMain;
945
+ MeasureMode childCrossMeasureMode;
946
+ MeasureMode childMainMeasureMode = MeasureMode::Exactly;
947
+
948
+ const auto& childStyle = currentLineChild->getStyle();
949
+ if (!childStyle.aspectRatio().isUndefined()) {
950
+ childCrossSize = isMainAxisRow
951
+ ? (childMainSize - marginMain) / childStyle.aspectRatio().unwrap()
952
+ : (childMainSize - marginMain) * childStyle.aspectRatio().unwrap();
953
+ childCrossMeasureMode = MeasureMode::Exactly;
954
+
955
+ childCrossSize += marginCross;
956
+ } else if (
957
+ !std::isnan(availableInnerCrossDim) &&
958
+ !styleDefinesDimension(
959
+ currentLineChild, crossAxis, availableInnerCrossDim) &&
960
+ measureModeCrossDim == MeasureMode::Exactly &&
961
+ !(isNodeFlexWrap && mainAxisOverflows) &&
962
+ resolveChildAlignment(node, currentLineChild) == Align::Stretch &&
963
+ currentLineChild->marginLeadingValue(crossAxis).unit != YGUnitAuto &&
964
+ currentLineChild->marginTrailingValue(crossAxis).unit != YGUnitAuto) {
965
+ childCrossSize = availableInnerCrossDim;
966
+ childCrossMeasureMode = MeasureMode::Exactly;
967
+ } else if (!styleDefinesDimension(
968
+ currentLineChild, crossAxis, availableInnerCrossDim)) {
969
+ childCrossSize = availableInnerCrossDim;
970
+ childCrossMeasureMode = yoga::isUndefined(childCrossSize)
971
+ ? MeasureMode::Undefined
972
+ : MeasureMode::AtMost;
973
+ } else {
974
+ childCrossSize =
975
+ yoga::resolveValue(
976
+ currentLineChild->getResolvedDimension(dimension(crossAxis)),
977
+ availableInnerCrossDim)
978
+ .unwrap() +
979
+ marginCross;
980
+ const bool isLoosePercentageMeasurement =
981
+ currentLineChild->getResolvedDimension(dimension(crossAxis)).unit ==
982
+ YGUnitPercent &&
983
+ measureModeCrossDim != MeasureMode::Exactly;
984
+ childCrossMeasureMode =
985
+ yoga::isUndefined(childCrossSize) || isLoosePercentageMeasurement
986
+ ? MeasureMode::Undefined
987
+ : MeasureMode::Exactly;
988
+ }
989
+
990
+ constrainMaxSizeForMode(
991
+ currentLineChild,
992
+ mainAxis,
993
+ availableInnerMainDim,
994
+ availableInnerWidth,
995
+ &childMainMeasureMode,
996
+ &childMainSize);
997
+ constrainMaxSizeForMode(
998
+ currentLineChild,
999
+ crossAxis,
1000
+ availableInnerCrossDim,
1001
+ availableInnerWidth,
1002
+ &childCrossMeasureMode,
1003
+ &childCrossSize);
1004
+
1005
+ const bool requiresStretchLayout =
1006
+ !styleDefinesDimension(
1007
+ currentLineChild, crossAxis, availableInnerCrossDim) &&
1008
+ resolveChildAlignment(node, currentLineChild) == Align::Stretch &&
1009
+ currentLineChild->marginLeadingValue(crossAxis).unit != YGUnitAuto &&
1010
+ currentLineChild->marginTrailingValue(crossAxis).unit != YGUnitAuto;
1011
+
1012
+ const float childWidth = isMainAxisRow ? childMainSize : childCrossSize;
1013
+ const float childHeight = !isMainAxisRow ? childMainSize : childCrossSize;
1014
+
1015
+ const MeasureMode childWidthMeasureMode =
1016
+ isMainAxisRow ? childMainMeasureMode : childCrossMeasureMode;
1017
+ const MeasureMode childHeightMeasureMode =
1018
+ !isMainAxisRow ? childMainMeasureMode : childCrossMeasureMode;
1019
+
1020
+ const bool isLayoutPass = performLayout && !requiresStretchLayout;
1021
+ // Recursively call the layout algorithm for this child with the updated
1022
+ // main size.
1023
+ calculateLayoutInternal(
1024
+ currentLineChild,
1025
+ childWidth,
1026
+ childHeight,
1027
+ node->getLayout().direction(),
1028
+ childWidthMeasureMode,
1029
+ childHeightMeasureMode,
1030
+ availableInnerWidth,
1031
+ availableInnerHeight,
1032
+ isLayoutPass,
1033
+ isLayoutPass ? LayoutPassReason::kFlexLayout
1034
+ : LayoutPassReason::kFlexMeasure,
1035
+ layoutMarkerData,
1036
+ depth,
1037
+ generationCount);
1038
+ node->setLayoutHadOverflow(
1039
+ node->getLayout().hadOverflow() ||
1040
+ currentLineChild->getLayout().hadOverflow());
1041
+ }
1042
+ return deltaFreeSpace;
1043
+ }
1044
+
1045
+ // It distributes the free space to the flexible items.For those flexible items
1046
+ // whose min and max constraints are triggered, those flex item's clamped size
1047
+ // is removed from the remaingfreespace.
1048
+ static void distributeFreeSpaceFirstPass(
1049
+ FlexLine& flexLine,
1050
+ const FlexDirection mainAxis,
1051
+ const float mainAxisownerSize,
1052
+ const float availableInnerMainDim,
1053
+ const float availableInnerWidth) {
1054
+ float flexShrinkScaledFactor = 0;
1055
+ float flexGrowFactor = 0;
1056
+ float baseMainSize = 0;
1057
+ float boundMainSize = 0;
1058
+ float deltaFreeSpace = 0;
1059
+
1060
+ for (auto currentLineChild : flexLine.itemsInFlow) {
1061
+ float childFlexBasis = boundAxisWithinMinAndMax(
1062
+ currentLineChild,
1063
+ mainAxis,
1064
+ currentLineChild->getLayout().computedFlexBasis,
1065
+ mainAxisownerSize)
1066
+ .unwrap();
1067
+
1068
+ if (flexLine.layout.remainingFreeSpace < 0) {
1069
+ flexShrinkScaledFactor =
1070
+ -currentLineChild->resolveFlexShrink() * childFlexBasis;
1071
+
1072
+ // Is this child able to shrink?
1073
+ if (!yoga::isUndefined(flexShrinkScaledFactor) &&
1074
+ flexShrinkScaledFactor != 0) {
1075
+ baseMainSize = childFlexBasis +
1076
+ flexLine.layout.remainingFreeSpace /
1077
+ flexLine.layout.totalFlexShrinkScaledFactors *
1078
+ flexShrinkScaledFactor;
1079
+ boundMainSize = boundAxis(
1080
+ currentLineChild,
1081
+ mainAxis,
1082
+ baseMainSize,
1083
+ availableInnerMainDim,
1084
+ availableInnerWidth);
1085
+ if (!yoga::isUndefined(baseMainSize) &&
1086
+ !yoga::isUndefined(boundMainSize) &&
1087
+ baseMainSize != boundMainSize) {
1088
+ // By excluding this item's size and flex factor from remaining, this
1089
+ // item's min/max constraints should also trigger in the second pass
1090
+ // resulting in the item's size calculation being identical in the
1091
+ // first and second passes.
1092
+ deltaFreeSpace += boundMainSize - childFlexBasis;
1093
+ flexLine.layout.totalFlexShrinkScaledFactors -=
1094
+ (-currentLineChild->resolveFlexShrink() *
1095
+ currentLineChild->getLayout().computedFlexBasis.unwrap());
1096
+ }
1097
+ }
1098
+ } else if (
1099
+ !yoga::isUndefined(flexLine.layout.remainingFreeSpace) &&
1100
+ flexLine.layout.remainingFreeSpace > 0) {
1101
+ flexGrowFactor = currentLineChild->resolveFlexGrow();
1102
+
1103
+ // Is this child able to grow?
1104
+ if (!yoga::isUndefined(flexGrowFactor) && flexGrowFactor != 0) {
1105
+ baseMainSize = childFlexBasis +
1106
+ flexLine.layout.remainingFreeSpace /
1107
+ flexLine.layout.totalFlexGrowFactors * flexGrowFactor;
1108
+ boundMainSize = boundAxis(
1109
+ currentLineChild,
1110
+ mainAxis,
1111
+ baseMainSize,
1112
+ availableInnerMainDim,
1113
+ availableInnerWidth);
1114
+
1115
+ if (!yoga::isUndefined(baseMainSize) &&
1116
+ !yoga::isUndefined(boundMainSize) &&
1117
+ baseMainSize != boundMainSize) {
1118
+ // By excluding this item's size and flex factor from remaining, this
1119
+ // item's min/max constraints should also trigger in the second pass
1120
+ // resulting in the item's size calculation being identical in the
1121
+ // first and second passes.
1122
+ deltaFreeSpace += boundMainSize - childFlexBasis;
1123
+ flexLine.layout.totalFlexGrowFactors -= flexGrowFactor;
1124
+ }
1125
+ }
1126
+ }
1127
+ }
1128
+ flexLine.layout.remainingFreeSpace -= deltaFreeSpace;
1129
+ }
1130
+
1131
+ // Do two passes over the flex items to figure out how to distribute the
1132
+ // remaining space.
1133
+ //
1134
+ // The first pass finds the items whose min/max constraints trigger, freezes
1135
+ // them at those sizes, and excludes those sizes from the remaining space.
1136
+ //
1137
+ // The second pass sets the size of each flexible item. It distributes the
1138
+ // remaining space amongst the items whose min/max constraints didn't trigger in
1139
+ // the first pass. For the other items, it sets their sizes by forcing their
1140
+ // min/max constraints to trigger again.
1141
+ //
1142
+ // This two pass approach for resolving min/max constraints deviates from the
1143
+ // spec. The spec
1144
+ // (https://www.w3.org/TR/CSS-flexbox-1/#resolve-flexible-lengths) describes a
1145
+ // process that needs to be repeated a variable number of times. The algorithm
1146
+ // implemented here won't handle all cases but it was simpler to implement and
1147
+ // it mitigates performance concerns because we know exactly how many passes
1148
+ // it'll do.
1149
+ //
1150
+ // At the end of this function the child nodes would have the proper size
1151
+ // assigned to them.
1152
+ //
1153
+ static void resolveFlexibleLength(
1154
+ yoga::Node* const node,
1155
+ FlexLine& flexLine,
1156
+ const FlexDirection mainAxis,
1157
+ const FlexDirection crossAxis,
1158
+ const float mainAxisownerSize,
1159
+ const float availableInnerMainDim,
1160
+ const float availableInnerCrossDim,
1161
+ const float availableInnerWidth,
1162
+ const float availableInnerHeight,
1163
+ const bool mainAxisOverflows,
1164
+ const MeasureMode measureModeCrossDim,
1165
+ const bool performLayout,
1166
+ LayoutData& layoutMarkerData,
1167
+ const uint32_t depth,
1168
+ const uint32_t generationCount) {
1169
+ const float originalFreeSpace = flexLine.layout.remainingFreeSpace;
1170
+ // First pass: detect the flex items whose min/max constraints trigger
1171
+ distributeFreeSpaceFirstPass(
1172
+ flexLine,
1173
+ mainAxis,
1174
+ mainAxisownerSize,
1175
+ availableInnerMainDim,
1176
+ availableInnerWidth);
1177
+
1178
+ // Second pass: resolve the sizes of the flexible items
1179
+ const float distributedFreeSpace = distributeFreeSpaceSecondPass(
1180
+ flexLine,
1181
+ node,
1182
+ mainAxis,
1183
+ crossAxis,
1184
+ mainAxisownerSize,
1185
+ availableInnerMainDim,
1186
+ availableInnerCrossDim,
1187
+ availableInnerWidth,
1188
+ availableInnerHeight,
1189
+ mainAxisOverflows,
1190
+ measureModeCrossDim,
1191
+ performLayout,
1192
+ layoutMarkerData,
1193
+ depth,
1194
+ generationCount);
1195
+
1196
+ flexLine.layout.remainingFreeSpace = originalFreeSpace - distributedFreeSpace;
1197
+ }
1198
+
1199
+ static void justifyMainAxis(
1200
+ yoga::Node* const node,
1201
+ FlexLine& flexLine,
1202
+ const size_t startOfLineIndex,
1203
+ const FlexDirection mainAxis,
1204
+ const FlexDirection crossAxis,
1205
+ const MeasureMode measureModeMainDim,
1206
+ const MeasureMode measureModeCrossDim,
1207
+ const float mainAxisownerSize,
1208
+ const float ownerWidth,
1209
+ const float availableInnerMainDim,
1210
+ const float availableInnerCrossDim,
1211
+ const float availableInnerWidth,
1212
+ const bool performLayout) {
1213
+ const auto& style = node->getStyle();
1214
+ const float leadingPaddingAndBorderMain =
1215
+ node->getLeadingPaddingAndBorder(mainAxis, ownerWidth).unwrap();
1216
+ const float trailingPaddingAndBorderMain =
1217
+ node->getTrailingPaddingAndBorder(mainAxis, ownerWidth).unwrap();
1218
+ const float gap = node->getGapForAxis(mainAxis, ownerWidth).unwrap();
1219
+ // If we are using "at most" rules in the main axis, make sure that
1220
+ // remainingFreeSpace is 0 when min main dimension is not given
1221
+ if (measureModeMainDim == MeasureMode::AtMost &&
1222
+ flexLine.layout.remainingFreeSpace > 0) {
1223
+ if (!style.minDimension(dimension(mainAxis)).isUndefined() &&
1224
+ !yoga::resolveValue(
1225
+ style.minDimension(dimension(mainAxis)), mainAxisownerSize)
1226
+ .isUndefined()) {
1227
+ // This condition makes sure that if the size of main dimension(after
1228
+ // considering child nodes main dim, leading and trailing padding etc)
1229
+ // falls below min dimension, then the remainingFreeSpace is reassigned
1230
+ // considering the min dimension
1231
+
1232
+ // `minAvailableMainDim` denotes minimum available space in which child
1233
+ // can be laid out, it will exclude space consumed by padding and border.
1234
+ const float minAvailableMainDim =
1235
+ yoga::resolveValue(
1236
+ style.minDimension(dimension(mainAxis)), mainAxisownerSize)
1237
+ .unwrap() -
1238
+ leadingPaddingAndBorderMain - trailingPaddingAndBorderMain;
1239
+ const float occupiedSpaceByChildNodes =
1240
+ availableInnerMainDim - flexLine.layout.remainingFreeSpace;
1241
+ flexLine.layout.remainingFreeSpace = yoga::maxOrDefined(
1242
+ 0, minAvailableMainDim - occupiedSpaceByChildNodes);
1243
+ } else {
1244
+ flexLine.layout.remainingFreeSpace = 0;
1245
+ }
1246
+ }
1247
+
1248
+ int numberOfAutoMarginsOnCurrentLine = 0;
1249
+ for (size_t i = startOfLineIndex; i < flexLine.endOfLineIndex; i++) {
1250
+ auto child = node->getChild(i);
1251
+ if (child->getStyle().positionType() != PositionType::Absolute) {
1252
+ if (child->marginLeadingValue(mainAxis).unit == YGUnitAuto) {
1253
+ numberOfAutoMarginsOnCurrentLine++;
1254
+ }
1255
+ if (child->marginTrailingValue(mainAxis).unit == YGUnitAuto) {
1256
+ numberOfAutoMarginsOnCurrentLine++;
1257
+ }
1258
+ }
1259
+ }
1260
+
1261
+ // In order to position the elements in the main axis, we have two controls.
1262
+ // The space between the beginning and the first element and the space between
1263
+ // each two elements.
1264
+ float leadingMainDim = 0;
1265
+ float betweenMainDim = gap;
1266
+ const Justify justifyContent = node->getStyle().justifyContent();
1267
+
1268
+ if (numberOfAutoMarginsOnCurrentLine == 0) {
1269
+ switch (justifyContent) {
1270
+ case Justify::Center:
1271
+ leadingMainDim = flexLine.layout.remainingFreeSpace / 2;
1272
+ break;
1273
+ case Justify::FlexEnd:
1274
+ leadingMainDim = flexLine.layout.remainingFreeSpace;
1275
+ break;
1276
+ case Justify::SpaceBetween:
1277
+ if (flexLine.itemsInFlow.size() > 1) {
1278
+ betweenMainDim +=
1279
+ yoga::maxOrDefined(flexLine.layout.remainingFreeSpace, 0) /
1280
+ static_cast<float>(flexLine.itemsInFlow.size() - 1);
1281
+ }
1282
+ break;
1283
+ case Justify::SpaceEvenly:
1284
+ // Space is distributed evenly across all elements
1285
+ leadingMainDim = flexLine.layout.remainingFreeSpace /
1286
+ static_cast<float>(flexLine.itemsInFlow.size() + 1);
1287
+ betweenMainDim += leadingMainDim;
1288
+ break;
1289
+ case Justify::SpaceAround:
1290
+ // Space on the edges is half of the space between elements
1291
+ leadingMainDim = 0.5f * flexLine.layout.remainingFreeSpace /
1292
+ static_cast<float>(flexLine.itemsInFlow.size());
1293
+ betweenMainDim += leadingMainDim * 2;
1294
+ break;
1295
+ case Justify::FlexStart:
1296
+ break;
1297
+ }
1298
+ }
1299
+
1300
+ flexLine.layout.mainDim = leadingPaddingAndBorderMain + leadingMainDim;
1301
+ flexLine.layout.crossDim = 0;
1302
+
1303
+ float maxAscentForCurrentLine = 0;
1304
+ float maxDescentForCurrentLine = 0;
1305
+ bool isNodeBaselineLayout = isBaselineLayout(node);
1306
+ for (size_t i = startOfLineIndex; i < flexLine.endOfLineIndex; i++) {
1307
+ const auto child = node->getChild(i);
1308
+ const Style& childStyle = child->getStyle();
1309
+ const LayoutResults& childLayout = child->getLayout();
1310
+ if (childStyle.display() == Display::None) {
1311
+ continue;
1312
+ }
1313
+ if (childStyle.positionType() == PositionType::Absolute &&
1314
+ child->isLeadingPositionDefined(mainAxis)) {
1315
+ if (performLayout) {
1316
+ // In case the child is position absolute and has left/top being
1317
+ // defined, we override the position to whatever the user said (and
1318
+ // margin/border).
1319
+ child->setLayoutPosition(
1320
+ child->getLeadingPosition(mainAxis, availableInnerMainDim)
1321
+ .unwrap() +
1322
+ node->getLeadingBorder(mainAxis) +
1323
+ child->getLeadingMargin(mainAxis, availableInnerWidth).unwrap(),
1324
+ leadingEdge(mainAxis));
1325
+ }
1326
+ } else {
1327
+ // Now that we placed the element, we need to update the variables.
1328
+ // We need to do that only for relative elements. Absolute elements do not
1329
+ // take part in that phase.
1330
+ if (childStyle.positionType() != PositionType::Absolute) {
1331
+ if (child->marginLeadingValue(mainAxis).unit == YGUnitAuto) {
1332
+ flexLine.layout.mainDim += flexLine.layout.remainingFreeSpace /
1333
+ static_cast<float>(numberOfAutoMarginsOnCurrentLine);
1334
+ }
1335
+
1336
+ if (performLayout) {
1337
+ child->setLayoutPosition(
1338
+ childLayout.position[leadingEdge(mainAxis)] +
1339
+ flexLine.layout.mainDim,
1340
+ leadingEdge(mainAxis));
1341
+ }
1342
+
1343
+ if (child != flexLine.itemsInFlow.back()) {
1344
+ flexLine.layout.mainDim += betweenMainDim;
1345
+ }
1346
+
1347
+ if (child->marginTrailingValue(mainAxis).unit == YGUnitAuto) {
1348
+ flexLine.layout.mainDim += flexLine.layout.remainingFreeSpace /
1349
+ static_cast<float>(numberOfAutoMarginsOnCurrentLine);
1350
+ }
1351
+ bool canSkipFlex =
1352
+ !performLayout && measureModeCrossDim == MeasureMode::Exactly;
1353
+ if (canSkipFlex) {
1354
+ // If we skipped the flex step, then we can't rely on the measuredDims
1355
+ // because they weren't computed. This means we can't call
1356
+ // dimensionWithMargin.
1357
+ flexLine.layout.mainDim +=
1358
+ child->getMarginForAxis(mainAxis, availableInnerWidth).unwrap() +
1359
+ childLayout.computedFlexBasis.unwrap();
1360
+ flexLine.layout.crossDim = availableInnerCrossDim;
1361
+ } else {
1362
+ // The main dimension is the sum of all the elements dimension plus
1363
+ // the spacing.
1364
+ flexLine.layout.mainDim +=
1365
+ dimensionWithMargin(child, mainAxis, availableInnerWidth);
1366
+
1367
+ if (isNodeBaselineLayout) {
1368
+ // If the child is baseline aligned then the cross dimension is
1369
+ // calculated by adding maxAscent and maxDescent from the baseline.
1370
+ const float ascent = calculateBaseline(child) +
1371
+ child
1372
+ ->getLeadingMargin(
1373
+ FlexDirection::Column, availableInnerWidth)
1374
+ .unwrap();
1375
+ const float descent =
1376
+ child->getLayout().measuredDimension(YGDimensionHeight) +
1377
+ child
1378
+ ->getMarginForAxis(
1379
+ FlexDirection::Column, availableInnerWidth)
1380
+ .unwrap() -
1381
+ ascent;
1382
+
1383
+ maxAscentForCurrentLine =
1384
+ yoga::maxOrDefined(maxAscentForCurrentLine, ascent);
1385
+ maxDescentForCurrentLine =
1386
+ yoga::maxOrDefined(maxDescentForCurrentLine, descent);
1387
+ } else {
1388
+ // The cross dimension is the max of the elements dimension since
1389
+ // there can only be one element in that cross dimension in the case
1390
+ // when the items are not baseline aligned
1391
+ flexLine.layout.crossDim = yoga::maxOrDefined(
1392
+ flexLine.layout.crossDim,
1393
+ dimensionWithMargin(child, crossAxis, availableInnerWidth));
1394
+ }
1395
+ }
1396
+ } else if (performLayout) {
1397
+ child->setLayoutPosition(
1398
+ childLayout.position[leadingEdge(mainAxis)] +
1399
+ node->getLeadingBorder(mainAxis) + leadingMainDim,
1400
+ leadingEdge(mainAxis));
1401
+ }
1402
+ }
1403
+ }
1404
+ flexLine.layout.mainDim += trailingPaddingAndBorderMain;
1405
+
1406
+ if (isNodeBaselineLayout) {
1407
+ flexLine.layout.crossDim =
1408
+ maxAscentForCurrentLine + maxDescentForCurrentLine;
1409
+ }
1410
+ }
1411
+
1412
+ //
1413
+ // This is the main routine that implements a subset of the flexbox layout
1414
+ // algorithm described in the W3C CSS documentation:
1415
+ // https://www.w3.org/TR/CSS3-flexbox/.
1416
+ //
1417
+ // Limitations of this algorithm, compared to the full standard:
1418
+ // * Display property is always assumed to be 'flex' except for Text nodes,
1419
+ // which are assumed to be 'inline-flex'.
1420
+ // * The 'zIndex' property (or any form of z ordering) is not supported. Nodes
1421
+ // are stacked in document order.
1422
+ // * The 'order' property is not supported. The order of flex items is always
1423
+ // defined by document order.
1424
+ // * The 'visibility' property is always assumed to be 'visible'. Values of
1425
+ // 'collapse' and 'hidden' are not supported.
1426
+ // * There is no support for forced breaks.
1427
+ // * It does not support vertical inline directions (top-to-bottom or
1428
+ // bottom-to-top text).
1429
+ //
1430
+ // Deviations from standard:
1431
+ // * Section 4.5 of the spec indicates that all flex items have a default
1432
+ // minimum main size. For text blocks, for example, this is the width of the
1433
+ // widest word. Calculating the minimum width is expensive, so we forego it
1434
+ // and assume a default minimum main size of 0.
1435
+ // * Min/Max sizes in the main axis are not honored when resolving flexible
1436
+ // lengths.
1437
+ // * The spec indicates that the default value for 'flexDirection' is 'row',
1438
+ // but the algorithm below assumes a default of 'column'.
1439
+ //
1440
+ // Input parameters:
1441
+ // - node: current node to be sized and laid out
1442
+ // - availableWidth & availableHeight: available size to be used for sizing
1443
+ // the node or YGUndefined if the size is not available; interpretation
1444
+ // depends on layout flags
1445
+ // - ownerDirection: the inline (text) direction within the owner
1446
+ // (left-to-right or right-to-left)
1447
+ // - widthMeasureMode: indicates the sizing rules for the width (see below
1448
+ // for explanation)
1449
+ // - heightMeasureMode: indicates the sizing rules for the height (see below
1450
+ // for explanation)
1451
+ // - performLayout: specifies whether the caller is interested in just the
1452
+ // dimensions of the node or it requires the entire node and its subtree to
1453
+ // be laid out (with final positions)
1454
+ //
1455
+ // Details:
1456
+ // This routine is called recursively to lay out subtrees of flexbox
1457
+ // elements. It uses the information in node.style, which is treated as a
1458
+ // read-only input. It is responsible for setting the layout.direction and
1459
+ // layout.measuredDimensions fields for the input node as well as the
1460
+ // layout.position and layout.lineIndex fields for its child nodes. The
1461
+ // layout.measuredDimensions field includes any border or padding for the
1462
+ // node but does not include margins.
1463
+ //
1464
+ // The spec describes four different layout modes: "fill available", "max
1465
+ // content", "min content", and "fit content". Of these, we don't use "min
1466
+ // content" because we don't support default minimum main sizes (see above
1467
+ // for details). Each of our measure modes maps to a layout mode from the
1468
+ // spec (https://www.w3.org/TR/CSS3-sizing/#terms):
1469
+ // - MeasureMode::Undefined: max content
1470
+ // - MeasureMode::Exactly: fill available
1471
+ // - MeasureMode::AtMost: fit content
1472
+ //
1473
+ // When calling calculateLayoutImpl and calculateLayoutInternal, if the
1474
+ // caller passes an available size of undefined then it must also pass a
1475
+ // measure mode of MeasureMode::Undefined in that dimension.
1476
+ //
1477
+ static void calculateLayoutImpl(
1478
+ yoga::Node* const node,
1479
+ const float availableWidth,
1480
+ const float availableHeight,
1481
+ const Direction ownerDirection,
1482
+ const MeasureMode widthMeasureMode,
1483
+ const MeasureMode heightMeasureMode,
1484
+ const float ownerWidth,
1485
+ const float ownerHeight,
1486
+ const bool performLayout,
1487
+ LayoutData& layoutMarkerData,
1488
+ const uint32_t depth,
1489
+ const uint32_t generationCount,
1490
+ const LayoutPassReason reason) {
1491
+ yoga::assertFatalWithNode(
1492
+ node,
1493
+ yoga::isUndefined(availableWidth)
1494
+ ? widthMeasureMode == MeasureMode::Undefined
1495
+ : true,
1496
+ "availableWidth is indefinite so widthMeasureMode must be "
1497
+ "MeasureMode::Undefined");
1498
+ yoga::assertFatalWithNode(
1499
+ node,
1500
+ yoga::isUndefined(availableHeight)
1501
+ ? heightMeasureMode == MeasureMode::Undefined
1502
+ : true,
1503
+ "availableHeight is indefinite so heightMeasureMode must be "
1504
+ "MeasureMode::Undefined");
1505
+
1506
+ (performLayout ? layoutMarkerData.layouts : layoutMarkerData.measures) += 1;
1507
+
1508
+ // Set the resolved resolution in the node's layout.
1509
+ const Direction direction = node->resolveDirection(ownerDirection);
1510
+ node->setLayoutDirection(direction);
1511
+
1512
+ const FlexDirection flexRowDirection =
1513
+ resolveDirection(FlexDirection::Row, direction);
1514
+ const FlexDirection flexColumnDirection =
1515
+ resolveDirection(FlexDirection::Column, direction);
1516
+
1517
+ const YGEdge startEdge =
1518
+ direction == Direction::LTR ? YGEdgeLeft : YGEdgeRight;
1519
+ const YGEdge endEdge = direction == Direction::LTR ? YGEdgeRight : YGEdgeLeft;
1520
+
1521
+ const float marginRowLeading =
1522
+ node->getLeadingMargin(flexRowDirection, ownerWidth).unwrap();
1523
+ node->setLayoutMargin(marginRowLeading, startEdge);
1524
+ const float marginRowTrailing =
1525
+ node->getTrailingMargin(flexRowDirection, ownerWidth).unwrap();
1526
+ node->setLayoutMargin(marginRowTrailing, endEdge);
1527
+ const float marginColumnLeading =
1528
+ node->getLeadingMargin(flexColumnDirection, ownerWidth).unwrap();
1529
+ node->setLayoutMargin(marginColumnLeading, YGEdgeTop);
1530
+ const float marginColumnTrailing =
1531
+ node->getTrailingMargin(flexColumnDirection, ownerWidth).unwrap();
1532
+ node->setLayoutMargin(marginColumnTrailing, YGEdgeBottom);
1533
+
1534
+ const float marginAxisRow = marginRowLeading + marginRowTrailing;
1535
+ const float marginAxisColumn = marginColumnLeading + marginColumnTrailing;
1536
+
1537
+ node->setLayoutBorder(node->getLeadingBorder(flexRowDirection), startEdge);
1538
+ node->setLayoutBorder(node->getTrailingBorder(flexRowDirection), endEdge);
1539
+ node->setLayoutBorder(node->getLeadingBorder(flexColumnDirection), YGEdgeTop);
1540
+ node->setLayoutBorder(
1541
+ node->getTrailingBorder(flexColumnDirection), YGEdgeBottom);
1542
+
1543
+ node->setLayoutPadding(
1544
+ node->getLeadingPadding(flexRowDirection, ownerWidth).unwrap(),
1545
+ startEdge);
1546
+ node->setLayoutPadding(
1547
+ node->getTrailingPadding(flexRowDirection, ownerWidth).unwrap(), endEdge);
1548
+ node->setLayoutPadding(
1549
+ node->getLeadingPadding(flexColumnDirection, ownerWidth).unwrap(),
1550
+ YGEdgeTop);
1551
+ node->setLayoutPadding(
1552
+ node->getTrailingPadding(flexColumnDirection, ownerWidth).unwrap(),
1553
+ YGEdgeBottom);
1554
+
1555
+ if (node->hasMeasureFunc()) {
1556
+ measureNodeWithMeasureFunc(
1557
+ node,
1558
+ availableWidth - marginAxisRow,
1559
+ availableHeight - marginAxisColumn,
1560
+ widthMeasureMode,
1561
+ heightMeasureMode,
1562
+ ownerWidth,
1563
+ ownerHeight,
1564
+ layoutMarkerData,
1565
+ reason);
1566
+ return;
1567
+ }
1568
+
1569
+ const auto childCount = node->getChildCount();
1570
+ if (childCount == 0) {
1571
+ measureNodeWithoutChildren(
1572
+ node,
1573
+ availableWidth - marginAxisRow,
1574
+ availableHeight - marginAxisColumn,
1575
+ widthMeasureMode,
1576
+ heightMeasureMode,
1577
+ ownerWidth,
1578
+ ownerHeight);
1579
+ return;
1580
+ }
1581
+
1582
+ // If we're not being asked to perform a full layout we can skip the algorithm
1583
+ // if we already know the size
1584
+ if (!performLayout &&
1585
+ measureNodeWithFixedSize(
1586
+ node,
1587
+ availableWidth - marginAxisRow,
1588
+ availableHeight - marginAxisColumn,
1589
+ widthMeasureMode,
1590
+ heightMeasureMode,
1591
+ ownerWidth,
1592
+ ownerHeight)) {
1593
+ return;
1594
+ }
1595
+
1596
+ // At this point we know we're going to perform work. Ensure that each child
1597
+ // has a mutable copy.
1598
+ node->cloneChildrenIfNeeded();
1599
+ // Reset layout flags, as they could have changed.
1600
+ node->setLayoutHadOverflow(false);
1601
+
1602
+ // STEP 1: CALCULATE VALUES FOR REMAINDER OF ALGORITHM
1603
+ const FlexDirection mainAxis =
1604
+ resolveDirection(node->getStyle().flexDirection(), direction);
1605
+ const FlexDirection crossAxis = resolveCrossDirection(mainAxis, direction);
1606
+ const bool isMainAxisRow = isRow(mainAxis);
1607
+ const bool isNodeFlexWrap = node->getStyle().flexWrap() != Wrap::NoWrap;
1608
+
1609
+ const float mainAxisownerSize = isMainAxisRow ? ownerWidth : ownerHeight;
1610
+ const float crossAxisownerSize = isMainAxisRow ? ownerHeight : ownerWidth;
1611
+
1612
+ const float paddingAndBorderAxisMain =
1613
+ paddingAndBorderForAxis(node, mainAxis, ownerWidth);
1614
+ const float leadingPaddingAndBorderCross =
1615
+ node->getLeadingPaddingAndBorder(crossAxis, ownerWidth).unwrap();
1616
+ const float trailingPaddingAndBorderCross =
1617
+ node->getTrailingPaddingAndBorder(crossAxis, ownerWidth).unwrap();
1618
+ const float paddingAndBorderAxisCross =
1619
+ leadingPaddingAndBorderCross + trailingPaddingAndBorderCross;
1620
+
1621
+ MeasureMode measureModeMainDim =
1622
+ isMainAxisRow ? widthMeasureMode : heightMeasureMode;
1623
+ MeasureMode measureModeCrossDim =
1624
+ isMainAxisRow ? heightMeasureMode : widthMeasureMode;
1625
+
1626
+ const float paddingAndBorderAxisRow =
1627
+ isMainAxisRow ? paddingAndBorderAxisMain : paddingAndBorderAxisCross;
1628
+ const float paddingAndBorderAxisColumn =
1629
+ isMainAxisRow ? paddingAndBorderAxisCross : paddingAndBorderAxisMain;
1630
+
1631
+ // STEP 2: DETERMINE AVAILABLE SIZE IN MAIN AND CROSS DIRECTIONS
1632
+
1633
+ float availableInnerWidth = calculateAvailableInnerDimension(
1634
+ node,
1635
+ YGDimensionWidth,
1636
+ availableWidth - marginAxisRow,
1637
+ paddingAndBorderAxisRow,
1638
+ ownerWidth);
1639
+ float availableInnerHeight = calculateAvailableInnerDimension(
1640
+ node,
1641
+ YGDimensionHeight,
1642
+ availableHeight - marginAxisColumn,
1643
+ paddingAndBorderAxisColumn,
1644
+ ownerHeight);
1645
+
1646
+ float availableInnerMainDim =
1647
+ isMainAxisRow ? availableInnerWidth : availableInnerHeight;
1648
+ const float availableInnerCrossDim =
1649
+ isMainAxisRow ? availableInnerHeight : availableInnerWidth;
1650
+
1651
+ // STEP 3: DETERMINE FLEX BASIS FOR EACH ITEM
1652
+
1653
+ // Computed basis + margins + gap
1654
+ float totalMainDim = 0;
1655
+ totalMainDim += computeFlexBasisForChildren(
1656
+ node,
1657
+ availableInnerWidth,
1658
+ availableInnerHeight,
1659
+ widthMeasureMode,
1660
+ heightMeasureMode,
1661
+ direction,
1662
+ mainAxis,
1663
+ performLayout,
1664
+ layoutMarkerData,
1665
+ depth,
1666
+ generationCount);
1667
+
1668
+ if (childCount > 1) {
1669
+ totalMainDim +=
1670
+ node->getGapForAxis(mainAxis, availableInnerCrossDim).unwrap() *
1671
+ static_cast<float>(childCount - 1);
1672
+ }
1673
+
1674
+ const bool mainAxisOverflows =
1675
+ (measureModeMainDim != MeasureMode::Undefined) &&
1676
+ totalMainDim > availableInnerMainDim;
1677
+
1678
+ if (isNodeFlexWrap && mainAxisOverflows &&
1679
+ measureModeMainDim == MeasureMode::AtMost) {
1680
+ measureModeMainDim = MeasureMode::Exactly;
1681
+ }
1682
+ // STEP 4: COLLECT FLEX ITEMS INTO FLEX LINES
1683
+
1684
+ // Indexes of children that represent the first and last items in the line.
1685
+ size_t startOfLineIndex = 0;
1686
+ size_t endOfLineIndex = 0;
1687
+
1688
+ // Number of lines.
1689
+ size_t lineCount = 0;
1690
+
1691
+ // Accumulated cross dimensions of all lines so far.
1692
+ float totalLineCrossDim = 0;
1693
+
1694
+ const float crossAxisGap =
1695
+ node->getGapForAxis(crossAxis, availableInnerCrossDim).unwrap();
1696
+
1697
+ // Max main dimension of all the lines.
1698
+ float maxLineMainDim = 0;
1699
+ for (; endOfLineIndex < childCount;
1700
+ lineCount++, startOfLineIndex = endOfLineIndex) {
1701
+ auto flexLine = calculateFlexLine(
1702
+ node,
1703
+ ownerDirection,
1704
+ mainAxisownerSize,
1705
+ availableInnerWidth,
1706
+ availableInnerMainDim,
1707
+ startOfLineIndex,
1708
+ lineCount);
1709
+
1710
+ endOfLineIndex = flexLine.endOfLineIndex;
1711
+
1712
+ // If we don't need to measure the cross axis, we can skip the entire flex
1713
+ // step.
1714
+ const bool canSkipFlex =
1715
+ !performLayout && measureModeCrossDim == MeasureMode::Exactly;
1716
+
1717
+ // STEP 5: RESOLVING FLEXIBLE LENGTHS ON MAIN AXIS
1718
+ // Calculate the remaining available space that needs to be allocated. If
1719
+ // the main dimension size isn't known, it is computed based on the line
1720
+ // length, so there's no more space left to distribute.
1721
+
1722
+ bool sizeBasedOnContent = false;
1723
+ // If we don't measure with exact main dimension we want to ensure we don't
1724
+ // violate min and max
1725
+ if (measureModeMainDim != MeasureMode::Exactly) {
1726
+ const auto& style = node->getStyle();
1727
+ const float minInnerWidth =
1728
+ yoga::resolveValue(style.minDimension(YGDimensionWidth), ownerWidth)
1729
+ .unwrap() -
1730
+ paddingAndBorderAxisRow;
1731
+ const float maxInnerWidth =
1732
+ yoga::resolveValue(style.maxDimension(YGDimensionWidth), ownerWidth)
1733
+ .unwrap() -
1734
+ paddingAndBorderAxisRow;
1735
+ const float minInnerHeight =
1736
+ yoga::resolveValue(style.minDimension(YGDimensionHeight), ownerHeight)
1737
+ .unwrap() -
1738
+ paddingAndBorderAxisColumn;
1739
+ const float maxInnerHeight =
1740
+ yoga::resolveValue(style.maxDimension(YGDimensionHeight), ownerHeight)
1741
+ .unwrap() -
1742
+ paddingAndBorderAxisColumn;
1743
+
1744
+ const float minInnerMainDim =
1745
+ isMainAxisRow ? minInnerWidth : minInnerHeight;
1746
+ const float maxInnerMainDim =
1747
+ isMainAxisRow ? maxInnerWidth : maxInnerHeight;
1748
+
1749
+ if (!yoga::isUndefined(minInnerMainDim) &&
1750
+ flexLine.sizeConsumed < minInnerMainDim) {
1751
+ availableInnerMainDim = minInnerMainDim;
1752
+ } else if (
1753
+ !yoga::isUndefined(maxInnerMainDim) &&
1754
+ flexLine.sizeConsumed > maxInnerMainDim) {
1755
+ availableInnerMainDim = maxInnerMainDim;
1756
+ } else {
1757
+ bool useLegacyStretchBehaviour =
1758
+ node->hasErrata(Errata::StretchFlexBasis);
1759
+
1760
+ if (!useLegacyStretchBehaviour &&
1761
+ ((!yoga::isUndefined(flexLine.layout.totalFlexGrowFactors) &&
1762
+ flexLine.layout.totalFlexGrowFactors == 0) ||
1763
+ (!yoga::isUndefined(node->resolveFlexGrow()) &&
1764
+ node->resolveFlexGrow() == 0))) {
1765
+ // If we don't have any children to flex or we can't flex the node
1766
+ // itself, space we've used is all space we need. Root node also
1767
+ // should be shrunk to minimum
1768
+ availableInnerMainDim = flexLine.sizeConsumed;
1769
+ }
1770
+
1771
+ sizeBasedOnContent = !useLegacyStretchBehaviour;
1772
+ }
1773
+ }
1774
+
1775
+ if (!sizeBasedOnContent && !yoga::isUndefined(availableInnerMainDim)) {
1776
+ flexLine.layout.remainingFreeSpace =
1777
+ availableInnerMainDim - flexLine.sizeConsumed;
1778
+ } else if (flexLine.sizeConsumed < 0) {
1779
+ // availableInnerMainDim is indefinite which means the node is being sized
1780
+ // based on its content. sizeConsumed is negative which means
1781
+ // the node will allocate 0 points for its content. Consequently,
1782
+ // remainingFreeSpace is 0 - sizeConsumed.
1783
+ flexLine.layout.remainingFreeSpace = -flexLine.sizeConsumed;
1784
+ }
1785
+
1786
+ if (!canSkipFlex) {
1787
+ resolveFlexibleLength(
1788
+ node,
1789
+ flexLine,
1790
+ mainAxis,
1791
+ crossAxis,
1792
+ mainAxisownerSize,
1793
+ availableInnerMainDim,
1794
+ availableInnerCrossDim,
1795
+ availableInnerWidth,
1796
+ availableInnerHeight,
1797
+ mainAxisOverflows,
1798
+ measureModeCrossDim,
1799
+ performLayout,
1800
+ layoutMarkerData,
1801
+ depth,
1802
+ generationCount);
1803
+ }
1804
+
1805
+ node->setLayoutHadOverflow(
1806
+ node->getLayout().hadOverflow() |
1807
+ (flexLine.layout.remainingFreeSpace < 0));
1808
+
1809
+ // STEP 6: MAIN-AXIS JUSTIFICATION & CROSS-AXIS SIZE DETERMINATION
1810
+
1811
+ // At this point, all the children have their dimensions set in the main
1812
+ // axis. Their dimensions are also set in the cross axis with the exception
1813
+ // of items that are aligned "stretch". We need to compute these stretch
1814
+ // values and set the final positions.
1815
+
1816
+ justifyMainAxis(
1817
+ node,
1818
+ flexLine,
1819
+ startOfLineIndex,
1820
+ mainAxis,
1821
+ crossAxis,
1822
+ measureModeMainDim,
1823
+ measureModeCrossDim,
1824
+ mainAxisownerSize,
1825
+ ownerWidth,
1826
+ availableInnerMainDim,
1827
+ availableInnerCrossDim,
1828
+ availableInnerWidth,
1829
+ performLayout);
1830
+
1831
+ float containerCrossAxis = availableInnerCrossDim;
1832
+ if (measureModeCrossDim == MeasureMode::Undefined ||
1833
+ measureModeCrossDim == MeasureMode::AtMost) {
1834
+ // Compute the cross axis from the max cross dimension of the children.
1835
+ containerCrossAxis =
1836
+ boundAxis(
1837
+ node,
1838
+ crossAxis,
1839
+ flexLine.layout.crossDim + paddingAndBorderAxisCross,
1840
+ crossAxisownerSize,
1841
+ ownerWidth) -
1842
+ paddingAndBorderAxisCross;
1843
+ }
1844
+
1845
+ // If there's no flex wrap, the cross dimension is defined by the container.
1846
+ if (!isNodeFlexWrap && measureModeCrossDim == MeasureMode::Exactly) {
1847
+ flexLine.layout.crossDim = availableInnerCrossDim;
1848
+ }
1849
+
1850
+ // Clamp to the min/max size specified on the container.
1851
+ flexLine.layout.crossDim =
1852
+ boundAxis(
1853
+ node,
1854
+ crossAxis,
1855
+ flexLine.layout.crossDim + paddingAndBorderAxisCross,
1856
+ crossAxisownerSize,
1857
+ ownerWidth) -
1858
+ paddingAndBorderAxisCross;
1859
+
1860
+ // STEP 7: CROSS-AXIS ALIGNMENT
1861
+ // We can skip child alignment if we're just measuring the container.
1862
+ if (performLayout) {
1863
+ for (size_t i = startOfLineIndex; i < endOfLineIndex; i++) {
1864
+ const auto child = node->getChild(i);
1865
+ if (child->getStyle().display() == Display::None) {
1866
+ continue;
1867
+ }
1868
+ if (child->getStyle().positionType() == PositionType::Absolute) {
1869
+ // If the child is absolutely positioned and has a
1870
+ // top/left/bottom/right set, override all the previously computed
1871
+ // positions to set it correctly.
1872
+ const bool isChildLeadingPosDefined =
1873
+ child->isLeadingPositionDefined(crossAxis);
1874
+ if (isChildLeadingPosDefined) {
1875
+ child->setLayoutPosition(
1876
+ child->getLeadingPosition(crossAxis, availableInnerCrossDim)
1877
+ .unwrap() +
1878
+ node->getLeadingBorder(crossAxis) +
1879
+ child->getLeadingMargin(crossAxis, availableInnerWidth)
1880
+ .unwrap(),
1881
+ leadingEdge(crossAxis));
1882
+ }
1883
+ // If leading position is not defined or calculations result in Nan,
1884
+ // default to border + margin
1885
+ if (!isChildLeadingPosDefined ||
1886
+ yoga::isUndefined(
1887
+ child->getLayout().position[leadingEdge(crossAxis)])) {
1888
+ child->setLayoutPosition(
1889
+ node->getLeadingBorder(crossAxis) +
1890
+ child->getLeadingMargin(crossAxis, availableInnerWidth)
1891
+ .unwrap(),
1892
+ leadingEdge(crossAxis));
1893
+ }
1894
+ } else {
1895
+ float leadingCrossDim = leadingPaddingAndBorderCross;
1896
+
1897
+ // For a relative children, we're either using alignItems (owner) or
1898
+ // alignSelf (child) in order to determine the position in the cross
1899
+ // axis
1900
+ const Align alignItem = resolveChildAlignment(node, child);
1901
+
1902
+ // If the child uses align stretch, we need to lay it out one more
1903
+ // time, this time forcing the cross-axis size to be the computed
1904
+ // cross size for the current line.
1905
+ if (alignItem == Align::Stretch &&
1906
+ child->marginLeadingValue(crossAxis).unit != YGUnitAuto &&
1907
+ child->marginTrailingValue(crossAxis).unit != YGUnitAuto) {
1908
+ // If the child defines a definite size for its cross axis, there's
1909
+ // no need to stretch.
1910
+ if (!styleDefinesDimension(
1911
+ child, crossAxis, availableInnerCrossDim)) {
1912
+ float childMainSize =
1913
+ child->getLayout().measuredDimension(dimension(mainAxis));
1914
+ const auto& childStyle = child->getStyle();
1915
+ float childCrossSize = !childStyle.aspectRatio().isUndefined()
1916
+ ? child->getMarginForAxis(crossAxis, availableInnerWidth)
1917
+ .unwrap() +
1918
+ (isMainAxisRow
1919
+ ? childMainSize / childStyle.aspectRatio().unwrap()
1920
+ : childMainSize * childStyle.aspectRatio().unwrap())
1921
+ : flexLine.layout.crossDim;
1922
+
1923
+ childMainSize +=
1924
+ child->getMarginForAxis(mainAxis, availableInnerWidth)
1925
+ .unwrap();
1926
+
1927
+ MeasureMode childMainMeasureMode = MeasureMode::Exactly;
1928
+ MeasureMode childCrossMeasureMode = MeasureMode::Exactly;
1929
+ constrainMaxSizeForMode(
1930
+ child,
1931
+ mainAxis,
1932
+ availableInnerMainDim,
1933
+ availableInnerWidth,
1934
+ &childMainMeasureMode,
1935
+ &childMainSize);
1936
+ constrainMaxSizeForMode(
1937
+ child,
1938
+ crossAxis,
1939
+ availableInnerCrossDim,
1940
+ availableInnerWidth,
1941
+ &childCrossMeasureMode,
1942
+ &childCrossSize);
1943
+
1944
+ const float childWidth =
1945
+ isMainAxisRow ? childMainSize : childCrossSize;
1946
+ const float childHeight =
1947
+ !isMainAxisRow ? childMainSize : childCrossSize;
1948
+
1949
+ auto alignContent = node->getStyle().alignContent();
1950
+ auto crossAxisDoesNotGrow =
1951
+ alignContent != Align::Stretch && isNodeFlexWrap;
1952
+ const MeasureMode childWidthMeasureMode =
1953
+ yoga::isUndefined(childWidth) ||
1954
+ (!isMainAxisRow && crossAxisDoesNotGrow)
1955
+ ? MeasureMode::Undefined
1956
+ : MeasureMode::Exactly;
1957
+ const MeasureMode childHeightMeasureMode =
1958
+ yoga::isUndefined(childHeight) ||
1959
+ (isMainAxisRow && crossAxisDoesNotGrow)
1960
+ ? MeasureMode::Undefined
1961
+ : MeasureMode::Exactly;
1962
+
1963
+ calculateLayoutInternal(
1964
+ child,
1965
+ childWidth,
1966
+ childHeight,
1967
+ direction,
1968
+ childWidthMeasureMode,
1969
+ childHeightMeasureMode,
1970
+ availableInnerWidth,
1971
+ availableInnerHeight,
1972
+ true,
1973
+ LayoutPassReason::kStretch,
1974
+ layoutMarkerData,
1975
+ depth,
1976
+ generationCount);
1977
+ }
1978
+ } else {
1979
+ const float remainingCrossDim = containerCrossAxis -
1980
+ dimensionWithMargin(child, crossAxis, availableInnerWidth);
1981
+
1982
+ if (child->marginLeadingValue(crossAxis).unit == YGUnitAuto &&
1983
+ child->marginTrailingValue(crossAxis).unit == YGUnitAuto) {
1984
+ leadingCrossDim +=
1985
+ yoga::maxOrDefined(0.0f, remainingCrossDim / 2);
1986
+ } else if (
1987
+ child->marginTrailingValue(crossAxis).unit == YGUnitAuto) {
1988
+ // No-Op
1989
+ } else if (
1990
+ child->marginLeadingValue(crossAxis).unit == YGUnitAuto) {
1991
+ leadingCrossDim += yoga::maxOrDefined(0.0f, remainingCrossDim);
1992
+ } else if (alignItem == Align::FlexStart) {
1993
+ // No-Op
1994
+ } else if (alignItem == Align::Center) {
1995
+ leadingCrossDim += remainingCrossDim / 2;
1996
+ } else {
1997
+ leadingCrossDim += remainingCrossDim;
1998
+ }
1999
+ }
2000
+ // And we apply the position
2001
+ child->setLayoutPosition(
2002
+ child->getLayout().position[leadingEdge(crossAxis)] +
2003
+ totalLineCrossDim + leadingCrossDim,
2004
+ leadingEdge(crossAxis));
2005
+ }
2006
+ }
2007
+ }
2008
+
2009
+ const float appliedCrossGap = lineCount != 0 ? crossAxisGap : 0.0f;
2010
+ totalLineCrossDim += flexLine.layout.crossDim + appliedCrossGap;
2011
+ maxLineMainDim =
2012
+ yoga::maxOrDefined(maxLineMainDim, flexLine.layout.mainDim);
2013
+ }
2014
+
2015
+ // STEP 8: MULTI-LINE CONTENT ALIGNMENT
2016
+ // currentLead stores the size of the cross dim
2017
+ if (performLayout && (isNodeFlexWrap || isBaselineLayout(node))) {
2018
+ float crossDimLead = 0;
2019
+ float currentLead = leadingPaddingAndBorderCross;
2020
+ if (!yoga::isUndefined(availableInnerCrossDim)) {
2021
+ const float remainingAlignContentDim =
2022
+ availableInnerCrossDim - totalLineCrossDim;
2023
+ switch (node->getStyle().alignContent()) {
2024
+ case Align::FlexEnd:
2025
+ currentLead += remainingAlignContentDim;
2026
+ break;
2027
+ case Align::Center:
2028
+ currentLead += remainingAlignContentDim / 2;
2029
+ break;
2030
+ case Align::Stretch:
2031
+ if (availableInnerCrossDim > totalLineCrossDim) {
2032
+ crossDimLead =
2033
+ remainingAlignContentDim / static_cast<float>(lineCount);
2034
+ }
2035
+ break;
2036
+ case Align::SpaceAround:
2037
+ if (availableInnerCrossDim > totalLineCrossDim) {
2038
+ currentLead +=
2039
+ remainingAlignContentDim / (2 * static_cast<float>(lineCount));
2040
+ if (lineCount > 1) {
2041
+ crossDimLead =
2042
+ remainingAlignContentDim / static_cast<float>(lineCount);
2043
+ }
2044
+ } else {
2045
+ currentLead += remainingAlignContentDim / 2;
2046
+ }
2047
+ break;
2048
+ case Align::SpaceBetween:
2049
+ if (availableInnerCrossDim > totalLineCrossDim && lineCount > 1) {
2050
+ crossDimLead =
2051
+ remainingAlignContentDim / static_cast<float>(lineCount - 1);
2052
+ }
2053
+ break;
2054
+ case Align::Auto:
2055
+ case Align::FlexStart:
2056
+ case Align::Baseline:
2057
+ break;
2058
+ }
2059
+ }
2060
+ size_t endIndex = 0;
2061
+ for (size_t i = 0; i < lineCount; i++) {
2062
+ const size_t startIndex = endIndex;
2063
+ size_t ii;
2064
+
2065
+ // compute the line's height and find the endIndex
2066
+ float lineHeight = 0;
2067
+ float maxAscentForCurrentLine = 0;
2068
+ float maxDescentForCurrentLine = 0;
2069
+ for (ii = startIndex; ii < childCount; ii++) {
2070
+ const auto child = node->getChild(ii);
2071
+ if (child->getStyle().display() == Display::None) {
2072
+ continue;
2073
+ }
2074
+ if (child->getStyle().positionType() != PositionType::Absolute) {
2075
+ if (child->getLineIndex() != i) {
2076
+ break;
2077
+ }
2078
+ if (isLayoutDimensionDefined(child, crossAxis)) {
2079
+ lineHeight = yoga::maxOrDefined(
2080
+ lineHeight,
2081
+ child->getLayout().measuredDimension(dimension(crossAxis)) +
2082
+ child->getMarginForAxis(crossAxis, availableInnerWidth)
2083
+ .unwrap());
2084
+ }
2085
+ if (resolveChildAlignment(node, child) == Align::Baseline) {
2086
+ const float ascent = calculateBaseline(child) +
2087
+ child
2088
+ ->getLeadingMargin(
2089
+ FlexDirection::Column, availableInnerWidth)
2090
+ .unwrap();
2091
+ const float descent =
2092
+ child->getLayout().measuredDimension(YGDimensionHeight) +
2093
+ child
2094
+ ->getMarginForAxis(
2095
+ FlexDirection::Column, availableInnerWidth)
2096
+ .unwrap() -
2097
+ ascent;
2098
+ maxAscentForCurrentLine =
2099
+ yoga::maxOrDefined(maxAscentForCurrentLine, ascent);
2100
+ maxDescentForCurrentLine =
2101
+ yoga::maxOrDefined(maxDescentForCurrentLine, descent);
2102
+ lineHeight = yoga::maxOrDefined(
2103
+ lineHeight, maxAscentForCurrentLine + maxDescentForCurrentLine);
2104
+ }
2105
+ }
2106
+ }
2107
+ endIndex = ii;
2108
+ lineHeight += crossDimLead;
2109
+ currentLead += i != 0 ? crossAxisGap : 0;
2110
+
2111
+ if (performLayout) {
2112
+ for (ii = startIndex; ii < endIndex; ii++) {
2113
+ const auto child = node->getChild(ii);
2114
+ if (child->getStyle().display() == Display::None) {
2115
+ continue;
2116
+ }
2117
+ if (child->getStyle().positionType() != PositionType::Absolute) {
2118
+ switch (resolveChildAlignment(node, child)) {
2119
+ case Align::FlexStart: {
2120
+ child->setLayoutPosition(
2121
+ currentLead +
2122
+ child->getLeadingMargin(crossAxis, availableInnerWidth)
2123
+ .unwrap(),
2124
+ leadingEdge(crossAxis));
2125
+ break;
2126
+ }
2127
+ case Align::FlexEnd: {
2128
+ child->setLayoutPosition(
2129
+ currentLead + lineHeight -
2130
+ child->getTrailingMargin(crossAxis, availableInnerWidth)
2131
+ .unwrap() -
2132
+ child->getLayout().measuredDimension(
2133
+ dimension(crossAxis)),
2134
+ leadingEdge(crossAxis));
2135
+ break;
2136
+ }
2137
+ case Align::Center: {
2138
+ float childHeight =
2139
+ child->getLayout().measuredDimension(dimension(crossAxis));
2140
+
2141
+ child->setLayoutPosition(
2142
+ currentLead + (lineHeight - childHeight) / 2,
2143
+ leadingEdge(crossAxis));
2144
+ break;
2145
+ }
2146
+ case Align::Stretch: {
2147
+ child->setLayoutPosition(
2148
+ currentLead +
2149
+ child->getLeadingMargin(crossAxis, availableInnerWidth)
2150
+ .unwrap(),
2151
+ leadingEdge(crossAxis));
2152
+
2153
+ // Remeasure child with the line height as it as been only
2154
+ // measured with the owners height yet.
2155
+ if (!styleDefinesDimension(
2156
+ child, crossAxis, availableInnerCrossDim)) {
2157
+ const float childWidth = isMainAxisRow
2158
+ ? (child->getLayout().measuredDimension(
2159
+ YGDimensionWidth) +
2160
+ child->getMarginForAxis(mainAxis, availableInnerWidth)
2161
+ .unwrap())
2162
+ : lineHeight;
2163
+
2164
+ const float childHeight = !isMainAxisRow
2165
+ ? (child->getLayout().measuredDimension(
2166
+ YGDimensionHeight) +
2167
+ child->getMarginForAxis(crossAxis, availableInnerWidth)
2168
+ .unwrap())
2169
+ : lineHeight;
2170
+
2171
+ if (!(yoga::inexactEquals(
2172
+ childWidth,
2173
+ child->getLayout().measuredDimension(
2174
+ YGDimensionWidth)) &&
2175
+ yoga::inexactEquals(
2176
+ childHeight,
2177
+ child->getLayout().measuredDimension(
2178
+ YGDimensionHeight)))) {
2179
+ calculateLayoutInternal(
2180
+ child,
2181
+ childWidth,
2182
+ childHeight,
2183
+ direction,
2184
+ MeasureMode::Exactly,
2185
+ MeasureMode::Exactly,
2186
+ availableInnerWidth,
2187
+ availableInnerHeight,
2188
+ true,
2189
+ LayoutPassReason::kMultilineStretch,
2190
+ layoutMarkerData,
2191
+ depth,
2192
+ generationCount);
2193
+ }
2194
+ }
2195
+ break;
2196
+ }
2197
+ case Align::Baseline: {
2198
+ child->setLayoutPosition(
2199
+ currentLead + maxAscentForCurrentLine -
2200
+ calculateBaseline(child) +
2201
+ child
2202
+ ->getLeadingPosition(
2203
+ FlexDirection::Column, availableInnerCrossDim)
2204
+ .unwrap(),
2205
+ YGEdgeTop);
2206
+
2207
+ break;
2208
+ }
2209
+ case Align::Auto:
2210
+ case Align::SpaceBetween:
2211
+ case Align::SpaceAround:
2212
+ break;
2213
+ }
2214
+ }
2215
+ }
2216
+ }
2217
+ currentLead += lineHeight;
2218
+ }
2219
+ }
2220
+
2221
+ // STEP 9: COMPUTING FINAL DIMENSIONS
2222
+
2223
+ node->setLayoutMeasuredDimension(
2224
+ boundAxis(
2225
+ node,
2226
+ FlexDirection::Row,
2227
+ availableWidth - marginAxisRow,
2228
+ ownerWidth,
2229
+ ownerWidth),
2230
+ YGDimensionWidth);
2231
+
2232
+ node->setLayoutMeasuredDimension(
2233
+ boundAxis(
2234
+ node,
2235
+ FlexDirection::Column,
2236
+ availableHeight - marginAxisColumn,
2237
+ ownerHeight,
2238
+ ownerWidth),
2239
+ YGDimensionHeight);
2240
+
2241
+ // If the user didn't specify a width or height for the node, set the
2242
+ // dimensions based on the children.
2243
+ if (measureModeMainDim == MeasureMode::Undefined ||
2244
+ (node->getStyle().overflow() != Overflow::Scroll &&
2245
+ measureModeMainDim == MeasureMode::AtMost)) {
2246
+ // Clamp the size to the min/max size, if specified, and make sure it
2247
+ // doesn't go below the padding and border amount.
2248
+ node->setLayoutMeasuredDimension(
2249
+ boundAxis(
2250
+ node, mainAxis, maxLineMainDim, mainAxisownerSize, ownerWidth),
2251
+ dimension(mainAxis));
2252
+
2253
+ } else if (
2254
+ measureModeMainDim == MeasureMode::AtMost &&
2255
+ node->getStyle().overflow() == Overflow::Scroll) {
2256
+ node->setLayoutMeasuredDimension(
2257
+ yoga::maxOrDefined(
2258
+ yoga::minOrDefined(
2259
+ availableInnerMainDim + paddingAndBorderAxisMain,
2260
+ boundAxisWithinMinAndMax(
2261
+ node,
2262
+ mainAxis,
2263
+ FloatOptional{maxLineMainDim},
2264
+ mainAxisownerSize)
2265
+ .unwrap()),
2266
+ paddingAndBorderAxisMain),
2267
+ dimension(mainAxis));
2268
+ }
2269
+
2270
+ if (measureModeCrossDim == MeasureMode::Undefined ||
2271
+ (node->getStyle().overflow() != Overflow::Scroll &&
2272
+ measureModeCrossDim == MeasureMode::AtMost)) {
2273
+ // Clamp the size to the min/max size, if specified, and make sure it
2274
+ // doesn't go below the padding and border amount.
2275
+ node->setLayoutMeasuredDimension(
2276
+ boundAxis(
2277
+ node,
2278
+ crossAxis,
2279
+ totalLineCrossDim + paddingAndBorderAxisCross,
2280
+ crossAxisownerSize,
2281
+ ownerWidth),
2282
+ dimension(crossAxis));
2283
+
2284
+ } else if (
2285
+ measureModeCrossDim == MeasureMode::AtMost &&
2286
+ node->getStyle().overflow() == Overflow::Scroll) {
2287
+ node->setLayoutMeasuredDimension(
2288
+ yoga::maxOrDefined(
2289
+ yoga::minOrDefined(
2290
+ availableInnerCrossDim + paddingAndBorderAxisCross,
2291
+ boundAxisWithinMinAndMax(
2292
+ node,
2293
+ crossAxis,
2294
+ FloatOptional{
2295
+ totalLineCrossDim + paddingAndBorderAxisCross},
2296
+ crossAxisownerSize)
2297
+ .unwrap()),
2298
+ paddingAndBorderAxisCross),
2299
+ dimension(crossAxis));
2300
+ }
2301
+
2302
+ // As we only wrapped in normal direction yet, we need to reverse the
2303
+ // positions on wrap-reverse.
2304
+ if (performLayout && node->getStyle().flexWrap() == Wrap::WrapReverse) {
2305
+ for (size_t i = 0; i < childCount; i++) {
2306
+ const auto child = node->getChild(i);
2307
+ if (child->getStyle().positionType() != PositionType::Absolute) {
2308
+ child->setLayoutPosition(
2309
+ node->getLayout().measuredDimension(dimension(crossAxis)) -
2310
+ child->getLayout().position[leadingEdge(crossAxis)] -
2311
+ child->getLayout().measuredDimension(dimension(crossAxis)),
2312
+ leadingEdge(crossAxis));
2313
+ }
2314
+ }
2315
+ }
2316
+
2317
+ if (performLayout) {
2318
+ // STEP 10: SIZING AND POSITIONING ABSOLUTE CHILDREN
2319
+ for (auto child : node->getChildren()) {
2320
+ if (child->getStyle().display() == Display::None ||
2321
+ child->getStyle().positionType() != PositionType::Absolute) {
2322
+ continue;
2323
+ }
2324
+ const bool absolutePercentageAgainstPaddingEdge =
2325
+ node->getConfig()->isExperimentalFeatureEnabled(
2326
+ ExperimentalFeature::AbsolutePercentageAgainstPaddingEdge);
2327
+
2328
+ layoutAbsoluteChild(
2329
+ node,
2330
+ child,
2331
+ absolutePercentageAgainstPaddingEdge
2332
+ ? node->getLayout().measuredDimension(YGDimensionWidth)
2333
+ : availableInnerWidth,
2334
+ isMainAxisRow ? measureModeMainDim : measureModeCrossDim,
2335
+ absolutePercentageAgainstPaddingEdge
2336
+ ? node->getLayout().measuredDimension(YGDimensionHeight)
2337
+ : availableInnerHeight,
2338
+ direction,
2339
+ layoutMarkerData,
2340
+ depth,
2341
+ generationCount);
2342
+ }
2343
+
2344
+ // STEP 11: SETTING TRAILING POSITIONS FOR CHILDREN
2345
+ const bool needsMainTrailingPos = mainAxis == FlexDirection::RowReverse ||
2346
+ mainAxis == FlexDirection::ColumnReverse;
2347
+ const bool needsCrossTrailingPos = crossAxis == FlexDirection::RowReverse ||
2348
+ crossAxis == FlexDirection::ColumnReverse;
2349
+
2350
+ // Set trailing position if necessary.
2351
+ if (needsMainTrailingPos || needsCrossTrailingPos) {
2352
+ for (size_t i = 0; i < childCount; i++) {
2353
+ const auto child = node->getChild(i);
2354
+ if (child->getStyle().display() == Display::None) {
2355
+ continue;
2356
+ }
2357
+ if (needsMainTrailingPos) {
2358
+ setChildTrailingPosition(node, child, mainAxis);
2359
+ }
2360
+
2361
+ if (needsCrossTrailingPos) {
2362
+ setChildTrailingPosition(node, child, crossAxis);
2363
+ }
2364
+ }
2365
+ }
2366
+ }
2367
+ }
2368
+
2369
+ bool gPrintChanges = false;
2370
+ bool gPrintSkips = false;
2371
+
2372
+ static const char* spacer =
2373
+ " ";
2374
+
2375
+ static const char* spacerWithLength(const unsigned long level) {
2376
+ const size_t spacerLen = strlen(spacer);
2377
+ if (level > spacerLen) {
2378
+ return &spacer[0];
2379
+ } else {
2380
+ return &spacer[spacerLen - level];
2381
+ }
2382
+ }
2383
+
2384
+ static const char* measureModeName(
2385
+ const MeasureMode mode,
2386
+ const bool performLayout) {
2387
+ switch (mode) {
2388
+ case MeasureMode::Undefined:
2389
+ return performLayout ? "LAY_UNDEFINED" : "UNDEFINED";
2390
+ case MeasureMode::Exactly:
2391
+ return performLayout ? "LAY_EXACTLY" : "EXACTLY";
2392
+ case MeasureMode::AtMost:
2393
+ return performLayout ? "LAY_AT_MOST" : "AT_MOST";
2394
+ }
2395
+ return "";
2396
+ }
2397
+
2398
+ //
2399
+ // This is a wrapper around the calculateLayoutImpl function. It determines
2400
+ // whether the layout request is redundant and can be skipped.
2401
+ //
2402
+ // Parameters:
2403
+ // Input parameters are the same as calculateLayoutImpl (see above)
2404
+ // Return parameter is true if layout was performed, false if skipped
2405
+ //
2406
+ bool calculateLayoutInternal(
2407
+ yoga::Node* const node,
2408
+ const float availableWidth,
2409
+ const float availableHeight,
2410
+ const Direction ownerDirection,
2411
+ const MeasureMode widthMeasureMode,
2412
+ const MeasureMode heightMeasureMode,
2413
+ const float ownerWidth,
2414
+ const float ownerHeight,
2415
+ const bool performLayout,
2416
+ const LayoutPassReason reason,
2417
+ LayoutData& layoutMarkerData,
2418
+ uint32_t depth,
2419
+ const uint32_t generationCount) {
2420
+ LayoutResults* layout = &node->getLayout();
2421
+
2422
+ depth++;
2423
+
2424
+ const bool needToVisitNode =
2425
+ (node->isDirty() && layout->generationCount != generationCount) ||
2426
+ layout->lastOwnerDirection != ownerDirection;
2427
+
2428
+ if (needToVisitNode) {
2429
+ // Invalidate the cached results.
2430
+ layout->nextCachedMeasurementsIndex = 0;
2431
+ layout->cachedLayout.availableWidth = -1;
2432
+ layout->cachedLayout.availableHeight = -1;
2433
+ layout->cachedLayout.widthMeasureMode = MeasureMode::Undefined;
2434
+ layout->cachedLayout.heightMeasureMode = MeasureMode::Undefined;
2435
+ layout->cachedLayout.computedWidth = -1;
2436
+ layout->cachedLayout.computedHeight = -1;
2437
+ }
2438
+
2439
+ CachedMeasurement* cachedResults = nullptr;
2440
+
2441
+ // Determine whether the results are already cached. We maintain a separate
2442
+ // cache for layouts and measurements. A layout operation modifies the
2443
+ // positions and dimensions for nodes in the subtree. The algorithm assumes
2444
+ // that each node gets laid out a maximum of one time per tree layout, but
2445
+ // multiple measurements may be required to resolve all of the flex
2446
+ // dimensions. We handle nodes with measure functions specially here because
2447
+ // they are the most expensive to measure, so it's worth avoiding redundant
2448
+ // measurements if at all possible.
2449
+ if (node->hasMeasureFunc()) {
2450
+ const float marginAxisRow =
2451
+ node->getMarginForAxis(FlexDirection::Row, ownerWidth).unwrap();
2452
+ const float marginAxisColumn =
2453
+ node->getMarginForAxis(FlexDirection::Column, ownerWidth).unwrap();
2454
+
2455
+ // First, try to use the layout cache.
2456
+ if (canUseCachedMeasurement(
2457
+ widthMeasureMode,
2458
+ availableWidth,
2459
+ heightMeasureMode,
2460
+ availableHeight,
2461
+ layout->cachedLayout.widthMeasureMode,
2462
+ layout->cachedLayout.availableWidth,
2463
+ layout->cachedLayout.heightMeasureMode,
2464
+ layout->cachedLayout.availableHeight,
2465
+ layout->cachedLayout.computedWidth,
2466
+ layout->cachedLayout.computedHeight,
2467
+ marginAxisRow,
2468
+ marginAxisColumn,
2469
+ node->getConfig())) {
2470
+ cachedResults = &layout->cachedLayout;
2471
+ } else {
2472
+ // Try to use the measurement cache.
2473
+ for (size_t i = 0; i < layout->nextCachedMeasurementsIndex; i++) {
2474
+ if (canUseCachedMeasurement(
2475
+ widthMeasureMode,
2476
+ availableWidth,
2477
+ heightMeasureMode,
2478
+ availableHeight,
2479
+ layout->cachedMeasurements[i].widthMeasureMode,
2480
+ layout->cachedMeasurements[i].availableWidth,
2481
+ layout->cachedMeasurements[i].heightMeasureMode,
2482
+ layout->cachedMeasurements[i].availableHeight,
2483
+ layout->cachedMeasurements[i].computedWidth,
2484
+ layout->cachedMeasurements[i].computedHeight,
2485
+ marginAxisRow,
2486
+ marginAxisColumn,
2487
+ node->getConfig())) {
2488
+ cachedResults = &layout->cachedMeasurements[i];
2489
+ break;
2490
+ }
2491
+ }
2492
+ }
2493
+ } else if (performLayout) {
2494
+ if (yoga::inexactEquals(
2495
+ layout->cachedLayout.availableWidth, availableWidth) &&
2496
+ yoga::inexactEquals(
2497
+ layout->cachedLayout.availableHeight, availableHeight) &&
2498
+ layout->cachedLayout.widthMeasureMode == widthMeasureMode &&
2499
+ layout->cachedLayout.heightMeasureMode == heightMeasureMode) {
2500
+ cachedResults = &layout->cachedLayout;
2501
+ }
2502
+ } else {
2503
+ for (uint32_t i = 0; i < layout->nextCachedMeasurementsIndex; i++) {
2504
+ if (yoga::inexactEquals(
2505
+ layout->cachedMeasurements[i].availableWidth, availableWidth) &&
2506
+ yoga::inexactEquals(
2507
+ layout->cachedMeasurements[i].availableHeight, availableHeight) &&
2508
+ layout->cachedMeasurements[i].widthMeasureMode == widthMeasureMode &&
2509
+ layout->cachedMeasurements[i].heightMeasureMode ==
2510
+ heightMeasureMode) {
2511
+ cachedResults = &layout->cachedMeasurements[i];
2512
+ break;
2513
+ }
2514
+ }
2515
+ }
2516
+
2517
+ if (!needToVisitNode && cachedResults != nullptr) {
2518
+ layout->setMeasuredDimension(
2519
+ YGDimensionWidth, cachedResults->computedWidth);
2520
+ layout->setMeasuredDimension(
2521
+ YGDimensionHeight, cachedResults->computedHeight);
2522
+
2523
+ (performLayout ? layoutMarkerData.cachedLayouts
2524
+ : layoutMarkerData.cachedMeasures) += 1;
2525
+
2526
+ if (gPrintChanges && gPrintSkips) {
2527
+ yoga::log(
2528
+ node,
2529
+ LogLevel::Verbose,
2530
+ "%s%d.{[skipped] ",
2531
+ spacerWithLength(depth),
2532
+ depth);
2533
+ node->print();
2534
+ yoga::log(
2535
+ node,
2536
+ LogLevel::Verbose,
2537
+ "wm: %s, hm: %s, aw: %f ah: %f => d: (%f, %f) %s\n",
2538
+ measureModeName(widthMeasureMode, performLayout),
2539
+ measureModeName(heightMeasureMode, performLayout),
2540
+ availableWidth,
2541
+ availableHeight,
2542
+ cachedResults->computedWidth,
2543
+ cachedResults->computedHeight,
2544
+ LayoutPassReasonToString(reason));
2545
+ }
2546
+ } else {
2547
+ if (gPrintChanges) {
2548
+ yoga::log(
2549
+ node,
2550
+ LogLevel::Verbose,
2551
+ "%s%d.{%s",
2552
+ spacerWithLength(depth),
2553
+ depth,
2554
+ needToVisitNode ? "*" : "");
2555
+ node->print();
2556
+ yoga::log(
2557
+ node,
2558
+ LogLevel::Verbose,
2559
+ "wm: %s, hm: %s, aw: %f ah: %f %s\n",
2560
+ measureModeName(widthMeasureMode, performLayout),
2561
+ measureModeName(heightMeasureMode, performLayout),
2562
+ availableWidth,
2563
+ availableHeight,
2564
+ LayoutPassReasonToString(reason));
2565
+ }
2566
+
2567
+ calculateLayoutImpl(
2568
+ node,
2569
+ availableWidth,
2570
+ availableHeight,
2571
+ ownerDirection,
2572
+ widthMeasureMode,
2573
+ heightMeasureMode,
2574
+ ownerWidth,
2575
+ ownerHeight,
2576
+ performLayout,
2577
+ layoutMarkerData,
2578
+ depth,
2579
+ generationCount,
2580
+ reason);
2581
+
2582
+ if (gPrintChanges) {
2583
+ yoga::log(
2584
+ node,
2585
+ LogLevel::Verbose,
2586
+ "%s%d.}%s",
2587
+ spacerWithLength(depth),
2588
+ depth,
2589
+ needToVisitNode ? "*" : "");
2590
+ node->print();
2591
+ yoga::log(
2592
+ node,
2593
+ LogLevel::Verbose,
2594
+ "wm: %s, hm: %s, d: (%f, %f) %s\n",
2595
+ measureModeName(widthMeasureMode, performLayout),
2596
+ measureModeName(heightMeasureMode, performLayout),
2597
+ layout->measuredDimension(YGDimensionWidth),
2598
+ layout->measuredDimension(YGDimensionHeight),
2599
+ LayoutPassReasonToString(reason));
2600
+ }
2601
+
2602
+ layout->lastOwnerDirection = ownerDirection;
2603
+
2604
+ if (cachedResults == nullptr) {
2605
+ layoutMarkerData.maxMeasureCache = std::max(
2606
+ layoutMarkerData.maxMeasureCache,
2607
+ layout->nextCachedMeasurementsIndex + 1u);
2608
+
2609
+ if (layout->nextCachedMeasurementsIndex ==
2610
+ LayoutResults::MaxCachedMeasurements) {
2611
+ if (gPrintChanges) {
2612
+ yoga::log(node, LogLevel::Verbose, "Out of cache entries!\n");
2613
+ }
2614
+ layout->nextCachedMeasurementsIndex = 0;
2615
+ }
2616
+
2617
+ CachedMeasurement* newCacheEntry;
2618
+ if (performLayout) {
2619
+ // Use the single layout cache entry.
2620
+ newCacheEntry = &layout->cachedLayout;
2621
+ } else {
2622
+ // Allocate a new measurement cache entry.
2623
+ newCacheEntry =
2624
+ &layout->cachedMeasurements[layout->nextCachedMeasurementsIndex];
2625
+ layout->nextCachedMeasurementsIndex++;
2626
+ }
2627
+
2628
+ newCacheEntry->availableWidth = availableWidth;
2629
+ newCacheEntry->availableHeight = availableHeight;
2630
+ newCacheEntry->widthMeasureMode = widthMeasureMode;
2631
+ newCacheEntry->heightMeasureMode = heightMeasureMode;
2632
+ newCacheEntry->computedWidth =
2633
+ layout->measuredDimension(YGDimensionWidth);
2634
+ newCacheEntry->computedHeight =
2635
+ layout->measuredDimension(YGDimensionHeight);
2636
+ }
2637
+ }
2638
+
2639
+ if (performLayout) {
2640
+ node->setLayoutDimension(
2641
+ node->getLayout().measuredDimension(YGDimensionWidth),
2642
+ YGDimensionWidth);
2643
+ node->setLayoutDimension(
2644
+ node->getLayout().measuredDimension(YGDimensionHeight),
2645
+ YGDimensionHeight);
2646
+
2647
+ node->setHasNewLayout(true);
2648
+ node->setDirty(false);
2649
+ }
2650
+
2651
+ layout->generationCount = generationCount;
2652
+
2653
+ LayoutType layoutType;
2654
+ if (performLayout) {
2655
+ layoutType = !needToVisitNode && cachedResults == &layout->cachedLayout
2656
+ ? LayoutType::kCachedLayout
2657
+ : LayoutType::kLayout;
2658
+ } else {
2659
+ layoutType = cachedResults != nullptr ? LayoutType::kCachedMeasure
2660
+ : LayoutType::kMeasure;
2661
+ }
2662
+ Event::publish<Event::NodeLayout>(node, {layoutType});
2663
+
2664
+ return (needToVisitNode || cachedResults == nullptr);
2665
+ }
2666
+
2667
+ void calculateLayout(
2668
+ yoga::Node* const node,
2669
+ const float ownerWidth,
2670
+ const float ownerHeight,
2671
+ const Direction ownerDirection) {
2672
+ Event::publish<Event::LayoutPassStart>(node);
2673
+ LayoutData markerData = {};
2674
+
2675
+ // Increment the generation count. This will force the recursive routine to
2676
+ // visit all dirty nodes at least once. Subsequent visits will be skipped if
2677
+ // the input parameters don't change.
2678
+ gCurrentGenerationCount.fetch_add(1, std::memory_order_relaxed);
2679
+ node->resolveDimension();
2680
+ float width = YGUndefined;
2681
+ MeasureMode widthMeasureMode = MeasureMode::Undefined;
2682
+ const auto& style = node->getStyle();
2683
+ if (styleDefinesDimension(node, FlexDirection::Row, ownerWidth)) {
2684
+ width = (yoga::resolveValue(
2685
+ node->getResolvedDimension(dimension(FlexDirection::Row)),
2686
+ ownerWidth) +
2687
+ node->getMarginForAxis(FlexDirection::Row, ownerWidth))
2688
+ .unwrap();
2689
+ widthMeasureMode = MeasureMode::Exactly;
2690
+ } else if (!yoga::resolveValue(
2691
+ style.maxDimension(YGDimensionWidth), ownerWidth)
2692
+ .isUndefined()) {
2693
+ width = yoga::resolveValue(style.maxDimension(YGDimensionWidth), ownerWidth)
2694
+ .unwrap();
2695
+ widthMeasureMode = MeasureMode::AtMost;
2696
+ } else {
2697
+ width = ownerWidth;
2698
+ widthMeasureMode = yoga::isUndefined(width) ? MeasureMode::Undefined
2699
+ : MeasureMode::Exactly;
2700
+ }
2701
+
2702
+ float height = YGUndefined;
2703
+ MeasureMode heightMeasureMode = MeasureMode::Undefined;
2704
+ if (styleDefinesDimension(node, FlexDirection::Column, ownerHeight)) {
2705
+ height = (yoga::resolveValue(
2706
+ node->getResolvedDimension(dimension(FlexDirection::Column)),
2707
+ ownerHeight) +
2708
+ node->getMarginForAxis(FlexDirection::Column, ownerWidth))
2709
+ .unwrap();
2710
+ heightMeasureMode = MeasureMode::Exactly;
2711
+ } else if (!yoga::resolveValue(
2712
+ style.maxDimension(YGDimensionHeight), ownerHeight)
2713
+ .isUndefined()) {
2714
+ height =
2715
+ yoga::resolveValue(style.maxDimension(YGDimensionHeight), ownerHeight)
2716
+ .unwrap();
2717
+ heightMeasureMode = MeasureMode::AtMost;
2718
+ } else {
2719
+ height = ownerHeight;
2720
+ heightMeasureMode = yoga::isUndefined(height) ? MeasureMode::Undefined
2721
+ : MeasureMode::Exactly;
2722
+ }
2723
+ if (calculateLayoutInternal(
2724
+ node,
2725
+ width,
2726
+ height,
2727
+ ownerDirection,
2728
+ widthMeasureMode,
2729
+ heightMeasureMode,
2730
+ ownerWidth,
2731
+ ownerHeight,
2732
+ true,
2733
+ LayoutPassReason::kInitial,
2734
+ markerData,
2735
+ 0, // tree root
2736
+ gCurrentGenerationCount.load(std::memory_order_relaxed))) {
2737
+ node->setPosition(
2738
+ node->getLayout().direction(), ownerWidth, ownerHeight, ownerWidth);
2739
+ roundLayoutResultsToPixelGrid(node, 0.0f, 0.0f);
2740
+
2741
+ #ifdef DEBUG
2742
+ if (node->getConfig()->shouldPrintTree()) {
2743
+ yoga::print(
2744
+ node,
2745
+ PrintOptions::Layout | PrintOptions::Children | PrintOptions::Style);
2746
+ }
2747
+ #endif
2748
+ }
2749
+
2750
+ Event::publish<Event::LayoutPassEnd>(node, {&markerData});
2751
+ }
2752
+
2753
+ } // namespace facebook::yoga