react-native 0.0.0-17be3a003 → 0.0.0-18697adec

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 (993) hide show
  1. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +14 -1
  2. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +2 -0
  3. package/Libraries/Animated/AnimatedEvent.js +23 -4
  4. package/Libraries/Animated/AnimatedImplementation.js +0 -2
  5. package/Libraries/Animated/AnimatedMock.js +1 -8
  6. package/Libraries/Animated/NativeAnimatedHelper.js +3 -3
  7. package/Libraries/Animated/animations/Animation.js +1 -0
  8. package/Libraries/Animated/animations/DecayAnimation.js +2 -0
  9. package/Libraries/Animated/animations/SpringAnimation.js +1 -0
  10. package/Libraries/Animated/animations/TimingAnimation.js +3 -0
  11. package/Libraries/Animated/createAnimatedComponent.js +6 -18
  12. package/Libraries/Animated/createAnimatedComponentInjection.js +48 -0
  13. package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +48 -0
  14. package/Libraries/Animated/nodes/AnimatedProps.js +0 -1
  15. package/Libraries/Animated/nodes/AnimatedValue.js +20 -1
  16. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -0
  17. package/Libraries/Animated/useAnimatedProps.js +211 -0
  18. package/Libraries/BatchedBridge/MessageQueue.js +15 -10
  19. package/Libraries/BatchedBridge/NativeModules.js +5 -1
  20. package/Libraries/Blob/FileReader.js +1 -1
  21. package/Libraries/Blob/RCTBlobManager.h +2 -1
  22. package/Libraries/Blob/RCTBlobManager.mm +1 -3
  23. package/Libraries/Blob/RCTBlobPlugins.mm +4 -3
  24. package/Libraries/Blob/React-RCTBlob.podspec +1 -1
  25. package/Libraries/Blob/URL.js +2 -2
  26. package/Libraries/BugReporting/BugReporting.js +2 -0
  27. package/Libraries/BugReporting/getReactData.js +1 -1
  28. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -6
  29. package/Libraries/Components/Button.js +27 -12
  30. package/Libraries/Components/DatePicker/DatePickerIOS.android.js +4 -5
  31. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +50 -12
  32. package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +1 -0
  33. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -7
  34. package/Libraries/Components/Keyboard/Keyboard.js +1 -1
  35. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
  36. package/Libraries/Components/MaskedView/MaskedViewIOS.ios.js +3 -3
  37. package/Libraries/Components/Pressable/useAndroidRippleForView.js +18 -15
  38. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +4 -5
  39. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +2 -3
  40. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +2 -3
  41. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +2 -2
  42. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +2 -2
  43. package/Libraries/Components/ScrollView/ScrollView.js +22 -5
  44. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +3 -2
  45. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +2 -0
  46. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +3 -9
  47. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +2 -0
  48. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js +4 -5
  49. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js +14 -6
  50. package/Libraries/Components/Slider/Slider.js +19 -6
  51. package/Libraries/Components/StatusBar/StatusBar.js +10 -19
  52. package/Libraries/Components/Switch/Switch.js +98 -114
  53. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +9 -6
  54. package/Libraries/Components/TextInput/AndroidTextInputViewConfig.js +2 -1
  55. package/Libraries/Components/TextInput/InputAccessoryView.js +6 -6
  56. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +5 -13
  57. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +5 -13
  58. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -2
  59. package/Libraries/Components/TextInput/TextInput.js +53 -19
  60. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  61. package/Libraries/Components/Touchable/BoundingDimensions.js +1 -2
  62. package/Libraries/Components/Touchable/PooledClass.js +1 -2
  63. package/Libraries/Components/Touchable/Position.js +1 -2
  64. package/Libraries/Components/Touchable/Touchable.js +20 -6
  65. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
  66. package/Libraries/Components/Touchable/TouchableOpacity.js +11 -2
  67. package/Libraries/Components/UnimplementedViews/UnimplementedView.js +2 -3
  68. package/Libraries/Components/View/ReactNativeStyleAttributes.js +133 -68
  69. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -2
  70. package/Libraries/Components/View/ReactNativeViewViewConfig.js +1 -1
  71. package/Libraries/Components/View/ViewAccessibility.js +3 -0
  72. package/Libraries/Core/Devtools/parseErrorStack.js +0 -10
  73. package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
  74. package/Libraries/Core/ExceptionsManager.js +51 -41
  75. package/Libraries/Core/ExtendedError.js +19 -0
  76. package/Libraries/Core/InitializeCore.js +1 -0
  77. package/Libraries/Core/ReactFiberErrorDialog.js +44 -34
  78. package/Libraries/Core/ReactNativeVersion.js +1 -1
  79. package/Libraries/Core/Timers/JSTimers.js +37 -28
  80. package/Libraries/Core/Timers/immediateShim.js +67 -0
  81. package/Libraries/Core/Timers/queueMicrotask.js +41 -0
  82. package/Libraries/Core/polyfillPromise.js +1 -1
  83. package/Libraries/Core/setUpBatchedBridge.js +1 -1
  84. package/Libraries/Core/setUpGlobals.js +2 -0
  85. package/Libraries/Core/setUpRegeneratorRuntime.js +25 -8
  86. package/Libraries/Core/setUpTimers.js +65 -6
  87. package/Libraries/DeprecatedPropTypes/DeprecatedImagePropType.android.js +131 -0
  88. package/Libraries/DeprecatedPropTypes/{DeprecatedImagePropType.js → DeprecatedImagePropType.ios.js} +0 -0
  89. package/Libraries/DeprecatedPropTypes/DeprecatedTextInputPropTypes.js +5 -5
  90. package/Libraries/DeprecatedPropTypes/DeprecatedViewAccessibility.js +2 -0
  91. package/Libraries/EventEmitter/NativeEventEmitter.js +22 -1
  92. package/Libraries/EventEmitter/RCTEventEmitter.js +5 -1
  93. package/Libraries/FBLazyVector/BUCK +5 -1
  94. package/Libraries/Image/Image.android.js +22 -131
  95. package/Libraries/Image/Image.ios.js +16 -8
  96. package/Libraries/Image/ImageBackground.js +10 -8
  97. package/Libraries/Image/ImageInjection.js +28 -0
  98. package/Libraries/Image/ImageProps.js +28 -0
  99. package/Libraries/Image/ImageSource.js +108 -65
  100. package/Libraries/Image/NativeImageLoaderIOS.js +2 -1
  101. package/Libraries/Image/RCTImageLoader.h +2 -2
  102. package/Libraries/Image/RCTImageLoader.mm +6 -6
  103. package/Libraries/Image/RCTImagePlugins.mm +4 -3
  104. package/Libraries/Image/React-RCTImage.podspec +1 -1
  105. package/Libraries/Inspector/Inspector.js +6 -0
  106. package/Libraries/Interaction/InteractionManager.js +3 -0
  107. package/Libraries/Interaction/PanResponder.js +1 -1
  108. package/Libraries/LinkingIOS/RCTLinkingPlugins.mm +4 -3
  109. package/Libraries/LinkingIOS/React-RCTLinking.podspec +1 -1
  110. package/Libraries/Lists/CellRenderMask.js +145 -0
  111. package/Libraries/Lists/FlatList.js +43 -26
  112. package/Libraries/Lists/VirtualizedList.js +14 -17
  113. package/Libraries/Lists/VirtualizedSectionList.js +159 -136
  114. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +4 -4
  115. package/Libraries/LogBox/Data/LogBoxData.js +21 -19
  116. package/Libraries/LogBox/LogBox.js +114 -47
  117. package/Libraries/LogBox/UI/LogBoxImages/alert-triangle.png +0 -0
  118. package/Libraries/LogBox/UI/LogBoxImages/chevron-left.png +0 -0
  119. package/Libraries/LogBox/UI/LogBoxImages/chevron-right.png +0 -0
  120. package/Libraries/LogBox/UI/LogBoxImages/close.png +0 -0
  121. package/Libraries/LogBox/UI/LogBoxImages/loader.png +0 -0
  122. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +1 -0
  123. package/Libraries/Modal/Modal.js +8 -0
  124. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +8 -2
  125. package/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.m +0 -3
  126. package/Libraries/NativeAnimation/RCTAnimationPlugins.mm +4 -3
  127. package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +6 -3
  128. package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.h +1 -1
  129. package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.m +1 -1
  130. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +32 -28
  131. package/Libraries/NativeAnimation/React-RCTAnimation.podspec +1 -1
  132. package/Libraries/Network/RCTHTTPRequestHandler.h +5 -0
  133. package/Libraries/Network/RCTHTTPRequestHandler.mm +19 -7
  134. package/Libraries/Network/RCTNetworkPlugins.mm +4 -3
  135. package/Libraries/Network/RCTNetworking.h +1 -1
  136. package/Libraries/Network/RCTNetworking.mm +3 -3
  137. package/Libraries/Network/React-RCTNetwork.podspec +1 -1
  138. package/Libraries/Network/XMLHttpRequest.js +4 -1
  139. package/Libraries/NewAppScreen/components/Header.js +1 -0
  140. package/Libraries/NewAppScreen/components/HermesBadge.js +4 -1
  141. package/Libraries/NewAppScreen/components/logo.png +0 -0
  142. package/Libraries/Performance/QuickPerformanceLogger.js +3 -1
  143. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +4 -1
  144. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +6 -0
  145. package/Libraries/Pressability/Pressability.js +1 -0
  146. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -0
  147. package/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +0 -1
  148. package/Libraries/PushNotificationIOS/RCTPushNotificationPlugins.mm +4 -3
  149. package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +1 -1
  150. package/Libraries/RCTRequired/BUCK +4 -1
  151. package/Libraries/ReactNative/AppContainer.js +3 -8
  152. package/Libraries/ReactNative/AppRegistry.js +7 -2
  153. package/Libraries/ReactNative/DisplayMode.js +4 -5
  154. package/Libraries/ReactNative/DummyUIManager.js +7 -2
  155. package/Libraries/ReactNative/FabricUIManager.js +4 -3
  156. package/Libraries/ReactNative/I18nManager.js +12 -3
  157. package/Libraries/ReactNative/NativeUIManager.js +2 -1
  158. package/Libraries/ReactNative/PaperUIManager.js +3 -1
  159. package/Libraries/ReactNative/RootTag.js +2 -2
  160. package/Libraries/ReactNative/UIManager.js +2 -1
  161. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +32 -0
  162. package/Libraries/ReactNative/renderApplication.js +12 -5
  163. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +2 -3
  164. package/Libraries/Reliability/UserFlow.js +7 -0
  165. package/Libraries/Renderer/REVISION +1 -1
  166. package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +6364 -5120
  167. package/Libraries/Renderer/implementations/ReactFabric-dev.js +7877 -6935
  168. package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +2488 -2118
  169. package/Libraries/Renderer/implementations/ReactFabric-prod.js +2112 -1937
  170. package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +2922 -2418
  171. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +2568 -2244
  172. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +6086 -4942
  173. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5736 -4864
  174. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +1624 -1394
  175. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +2275 -2120
  176. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +2279 -1921
  177. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +2565 -2259
  178. package/Libraries/Renderer/shims/ReactFabric.js +5 -4
  179. package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -1
  180. package/Libraries/Renderer/shims/ReactNative.js +3 -1
  181. package/Libraries/Renderer/shims/ReactNativeTypes.js +7 -4
  182. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -1
  183. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +3 -1
  184. package/Libraries/Settings/RCTSettingsPlugins.mm +4 -3
  185. package/Libraries/Settings/React-RCTSettings.podspec +1 -1
  186. package/Libraries/Settings/Settings.ios.js +4 -0
  187. package/Libraries/Storage/AsyncStorage.js +1 -0
  188. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +16 -1
  189. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +8 -1
  190. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +2 -0
  191. package/Libraries/StyleSheet/StyleSheet.js +3 -5
  192. package/Libraries/StyleSheet/normalizeColor.js +2 -2
  193. package/Libraries/SurfaceHostingComponent/RCTSurfaceHostingComponent.mm +1 -1
  194. package/Libraries/Text/Text.js +17 -0
  195. package/Libraries/Text/TextInput/RCTBaseTextInputView.m +10 -12
  196. package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.m +4 -11
  197. package/Libraries/Text/TextProps.js +7 -7
  198. package/Libraries/TurboModule/RCTExport.js +1 -1
  199. package/Libraries/TurboModule/TurboModuleRegistry.js +1 -10
  200. package/Libraries/TypeSafety/RCTTypeSafety.podspec +1 -1
  201. package/Libraries/{Components/Picker/PickerAndroid.ios.js → Types/RootTagTypes.js} +2 -3
  202. package/Libraries/UTFSequence.js +1 -1
  203. package/Libraries/Utilities/Dimensions.js +9 -14
  204. package/Libraries/Utilities/FeatureDetection.js +31 -0
  205. package/Libraries/Utilities/HMRClient.js +15 -8
  206. package/Libraries/Utilities/MatrixMath.js +1 -1
  207. package/Libraries/Utilities/NativeDeviceInfo.js +1 -1
  208. package/Libraries/Utilities/PerformanceLoggerContext.js +8 -2
  209. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +1 -0
  210. package/Libraries/Utilities/deprecatedPropType.js +2 -2
  211. package/Libraries/Utilities/useMergeRefs.js +44 -0
  212. package/Libraries/Utilities/useRefEffect.js +45 -0
  213. package/Libraries/Utilities/useWindowDimensions.js +7 -2
  214. package/Libraries/Vibration/RCTVibrationPlugins.mm +4 -3
  215. package/Libraries/Vibration/React-RCTVibration.podspec +1 -1
  216. package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -0
  217. package/Libraries/promiseRejectionTrackingOptions.js +2 -0
  218. package/Libraries/vendor/emitter/_EventSubscriptionVendor.js +1 -1
  219. package/README.md +5 -5
  220. package/React/Base/RCTAssert.h +23 -13
  221. package/React/Base/RCTAssert.m +35 -9
  222. package/React/Base/RCTBridge+Private.h +8 -2
  223. package/React/Base/RCTBridge.h +19 -3
  224. package/React/Base/RCTBridge.m +33 -12
  225. package/React/Base/RCTBridgeModule.h +62 -12
  226. package/React/Base/RCTBundleManager.m +78 -0
  227. package/React/Base/RCTBundleURLProvider.h +36 -8
  228. package/React/Base/RCTBundleURLProvider.mm +91 -12
  229. package/React/Base/RCTCallableJSModules.m +47 -0
  230. package/React/Base/RCTConstants.h +6 -13
  231. package/React/Base/RCTConstants.m +12 -27
  232. package/React/Base/RCTConvert.h +1 -1
  233. package/React/Base/RCTConvert.m +31 -7
  234. package/React/Base/RCTCxxConvert.h +1 -1
  235. package/React/Base/RCTDefines.h +12 -3
  236. package/React/Base/RCTEventDispatcherProtocol.h +3 -2
  237. package/React/{Views/RCTPickerManager.h → Base/RCTInitializing.h} +4 -2
  238. package/React/Base/RCTJSThread.h +29 -0
  239. package/React/Base/RCTJSThread.m +19 -0
  240. package/React/Base/RCTModuleData.h +11 -3
  241. package/React/Base/RCTModuleData.mm +66 -1
  242. package/React/Base/RCTMultipartStreamReader.m +0 -2
  243. package/React/Base/RCTRootView.h +15 -0
  244. package/React/Base/RCTRootView.m +15 -0
  245. package/React/Base/RCTTouchHandler.m +4 -9
  246. package/React/Base/RCTUtils.h +3 -0
  247. package/React/Base/RCTUtils.m +14 -7
  248. package/React/Base/RCTVersion.m +1 -1
  249. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h +12 -0
  250. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +46 -2
  251. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm +3 -0
  252. package/React/CoreModules/BUCK +4 -3
  253. package/React/CoreModules/CoreModulesPlugins.mm +4 -3
  254. package/React/CoreModules/RCTAccessibilityManager.mm +1 -1
  255. package/React/CoreModules/RCTActionSheetManager.mm +14 -5
  256. package/React/CoreModules/RCTAsyncLocalStorage.mm +4 -0
  257. package/React/CoreModules/RCTDevLoadingView.mm +10 -23
  258. package/React/CoreModules/RCTDevMenu.mm +22 -25
  259. package/React/CoreModules/RCTDevSettings.h +2 -1
  260. package/React/CoreModules/RCTDevSettings.mm +76 -75
  261. package/React/CoreModules/RCTDevSplitBundleLoader.mm +3 -8
  262. package/React/CoreModules/RCTDeviceInfo.mm +4 -5
  263. package/React/CoreModules/RCTEventDispatcher.h +2 -1
  264. package/React/CoreModules/RCTEventDispatcher.mm +17 -25
  265. package/React/CoreModules/RCTKeyboardObserver.mm +1 -1
  266. package/React/CoreModules/RCTLogBox.mm +14 -10
  267. package/React/CoreModules/RCTPerfMonitor.mm +9 -4
  268. package/React/CoreModules/RCTRedBox.mm +3 -12
  269. package/React/CoreModules/RCTSourceCode.mm +2 -1
  270. package/React/CoreModules/RCTTiming.h +2 -1
  271. package/React/CoreModules/RCTTiming.mm +1 -3
  272. package/React/CoreModules/React-CoreModules.podspec +1 -1
  273. package/React/CxxBridge/RCTCxxBridge.mm +81 -12
  274. package/React/CxxModule/RCTNativeModule.mm +3 -1
  275. package/React/DevSupport/RCTPackagerConnection.h +3 -0
  276. package/React/DevSupport/RCTPackagerConnection.mm +19 -8
  277. package/React/FBReactNativeSpec/FBReactNativeSpec.podspec +12 -4
  278. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +3 -0
  279. package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.h +3 -6
  280. package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +41 -26
  281. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.h +0 -1
  282. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.mm +0 -1
  283. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +101 -85
  284. package/React/Fabric/Mounting/ComponentViews/Text/RCTAccessibilityElement.h +7 -0
  285. package/React/Fabric/Mounting/ComponentViews/Text/RCTAccessibilityElement.mm +5 -1
  286. package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentAccessibilityProvider.mm +12 -9
  287. package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm +1 -0
  288. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +53 -17
  289. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.h +6 -0
  290. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +110 -8
  291. package/React/Fabric/Mounting/RCTComponentViewFactory.mm +1 -0
  292. package/React/Fabric/Mounting/RCTMountingManager.h +6 -1
  293. package/React/Fabric/Mounting/RCTMountingManager.mm +25 -4
  294. package/React/Fabric/Mounting/UIView+ComponentViewProtocol.h +2 -0
  295. package/React/Fabric/Mounting/UIView+ComponentViewProtocol.mm +12 -0
  296. package/React/Fabric/RCTConversions.h +3 -0
  297. package/React/Fabric/RCTScheduler.h +3 -1
  298. package/React/Fabric/RCTScheduler.mm +26 -8
  299. package/React/Fabric/RCTSurfacePresenter.mm +33 -33
  300. package/React/Fabric/RCTSurfacePresenterBridgeAdapter.h +4 -2
  301. package/React/Fabric/RCTSurfacePresenterBridgeAdapter.mm +1 -1
  302. package/React/Fabric/RCTSurfaceRegistry.h +1 -1
  303. package/React/Fabric/RCTSurfaceTouchHandler.mm +6 -20
  304. package/React/Fabric/Surface/RCTFabricSurface.mm +3 -0
  305. package/React/Modules/RCTEventEmitter.h +1 -2
  306. package/React/Modules/RCTEventEmitter.m +8 -11
  307. package/React/Modules/RCTI18nUtil.h +14 -6
  308. package/React/Modules/RCTI18nUtil.m +1 -47
  309. package/React/Modules/RCTUIManager.m +2 -0
  310. package/React/Profiler/RCTProfileTrampoline-arm.S +1 -1
  311. package/React/Profiler/RCTProfileTrampoline-arm64.S +2 -2
  312. package/React/React-RCTFabric.podspec +3 -3
  313. package/React/Tests/Text/RCTParagraphComponentViewTests.mm +63 -0
  314. package/React/Views/RCTDatePickerManager.m +33 -0
  315. package/React/Views/RCTFont.mm +54 -38
  316. package/React/Views/RCTModalHostView.h +5 -1
  317. package/React/Views/RCTModalHostView.m +52 -20
  318. package/React/Views/RCTModalHostViewManager.m +5 -0
  319. package/React/Views/RCTModalManager.h +0 -7
  320. package/React/Views/RCTModalManager.m +0 -9
  321. package/React/Views/RCTView.h +7 -7
  322. package/React/Views/RCTView.m +32 -49
  323. package/React/Views/RCTViewManager.m +22 -4
  324. package/React/Views/SafeAreaView/RCTSafeAreaView.m +1 -5
  325. package/React/Views/ScrollView/RCTScrollView.h +1 -0
  326. package/React/Views/ScrollView/RCTScrollView.m +123 -36
  327. package/React/Views/ScrollView/RCTScrollViewManager.m +4 -7
  328. package/React/Views/UIView+React.m +2 -11
  329. package/React/third-party.xcconfig +1 -1
  330. package/React-Core.podspec +2 -2
  331. package/ReactAndroid/Android-prebuilt.mk +8 -0
  332. package/ReactAndroid/README.md +2 -2
  333. package/ReactAndroid/build.gradle +132 -20
  334. package/ReactAndroid/gradle.properties +7 -5
  335. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK +1 -1
  336. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppInstrumentationTestCase.java +1 -1
  337. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/BUCK +1 -1
  338. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/rule/BUCK +5 -5
  339. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK +0 -2
  340. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/core/BUCK +5 -5
  341. package/ReactAndroid/src/androidTest/js/BUCK +26 -0
  342. package/ReactAndroid/src/androidTest/js/TestBundle.js +0 -12
  343. package/ReactAndroid/src/androidTest/js/UIManagerTestModule.js +7 -6
  344. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/Android.mk +2 -2
  345. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/Android.mk +4 -4
  346. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/HermesExecutorFactory.java +1 -1
  347. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/RuntimeConfig.java +0 -6
  348. package/ReactAndroid/src/main/java/com/facebook/proguard/annotations/BUCK +2 -2
  349. package/ReactAndroid/src/main/java/com/facebook/react/BUCK +1 -0
  350. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +1 -0
  351. package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.java +5 -0
  352. package/ReactAndroid/src/main/java/com/facebook/react/ReactFragment.java +6 -2
  353. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +124 -66
  354. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +28 -0
  355. package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +13 -0
  356. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +25 -3
  357. package/ReactAndroid/src/main/java/com/facebook/react/animated/BUCK +1 -1
  358. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +4 -7
  359. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java +5 -5
  360. package/ReactAndroid/src/main/java/com/facebook/react/bridge/BackgroundExecutor.java +3 -2
  361. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java +4 -0
  362. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +11 -1
  363. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java +37 -0
  364. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java +22 -0
  365. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +26 -6
  366. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContextBaseJavaModule.java +1 -1
  367. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.java +39 -0
  368. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarkerConstants.java +3 -1
  369. package/ReactAndroid/src/main/java/com/facebook/react/bridge/{ReactSoftException.java → ReactSoftExceptionLogger.java} +8 -3
  370. package/ReactAndroid/src/main/java/com/facebook/react/bridge/RuntimeScheduler.java +21 -0
  371. package/ReactAndroid/src/main/java/com/facebook/react/bridge/SoftAssertions.java +8 -7
  372. package/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManager.java +10 -0
  373. package/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +2 -2
  374. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/BUCK +3 -0
  375. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/ReadableMapBuffer.java +7 -8
  376. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/ReadableMapBufferSoLoader.java +33 -0
  377. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/BUCK +2 -1
  378. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/ReadableMapBuffer.cpp +23 -9
  379. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/ReadableMapBuffer.h +8 -5
  380. package/ReactAndroid/src/main/java/com/facebook/react/config/BUCK +2 -1
  381. package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +54 -29
  382. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK +1 -1
  383. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java +275 -0
  384. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java +97 -0
  385. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +9 -58
  386. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +163 -328
  387. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.java +3 -72
  388. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/PackagerStatusCheck.java +100 -0
  389. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxHandler.java +1 -1
  390. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java +1 -1
  391. package/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.java +10 -0
  392. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricComponents.java +4 -3
  393. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java +8 -59
  394. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +154 -74
  395. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +36 -1
  396. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.java +14 -2
  397. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Android.mk +2 -2
  398. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/AsyncEventBeatV2.cpp +69 -0
  399. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/AsyncEventBeatV2.h +40 -0
  400. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK +1 -2
  401. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +171 -53
  402. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h +21 -2
  403. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/CoreComponentsRegistry.cpp +0 -6
  404. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.cpp +22 -2
  405. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.h +4 -0
  406. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.java +53 -7
  407. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +35 -13
  408. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +136 -35
  409. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +3 -2
  410. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.java +5 -5
  411. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SendAccessibilityEvent.java +2 -2
  412. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/Android.mk +2 -2
  413. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.java +2 -2
  414. package/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/BUCK +1 -1
  415. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/BUCK +1 -1
  416. package/ReactAndroid/src/main/java/com/facebook/react/modules/appstate/BUCK +1 -1
  417. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BUCK +1 -1
  418. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.java +35 -7
  419. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/Android.mk +2 -2
  420. package/ReactAndroid/src/main/java/com/facebook/react/modules/bundleloader/BUCK +1 -1
  421. package/ReactAndroid/src/main/java/com/facebook/react/modules/camera/BUCK +1 -1
  422. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK +1 -1
  423. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/{JavaScriptTimerManager.java → JavaScriptTimerExecutor.java} +1 -1
  424. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JavaTimerManager.java +7 -7
  425. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java +2 -2
  426. package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/BUCK +1 -1
  427. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/BUCK +1 -1
  428. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.java +10 -6
  429. package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/BUCK +1 -1
  430. package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/BUCK +1 -1
  431. package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nManagerModule.java +7 -1
  432. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/BUCK +1 -1
  433. package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/BUCK +1 -1
  434. package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.java +23 -19
  435. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/BUCK +1 -1
  436. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +1 -4
  437. package/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/BUCK +1 -1
  438. package/ReactAndroid/src/main/java/com/facebook/react/modules/share/BUCK +1 -1
  439. package/ReactAndroid/src/main/java/com/facebook/react/modules/sound/BUCK +1 -1
  440. package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/BUCK +1 -1
  441. package/ReactAndroid/src/main/java/com/facebook/react/modules/storage/BUCK +1 -1
  442. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/BUCK +2 -2
  443. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
  444. package/ReactAndroid/src/main/java/com/facebook/react/modules/toast/BUCK +1 -1
  445. package/ReactAndroid/src/main/java/com/facebook/react/modules/vibration/BUCK +1 -1
  446. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/BUCK +1 -1
  447. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java +11 -9
  448. package/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK +0 -2
  449. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +0 -9
  450. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java +4 -2
  451. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp +39 -11
  452. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.h +9 -2
  453. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.java +7 -28
  454. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java +14 -5
  455. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +2 -4
  456. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java +10 -13
  457. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/PixelUtil.java +1 -6
  458. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java +11 -5
  459. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactClippingProhibitedView.java +26 -0
  460. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactClippingViewGroupHelper.java +5 -1
  461. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.java +25 -0
  462. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.java +162 -66
  463. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +1 -4
  464. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.java +28 -19
  465. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +10 -1
  466. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +6 -5
  467. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +2 -3
  468. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java +16 -1
  469. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +53 -19
  470. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/LockFreeEventDispatcherImpl.java +236 -0
  471. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.java +8 -0
  472. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +20 -6
  473. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java +34 -5
  474. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +1 -1
  475. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/ViewProps.java +9 -2
  476. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/BUCK +1 -1
  477. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/ComponentNameResolverManager.cpp +2 -1
  478. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/ComponentNameResolverManager.h +10 -15
  479. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/BUCK +1 -1
  480. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerClosedEvent.java +0 -6
  481. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerOpenedEvent.java +0 -6
  482. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerSlideEvent.java +0 -6
  483. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerStateChangedEvent.java +0 -6
  484. package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.java +10 -5
  485. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/BUCK +1 -1
  486. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java +6 -0
  487. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java +7 -11
  488. package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/BUCK +1 -1
  489. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/BUCK +1 -0
  490. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +17 -1
  491. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +5 -0
  492. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +101 -8
  493. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.java +18 -3
  494. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +5 -0
  495. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java +9 -7
  496. package/ReactAndroid/src/main/java/com/facebook/react/views/slider/BUCK +1 -1
  497. package/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderEvent.java +0 -5
  498. package/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java +4 -7
  499. package/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSlidingCompleteEvent.java +0 -5
  500. package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/BUCK +1 -1
  501. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/BUCK +1 -1
  502. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchEvent.java +0 -6
  503. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.java +3 -10
  504. package/ReactAndroid/src/main/java/com/facebook/react/views/text/CustomStyleSpan.java +6 -8
  505. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactFontManager.java +59 -44
  506. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +0 -4
  507. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +31 -3
  508. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +19 -0
  509. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java +1 -1
  510. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTypefaceUtils.java +41 -59
  511. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +20 -51
  512. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +39 -15
  513. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +38 -10
  514. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TypefaceStyle.java +72 -0
  515. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/BUCK +1 -0
  516. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +16 -6
  517. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.java +3 -0
  518. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +117 -62
  519. package/ReactAndroid/src/main/java/com/facebook/react/views/view/CanvasUtil.java +92 -0
  520. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +39 -8
  521. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +49 -2
  522. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +2 -7
  523. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJTypesVanilla.h +8 -4
  524. package/ReactAndroid/src/main/jni/react/jni/Android.mk +5 -3
  525. package/ReactAndroid/src/main/jni/react/jni/BUCK +5 -2
  526. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +61 -0
  527. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +8 -0
  528. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.cpp +18 -0
  529. package/{ReactCommon/react/renderer/components/picker/iospicker/primitives.h → ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h} +6 -10
  530. package/ReactAndroid/src/main/jni/react/jni/JReactSoftExceptionLogger.cpp +21 -0
  531. package/ReactAndroid/src/main/jni/react/jni/JReactSoftExceptionLogger.h +28 -0
  532. package/{ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerComponentDescriptor.h → ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.cpp} +8 -7
  533. package/ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.h +30 -0
  534. package/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp +1 -1
  535. package/ReactAndroid/src/main/jni/react/jni/ProxyExecutor.h +1 -0
  536. package/ReactAndroid/src/main/jni/third-party/boost/Android.mk +7 -2
  537. package/ReactAndroid/src/main/jni/third-party/boost/asm/arm/jump_arm_aapcs_elf_gas.S +86 -0
  538. package/ReactAndroid/src/main/jni/third-party/boost/asm/arm/make_arm_aapcs_elf_gas.S +79 -0
  539. package/ReactAndroid/src/main/jni/third-party/boost/asm/arm/ontop_arm_aapcs_elf_gas.S +91 -0
  540. package/ReactAndroid/src/main/jni/third-party/boost/asm/arm64/jump_arm64_aapcs_elf_gas.S +114 -0
  541. package/ReactAndroid/src/main/jni/third-party/boost/asm/arm64/make_arm64_aapcs_elf_gas.S +85 -0
  542. package/ReactAndroid/src/main/jni/third-party/boost/asm/arm64/ontop_arm64_aapcs_elf_gas.S +113 -0
  543. package/ReactAndroid/src/main/jni/third-party/boost/asm/x86/jump_i386_sysv_elf_gas.S +78 -0
  544. package/ReactAndroid/src/main/jni/third-party/boost/asm/x86/make_i386_sysv_elf_gas.S +106 -0
  545. package/ReactAndroid/src/main/jni/third-party/boost/asm/x86/ontop_i386_sysv_elf_gas.S +85 -0
  546. package/ReactAndroid/src/main/jni/third-party/boost/asm/x86_64/jump_x86_64_sysv_elf_gas.S +76 -0
  547. package/ReactAndroid/src/main/jni/third-party/boost/asm/x86_64/make_x86_64_sysv_elf_gas.S +81 -0
  548. package/ReactAndroid/src/main/jni/third-party/boost/asm/x86_64/ontop_x86_64_sysv_elf_gas.S +79 -0
  549. package/ReactAndroid/src/main/jni/third-party/fmt/Android.mk +15 -0
  550. package/ReactAndroid/src/main/jni/third-party/folly/Android.mk +36 -16
  551. package/ReactAndroid/src/main/jni/third-party/libevent/Android.mk +36 -0
  552. package/ReactAndroid/src/main/jni/third-party/libevent/evconfig-private.h +49 -0
  553. package/ReactAndroid/src/main/jni/third-party/libevent/event-config.h +340 -0
  554. package/ReactAndroid/src/main/libraries/fresco/fresco-react-native/BUCK +26 -26
  555. package/ReactAndroid/src/main/libraries/soloader/java/com/facebook/soloader/BUCK +5 -5
  556. package/ReactAndroid/src/main/res/devsupport/values/strings.xml +2 -1
  557. package/ReactAndroid/src/main/res/views/uimanager/values/strings_unlocalized.xml +0 -8
  558. package/ReactAndroid/src/main/third-party/android/androidx/BUCK +63 -2
  559. package/ReactAndroid/src/main/third-party/java/infer-annotations/BUCK +2 -2
  560. package/ReactAndroid/src/main/third-party/java/okhttp/BUCK +4 -4
  561. package/ReactAndroid/src/main/third-party/java/okio/BUCK +2 -2
  562. package/ReactAndroid/src/main/third-party/java/robolectric/{4.4/BUCK → BUCK} +0 -0
  563. package/ReactAndroid/src/main/third-party/java/testing-support-lib/BUCK +0 -31
  564. package/ReactAndroid/src/test/java/com/facebook/react/RootViewTest.java +2 -2
  565. package/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK +1 -1
  566. package/ReactAndroid/src/test/java/com/facebook/react/bridge/ReactTestHelper.java +1 -0
  567. package/ReactAndroid/src/test/java/com/facebook/react/modules/BUCK +1 -0
  568. package/ReactAndroid/src/test/java/com/facebook/react/modules/deviceinfo/DeviceInfoModuleTest.java +168 -0
  569. package/ReactAndroid/src/test/java/com/facebook/react/views/image/ReactImagePropertyTest.java +8 -0
  570. package/ReactAndroid/src/test/java/com/facebook/react/views/textinput/ReactTextInputPropertyTest.java +4 -0
  571. package/ReactCommon/React-Fabric.podspec +11 -11
  572. package/ReactCommon/ReactCommon.podspec +3 -2
  573. package/ReactCommon/callinvoker/BUCK +2 -2
  574. package/ReactCommon/callinvoker/React-callinvoker.podspec +1 -1
  575. package/ReactCommon/cxxreact/Android.mk +2 -1
  576. package/ReactCommon/cxxreact/BUCK +1 -3
  577. package/ReactCommon/cxxreact/CxxNativeModule.cpp +28 -0
  578. package/ReactCommon/cxxreact/CxxNativeModule.h +9 -0
  579. package/ReactCommon/cxxreact/Instance.cpp +21 -1
  580. package/ReactCommon/cxxreact/NativeToJsBridge.cpp +0 -21
  581. package/ReactCommon/cxxreact/NativeToJsBridge.h +0 -6
  582. package/ReactCommon/cxxreact/React-cxxreact.podspec +4 -3
  583. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  584. package/ReactCommon/hermes/React-hermes.podspec +4 -4
  585. package/ReactCommon/hermes/executor/Android.mk +4 -4
  586. package/ReactCommon/hermes/inspector/Android.mk +1 -2
  587. package/ReactCommon/hermes/inspector/chrome/Connection.cpp +74 -0
  588. package/ReactCommon/hermes/inspector/chrome/MessageTypes.cpp +100 -1
  589. package/ReactCommon/hermes/inspector/chrome/MessageTypes.h +49 -1
  590. package/ReactCommon/hermes/inspector/chrome/tests/ConnectionTests.cpp +81 -0
  591. package/ReactCommon/hermes/inspector/tools/message_types.txt +2 -0
  592. package/ReactCommon/hermes/inspector/tools/msggen/package.json +8 -5
  593. package/ReactCommon/hermes/inspector/tools/msggen/src/Property.js +1 -0
  594. package/ReactCommon/hermes/inspector/tools/msggen/yarn.lock +2246 -1419
  595. package/ReactCommon/jsi/Android.mk +1 -1
  596. package/ReactCommon/jsi/BUCK +0 -2
  597. package/ReactCommon/jsi/JSCRuntime.cpp +7 -0
  598. package/ReactCommon/jsi/React-jsi.podspec +3 -3
  599. package/ReactCommon/jsi/jsi/decorator.h +7 -0
  600. package/ReactCommon/jsi/jsi/jsi.h +29 -0
  601. package/ReactCommon/jsi/jsi/jsilib-posix.cpp +1 -11
  602. package/ReactCommon/jsiexecutor/Android.mk +2 -2
  603. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +2 -2
  604. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +35 -2
  605. package/ReactCommon/logger/Android.mk +23 -0
  606. package/ReactCommon/logger/BUCK +43 -0
  607. package/ReactCommon/logger/React-logger.podspec +40 -0
  608. package/ReactCommon/logger/react_native_log.cpp +52 -0
  609. package/ReactCommon/logger/react_native_log.h +33 -0
  610. package/ReactCommon/react/nativemodule/core/Android.mk +2 -2
  611. package/ReactCommon/react/nativemodule/core/ReactCommon/LongLivedObject.cpp +1 -0
  612. package/ReactCommon/react/nativemodule/core/ReactCommon/LongLivedObject.h +3 -2
  613. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +46 -1
  614. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +10 -0
  615. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +37 -1
  616. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +24 -22
  617. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.h +11 -8
  618. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModule.h +7 -17
  619. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModule.mm +73 -40
  620. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.h +0 -1
  621. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm +111 -107
  622. package/ReactCommon/react/nativemodule/samples/BUCK +2 -2
  623. package/ReactCommon/react/nativemodule/samples/platform/android/Android.mk +1 -1
  624. package/ReactCommon/react/nativemodule/samples/platform/ios/RCTSampleTurboModule.mm +0 -2
  625. package/ReactCommon/react/renderer/animations/BUCK +2 -0
  626. package/ReactCommon/react/renderer/animations/LayoutAnimationCallbackWrapper.h +34 -0
  627. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +5 -27
  628. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.h +8 -14
  629. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +1231 -1401
  630. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.h +90 -241
  631. package/ReactCommon/react/renderer/animations/conversions.h +212 -0
  632. package/ReactCommon/react/renderer/animations/primitives.h +104 -0
  633. package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +544 -0
  634. package/ReactCommon/react/renderer/animations/utils.cpp +71 -0
  635. package/ReactCommon/react/renderer/animations/utils.h +80 -0
  636. package/ReactCommon/react/renderer/attributedstring/AttributedString.h +0 -1
  637. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +7 -3
  638. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h +12 -2
  639. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +7 -2
  640. package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +3 -1
  641. package/ReactCommon/react/renderer/attributedstring/conversions.h +162 -11
  642. package/ReactCommon/react/renderer/attributedstring/primitives.h +34 -1
  643. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProviderRegistry.cpp +2 -2
  644. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h +1 -0
  645. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +12 -6
  646. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.h +4 -1
  647. package/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.cpp +2 -1
  648. package/ReactCommon/react/renderer/components/image/Android.mk +1 -1
  649. package/ReactCommon/react/renderer/components/image/ImageProps.cpp +28 -9
  650. package/ReactCommon/react/renderer/components/image/ImageProps.h +5 -1
  651. package/ReactCommon/react/renderer/components/image/conversions.h +9 -2
  652. package/ReactCommon/react/renderer/components/inputaccessory/BUCK +1 -1
  653. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/BUCK +1 -1
  654. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +0 -1
  655. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.cpp +2 -1
  656. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.h +2 -0
  657. package/ReactCommon/react/renderer/components/root/BUCK +1 -0
  658. package/ReactCommon/react/renderer/components/root/RootProps.cpp +12 -2
  659. package/ReactCommon/react/renderer/components/root/RootProps.h +6 -1
  660. package/ReactCommon/react/renderer/components/root/RootShadowNode.cpp +7 -1
  661. package/ReactCommon/react/renderer/components/root/RootShadowNode.h +2 -0
  662. package/ReactCommon/react/renderer/components/root/tests/RootShadowNodeTest.cpp +35 -3
  663. package/ReactCommon/react/renderer/components/safeareaview/BUCK +1 -1
  664. package/ReactCommon/react/renderer/components/scrollview/Android.mk +1 -1
  665. package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.cpp +54 -4
  666. package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.h +10 -5
  667. package/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.cpp +4 -3
  668. package/ReactCommon/react/renderer/components/scrollview/ScrollViewState.h +5 -2
  669. package/ReactCommon/react/renderer/components/scrollview/conversions.h +5 -0
  670. package/ReactCommon/react/renderer/components/text/Android.mk +1 -1
  671. package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +32 -0
  672. package/ReactCommon/react/renderer/components/text/BaseTextProps.h +5 -1
  673. package/ReactCommon/react/renderer/components/text/BaseTextShadowNode.cpp +2 -3
  674. package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +1 -16
  675. package/ReactCommon/react/renderer/components/text/ParagraphProps.cpp +10 -4
  676. package/ReactCommon/react/renderer/components/text/ParagraphProps.h +5 -1
  677. package/ReactCommon/react/renderer/components/text/ParagraphShadowNode.cpp +3 -3
  678. package/ReactCommon/react/renderer/components/text/RawTextProps.cpp +3 -2
  679. package/ReactCommon/react/renderer/components/text/RawTextProps.h +5 -1
  680. package/ReactCommon/react/renderer/components/text/RawTextShadowNode.h +36 -2
  681. package/ReactCommon/react/renderer/components/text/TextProps.cpp +6 -3
  682. package/ReactCommon/react/renderer/components/text/TextProps.h +5 -1
  683. package/ReactCommon/react/renderer/components/text/TextShadowNode.h +23 -0
  684. package/ReactCommon/react/renderer/components/textinput/Android.mk +1 -1
  685. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp +58 -91
  686. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h +10 -6
  687. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputProps.cpp +46 -22
  688. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputProps.h +6 -5
  689. package/ReactCommon/react/renderer/components/textinput/iostextinput/conversions.h +19 -7
  690. package/ReactCommon/react/renderer/components/textinput/iostextinput/primitives.h +6 -0
  691. package/ReactCommon/react/renderer/components/textinput/iostextinput/propsConversions.h +63 -2
  692. package/ReactCommon/react/renderer/components/unimplementedview/Android.mk +1 -1
  693. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.cpp +4 -2
  694. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.h +5 -2
  695. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewProps.h +1 -0
  696. package/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h +28 -0
  697. package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +24 -1
  698. package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +4 -1
  699. package/ReactCommon/react/renderer/components/view/Android.mk +3 -2
  700. package/ReactCommon/react/renderer/components/view/BUCK +1 -0
  701. package/ReactCommon/react/renderer/components/view/Touch.h +1 -32
  702. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +19 -5
  703. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +2 -1
  704. package/ReactCommon/react/renderer/components/view/ViewComponentDescriptor.h +0 -22
  705. package/ReactCommon/react/renderer/components/view/ViewEventEmitter.cpp +1 -1
  706. package/ReactCommon/react/renderer/components/view/ViewProps.cpp +62 -14
  707. package/ReactCommon/react/renderer/components/view/ViewProps.h +7 -1
  708. package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +5 -10
  709. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +5 -12
  710. package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +1 -1
  711. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +58 -33
  712. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h +2 -8
  713. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +3 -2
  714. package/ReactCommon/react/renderer/components/view/YogaStylableProps.h +2 -0
  715. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +78 -7
  716. package/ReactCommon/react/renderer/components/view/conversions.h +57 -14
  717. package/ReactCommon/react/renderer/components/view/primitives.h +5 -4
  718. package/ReactCommon/react/renderer/components/view/propsConversions.h +163 -28
  719. package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +7 -2
  720. package/ReactCommon/react/renderer/core/Android.mk +1 -1
  721. package/ReactCommon/react/renderer/core/BUCK +1 -0
  722. package/ReactCommon/react/renderer/core/BatchedEventQueue.cpp +2 -34
  723. package/ReactCommon/react/renderer/core/BatchedEventQueue.h +2 -9
  724. package/ReactCommon/react/renderer/core/ComponentDescriptor.h +5 -2
  725. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +19 -21
  726. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +4 -0
  727. package/ReactCommon/react/renderer/core/EventDispatcher.cpp +9 -15
  728. package/ReactCommon/react/renderer/core/EventDispatcher.h +5 -10
  729. package/ReactCommon/react/renderer/core/EventEmitter.cpp +22 -12
  730. package/ReactCommon/react/renderer/core/EventEmitter.h +7 -2
  731. package/ReactCommon/react/renderer/core/EventPipe.h +2 -0
  732. package/ReactCommon/react/renderer/core/EventPriority.h +1 -1
  733. package/ReactCommon/react/renderer/core/EventQueue.cpp +39 -36
  734. package/ReactCommon/react/renderer/core/EventQueue.h +14 -8
  735. package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +82 -0
  736. package/ReactCommon/react/renderer/core/EventQueueProcessor.h +36 -0
  737. package/ReactCommon/react/renderer/core/LayoutConstraints.h +6 -0
  738. package/ReactCommon/react/renderer/core/LayoutableShadowNode.cpp +1 -1
  739. package/ReactCommon/react/renderer/core/LayoutableShadowNode.h +0 -6
  740. package/ReactCommon/react/renderer/core/Props.cpp +10 -2
  741. package/ReactCommon/react/renderer/core/Props.h +6 -1
  742. package/ReactCommon/react/renderer/core/PropsParserContext.h +29 -0
  743. package/ReactCommon/react/renderer/core/RawEvent.cpp +4 -2
  744. package/ReactCommon/react/renderer/core/RawEvent.h +40 -3
  745. package/ReactCommon/react/renderer/core/RawProps.cpp +2 -1
  746. package/ReactCommon/react/renderer/core/RawProps.h +3 -1
  747. package/ReactCommon/react/renderer/core/RawPropsKey.cpp +10 -2
  748. package/ReactCommon/react/renderer/core/RawPropsKeyMap.cpp +1 -1
  749. package/ReactCommon/react/renderer/core/RawPropsParser.cpp +1 -1
  750. package/ReactCommon/react/renderer/core/RawPropsParser.h +11 -2
  751. package/ReactCommon/react/renderer/core/ReactEventPriority.h +43 -0
  752. package/ReactCommon/react/renderer/core/ReactPrimitives.h +0 -2
  753. package/ReactCommon/react/renderer/core/ShadowNode.cpp +9 -12
  754. package/ReactCommon/react/renderer/core/ShadowNode.h +4 -0
  755. package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +1 -0
  756. package/ReactCommon/react/renderer/core/ShadowNodeTraits.h +17 -1
  757. package/ReactCommon/react/renderer/core/propsConversions.h +19 -9
  758. package/ReactCommon/react/renderer/core/tests/ComponentDescriptorTest.cpp +16 -4
  759. package/ReactCommon/react/renderer/core/tests/ConcreteShadowNodeTest.cpp +1 -1
  760. package/ReactCommon/react/renderer/core/tests/EventQueueProcessorTest.cpp +134 -0
  761. package/ReactCommon/react/renderer/core/tests/RawPropsTest.cpp +97 -29
  762. package/ReactCommon/react/renderer/core/tests/TestComponent.h +6 -2
  763. package/ReactCommon/react/renderer/core/tests/traitCastTest.cpp +31 -0
  764. package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +9 -9
  765. package/ReactCommon/react/renderer/graphics/Android.mk +5 -2
  766. package/ReactCommon/react/renderer/graphics/BUCK +12 -1
  767. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +3 -2
  768. package/ReactCommon/react/renderer/graphics/Transform.cpp +2 -2
  769. package/ReactCommon/react/renderer/graphics/Transform.h +1 -1
  770. package/ReactCommon/react/renderer/graphics/conversions.h +34 -19
  771. package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/PlatformColorParser.h +67 -0
  772. package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.cpp +8 -0
  773. package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.h +1 -0
  774. package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/PlatformColorParser.h +29 -0
  775. package/ReactCommon/react/renderer/graphics/platform/ios/Color.cpp +8 -0
  776. package/ReactCommon/react/renderer/graphics/platform/ios/Color.h +43 -1
  777. package/ReactCommon/react/renderer/graphics/platform/ios/PlatformColorParser.h +34 -0
  778. package/ReactCommon/react/renderer/graphics/platform/ios/RCTPlatformColorUtils.h +12 -0
  779. package/ReactCommon/react/renderer/graphics/platform/ios/RCTPlatformColorUtils.mm +206 -0
  780. package/ReactCommon/react/renderer/imagemanager/BUCK +1 -1
  781. package/ReactCommon/react/renderer/imagemanager/platform/ios/RCTSyncImageManager.mm +1 -1
  782. package/ReactCommon/react/renderer/leakchecker/LeakChecker.cpp +6 -9
  783. package/ReactCommon/react/renderer/leakchecker/LeakChecker.h +1 -4
  784. package/ReactCommon/react/renderer/mapbuffer/BUCK +2 -2
  785. package/ReactCommon/react/renderer/mapbuffer/MapBuffer.cpp +34 -31
  786. package/ReactCommon/react/renderer/mapbuffer/MapBuffer.h +10 -9
  787. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +50 -35
  788. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.h +13 -13
  789. package/ReactCommon/react/renderer/mapbuffer/primitives.h +18 -19
  790. package/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp +13 -1
  791. package/ReactCommon/react/renderer/mounting/Android.mk +2 -1
  792. package/ReactCommon/react/renderer/mounting/BUCK +1 -0
  793. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +392 -519
  794. package/ReactCommon/react/renderer/mounting/Differentiator.h +1 -2
  795. package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +1 -7
  796. package/ReactCommon/react/renderer/mounting/MountingCoordinator.h +0 -4
  797. package/ReactCommon/react/renderer/mounting/MountingOverrideDelegate.h +1 -1
  798. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +7 -5
  799. package/ReactCommon/react/renderer/mounting/ShadowTree.h +2 -1
  800. package/ReactCommon/react/renderer/mounting/ShadowView.cpp +2 -0
  801. package/ReactCommon/react/renderer/mounting/ShadowView.h +2 -1
  802. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +12 -0
  803. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +10 -1
  804. package/ReactCommon/react/renderer/mounting/StubViewTree.cpp +10 -3
  805. package/ReactCommon/react/renderer/mounting/TelemetryController.cpp +1 -1
  806. package/ReactCommon/react/renderer/mounting/stubs.cpp +3 -3
  807. package/ReactCommon/react/renderer/mounting/tests/MountingTest.cpp +23 -22
  808. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +49 -10
  809. package/ReactCommon/react/renderer/mounting/tests/StackingContextTest.cpp +2 -2
  810. package/ReactCommon/react/renderer/mounting/tests/StateReconciliationTest.cpp +6 -3
  811. package/ReactCommon/react/renderer/runtimescheduler/Android.mk +2 -1
  812. package/ReactCommon/react/renderer/runtimescheduler/BUCK +1 -0
  813. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +78 -16
  814. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +60 -8
  815. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +17 -7
  816. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +8 -5
  817. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.cpp +30 -0
  818. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.h +34 -0
  819. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerClock.h +4 -2
  820. package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriority.h +4 -2
  821. package/ReactCommon/react/renderer/runtimescheduler/Task.cpp +20 -25
  822. package/ReactCommon/react/renderer/runtimescheduler/Task.h +16 -15
  823. package/ReactCommon/react/renderer/runtimescheduler/primitives.h +4 -2
  824. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +297 -11
  825. package/ReactCommon/react/renderer/runtimescheduler/tests/StubQueue.h +6 -0
  826. package/ReactCommon/react/renderer/scheduler/AsynchronousEventBeat.cpp +13 -12
  827. package/ReactCommon/react/renderer/scheduler/AsynchronousEventBeat.h +4 -4
  828. package/ReactCommon/react/renderer/{components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerShadowNode.cpp → scheduler/InspectorData.h} +10 -2
  829. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +64 -40
  830. package/ReactCommon/react/renderer/scheduler/Scheduler.h +18 -3
  831. package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +9 -1
  832. package/ReactCommon/react/renderer/scheduler/SchedulerToolbox.h +1 -6
  833. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +49 -35
  834. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +12 -12
  835. package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +1 -0
  836. package/ReactCommon/react/renderer/scheduler/SynchronousEventBeat.cpp +11 -4
  837. package/ReactCommon/react/renderer/scheduler/SynchronousEventBeat.h +4 -1
  838. package/ReactCommon/react/renderer/telemetry/BUCK +1 -0
  839. package/ReactCommon/react/renderer/telemetry/tests/TransactionTelemetryTest.cpp +1 -19
  840. package/ReactCommon/react/renderer/templateprocessor/UITemplateProcessor.cpp +5 -5
  841. package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.cpp +2 -1
  842. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.h +2 -0
  843. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.mm +22 -0
  844. package/ReactCommon/react/renderer/timeline/BUCK +6 -6
  845. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +32 -28
  846. package/ReactCommon/react/renderer/uimanager/UIManager.h +3 -4
  847. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationDelegate.h +1 -1
  848. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +61 -17
  849. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +13 -1
  850. package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +10 -2
  851. package/ReactCommon/react/{renderer/components/picker/iospicker → test_utils}/BUCK +12 -14
  852. package/ReactCommon/react/{renderer/mounting/tests → test_utils}/Entropy.h +0 -0
  853. package/ReactCommon/react/test_utils/MockClock.h +29 -0
  854. package/ReactCommon/react/{renderer/core/Constants.h → test_utils/MockSurfaceHandler.h} +9 -7
  855. package/ReactCommon/react/{renderer/mounting/tests → test_utils}/shadowTreeGeneration.h +18 -4
  856. package/ReactCommon/react/utils/Android.mk +3 -1
  857. package/ReactCommon/react/utils/BUCK +1 -0
  858. package/ReactCommon/react/utils/ContextContainer.h +0 -27
  859. package/ReactCommon/reactperflogger/React-perflogger.podspec +1 -1
  860. package/ReactCommon/runtimeexecutor/React-runtimeexecutor.podspec +1 -1
  861. package/ReactCommon/runtimeexecutor/ReactCommon/RuntimeExecutor.h +12 -0
  862. package/ReactCommon/yoga/yoga/Yoga.cpp +2 -6
  863. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar +0 -0
  864. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.md5 +1 -0
  865. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.sha1 +1 -0
  866. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.sha256 +1 -0
  867. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.sha512 +1 -0
  868. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module +272 -0
  869. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.md5 +1 -0
  870. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.sha1 +1 -0
  871. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.sha256 +1 -0
  872. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.sha512 +1 -0
  873. package/android/com/facebook/react/react-native/{0.0.0-17be3a003/react-native-0.0.0-17be3a003.pom → 0.0.0-18697adec/react-native-0.0.0-18697adec.pom} +22 -11
  874. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.md5 +1 -0
  875. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.sha1 +1 -0
  876. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.sha256 +1 -0
  877. package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.sha512 +1 -0
  878. package/android/com/facebook/react/react-native/maven-metadata.xml +4 -3
  879. package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
  880. package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
  881. package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -0
  882. package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -0
  883. package/flow/HermesInternalType.js +114 -0
  884. package/flow/global.js +68 -0
  885. package/flow-typed/npm/react-test-renderer_v16.x.x.js +79 -0
  886. package/index.js +67 -42
  887. package/jest/preprocessor.js +75 -7
  888. package/jest/renderer.js +3 -7
  889. package/jest/setup.js +3 -2
  890. package/package.json +59 -20
  891. package/react.gradle +22 -22
  892. package/scripts/find-node.sh +6 -0
  893. package/scripts/generate-specs-cli.js +20 -2
  894. package/scripts/ios-configure-glog.sh +4 -0
  895. package/scripts/react-native-xcode.sh +5 -1
  896. package/scripts/react_native_pods.rb +213 -43
  897. package/template/_flowconfig +3 -4
  898. package/template/_gitignore +1 -0
  899. package/template/android/app/build.gradle +12 -7
  900. package/template/android/app/src/main/res/values/styles.xml +0 -1
  901. package/template/android/build.gradle +5 -6
  902. package/template/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  903. package/template/android/gradle.properties +1 -1
  904. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +2 -0
  905. package/template/ios/Podfile +1 -0
  906. package/template/package.json +3 -4
  907. package/third-party-podspecs/RCT-Folly.podspec +31 -11
  908. package/third-party-podspecs/boost.podspec +23 -0
  909. package/Libraries/BUCK +0 -24
  910. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +0 -87
  911. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js +0 -30
  912. package/Libraries/Components/DatePickerAndroid/DatePickerAndroidTypes.js +0 -30
  913. package/Libraries/Components/Picker/AndroidDialogPickerNativeComponent.js +0 -83
  914. package/Libraries/Components/Picker/AndroidDropdownPickerNativeComponent.js +0 -82
  915. package/Libraries/Components/Picker/Picker.js +0 -169
  916. package/Libraries/Components/Picker/PickerAndroid.android.js +0 -143
  917. package/Libraries/Components/Picker/PickerIOS.android.js +0 -14
  918. package/Libraries/Components/Picker/PickerIOS.ios.js +0 -162
  919. package/Libraries/Components/Picker/RCTPickerNativeComponent.js +0 -86
  920. package/Libraries/Components/ScrollView/ScrollViewStickyHeaderInjection.js +0 -17
  921. package/Libraries/Components/StaticContainer.react.js +0 -51
  922. package/Libraries/Components/StatusBar/StatusBarIOS.js +0 -38
  923. package/Libraries/Components/Switch/SwitchInjection.js +0 -17
  924. package/Libraries/Components/Touchable/ensurePositiveDelayProps.js +0 -26
  925. package/Libraries/Interaction/InteractionMixin.js +0 -53
  926. package/Libraries/Lists/VirtualizedListInjection.js +0 -15
  927. package/Libraries/Lists/VirtualizedSectionListInjection.js +0 -17
  928. package/Libraries/ReactNative/queryLayoutByID.js +0 -58
  929. package/Libraries/StyleSheet/StyleSheetValidation.js +0 -100
  930. package/Libraries/Text/TextInjection.js +0 -15
  931. package/Libraries/Utilities/registerGeneratedViewConfig.js +0 -34
  932. package/React/Base/RCTBundleHolderModule.h +0 -16
  933. package/React/Base/RCTJSInvokerModule.h +0 -18
  934. package/React/Fabric/Mounting/ComponentViews/Picker/RCTPickerComponentView.h +0 -19
  935. package/React/Fabric/Mounting/ComponentViews/Picker/RCTPickerComponentView.mm +0 -206
  936. package/React/Views/RCTPicker.h +0 -23
  937. package/React/Views/RCTPicker.m +0 -122
  938. package/React/Views/RCTPickerManager.m +0 -59
  939. package/ReactAndroid/release.gradle +0 -87
  940. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/DatePickerDialogTestCase.java +0 -172
  941. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ReactPickerTestCase.java +0 -196
  942. package/ReactAndroid/src/androidTest/js/DatePickerDialogTestModule.js +0 -45
  943. package/ReactAndroid/src/androidTest/js/PickerAndroidTestModule.js +0 -89
  944. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +0 -82
  945. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK +0 -27
  946. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogFragment.java +0 -137
  947. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java +0 -147
  948. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerMode.java +0 -15
  949. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DismissableDatePickerDialog.java +0 -117
  950. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDialogPickerManagerDelegate.java +0 -48
  951. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDialogPickerManagerInterface.java +0 -23
  952. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDropdownPickerManagerDelegate.java +0 -48
  953. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDropdownPickerManagerInterface.java +0 -22
  954. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/BUCK +0 -30
  955. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactDialogPickerManager.java +0 -51
  956. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactDropdownPickerManager.java +0 -50
  957. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactPicker.java +0 -196
  958. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactPickerAdapter.java +0 -95
  959. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactPickerItem.java +0 -43
  960. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactPickerManager.java +0 -99
  961. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/events/PickerItemSelectEvent.java +0 -42
  962. package/ReactCommon/react/renderer/components/picker/Android.mk +0 -37
  963. package/ReactCommon/react/renderer/components/picker/BUCK +0 -98
  964. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerEventEmitter.cpp +0 -23
  965. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerEventEmitter.h +0 -27
  966. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerProps.cpp +0 -28
  967. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerProps.h +0 -77
  968. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerShadowNode.h +0 -29
  969. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerComponentDescriptor.h +0 -21
  970. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerEventEmitter.cpp +0 -23
  971. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerEventEmitter.h +0 -27
  972. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerProps.cpp +0 -28
  973. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerProps.h +0 -77
  974. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerShadowNode.cpp +0 -17
  975. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerShadowNode.h +0 -29
  976. package/ReactCommon/react/renderer/components/picker/iospicker/PickerComponentDescriptor.h +0 -26
  977. package/ReactCommon/react/renderer/components/picker/iospicker/PickerEventEmitter.cpp +0 -23
  978. package/ReactCommon/react/renderer/components/picker/iospicker/PickerEventEmitter.h +0 -28
  979. package/ReactCommon/react/renderer/components/picker/iospicker/PickerProps.cpp +0 -46
  980. package/ReactCommon/react/renderer/components/picker/iospicker/PickerProps.h +0 -36
  981. package/ReactCommon/react/renderer/components/picker/iospicker/PickerShadowNode.cpp +0 -16
  982. package/ReactCommon/react/renderer/components/picker/iospicker/PickerShadowNode.h +0 -33
  983. package/ReactCommon/react/renderer/components/picker/iospicker/PickerState.h +0 -19
  984. package/ReactCommon/react/renderer/components/picker/iospicker/conversions.h +0 -48
  985. package/ReactCommon/react/renderer/core/Constants.cpp +0 -24
  986. package/ReactCommon/react/renderer/mounting/DifferentiatorFlatteningClassic.cpp +0 -1564
  987. package/ReactCommon/react/renderer/mounting/DifferentiatorFlatteningClassic.h +0 -45
  988. package/android/com/facebook/react/react-native/0.0.0-17be3a003/react-native-0.0.0-17be3a003.aar +0 -0
  989. package/android/com/facebook/react/react-native/0.0.0-17be3a003/react-native-0.0.0-17be3a003.aar.md5 +0 -1
  990. package/android/com/facebook/react/react-native/0.0.0-17be3a003/react-native-0.0.0-17be3a003.aar.sha1 +0 -1
  991. package/android/com/facebook/react/react-native/0.0.0-17be3a003/react-native-0.0.0-17be3a003.pom.md5 +0 -1
  992. package/android/com/facebook/react/react-native/0.0.0-17be3a003/react-native-0.0.0-17be3a003.pom.sha1 +0 -1
  993. package/scripts/generate-specs.sh +0 -100
@@ -6,7 +6,6 @@
6
6
  */
7
7
 
8
8
  #include "Differentiator.h"
9
- #include "DifferentiatorFlatteningClassic.h"
10
9
 
11
10
  #include <better/map.h>
12
11
  #include <better/small_vector.h>
@@ -170,8 +169,8 @@ class TinyMap final {
170
169
  }
171
170
 
172
171
  better::small_vector<Pair, DefaultSize> vector_;
173
- int numErased_{0};
174
- int erasedAtFront_{0};
172
+ size_t numErased_{0};
173
+ size_t erasedAtFront_{0};
175
174
  };
176
175
 
177
176
  /*
@@ -336,7 +335,6 @@ static_assert(
336
335
  std::is_move_assignable<ShadowViewNodePair::NonOwningList>::value,
337
336
  "`ShadowViewNodePair::NonOwningList` must be `move assignable`.");
338
337
 
339
- // Forward declaration
340
338
  static void calculateShadowViewMutationsV2(
341
339
  BREADCRUMB_TYPE breadcrumb,
342
340
  ViewNodePairScope &scope,
@@ -346,20 +344,40 @@ static void calculateShadowViewMutationsV2(
346
344
  ShadowViewNodePair::NonOwningList &&newChildPairs);
347
345
 
348
346
  struct OrderedMutationInstructionContainer {
349
- ShadowViewMutation::List &createMutations;
350
- ShadowViewMutation::List &deleteMutations;
351
- ShadowViewMutation::List &insertMutations;
352
- ShadowViewMutation::List &removeMutations;
353
- ShadowViewMutation::List &updateMutations;
354
- ShadowViewMutation::List &downwardMutations;
355
- ShadowViewMutation::List &destructiveDownwardMutations;
347
+ ShadowViewMutation::List createMutations{};
348
+ ShadowViewMutation::List deleteMutations{};
349
+ ShadowViewMutation::List insertMutations{};
350
+ ShadowViewMutation::List removeMutations{};
351
+ ShadowViewMutation::List updateMutations{};
352
+ ShadowViewMutation::List downwardMutations{};
353
+ ShadowViewMutation::List destructiveDownwardMutations{};
356
354
  };
357
355
 
356
+ static void updateMatchedPairSubtrees(
357
+ BREADCRUMB_TYPE breadcrumb,
358
+ ViewNodePairScope &scope,
359
+ OrderedMutationInstructionContainer &mutationContainer,
360
+ TinyMap<Tag, ShadowViewNodePair *> &newRemainingPairs,
361
+ ShadowViewNodePair::NonOwningList &oldChildPairs,
362
+ ShadowViewNodePair::NonOwningList &newChildPairs,
363
+ ShadowView const &parentShadowView,
364
+ ShadowViewNodePair const &oldPair,
365
+ ShadowViewNodePair const &newPair);
366
+
367
+ static void updateMatchedPair(
368
+ BREADCRUMB_TYPE breadcrumb,
369
+ OrderedMutationInstructionContainer &mutationContainer,
370
+ bool oldNodeFoundInOrder,
371
+ bool newNodeFoundInOrder,
372
+ ShadowView const &parentShadowView,
373
+ ShadowViewNodePair const &oldPair,
374
+ ShadowViewNodePair const &newPair);
375
+
358
376
  static void calculateShadowViewMutationsFlattener(
359
377
  BREADCRUMB_TYPE breadcrumb,
360
378
  ViewNodePairScope &scope,
361
379
  ReparentMode reparentMode,
362
- OrderedMutationInstructionContainer &mutationInstructionContainer,
380
+ OrderedMutationInstructionContainer &mutationContainer,
363
381
  ShadowView const &parentShadowView,
364
382
  TinyMap<Tag, ShadowViewNodePair *> &unvisitedFlattenedNodes,
365
383
  ShadowViewNodePair const &node,
@@ -367,6 +385,199 @@ static void calculateShadowViewMutationsFlattener(
367
385
  TinyMap<Tag, ShadowViewNodePair *> *parentSubVisitedOtherOldNodes =
368
386
  nullptr);
369
387
 
388
+ /**
389
+ * Updates the subtrees of any matched ShadowViewNodePair. This handles
390
+ * all cases of flattening/unflattening.
391
+ *
392
+ * This may modify data-structures passed to it and owned by the caller,
393
+ * specifically `newRemainingPairs`, and so the caller must also own
394
+ * the ViewNodePairScope used within.
395
+ */
396
+ static void updateMatchedPairSubtrees(
397
+ BREADCRUMB_TYPE breadcrumb,
398
+ ViewNodePairScope &scope,
399
+ OrderedMutationInstructionContainer &mutationContainer,
400
+ TinyMap<Tag, ShadowViewNodePair *> &newRemainingPairs,
401
+ ShadowViewNodePair::NonOwningList &oldChildPairs,
402
+ ShadowViewNodePair::NonOwningList &newChildPairs,
403
+ ShadowView const &parentShadowView,
404
+ ShadowViewNodePair const &oldPair,
405
+ ShadowViewNodePair const &newPair) {
406
+ // Are we flattening or unflattening either one? If node was
407
+ // flattened in both trees, there's no change, just continue.
408
+ if (oldPair.flattened && newPair.flattened) {
409
+ return;
410
+ }
411
+
412
+ // We are either flattening or unflattening this node.
413
+ if (oldPair.flattened != newPair.flattened) {
414
+ DEBUG_LOGS({
415
+ LOG(ERROR)
416
+ << "Differ: flattening or unflattening in updateMatchedPairSubtrees: ["
417
+ << oldPair.shadowView.tag << "] [" << newPair.shadowView.tag << "] "
418
+ << oldPair.flattened << " " << newPair.flattened << " with parent: ["
419
+ << parentShadowView.tag << "]";
420
+ });
421
+
422
+ // Flattening
423
+ if (!oldPair.flattened) {
424
+ // Flatten old tree into new list
425
+ // At the end of this loop we still want to know which of these
426
+ // children are visited, so we reuse the `newRemainingPairs`
427
+ // map.
428
+ calculateShadowViewMutationsFlattener(
429
+ DIFF_BREADCRUMB(
430
+ "Flatten tree " + std::to_string(parentShadowView.tag) +
431
+ " into list " + std::to_string(oldPair.shadowView.tag)),
432
+ scope,
433
+ ReparentMode::Flatten,
434
+ mutationContainer,
435
+ parentShadowView,
436
+ newRemainingPairs,
437
+ oldPair);
438
+ }
439
+ // Unflattening
440
+ else {
441
+ // Construct unvisited nodes map
442
+ auto unvisitedOldChildPairs = TinyMap<Tag, ShadowViewNodePair *>{};
443
+ // We don't know where all the children of oldChildPair are
444
+ // within oldChildPairs, but we know that they're in the same
445
+ // relative order. The reason for this is because of flattening
446
+ // + zIndex: the children could be listed before the parent,
447
+ // interwoven with children from other nodes, etc.
448
+ auto oldFlattenedNodes =
449
+ sliceChildShadowNodeViewPairsFromViewNodePair(oldPair, scope, true);
450
+ for (size_t i = 0, j = 0;
451
+ i < oldChildPairs.size() && j < oldFlattenedNodes.size();
452
+ i++) {
453
+ auto &oldChild = *oldChildPairs[i];
454
+ if (oldChild.shadowView.tag == oldFlattenedNodes[j]->shadowView.tag) {
455
+ unvisitedOldChildPairs.insert({oldChild.shadowView.tag, &oldChild});
456
+ j++;
457
+ }
458
+ }
459
+
460
+ // Unflatten old list into new tree
461
+ calculateShadowViewMutationsFlattener(
462
+ DIFF_BREADCRUMB(
463
+ "Unflatten old list " + std::to_string(parentShadowView.tag) +
464
+ " into new tree " + std::to_string(newPair.shadowView.tag)),
465
+ scope,
466
+ ReparentMode::Unflatten,
467
+ mutationContainer,
468
+ parentShadowView,
469
+ unvisitedOldChildPairs,
470
+ newPair);
471
+
472
+ // If old nodes were not visited, we know that we can delete
473
+ // them now. They will be removed from the hierarchy by the
474
+ // outermost loop of this function.
475
+ // TODO: is this necessary anymore?
476
+ for (auto &oldFlattenedNodePtr : oldFlattenedNodes) {
477
+ auto &oldFlattenedNode = *oldFlattenedNodePtr;
478
+ auto unvisitedOldChildPairIt =
479
+ unvisitedOldChildPairs.find(oldFlattenedNode.shadowView.tag);
480
+ if (unvisitedOldChildPairIt == unvisitedOldChildPairs.end()) {
481
+ // Node was visited - make sure to remove it from
482
+ // "newRemainingPairs" map
483
+ auto newRemainingIt =
484
+ newRemainingPairs.find(oldFlattenedNode.shadowView.tag);
485
+ if (newRemainingIt != newRemainingPairs.end()) {
486
+ newRemainingPairs.erase(newRemainingIt);
487
+ }
488
+ }
489
+ }
490
+ }
491
+
492
+ return;
493
+ }
494
+
495
+ // Update subtrees if View is not flattened, and if node addresses
496
+ // are not equal
497
+ if (oldPair.shadowNode != newPair.shadowNode) {
498
+ ViewNodePairScope innerScope{};
499
+ auto oldGrandChildPairs =
500
+ sliceChildShadowNodeViewPairsFromViewNodePair(oldPair, innerScope);
501
+ auto newGrandChildPairs =
502
+ sliceChildShadowNodeViewPairsFromViewNodePair(newPair, innerScope);
503
+ calculateShadowViewMutationsV2(
504
+ DIFF_BREADCRUMB(
505
+ "Non-trivial update " + std::to_string(oldPair.shadowView.tag)),
506
+ innerScope,
507
+ *(newGrandChildPairs.size()
508
+ ? &mutationContainer.downwardMutations
509
+ : &mutationContainer.destructiveDownwardMutations),
510
+ oldPair.shadowView,
511
+ std::move(oldGrandChildPairs),
512
+ std::move(newGrandChildPairs));
513
+ }
514
+ }
515
+
516
+ /**
517
+ * Handle updates to a matched node pair, but NOT to their subtrees.
518
+ *
519
+ * Here we have (and need) knowledge of whether a node was found during
520
+ * in-order traversal, or out-of-order via a map lookup. Nodes are only REMOVEd
521
+ * or INSERTed when they are encountered via in-order-traversal, to ensure
522
+ * correct ordering of INSERT and REMOVE mutations.
523
+ */
524
+ static void updateMatchedPair(
525
+ BREADCRUMB_TYPE breadcrumb,
526
+ OrderedMutationInstructionContainer &mutationContainer,
527
+ bool oldNodeFoundInOrder,
528
+ bool newNodeFoundInOrder,
529
+ ShadowView const &parentShadowView,
530
+ ShadowViewNodePair const &oldPair,
531
+ ShadowViewNodePair const &newPair) {
532
+ oldPair.otherTreePair = &newPair;
533
+ newPair.otherTreePair = &oldPair;
534
+
535
+ // Check concrete-ness of views
536
+ // Create/Delete and Insert/Remove if necessary
537
+ if (oldPair.isConcreteView != newPair.isConcreteView) {
538
+ if (newPair.isConcreteView) {
539
+ if (newNodeFoundInOrder) {
540
+ mutationContainer.insertMutations.push_back(
541
+ ShadowViewMutation::InsertMutation(
542
+ parentShadowView,
543
+ newPair.shadowView,
544
+ static_cast<int>(newPair.mountIndex)));
545
+ }
546
+ mutationContainer.createMutations.push_back(
547
+ ShadowViewMutation::CreateMutation(newPair.shadowView));
548
+ } else {
549
+ if (oldNodeFoundInOrder) {
550
+ mutationContainer.removeMutations.push_back(
551
+ ShadowViewMutation::RemoveMutation(
552
+ parentShadowView,
553
+ oldPair.shadowView,
554
+ static_cast<int>(oldPair.mountIndex)));
555
+ }
556
+ mutationContainer.deleteMutations.push_back(
557
+ ShadowViewMutation::DeleteMutation(oldPair.shadowView));
558
+ }
559
+ } else if (oldPair.isConcreteView && newPair.isConcreteView) {
560
+ // If we found the old node by traversing, but not the new node,
561
+ // it means that there's some reordering requiring a REMOVE mutation.
562
+ if (oldNodeFoundInOrder && !newNodeFoundInOrder) {
563
+ mutationContainer.removeMutations.push_back(
564
+ ShadowViewMutation::RemoveMutation(
565
+ parentShadowView,
566
+ newPair.shadowView,
567
+ static_cast<int>(oldPair.mountIndex)));
568
+ }
569
+
570
+ // Even if node's children are flattened, it might still be a
571
+ // concrete view. The case where they're different is handled
572
+ // above.
573
+ if (oldPair.shadowView != newPair.shadowView) {
574
+ mutationContainer.updateMutations.push_back(
575
+ ShadowViewMutation::UpdateMutation(
576
+ oldPair.shadowView, newPair.shadowView));
577
+ }
578
+ }
579
+ }
580
+
370
581
  /**
371
582
  * Here we flatten or unflatten a subtree, given an unflattened node in either
372
583
  * the old or new tree, and a list of flattened nodes in the other tree.
@@ -409,7 +620,7 @@ static void calculateShadowViewMutationsFlattener(
409
620
  BREADCRUMB_TYPE breadcrumb,
410
621
  ViewNodePairScope &scope,
411
622
  ReparentMode reparentMode,
412
- OrderedMutationInstructionContainer &mutationInstructionContainer,
623
+ OrderedMutationInstructionContainer &mutationContainer,
413
624
  ShadowView const &parentShadowView,
414
625
  TinyMap<Tag, ShadowViewNodePair *> &unvisitedOtherNodes,
415
626
  ShadowViewNodePair const &node,
@@ -558,13 +769,13 @@ static void calculateShadowViewMutationsFlattener(
558
769
  react_native_assert(existsInOtherTree == treeChildPair.inOtherTree());
559
770
  if (treeChildPair.inOtherTree() &&
560
771
  treeChildPair.otherTreePair->isConcreteView) {
561
- mutationInstructionContainer.removeMutations.push_back(
772
+ mutationContainer.removeMutations.push_back(
562
773
  ShadowViewMutation::RemoveMutation(
563
774
  node.shadowView,
564
775
  treeChildPair.otherTreePair->shadowView,
565
776
  static_cast<int>(treeChildPair.mountIndex)));
566
777
  } else {
567
- mutationInstructionContainer.removeMutations.push_back(
778
+ mutationContainer.removeMutations.push_back(
568
779
  ShadowViewMutation::RemoveMutation(
569
780
  node.shadowView,
570
781
  treeChildPair.shadowView,
@@ -572,8 +783,8 @@ static void calculateShadowViewMutationsFlattener(
572
783
  }
573
784
  } else {
574
785
  // treeChildParent represents the "new" version of the node, so
575
- // we can safely insert it
576
- mutationInstructionContainer.insertMutations.push_back(
786
+ // we can safely insert it without checking in the other tree
787
+ mutationContainer.insertMutations.push_back(
577
788
  ShadowViewMutation::InsertMutation(
578
789
  node.shadowView,
579
790
  treeChildPair.shadowView,
@@ -615,9 +826,13 @@ static void calculateShadowViewMutationsFlattener(
615
826
  continue;
616
827
  }
617
828
 
829
+ // TODO: compare ShadowNode pointer instead of ShadowView here?
830
+ // Or ShadowNode ptr comparison before comparing ShadowView, to allow for
831
+ // short-circuiting? ShadowView comparison is relatively expensive vs
832
+ // ShadowNode.
618
833
  if (newTreeNodePair.shadowView != oldTreeNodePair.shadowView &&
619
834
  newTreeNodePair.isConcreteView && oldTreeNodePair.isConcreteView) {
620
- mutationInstructionContainer.updateMutations.push_back(
835
+ mutationContainer.updateMutations.push_back(
621
836
  ShadowViewMutation::UpdateMutation(
622
837
  oldTreeNodePair.shadowView, newTreeNodePair.shadowView));
623
838
  }
@@ -631,7 +846,7 @@ static void calculateShadowViewMutationsFlattener(
631
846
  "(Un)Flattener trivial update of " +
632
847
  std::to_string(newTreeNodePair.shadowView.tag)),
633
848
  innerScope,
634
- mutationInstructionContainer.downwardMutations,
849
+ mutationContainer.downwardMutations,
635
850
  newTreeNodePair.shadowView,
636
851
  sliceChildShadowNodeViewPairsFromViewNodePair(
637
852
  oldTreeNodePair, innerScope),
@@ -662,7 +877,7 @@ static void calculateShadowViewMutationsFlattener(
662
877
  " old:" + std::to_string(treeChildPair.shadowView.tag)),
663
878
  scope,
664
879
  childReparentMode,
665
- mutationInstructionContainer,
880
+ mutationContainer,
666
881
  (reparentMode == ReparentMode::Flatten
667
882
  ? parentShadowView
668
883
  : newTreeNodePair.shadowView),
@@ -671,30 +886,32 @@ static void calculateShadowViewMutationsFlattener(
671
886
  subVisitedNewMap,
672
887
  subVisitedOldMap);
673
888
  } else {
674
- // Unflatten parent, flatten child
675
- if (childReparentMode == ReparentMode::Flatten) {
676
- // Construct unvisited nodes map
677
- auto unvisitedNewChildPairs = TinyMap<Tag, ShadowViewNodePair *>{};
678
- // Memory note: these oldFlattenedNodes all disappear at the end
679
- // of this "else" block, including any annotations we put on them.
680
- auto newFlattenedNodes =
681
- sliceChildShadowNodeViewPairsFromViewNodePair(
682
- newTreeNodePair, scope, true);
683
- for (size_t i = 0; i < newFlattenedNodes.size(); i++) {
684
- auto &newChild = *newFlattenedNodes[i];
685
-
686
- auto unvisitedOtherNodesIt =
687
- unvisitedOtherNodes.find(newChild.shadowView.tag);
688
- if (unvisitedOtherNodesIt != unvisitedOtherNodes.end()) {
689
- auto unvisitedItPair = *unvisitedOtherNodesIt->second;
690
- unvisitedNewChildPairs.insert(
691
- {unvisitedItPair.shadowView.tag, &unvisitedItPair});
692
- } else {
693
- unvisitedNewChildPairs.insert(
694
- {newChild.shadowView.tag, &newChild});
695
- }
889
+ // Get flattened nodes from either new or old tree
890
+ auto flattenedNodes = sliceChildShadowNodeViewPairsFromViewNodePair(
891
+ (childReparentMode == ReparentMode::Flatten ? newTreeNodePair
892
+ : oldTreeNodePair),
893
+ scope,
894
+ true);
895
+ // Construct unvisited nodes map
896
+ auto unvisitedRecursiveChildPairs =
897
+ TinyMap<Tag, ShadowViewNodePair *>{};
898
+ for (size_t i = 0; i < flattenedNodes.size(); i++) {
899
+ auto &newChild = *flattenedNodes[i];
900
+
901
+ auto unvisitedOtherNodesIt =
902
+ unvisitedOtherNodes.find(newChild.shadowView.tag);
903
+ if (unvisitedOtherNodesIt != unvisitedOtherNodes.end()) {
904
+ auto unvisitedItPair = *unvisitedOtherNodesIt->second;
905
+ unvisitedRecursiveChildPairs.insert(
906
+ {unvisitedItPair.shadowView.tag, &unvisitedItPair});
907
+ } else {
908
+ unvisitedRecursiveChildPairs.insert(
909
+ {newChild.shadowView.tag, &newChild});
696
910
  }
911
+ }
697
912
 
913
+ // Unflatten parent, flatten child
914
+ if (childReparentMode == ReparentMode::Flatten) {
698
915
  // Flatten old tree into new list
699
916
  // At the end of this loop we still want to know which of these
700
917
  // children are visited, so we reuse the `newRemainingPairs` map.
@@ -708,54 +925,17 @@ static void calculateShadowViewMutationsFlattener(
708
925
  " old:" + std::to_string(oldTreeNodePair.shadowView.tag)),
709
926
  scope,
710
927
  ReparentMode::Flatten,
711
- mutationInstructionContainer,
928
+ mutationContainer,
712
929
  (reparentMode == ReparentMode::Flatten
713
930
  ? parentShadowView
714
931
  : newTreeNodePair.shadowView),
715
- unvisitedNewChildPairs,
932
+ unvisitedRecursiveChildPairs,
716
933
  oldTreeNodePair,
717
934
  subVisitedNewMap,
718
935
  subVisitedOldMap);
719
-
720
- for (auto newFlattenedNode : newFlattenedNodes) {
721
- auto unvisitedOldChildPairIt =
722
- unvisitedNewChildPairs.find(newFlattenedNode->shadowView.tag);
723
-
724
- if (unvisitedOldChildPairIt == unvisitedNewChildPairs.end()) {
725
- // Node was visited.
726
-
727
- auto deleteCreateIt = deletionCreationCandidatePairs.find(
728
- newFlattenedNode->shadowView.tag);
729
- if (deleteCreateIt != deletionCreationCandidatePairs.end()) {
730
- deletionCreationCandidatePairs.erase(deleteCreateIt);
731
- }
732
- }
733
- }
734
936
  }
735
937
  // Flatten parent, unflatten child
736
938
  else {
737
- // Construct unvisited nodes map
738
- auto unvisitedOldChildPairs = TinyMap<Tag, ShadowViewNodePair *>{};
739
- // Memory note: these oldFlattenedNodes all disappear at the end
740
- // of this "else" block, including any annotations we put on them.
741
- auto oldFlattenedNodes =
742
- sliceChildShadowNodeViewPairsFromViewNodePair(
743
- oldTreeNodePair, scope, true);
744
- for (size_t i = 0; i < oldFlattenedNodes.size(); i++) {
745
- auto &oldChild = *oldFlattenedNodes[i];
746
-
747
- auto unvisitedOtherNodesIt =
748
- unvisitedOtherNodes.find(oldChild.shadowView.tag);
749
- if (unvisitedOtherNodesIt != unvisitedOtherNodes.end()) {
750
- auto &unvisitedItPair = *unvisitedOtherNodesIt->second;
751
- unvisitedOldChildPairs.insert(
752
- {unvisitedItPair.shadowView.tag, &unvisitedItPair});
753
- } else {
754
- unvisitedOldChildPairs.insert(
755
- {oldChild.shadowView.tag, &oldChild});
756
- }
757
- }
758
-
759
939
  // Unflatten old list into new tree
760
940
  calculateShadowViewMutationsFlattener(
761
941
  DIFF_BREADCRUMB(
@@ -767,11 +947,11 @@ static void calculateShadowViewMutationsFlattener(
767
947
  " new:" + std::to_string(newTreeNodePair.shadowView.tag)),
768
948
  scope,
769
949
  ReparentMode::Unflatten,
770
- mutationInstructionContainer,
950
+ mutationContainer,
771
951
  (reparentMode == ReparentMode::Flatten
772
952
  ? parentShadowView
773
953
  : newTreeNodePair.shadowView),
774
- unvisitedOldChildPairs,
954
+ unvisitedRecursiveChildPairs,
775
955
  newTreeNodePair,
776
956
  subVisitedNewMap,
777
957
  subVisitedOldMap);
@@ -779,69 +959,33 @@ static void calculateShadowViewMutationsFlattener(
779
959
  // If old nodes were not visited, we know that we can delete them
780
960
  // now. They will be removed from the hierarchy by the outermost
781
961
  // loop of this function.
782
- for (auto oldFlattenedNode : oldFlattenedNodes) {
783
- auto unvisitedOldChildPairIt =
784
- unvisitedOldChildPairs.find(oldFlattenedNode->shadowView.tag);
785
- if (unvisitedOldChildPairIt != unvisitedOldChildPairs.end()) {
786
- // Node unvisited - mark the entire subtree for deletion
787
- if (oldFlattenedNode->isConcreteView) {
788
- Tag tag = oldFlattenedNode->shadowView.tag;
789
- auto oldRemainingChildInListIt = std::find_if(
790
- treeChildren.begin(),
791
- treeChildren.end(),
792
- [&tag](ShadowViewNodePair *nodePair) {
793
- return nodePair->shadowView.tag == tag;
794
- });
795
- if (oldRemainingChildInListIt != treeChildren.end()) {
796
- auto deleteCreateIt = deletionCreationCandidatePairs.find(
797
- oldFlattenedNode->shadowView.tag);
798
- if (deleteCreateIt ==
799
- deletionCreationCandidatePairs.end()) {
800
- deletionCreationCandidatePairs.insert(
801
- {tag, *oldRemainingChildInListIt});
802
- }
803
- } else {
804
- // TODO: we might want to remove this block. It seems
805
- // impossible to hit this logically (and empirically,
806
- // after testing on lots of randomized and pathologically
807
- // constructed trees) but I'm leaving this here out of an
808
- // abundance of caution.
809
- // In theory, this path should never be hit. If we don't
810
- // see this in dev after a few months, let's delete this
811
- // path.
812
- react_native_assert(false);
813
- mutationInstructionContainer.deleteMutations.push_back(
814
- ShadowViewMutation::DeleteMutation(
815
- oldFlattenedNode->shadowView));
816
-
817
- calculateShadowViewMutationsV2(
818
- DIFF_BREADCRUMB(
819
- "Destroy " +
820
- std::to_string(oldFlattenedNode->shadowView.tag)),
821
- scope,
822
- mutationInstructionContainer
823
- .destructiveDownwardMutations,
824
- oldFlattenedNode->shadowView,
825
- sliceChildShadowNodeViewPairsFromViewNodePair(
826
- *oldFlattenedNode, scope),
827
- {});
828
- }
962
+ for (auto unvisitedOldChildPairIt =
963
+ unvisitedRecursiveChildPairs.begin();
964
+ unvisitedOldChildPairIt != unvisitedRecursiveChildPairs.end();
965
+ unvisitedOldChildPairIt++) {
966
+ if (unvisitedOldChildPairIt->first == 0) {
967
+ continue;
968
+ }
969
+ auto &oldFlattenedNode = *unvisitedOldChildPairIt->second;
970
+
971
+ // Node unvisited - mark the entire subtree for deletion
972
+ if (oldFlattenedNode.isConcreteView &&
973
+ !oldFlattenedNode.inOtherTree()) {
974
+ Tag tag = oldFlattenedNode.shadowView.tag;
975
+ auto deleteCreateIt = deletionCreationCandidatePairs.find(
976
+ oldFlattenedNode.shadowView.tag);
977
+ if (deleteCreateIt == deletionCreationCandidatePairs.end()) {
978
+ deletionCreationCandidatePairs.insert(
979
+ {tag, &oldFlattenedNode});
829
980
  }
830
981
  } else {
831
982
  // Node was visited - make sure to remove it from
832
983
  // "newRemainingPairs" map
833
984
  auto newRemainingIt =
834
- unvisitedOtherNodes.find(oldFlattenedNode->shadowView.tag);
985
+ unvisitedOtherNodes.find(oldFlattenedNode.shadowView.tag);
835
986
  if (newRemainingIt != unvisitedOtherNodes.end()) {
836
987
  unvisitedOtherNodes.erase(newRemainingIt);
837
988
  }
838
-
839
- // We also remove it from delete/creation candidates
840
- auto deleteCreateIt = deletionCreationCandidatePairs.find(
841
- oldFlattenedNode->shadowView.tag);
842
- if (deleteCreateIt != deletionCreationCandidatePairs.end()) {
843
- deletionCreationCandidatePairs.erase(deleteCreateIt);
844
- }
845
989
  }
846
990
  }
847
991
  }
@@ -854,10 +998,10 @@ static void calculateShadowViewMutationsFlattener(
854
998
  // delete/create if the Concreteness of the node has changed.
855
999
  if (newTreeNodePair.isConcreteView != oldTreeNodePair.isConcreteView) {
856
1000
  if (newTreeNodePair.isConcreteView) {
857
- mutationInstructionContainer.createMutations.push_back(
1001
+ mutationContainer.createMutations.push_back(
858
1002
  ShadowViewMutation::CreateMutation(newTreeNodePair.shadowView));
859
1003
  } else {
860
- mutationInstructionContainer.deleteMutations.push_back(
1004
+ mutationContainer.deleteMutations.push_back(
861
1005
  ShadowViewMutation::DeleteMutation(oldTreeNodePair.shadowView));
862
1006
  }
863
1007
  }
@@ -866,10 +1010,6 @@ static void calculateShadowViewMutationsFlattener(
866
1010
  {newTreeNodePair.shadowView.tag, &newTreeNodePair});
867
1011
  subVisitedOldMap->insert(
868
1012
  {oldTreeNodePair.shadowView.tag, &oldTreeNodePair});
869
-
870
- if (unvisitedIt != unvisitedOtherNodes.end()) {
871
- unvisitedOtherNodes.erase(unvisitedIt);
872
- }
873
1013
  } else {
874
1014
  // Node does not in exist in other tree.
875
1015
  if (treeChildPair.isConcreteView && !treeChildPair.inOtherTree()) {
@@ -894,13 +1034,17 @@ static void calculateShadowViewMutationsFlattener(
894
1034
  }
895
1035
  auto &treeChildPair = *it->second;
896
1036
 
897
- // If node was visited during a flattening/unflattening recursion.
1037
+ // If node was visited during a flattening/unflattening recursion,
1038
+ // and the node in the other tree is concrete, that means it was
1039
+ // already created/deleted and we don't need to do that here.
1040
+ // It is always the responsibility of the matcher to update subtrees when
1041
+ // nodes are matched.
898
1042
  if (treeChildPair.inOtherTree()) {
899
1043
  continue;
900
1044
  }
901
1045
 
902
1046
  if (reparentMode == ReparentMode::Flatten) {
903
- mutationInstructionContainer.deleteMutations.push_back(
1047
+ mutationContainer.deleteMutations.push_back(
904
1048
  ShadowViewMutation::DeleteMutation(treeChildPair.shadowView));
905
1049
 
906
1050
  if (!treeChildPair.flattened) {
@@ -910,14 +1054,14 @@ static void calculateShadowViewMutationsFlattener(
910
1054
  "Recursively delete tree child pair (flatten case): " +
911
1055
  std::to_string(treeChildPair.shadowView.tag)),
912
1056
  innerScope,
913
- mutationInstructionContainer.destructiveDownwardMutations,
1057
+ mutationContainer.destructiveDownwardMutations,
914
1058
  treeChildPair.shadowView,
915
1059
  sliceChildShadowNodeViewPairsFromViewNodePair(
916
1060
  treeChildPair, innerScope),
917
1061
  {});
918
1062
  }
919
1063
  } else {
920
- mutationInstructionContainer.createMutations.push_back(
1064
+ mutationContainer.createMutations.push_back(
921
1065
  ShadowViewMutation::CreateMutation(treeChildPair.shadowView));
922
1066
 
923
1067
  if (!treeChildPair.flattened) {
@@ -927,7 +1071,7 @@ static void calculateShadowViewMutationsFlattener(
927
1071
  "Recursively delete tree child pair (unflatten case): " +
928
1072
  std::to_string(treeChildPair.shadowView.tag)),
929
1073
  innerScope,
930
- mutationInstructionContainer.downwardMutations,
1074
+ mutationContainer.downwardMutations,
931
1075
  treeChildPair.shadowView,
932
1076
  {},
933
1077
  sliceChildShadowNodeViewPairsFromViewNodePair(
@@ -951,21 +1095,7 @@ static void calculateShadowViewMutationsV2(
951
1095
  size_t index = 0;
952
1096
 
953
1097
  // Lists of mutations
954
- auto createMutations = ShadowViewMutation::List{};
955
- auto deleteMutations = ShadowViewMutation::List{};
956
- auto insertMutations = ShadowViewMutation::List{};
957
- auto removeMutations = ShadowViewMutation::List{};
958
- auto updateMutations = ShadowViewMutation::List{};
959
- auto downwardMutations = ShadowViewMutation::List{};
960
- auto destructiveDownwardMutations = ShadowViewMutation::List{};
961
- auto mutationInstructionContainer = OrderedMutationInstructionContainer{
962
- createMutations,
963
- deleteMutations,
964
- insertMutations,
965
- removeMutations,
966
- updateMutations,
967
- downwardMutations,
968
- destructiveDownwardMutations};
1098
+ auto mutationContainer = OrderedMutationInstructionContainer{};
969
1099
 
970
1100
  DEBUG_LOGS({
971
1101
  LOG(ERROR) << "Differ Entry: Child Pairs of node: [" << parentShadowView.tag
@@ -1030,8 +1160,9 @@ static void calculateShadowViewMutationsV2(
1030
1160
 
1031
1161
  if (newChildPair.isConcreteView &&
1032
1162
  oldChildPair.shadowView != newChildPair.shadowView) {
1033
- updateMutations.push_back(ShadowViewMutation::UpdateMutation(
1034
- oldChildPair.shadowView, newChildPair.shadowView));
1163
+ mutationContainer.updateMutations.push_back(
1164
+ ShadowViewMutation::UpdateMutation(
1165
+ oldChildPair.shadowView, newChildPair.shadowView));
1035
1166
  }
1036
1167
 
1037
1168
  // Recursively update tree if ShadowNode pointers are not equal
@@ -1047,8 +1178,9 @@ static void calculateShadowViewMutationsV2(
1047
1178
  "Stage 1: Recurse on " +
1048
1179
  std::to_string(oldChildPair.shadowView.tag)),
1049
1180
  innerScope,
1050
- *(newGrandChildPairs.size() ? &downwardMutations
1051
- : &destructiveDownwardMutations),
1181
+ *(newGrandChildPairs.size()
1182
+ ? &mutationContainer.downwardMutations
1183
+ : &mutationContainer.destructiveDownwardMutations),
1052
1184
  oldChildPair.shadowView,
1053
1185
  std::move(oldGrandChildPairs),
1054
1186
  std::move(newGrandChildPairs));
@@ -1073,12 +1205,13 @@ static void calculateShadowViewMutationsV2(
1073
1205
  continue;
1074
1206
  }
1075
1207
 
1076
- deleteMutations.push_back(
1208
+ mutationContainer.deleteMutations.push_back(
1077
1209
  ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
1078
- removeMutations.push_back(ShadowViewMutation::RemoveMutation(
1079
- parentShadowView,
1080
- oldChildPair.shadowView,
1081
- static_cast<int>(oldChildPair.mountIndex)));
1210
+ mutationContainer.removeMutations.push_back(
1211
+ ShadowViewMutation::RemoveMutation(
1212
+ parentShadowView,
1213
+ oldChildPair.shadowView,
1214
+ static_cast<int>(oldChildPair.mountIndex)));
1082
1215
 
1083
1216
  // We also have to call the algorithm recursively to clean up the entire
1084
1217
  // subtree starting from the removed view.
@@ -1087,7 +1220,7 @@ static void calculateShadowViewMutationsV2(
1087
1220
  DIFF_BREADCRUMB(
1088
1221
  "Trivial delete " + std::to_string(oldChildPair.shadowView.tag)),
1089
1222
  innerScope,
1090
- destructiveDownwardMutations,
1223
+ mutationContainer.destructiveDownwardMutations,
1091
1224
  oldChildPair.shadowView,
1092
1225
  sliceChildShadowNodeViewPairsFromViewNodePair(
1093
1226
  oldChildPair, innerScope),
@@ -1109,11 +1242,12 @@ static void calculateShadowViewMutationsV2(
1109
1242
  continue;
1110
1243
  }
1111
1244
 
1112
- insertMutations.push_back(ShadowViewMutation::InsertMutation(
1113
- parentShadowView,
1114
- newChildPair.shadowView,
1115
- static_cast<int>(newChildPair.mountIndex)));
1116
- createMutations.push_back(
1245
+ mutationContainer.insertMutations.push_back(
1246
+ ShadowViewMutation::InsertMutation(
1247
+ parentShadowView,
1248
+ newChildPair.shadowView,
1249
+ static_cast<int>(newChildPair.mountIndex)));
1250
+ mutationContainer.createMutations.push_back(
1117
1251
  ShadowViewMutation::CreateMutation(newChildPair.shadowView));
1118
1252
 
1119
1253
  ViewNodePairScope innerScope{};
@@ -1121,7 +1255,7 @@ static void calculateShadowViewMutationsV2(
1121
1255
  DIFF_BREADCRUMB(
1122
1256
  "Trivial create " + std::to_string(newChildPair.shadowView.tag)),
1123
1257
  innerScope,
1124
- downwardMutations,
1258
+ mutationContainer.downwardMutations,
1125
1259
  newChildPair.shadowView,
1126
1260
  {},
1127
1261
  sliceChildShadowNodeViewPairsFromViewNodePair(
@@ -1168,160 +1302,29 @@ static void calculateShadowViewMutationsV2(
1168
1302
  << " with parent: [" << parentShadowView.tag << "]";
1169
1303
  });
1170
1304
 
1171
- // Check concrete-ness of views
1172
- // Create/Delete and Insert/Remove if necessary
1173
- if (oldChildPair.isConcreteView != newChildPair.isConcreteView) {
1174
- if (newChildPair.isConcreteView) {
1175
- insertMutations.push_back(ShadowViewMutation::InsertMutation(
1176
- parentShadowView,
1177
- newChildPair.shadowView,
1178
- static_cast<int>(newChildPair.mountIndex)));
1179
- createMutations.push_back(
1180
- ShadowViewMutation::CreateMutation(newChildPair.shadowView));
1181
- } else {
1182
- removeMutations.push_back(ShadowViewMutation::RemoveMutation(
1183
- parentShadowView,
1184
- oldChildPair.shadowView,
1185
- static_cast<int>(oldChildPair.mountIndex)));
1186
- deleteMutations.push_back(
1187
- ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
1188
- }
1189
- } else if (
1190
- oldChildPair.isConcreteView && newChildPair.isConcreteView) {
1191
- // Even if node's children are flattened, it might still be a
1192
- // concrete view. The case where they're different is handled
1193
- // above.
1194
- if (oldChildPair.shadowView != newChildPair.shadowView) {
1195
- updateMutations.push_back(ShadowViewMutation::UpdateMutation(
1196
- oldChildPair.shadowView, newChildPair.shadowView));
1197
- }
1198
-
1199
- // Remove from newRemainingPairs
1200
- auto newRemainingPairIt = newRemainingPairs.find(oldTag);
1201
- if (newRemainingPairIt != newRemainingPairs.end()) {
1202
- newRemainingPairs.erase(newRemainingPairIt);
1203
- }
1204
- }
1205
-
1206
- // Are we flattening or unflattening either one? If node was
1207
- // flattened in both trees, there's no change, just continue.
1208
- if (oldChildPair.flattened && newChildPair.flattened) {
1209
- newIndex++;
1210
- oldIndex++;
1211
- continue;
1212
- }
1213
- // We are either flattening or unflattening this node.
1214
- if (oldChildPair.flattened != newChildPair.flattened) {
1215
- DEBUG_LOGS({
1216
- LOG(ERROR) << "Differ: flattening or unflattening at branch 6: ["
1217
- << oldChildPair.shadowView.tag << "] ["
1218
- << newChildPair.shadowView.tag << "] "
1219
- << oldChildPair.flattened << " "
1220
- << newChildPair.flattened << " with parent: ["
1221
- << parentShadowView.tag << "]";
1222
- });
1223
-
1224
- // Flattening
1225
- if (!oldChildPair.flattened) {
1226
- // Flatten old tree into new list
1227
- // At the end of this loop we still want to know which of these
1228
- // children are visited, so we reuse the `newRemainingPairs`
1229
- // map.
1230
- calculateShadowViewMutationsFlattener(
1231
- DIFF_BREADCRUMB(
1232
- "Flatten tree " + std::to_string(parentShadowView.tag) +
1233
- " into list " +
1234
- std::to_string(oldChildPair.shadowView.tag)),
1235
- scope,
1236
- ReparentMode::Flatten,
1237
- mutationInstructionContainer,
1238
- parentShadowView,
1239
- newRemainingPairs,
1240
- oldChildPair);
1241
- }
1242
- // Unflattening
1243
- else {
1244
- // Construct unvisited nodes map
1245
- auto unvisitedOldChildPairs =
1246
- TinyMap<Tag, ShadowViewNodePair *>{};
1247
- // We don't know where all the children of oldChildPair are
1248
- // within oldChildPairs, but we know that they're in the same
1249
- // relative order. The reason for this is because of flattening
1250
- // + zIndex: the children could be listed before the parent,
1251
- // interwoven with children from other nodes, etc.
1252
- auto oldFlattenedNodes =
1253
- sliceChildShadowNodeViewPairsFromViewNodePair(
1254
- oldChildPair, scope, true);
1255
- for (size_t i = 0, j = 0;
1256
- i < oldChildPairs.size() && j < oldFlattenedNodes.size();
1257
- i++) {
1258
- auto &oldChild = *oldChildPairs[i];
1259
- if (oldChild.shadowView.tag ==
1260
- oldFlattenedNodes[j]->shadowView.tag) {
1261
- unvisitedOldChildPairs.insert(
1262
- {oldChild.shadowView.tag, &oldChild});
1263
- j++;
1264
- }
1265
- }
1266
-
1267
- // Unflatten old list into new tree
1268
- calculateShadowViewMutationsFlattener(
1269
- DIFF_BREADCRUMB(
1270
- "Unflatten old list " +
1271
- std::to_string(parentShadowView.tag) + " into new tree " +
1272
- std::to_string(newChildPair.shadowView.tag)),
1273
- scope,
1274
- ReparentMode::Unflatten,
1275
- mutationInstructionContainer,
1276
- parentShadowView,
1277
- unvisitedOldChildPairs,
1278
- newChildPair);
1279
-
1280
- // If old nodes were not visited, we know that we can delete
1281
- // them now. They will be removed from the hierarchy by the
1282
- // outermost loop of this function.
1283
- for (auto &oldFlattenedNodePtr : oldFlattenedNodes) {
1284
- auto &oldFlattenedNode = *oldFlattenedNodePtr;
1285
- auto unvisitedOldChildPairIt = unvisitedOldChildPairs.find(
1286
- oldFlattenedNode.shadowView.tag);
1287
- if (unvisitedOldChildPairIt == unvisitedOldChildPairs.end()) {
1288
- // Node was visited - make sure to remove it from
1289
- // "newRemainingPairs" map
1290
- auto newRemainingIt =
1291
- newRemainingPairs.find(oldFlattenedNode.shadowView.tag);
1292
- if (newRemainingIt != newRemainingPairs.end()) {
1293
- newRemainingPairs.erase(newRemainingIt);
1294
- }
1295
- }
1296
- }
1297
- }
1298
-
1299
- newIndex++;
1300
- oldIndex++;
1301
- continue;
1302
- }
1305
+ updateMatchedPair(
1306
+ DIFF_BREADCRUMB(
1307
+ "Update Matched Pairs (1): " +
1308
+ std::to_string(oldChildPair.shadowView.tag)),
1309
+ mutationContainer,
1310
+ true,
1311
+ true,
1312
+ parentShadowView,
1313
+ oldChildPair,
1314
+ newChildPair);
1303
1315
 
1304
- // Update subtrees if View is not flattened, and if node addresses
1305
- // are not equal
1306
- if (oldChildPair.shadowNode != newChildPair.shadowNode) {
1307
- ViewNodePairScope innerScope{};
1308
- auto oldGrandChildPairs =
1309
- sliceChildShadowNodeViewPairsFromViewNodePair(
1310
- oldChildPair, innerScope);
1311
- auto newGrandChildPairs =
1312
- sliceChildShadowNodeViewPairsFromViewNodePair(
1313
- newChildPair, innerScope);
1314
- calculateShadowViewMutationsV2(
1315
- DIFF_BREADCRUMB(
1316
- "Non-trivial update " +
1317
- std::to_string(oldChildPair.shadowView.tag)),
1318
- innerScope,
1319
- *(newGrandChildPairs.size() ? &downwardMutations
1320
- : &destructiveDownwardMutations),
1321
- oldChildPair.shadowView,
1322
- std::move(oldGrandChildPairs),
1323
- std::move(newGrandChildPairs));
1324
- }
1316
+ updateMatchedPairSubtrees(
1317
+ DIFF_BREADCRUMB(
1318
+ "Update Matched Pair Subtrees (1): " +
1319
+ std::to_string(oldChildPair.shadowView.tag)),
1320
+ scope,
1321
+ mutationContainer,
1322
+ newRemainingPairs,
1323
+ oldChildPairs,
1324
+ newChildPairs,
1325
+ parentShadowView,
1326
+ oldChildPair,
1327
+ newChildPair);
1325
1328
 
1326
1329
  newIndex++;
1327
1330
  oldIndex++;
@@ -1344,156 +1347,29 @@ static void calculateShadowViewMutationsV2(
1344
1347
  if (insertedIt != newInsertedPairs.end()) {
1345
1348
  auto const &newChildPair = *insertedIt->second;
1346
1349
 
1347
- // The node has been reordered and we are also flattening or
1348
- // unflattening
1349
- if (oldChildPair.flattened != newChildPair.flattened) {
1350
- DEBUG_LOGS({
1351
- LOG(ERROR)
1352
- << "Differ: branch 7: Flattening or unflattening already-inserted node upon remove (move/reorder operation)."
1353
- << oldChildPair.shadowView.tag << " "
1354
- << oldChildPair.flattened << " // "
1355
- << newChildPair.shadowView.tag << " "
1356
- << newChildPair.flattened;
1357
- });
1358
-
1359
- // Unflattening.
1360
- // The node in question was already inserted and we are
1361
- // *unflattening* it, so we just need to update the subtree nodes
1362
- // and remove them from the view hierarchy. Any of the unvisited
1363
- // nodes in the old tree will be deleted.
1364
- // TODO: can we consolidate this code? It's identical to the first
1365
- // block above.
1366
- if (!oldChildPair.flattened) {
1367
- // Flatten old tree into new list
1368
- // At the end of this loop we still want to know which of these
1369
- // children are visited, so we reuse the `newRemainingPairs`
1370
- // map.
1371
- calculateShadowViewMutationsFlattener(
1372
- DIFF_BREADCRUMB(
1373
- "Flatten2 " + std::to_string(parentShadowView.tag)),
1374
- scope,
1375
- ReparentMode::Flatten,
1376
- mutationInstructionContainer,
1377
- parentShadowView,
1378
- newRemainingPairs,
1379
- oldChildPair);
1380
- }
1381
- // Unflattening
1382
- else {
1383
- // Construct unvisited nodes map
1384
- auto unvisitedOldChildPairs =
1385
- TinyMap<Tag, ShadowViewNodePair *>{};
1386
- // We don't know where all the children of oldChildPair are
1387
- // within oldChildPairs, but we know that they're in the same
1388
- // relative order. The reason for this is because of flattening
1389
- // + zIndex: the children could be listed before the parent,
1390
- // interwoven with children from other nodes, etc.
1391
- auto oldFlattenedNodes =
1392
- sliceChildShadowNodeViewPairsFromViewNodePair(
1393
- oldChildPair, scope, true);
1394
- for (size_t i = 0, j = 0;
1395
- i < oldChildPairs.size() && j < oldFlattenedNodes.size();
1396
- i++) {
1397
- auto &oldChild = *oldChildPairs[i];
1398
- if (oldChild.shadowView.tag ==
1399
- oldFlattenedNodes[j]->shadowView.tag) {
1400
- unvisitedOldChildPairs.insert(
1401
- {oldChild.shadowView.tag, &oldChild});
1402
- j++;
1403
- }
1404
- }
1405
-
1406
- // Unflatten old list into new tree
1407
- calculateShadowViewMutationsFlattener(
1408
- DIFF_BREADCRUMB(
1409
- "Unflatten2 " + std::to_string(parentShadowView.tag)),
1410
- scope,
1411
- ReparentMode::Unflatten,
1412
- mutationInstructionContainer,
1413
- parentShadowView,
1414
- unvisitedOldChildPairs,
1415
- newChildPair);
1416
-
1417
- // If old nodes were not visited, we know that we can delete
1418
- // them now. They will be removed from the hierarchy by the
1419
- // outermost loop of this function. TODO: delete recursively?
1420
- // create recursively?
1421
- for (auto &oldFlattenedNodePtr : oldFlattenedNodes) {
1422
- auto &oldFlattenedNode = *oldFlattenedNodePtr;
1423
- auto unvisitedOldChildPairIt = unvisitedOldChildPairs.find(
1424
- oldFlattenedNode.shadowView.tag);
1425
- if (unvisitedOldChildPairIt == unvisitedOldChildPairs.end()) {
1426
- // Node was visited - make sure to remove it from
1427
- // "newRemainingPairs" map
1428
- auto newRemainingIt =
1429
- newRemainingPairs.find(oldFlattenedNode.shadowView.tag);
1430
- if (newRemainingIt != newRemainingPairs.end()) {
1431
- newRemainingPairs.erase(newRemainingIt);
1432
- }
1433
- }
1434
- }
1435
- }
1436
- }
1437
-
1438
- // Check concrete-ness of views
1439
- // Create/Delete and Insert/Remove if necessary
1440
- // TODO: document: Insert should already be handled by outermost
1441
- // loop, but not Remove
1442
- if (oldChildPair.isConcreteView != newChildPair.isConcreteView) {
1443
- if (newChildPair.isConcreteView) {
1444
- createMutations.push_back(
1445
- ShadowViewMutation::CreateMutation(newChildPair.shadowView));
1446
- } else {
1447
- removeMutations.push_back(ShadowViewMutation::RemoveMutation(
1448
- parentShadowView,
1449
- oldChildPair.shadowView,
1450
- static_cast<int>(oldChildPair.mountIndex)));
1451
- deleteMutations.push_back(
1452
- ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
1453
- }
1454
- }
1455
-
1456
- // old and new child pairs are both either flattened or unflattened
1457
- // at this point. If they're not views, we don't need to update
1458
- // subtrees.
1459
- if (oldChildPair.isConcreteView && newChildPair.isConcreteView) {
1460
- // TODO: do we always want to remove here? There are cases where
1461
- // we might be able to remove this to prevent unnecessary
1462
- // removes/inserts in cases of (un)flattening + reorders?
1463
- // If removing here, we must remove the newest version of the View
1464
- // - which will always be in the "new" tree.
1465
- removeMutations.push_back(ShadowViewMutation::RemoveMutation(
1466
- parentShadowView,
1467
- newChildPair.shadowView,
1468
- static_cast<int>(oldChildPair.mountIndex)));
1469
-
1470
- if (oldChildPair.shadowView != newChildPair.shadowView) {
1471
- updateMutations.push_back(ShadowViewMutation::UpdateMutation(
1472
- oldChildPair.shadowView, newChildPair.shadowView));
1473
- }
1474
- }
1350
+ updateMatchedPair(
1351
+ DIFF_BREADCRUMB(
1352
+ "Update Matched Pairs (2): " +
1353
+ std::to_string(oldChildPair.shadowView.tag)),
1354
+ mutationContainer,
1355
+ true,
1356
+ false,
1357
+ parentShadowView,
1358
+ oldChildPair,
1359
+ newChildPair);
1475
1360
 
1476
- if (!oldChildPair.flattened && !newChildPair.flattened &&
1477
- oldChildPair.shadowNode != newChildPair.shadowNode) {
1478
- // Update subtrees
1479
- ViewNodePairScope innerScope{};
1480
- auto oldGrandChildPairs =
1481
- sliceChildShadowNodeViewPairsFromViewNodePair(
1482
- oldChildPair, innerScope);
1483
- auto newGrandChildPairs =
1484
- sliceChildShadowNodeViewPairsFromViewNodePair(
1485
- newChildPair, innerScope);
1486
- calculateShadowViewMutationsV2(
1487
- DIFF_BREADCRUMB(
1488
- "Non-trivial update3 " +
1489
- std::to_string(oldChildPair.shadowView.tag)),
1490
- innerScope,
1491
- *(newGrandChildPairs.size() ? &downwardMutations
1492
- : &destructiveDownwardMutations),
1493
- oldChildPair.shadowView,
1494
- std::move(oldGrandChildPairs),
1495
- std::move(newGrandChildPairs));
1496
- }
1361
+ updateMatchedPairSubtrees(
1362
+ DIFF_BREADCRUMB(
1363
+ "Update Matched Pair Subtrees (2): " +
1364
+ std::to_string(oldChildPair.shadowView.tag)),
1365
+ scope,
1366
+ mutationContainer,
1367
+ newRemainingPairs,
1368
+ oldChildPairs,
1369
+ newChildPairs,
1370
+ parentShadowView,
1371
+ oldChildPair,
1372
+ newChildPair);
1497
1373
 
1498
1374
  newInsertedPairs.erase(insertedIt);
1499
1375
  oldIndex++;
@@ -1543,17 +1419,19 @@ static void calculateShadowViewMutationsV2(
1543
1419
  // Here we do *not" need to generate a potential DELETE mutation
1544
1420
  // because we know the view is concrete, and still in the new
1545
1421
  // hierarchy.
1546
- removeMutations.push_back(ShadowViewMutation::RemoveMutation(
1547
- parentShadowView,
1548
- otherTreeView,
1549
- static_cast<int>(oldChildPair.mountIndex)));
1422
+ mutationContainer.removeMutations.push_back(
1423
+ ShadowViewMutation::RemoveMutation(
1424
+ parentShadowView,
1425
+ otherTreeView,
1426
+ static_cast<int>(oldChildPair.mountIndex)));
1550
1427
  continue;
1551
1428
  }
1552
1429
 
1553
- removeMutations.push_back(ShadowViewMutation::RemoveMutation(
1554
- parentShadowView,
1555
- oldChildPair.shadowView,
1556
- static_cast<int>(oldChildPair.mountIndex)));
1430
+ mutationContainer.removeMutations.push_back(
1431
+ ShadowViewMutation::RemoveMutation(
1432
+ parentShadowView,
1433
+ oldChildPair.shadowView,
1434
+ static_cast<int>(oldChildPair.mountIndex)));
1557
1435
 
1558
1436
  deletionCandidatePairs.insert(
1559
1437
  {oldChildPair.shadowView.tag, &oldChildPair});
@@ -1576,10 +1454,11 @@ static void calculateShadowViewMutationsV2(
1576
1454
  << " with parent: [" << parentShadowView.tag << "]";
1577
1455
  });
1578
1456
  if (newChildPair.isConcreteView) {
1579
- insertMutations.push_back(ShadowViewMutation::InsertMutation(
1580
- parentShadowView,
1581
- newChildPair.shadowView,
1582
- static_cast<int>(newChildPair.mountIndex)));
1457
+ mutationContainer.insertMutations.push_back(
1458
+ ShadowViewMutation::InsertMutation(
1459
+ parentShadowView,
1460
+ newChildPair.shadowView,
1461
+ static_cast<int>(newChildPair.mountIndex)));
1583
1462
  }
1584
1463
 
1585
1464
  // `inOtherTree` is only set to true during flattening/unflattening of
@@ -1620,7 +1499,7 @@ static void calculateShadowViewMutationsV2(
1620
1499
 
1621
1500
  // This can happen when the parent is unflattened
1622
1501
  if (!oldChildPair.inOtherTree() && oldChildPair.isConcreteView) {
1623
- deleteMutations.push_back(
1502
+ mutationContainer.deleteMutations.push_back(
1624
1503
  ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
1625
1504
 
1626
1505
  // We also have to call the algorithm recursively to clean up the
@@ -1631,7 +1510,7 @@ static void calculateShadowViewMutationsV2(
1631
1510
  "Non-trivial delete " +
1632
1511
  std::to_string(oldChildPair.shadowView.tag)),
1633
1512
  innerScope,
1634
- destructiveDownwardMutations,
1513
+ mutationContainer.destructiveDownwardMutations,
1635
1514
  oldChildPair.shadowView,
1636
1515
  sliceChildShadowNodeViewPairsFromViewNodePair(
1637
1516
  oldChildPair, innerScope),
@@ -1670,7 +1549,7 @@ static void calculateShadowViewMutationsV2(
1670
1549
  continue;
1671
1550
  }
1672
1551
 
1673
- createMutations.push_back(
1552
+ mutationContainer.createMutations.push_back(
1674
1553
  ShadowViewMutation::CreateMutation(newChildPair.shadowView));
1675
1554
 
1676
1555
  ViewNodePairScope innerScope{};
@@ -1679,7 +1558,7 @@ static void calculateShadowViewMutationsV2(
1679
1558
  "Non-trivial create " +
1680
1559
  std::to_string(newChildPair.shadowView.tag)),
1681
1560
  innerScope,
1682
- downwardMutations,
1561
+ mutationContainer.downwardMutations,
1683
1562
  newChildPair.shadowView,
1684
1563
  {},
1685
1564
  sliceChildShadowNodeViewPairsFromViewNodePair(
@@ -1689,32 +1568,32 @@ static void calculateShadowViewMutationsV2(
1689
1568
 
1690
1569
  // All mutations in an optimal order:
1691
1570
  std::move(
1692
- destructiveDownwardMutations.begin(),
1693
- destructiveDownwardMutations.end(),
1571
+ mutationContainer.destructiveDownwardMutations.begin(),
1572
+ mutationContainer.destructiveDownwardMutations.end(),
1694
1573
  std::back_inserter(mutations));
1695
1574
  std::move(
1696
- updateMutations.begin(),
1697
- updateMutations.end(),
1575
+ mutationContainer.updateMutations.begin(),
1576
+ mutationContainer.updateMutations.end(),
1698
1577
  std::back_inserter(mutations));
1699
1578
  std::move(
1700
- removeMutations.rbegin(),
1701
- removeMutations.rend(),
1579
+ mutationContainer.removeMutations.rbegin(),
1580
+ mutationContainer.removeMutations.rend(),
1702
1581
  std::back_inserter(mutations));
1703
1582
  std::move(
1704
- deleteMutations.begin(),
1705
- deleteMutations.end(),
1583
+ mutationContainer.deleteMutations.begin(),
1584
+ mutationContainer.deleteMutations.end(),
1706
1585
  std::back_inserter(mutations));
1707
1586
  std::move(
1708
- createMutations.begin(),
1709
- createMutations.end(),
1587
+ mutationContainer.createMutations.begin(),
1588
+ mutationContainer.createMutations.end(),
1710
1589
  std::back_inserter(mutations));
1711
1590
  std::move(
1712
- downwardMutations.begin(),
1713
- downwardMutations.end(),
1591
+ mutationContainer.downwardMutations.begin(),
1592
+ mutationContainer.downwardMutations.end(),
1714
1593
  std::back_inserter(mutations));
1715
1594
  std::move(
1716
- insertMutations.begin(),
1717
- insertMutations.end(),
1595
+ mutationContainer.insertMutations.begin(),
1596
+ mutationContainer.insertMutations.end(),
1718
1597
  std::back_inserter(mutations));
1719
1598
  }
1720
1599
 
@@ -1778,13 +1657,7 @@ ShadowViewNodePair::OwningList sliceChildShadowNodeViewPairsLegacy(
1778
1657
 
1779
1658
  ShadowViewMutation::List calculateShadowViewMutations(
1780
1659
  ShadowNode const &oldRootShadowNode,
1781
- ShadowNode const &newRootShadowNode,
1782
- bool useNewDiffer) {
1783
- if (!useNewDiffer) {
1784
- return DifferOld::calculateShadowViewMutations(
1785
- oldRootShadowNode, newRootShadowNode);
1786
- }
1787
-
1660
+ ShadowNode const &newRootShadowNode) {
1788
1661
  SystraceSection s("calculateShadowViewMutations");
1789
1662
 
1790
1663
  // Root shadow nodes must be belong the same family.