react-native-tvos 0.64.2-2 → 0.66.3-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1783) hide show
  1. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +0 -2
  2. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +0 -2
  3. package/Libraries/ActionSheetIOS/React-RCTActionSheet.podspec +2 -2
  4. package/Libraries/Alert/Alert.js +3 -5
  5. package/Libraries/Alert/NativeAlertManager.js +0 -2
  6. package/Libraries/Alert/RCTAlertManager.android.js +0 -2
  7. package/Libraries/Alert/RCTAlertManager.ios.js +0 -2
  8. package/Libraries/Animated/Animated.js +0 -2
  9. package/Libraries/Animated/AnimatedEvent.js +4 -3
  10. package/Libraries/Animated/AnimatedImplementation.js +0 -2
  11. package/Libraries/Animated/AnimatedMock.js +1 -8
  12. package/Libraries/Animated/AnimatedWeb.js +6 -3
  13. package/Libraries/Animated/NativeAnimatedHelper.js +9 -6
  14. package/Libraries/Animated/NativeAnimatedModule.js +0 -2
  15. package/Libraries/Animated/NativeAnimatedTurboModule.js +0 -2
  16. package/Libraries/Animated/animations/Animation.js +1 -0
  17. package/Libraries/Animated/animations/DecayAnimation.js +2 -0
  18. package/Libraries/Animated/animations/SpringAnimation.js +1 -0
  19. package/Libraries/Animated/animations/TimingAnimation.js +3 -0
  20. package/Libraries/Animated/components/AnimatedFlatList.js +0 -2
  21. package/Libraries/Animated/components/AnimatedImage.js +3 -5
  22. package/Libraries/Animated/components/AnimatedScrollView.js +3 -5
  23. package/Libraries/Animated/components/AnimatedSectionList.js +1 -3
  24. package/Libraries/Animated/components/AnimatedText.js +3 -5
  25. package/Libraries/Animated/components/AnimatedView.js +3 -3
  26. package/Libraries/Animated/createAnimatedComponent.js +48 -29
  27. package/Libraries/Animated/createAnimatedComponentInjection.js +48 -0
  28. package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +48 -0
  29. package/Libraries/Animated/nodes/AnimatedInterpolation.js +21 -22
  30. package/Libraries/Animated/nodes/AnimatedProps.js +0 -1
  31. package/Libraries/Animated/nodes/AnimatedValue.js +24 -5
  32. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -0
  33. package/Libraries/Animated/useAnimatedProps.js +211 -0
  34. package/Libraries/AppState/AppState.js +116 -132
  35. package/Libraries/AppState/NativeAppState.js +0 -2
  36. package/Libraries/BatchedBridge/MessageQueue.js +19 -14
  37. package/Libraries/BatchedBridge/NativeModules.js +5 -1
  38. package/Libraries/Blob/BlobManager.js +0 -2
  39. package/Libraries/Blob/FileReader.js +1 -3
  40. package/Libraries/Blob/NativeBlobModule.js +0 -2
  41. package/Libraries/Blob/NativeFileReaderModule.js +0 -2
  42. package/Libraries/Blob/RCTBlobManager.h +2 -1
  43. package/Libraries/Blob/RCTBlobManager.mm +10 -12
  44. package/Libraries/Blob/RCTBlobPlugins.mm +4 -3
  45. package/Libraries/Blob/RCTFileReaderModule.mm +3 -9
  46. package/Libraries/Blob/React-RCTBlob.podspec +3 -3
  47. package/Libraries/Blob/URL.js +17 -19
  48. package/Libraries/BugReporting/BugReporting.js +2 -2
  49. package/Libraries/BugReporting/getReactData.js +2 -2
  50. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +350 -0
  51. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +4 -2
  52. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +0 -2
  53. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +35 -0
  54. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.ios.js +26 -0
  55. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +22 -21
  56. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +0 -2
  57. package/Libraries/Components/AppleTV/TVFocusGuideView.js +24 -1
  58. package/Libraries/Components/Button.js +42 -15
  59. package/Libraries/Components/Clipboard/Clipboard.js +0 -2
  60. package/Libraries/Components/Clipboard/NativeClipboard.js +0 -2
  61. package/Libraries/Components/DatePicker/DatePickerIOS.android.js +4 -5
  62. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +48 -9
  63. package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +1 -2
  64. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +0 -2
  65. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +0 -2
  66. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +0 -2
  67. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +0 -2
  68. package/Libraries/Components/Keyboard/Keyboard.js +52 -57
  69. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +17 -22
  70. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +0 -2
  71. package/Libraries/Components/MaskedView/MaskedViewIOS.ios.js +3 -3
  72. package/Libraries/Components/Pressable/Pressable.js +22 -8
  73. package/Libraries/Components/Pressable/useAndroidRippleForView.js +18 -17
  74. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +15 -13
  75. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +0 -2
  76. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +4 -5
  77. package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +2 -5
  78. package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +0 -2
  79. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +2 -12
  80. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +9 -3
  81. package/Libraries/Components/RefreshControl/RefreshControl.js +7 -26
  82. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +2 -3
  83. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +0 -2
  84. package/Libraries/Components/SafeAreaView/SafeAreaView.js +1 -1
  85. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +9 -26
  86. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +31 -45
  87. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +12 -26
  88. package/Libraries/Components/ScrollView/ScrollView.js +786 -232
  89. package/Libraries/Components/ScrollView/ScrollViewContext.js +3 -3
  90. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +75 -21
  91. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +5 -12
  92. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +256 -242
  93. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +13 -5
  94. package/Libraries/Components/ScrollView/processDecelerationRate.js +0 -2
  95. package/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js +0 -2
  96. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js +4 -5
  97. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js +17 -11
  98. package/Libraries/Components/Slider/Slider.js +20 -9
  99. package/Libraries/Components/Slider/SliderNativeComponent.js +0 -2
  100. package/Libraries/Components/Sound/NativeSoundManager.js +0 -2
  101. package/Libraries/Components/Sound/SoundManager.js +0 -1
  102. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +0 -2
  103. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +0 -2
  104. package/Libraries/Components/StatusBar/StatusBar.js +10 -21
  105. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +0 -2
  106. package/Libraries/Components/Switch/Switch.js +102 -122
  107. package/Libraries/Components/Switch/SwitchNativeComponent.js +0 -2
  108. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +14 -20
  109. package/Libraries/Components/TextInput/AndroidTextInputViewConfig.js +7 -5
  110. package/Libraries/Components/TextInput/InputAccessoryView.js +6 -8
  111. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +0 -2
  112. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +6 -5
  113. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -16
  114. package/Libraries/Components/TextInput/{RCTSinglelineTextInputViewConfig.js → RCTTextInputViewConfig.js} +3 -5
  115. package/Libraries/Components/TextInput/TextInput.js +289 -227
  116. package/Libraries/Components/TextInput/TextInputNativeCommands.js +0 -2
  117. package/Libraries/Components/TextInput/TextInputState.js +1 -3
  118. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +0 -2
  119. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +0 -1
  120. package/Libraries/Components/Touchable/BoundingDimensions.js +1 -2
  121. package/Libraries/Components/Touchable/PooledClass.js +1 -2
  122. package/Libraries/Components/Touchable/Position.js +1 -2
  123. package/Libraries/Components/Touchable/Touchable.js +30 -59
  124. package/Libraries/Components/Touchable/TouchableBounce.js +0 -2
  125. package/Libraries/Components/Touchable/TouchableHighlight.js +23 -7
  126. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +16 -5
  127. package/Libraries/Components/Touchable/TouchableOpacity.js +19 -8
  128. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +13 -4
  129. package/Libraries/Components/Touchable/ensurePositiveDelayProps.js +1 -2
  130. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +0 -2
  131. package/Libraries/Components/UnimplementedViews/UnimplementedView.js +2 -3
  132. package/Libraries/Components/View/ReactNativeStyleAttributes.js +133 -68
  133. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -2
  134. package/Libraries/Components/View/ReactNativeViewViewConfig.js +13 -11
  135. package/Libraries/Components/View/View.js +2 -4
  136. package/Libraries/Components/View/ViewAccessibility.js +3 -0
  137. package/Libraries/Components/View/ViewNativeComponent.js +17 -62
  138. package/Libraries/Core/Devtools/getDevServer.js +0 -2
  139. package/Libraries/Core/Devtools/parseErrorStack.js +0 -9
  140. package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
  141. package/Libraries/Core/ExceptionsManager.js +48 -40
  142. package/Libraries/Core/ExtendedError.js +19 -0
  143. package/Libraries/Core/InitializeCore.js +1 -0
  144. package/Libraries/Core/NativeExceptionsManager.js +0 -2
  145. package/Libraries/Core/ReactFiberErrorDialog.js +44 -34
  146. package/Libraries/Core/ReactNativeVersion.js +2 -2
  147. package/Libraries/Core/ReactNativeVersionCheck.js +0 -2
  148. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +0 -2
  149. package/Libraries/Core/Timers/JSTimers.js +41 -58
  150. package/Libraries/Core/Timers/NativeTiming.js +0 -2
  151. package/Libraries/Core/Timers/immediateShim.js +67 -0
  152. package/Libraries/Core/Timers/queueMicrotask.js +41 -0
  153. package/Libraries/Core/polyfillPromise.js +1 -1
  154. package/Libraries/Core/setUpDeveloperTools.js +53 -58
  155. package/Libraries/Core/setUpReactDevTools.js +18 -1
  156. package/Libraries/Core/setUpReactRefresh.js +3 -1
  157. package/Libraries/Core/setUpRegeneratorRuntime.js +25 -8
  158. package/Libraries/Core/setUpTimers.js +64 -5
  159. package/Libraries/Core/setUpXHR.js +4 -4
  160. package/Libraries/DeprecatedPropTypes/DeprecatedImagePropType.android.js +131 -0
  161. package/Libraries/DeprecatedPropTypes/{DeprecatedImagePropType.js → DeprecatedImagePropType.ios.js} +0 -0
  162. package/Libraries/DeprecatedPropTypes/DeprecatedTextInputPropTypes.js +5 -5
  163. package/Libraries/DeprecatedPropTypes/DeprecatedViewAccessibility.js +2 -0
  164. package/Libraries/EventEmitter/NativeEventEmitter.js +100 -47
  165. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +9 -70
  166. package/Libraries/EventEmitter/RCTEventEmitter.js +5 -1
  167. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +0 -2
  168. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +31 -8
  169. package/Libraries/FBLazyVector/BUCK +5 -1
  170. package/Libraries/FBLazyVector/FBLazyVector.podspec +2 -2
  171. package/Libraries/HeapCapture/HeapCapture.js +0 -2
  172. package/Libraries/HeapCapture/NativeJSCHeapCapture.js +0 -2
  173. package/Libraries/Image/AssetSourceResolver.js +8 -16
  174. package/Libraries/Image/AssetUtils.js +48 -0
  175. package/Libraries/Image/Image.android.js +43 -132
  176. package/Libraries/Image/Image.ios.js +58 -29
  177. package/Libraries/Image/ImageAnalyticsTagContext.js +4 -2
  178. package/Libraries/Image/ImageBackground.js +2 -2
  179. package/Libraries/Image/ImageInjection.js +28 -0
  180. package/Libraries/Image/ImagePickerIOS.js +0 -2
  181. package/Libraries/Image/ImageSource.js +57 -14
  182. package/Libraries/Image/ImageViewNativeComponent.js +70 -27
  183. package/Libraries/Image/NativeImageEditor.js +0 -2
  184. package/Libraries/Image/NativeImageLoaderAndroid.js +0 -2
  185. package/Libraries/Image/NativeImageLoaderIOS.js +6 -2
  186. package/Libraries/Image/NativeImagePickerIOS.js +0 -2
  187. package/Libraries/Image/NativeImageStoreAndroid.js +0 -2
  188. package/Libraries/Image/NativeImageStoreIOS.js +0 -2
  189. package/Libraries/Image/RCTAnimatedImage.m +6 -3
  190. package/Libraries/Image/RCTGIFImageDecoder.mm +6 -0
  191. package/Libraries/Image/RCTImageBlurUtils.m +17 -11
  192. package/Libraries/Image/RCTImageEditingManager.mm +4 -4
  193. package/Libraries/Image/RCTImageLoader.h +2 -2
  194. package/Libraries/Image/RCTImageLoader.mm +31 -30
  195. package/Libraries/Image/RCTImageLoaderWithAttributionProtocol.h +0 -5
  196. package/Libraries/Image/RCTImagePlugins.mm +4 -3
  197. package/Libraries/Image/RCTImageStoreManager.mm +5 -5
  198. package/Libraries/Image/RCTImageURLLoaderWithAttribution.h +1 -0
  199. package/Libraries/Image/RCTLocalAssetImageLoader.mm +5 -0
  200. package/Libraries/Image/React-RCTImage.podspec +3 -3
  201. package/Libraries/Image/TextInlineImageNativeComponent.js +84 -2
  202. package/Libraries/Image/nativeImageSource.js +0 -2
  203. package/Libraries/Image/resolveAssetSource.js +2 -1
  204. package/Libraries/Inspector/ElementProperties.js +1 -1
  205. package/Libraries/Inspector/Inspector.js +13 -4
  206. package/Libraries/Inspector/InspectorPanel.js +1 -1
  207. package/Libraries/Interaction/FrameRateLogger.js +0 -2
  208. package/Libraries/Interaction/InteractionManager.js +7 -6
  209. package/Libraries/Interaction/InteractionMixin.js +1 -2
  210. package/Libraries/Interaction/PanResponder.js +1 -1
  211. package/Libraries/LayoutAnimation/LayoutAnimation.js +53 -17
  212. package/Libraries/Linking/Linking.js +19 -10
  213. package/Libraries/Linking/NativeIntentAndroid.js +0 -2
  214. package/Libraries/Linking/NativeLinkingManager.js +0 -2
  215. package/Libraries/LinkingIOS/RCTLinkingPlugins.mm +4 -3
  216. package/Libraries/LinkingIOS/React-RCTLinking.podspec +3 -3
  217. package/Libraries/Lists/CellRenderMask.js +145 -0
  218. package/Libraries/Lists/FillRateHelper.js +1 -1
  219. package/Libraries/Lists/FlatList.js +80 -52
  220. package/Libraries/Lists/SectionList.js +20 -23
  221. package/Libraries/Lists/SectionListModern.js +249 -0
  222. package/Libraries/Lists/ViewabilityHelper.js +9 -9
  223. package/Libraries/Lists/VirtualizeUtils.js +18 -20
  224. package/Libraries/Lists/VirtualizedList.js +190 -132
  225. package/Libraries/Lists/VirtualizedListContext.js +3 -2
  226. package/Libraries/Lists/VirtualizedSectionList.js +247 -209
  227. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +6 -6
  228. package/Libraries/LogBox/Data/LogBoxData.js +21 -19
  229. package/Libraries/LogBox/Data/LogBoxLog.js +0 -2
  230. package/Libraries/LogBox/Data/LogBoxSymbolication.js +0 -2
  231. package/Libraries/LogBox/Data/parseLogBoxLog.js +0 -2
  232. package/Libraries/LogBox/LogBox.js +114 -49
  233. package/Libraries/LogBox/LogBoxInspectorContainer.js +0 -2
  234. package/Libraries/LogBox/LogBoxNotificationContainer.js +0 -2
  235. package/Libraries/LogBox/UI/LogBoxButton.js +0 -2
  236. package/Libraries/LogBox/UI/LogBoxInspector.js +0 -2
  237. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +0 -2
  238. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +0 -2
  239. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +0 -2
  240. package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +0 -2
  241. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +0 -2
  242. package/Libraries/LogBox/UI/LogBoxInspectorSection.js +0 -2
  243. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +4 -5
  244. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +0 -2
  245. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +4 -3
  246. package/Libraries/LogBox/UI/LogBoxMessage.js +0 -2
  247. package/Libraries/LogBox/UI/LogBoxNotification.js +3 -4
  248. package/Libraries/LogBox/UI/LogBoxStyle.js +0 -2
  249. package/Libraries/Modal/Modal.js +46 -21
  250. package/Libraries/{Components/Picker/PickerIOS.android.js → Modal/ModalInjection.js} +5 -4
  251. package/Libraries/Modal/NativeModalManager.js +0 -2
  252. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +8 -4
  253. package/Libraries/NativeAnimation/RCTAnimationPlugins.mm +4 -3
  254. package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +7 -2
  255. package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.h +1 -1
  256. package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.m +1 -1
  257. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.h +2 -1
  258. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +31 -23
  259. package/Libraries/NativeAnimation/React-RCTAnimation.podspec +4 -4
  260. package/Libraries/NativeComponent/NativeComponentRegistry.js +157 -0
  261. package/Libraries/NativeComponent/ViewConfig.js +50 -0
  262. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -2
  263. package/Libraries/NativeModules/specs/NativeDevMenu.js +0 -2
  264. package/Libraries/NativeModules/specs/NativeDevSettings.js +0 -2
  265. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +0 -2
  266. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +0 -2
  267. package/Libraries/NativeModules/specs/NativeLogBox.js +0 -2
  268. package/Libraries/NativeModules/specs/NativeRedBox.js +0 -2
  269. package/Libraries/NativeModules/specs/NativeSourceCode.js +0 -2
  270. package/Libraries/Network/NativeNetworkingAndroid.js +0 -2
  271. package/Libraries/Network/NativeNetworkingIOS.js +0 -2
  272. package/Libraries/Network/RCTDataRequestHandler.mm +6 -0
  273. package/Libraries/Network/RCTFileRequestHandler.mm +6 -0
  274. package/Libraries/Network/RCTHTTPRequestHandler.h +5 -0
  275. package/Libraries/Network/RCTHTTPRequestHandler.mm +27 -9
  276. package/Libraries/Network/RCTNetworkPlugins.mm +4 -3
  277. package/Libraries/Network/RCTNetworking.android.js +8 -4
  278. package/Libraries/Network/RCTNetworking.h +1 -1
  279. package/Libraries/Network/RCTNetworking.ios.js +63 -20
  280. package/Libraries/Network/RCTNetworking.mm +13 -3
  281. package/Libraries/Network/React-RCTNetwork.podspec +3 -3
  282. package/Libraries/Network/XMLHttpRequest.js +5 -3
  283. package/Libraries/Network/convertRequestBody.js +2 -1
  284. package/Libraries/NewAppScreen/components/Colors.js +0 -2
  285. package/Libraries/NewAppScreen/components/Header.js +1 -1
  286. package/Libraries/NewAppScreen/components/HermesBadge.js +7 -4
  287. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +0 -1
  288. package/Libraries/NewAppScreen/index.js +0 -2
  289. package/Libraries/Performance/NativeJSCSamplingProfiler.js +0 -2
  290. package/Libraries/Performance/QuickPerformanceLogger.js +4 -4
  291. package/Libraries/Performance/Systrace.js +3 -5
  292. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +4 -3
  293. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +10 -5
  294. package/Libraries/Pressability/HoverState.js +0 -2
  295. package/Libraries/Pressability/Pressability.js +24 -22
  296. package/Libraries/Pressability/PressabilityDebug.js +9 -4
  297. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +47 -0
  298. package/Libraries/Pressability/PressabilityTypes.js +18 -0
  299. package/Libraries/Pressability/usePressability.js +0 -2
  300. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +3 -0
  301. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +43 -4
  302. package/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +13 -0
  303. package/Libraries/PushNotificationIOS/RCTPushNotificationPlugins.mm +4 -3
  304. package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +3 -3
  305. package/Libraries/RCTRequired/BUCK +4 -1
  306. package/Libraries/RCTRequired/RCTRequired.podspec +2 -2
  307. package/Libraries/ReactNative/AppContainer.js +3 -25
  308. package/Libraries/ReactNative/AppRegistry.js +48 -7
  309. package/Libraries/ReactNative/DisplayMode.js +32 -0
  310. package/Libraries/ReactNative/DummyUIManager.js +9 -1
  311. package/Libraries/ReactNative/FabricUIManager.js +6 -5
  312. package/Libraries/ReactNative/HeadlessJsTaskError.js +0 -2
  313. package/Libraries/ReactNative/I18nManager.js +23 -9
  314. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +0 -2
  315. package/Libraries/ReactNative/NativeI18nManager.js +1 -2
  316. package/Libraries/ReactNative/NativeUIManager.js +2 -3
  317. package/Libraries/ReactNative/PaperUIManager.js +69 -42
  318. package/Libraries/ReactNative/RootTag.js +6 -4
  319. package/Libraries/ReactNative/UIManager.js +7 -4
  320. package/Libraries/{Text/TextInjection.js → ReactNative/UIManagerInjection.js} +2 -6
  321. package/Libraries/ReactNative/UIManagerProperties.js +1 -0
  322. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +32 -0
  323. package/Libraries/ReactNative/getNativeComponentAttributes.js +2 -1
  324. package/Libraries/ReactNative/renderApplication.js +24 -6
  325. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +8 -4
  326. package/Libraries/Reliability/UserFlow.js +26 -4
  327. package/Libraries/Renderer/REVISION +1 -1
  328. package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +8933 -7603
  329. package/Libraries/Renderer/implementations/ReactFabric-dev.js +5810 -4905
  330. package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +2893 -2551
  331. package/Libraries/Renderer/implementations/ReactFabric-prod.js +2114 -1953
  332. package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +3309 -2815
  333. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +2576 -2266
  334. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +9064 -7879
  335. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5675 -4840
  336. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +2701 -2490
  337. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +2279 -2138
  338. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +3068 -2709
  339. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +2574 -2282
  340. package/Libraries/Renderer/shims/ReactFabric.js +5 -3
  341. package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -0
  342. package/Libraries/Renderer/shims/ReactNative.js +3 -0
  343. package/Libraries/Renderer/shims/ReactNativeTypes.js +104 -63
  344. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +8 -11
  345. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +5 -3
  346. package/Libraries/Settings/NativeSettingsManager.js +0 -2
  347. package/Libraries/Settings/RCTSettingsManager.mm +2 -2
  348. package/Libraries/Settings/RCTSettingsPlugins.mm +4 -3
  349. package/Libraries/Settings/React-RCTSettings.podspec +3 -3
  350. package/Libraries/Settings/Settings.ios.js +4 -2
  351. package/Libraries/Share/NativeShareModule.js +0 -2
  352. package/Libraries/Share/Share.js +0 -2
  353. package/Libraries/Storage/AsyncStorage.js +68 -49
  354. package/Libraries/Storage/NativeAsyncLocalStorage.js +10 -9
  355. package/Libraries/Storage/NativeAsyncSQLiteDBStorage.js +10 -9
  356. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +0 -2
  357. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +16 -3
  358. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +8 -3
  359. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +2 -2
  360. package/Libraries/StyleSheet/Rect.js +0 -2
  361. package/Libraries/StyleSheet/StyleSheet.js +3 -5
  362. package/Libraries/StyleSheet/StyleSheetTypes.js +5 -0
  363. package/Libraries/StyleSheet/flattenStyle.js +5 -7
  364. package/Libraries/StyleSheet/normalizeColor.js +0 -2
  365. package/Libraries/StyleSheet/processColorArray.js +16 -6
  366. package/Libraries/StyleSheet/processTransform.js +6 -6
  367. package/Libraries/StyleSheet/splitLayoutProps.js +50 -48
  368. package/Libraries/SurfaceHostingComponent/RCTSurfaceHostingComponent.mm +1 -1
  369. package/Libraries/Text/React-RCTText.podspec +2 -2
  370. package/Libraries/Text/Text.js +187 -235
  371. package/Libraries/Text/TextAncestor.js +7 -1
  372. package/Libraries/Text/TextInput/Multiline/RCTUITextView.h +0 -2
  373. package/Libraries/Text/TextInput/Multiline/RCTUITextView.m +12 -2
  374. package/Libraries/Text/TextInput/RCTBaseTextInputView.m +8 -0
  375. package/Libraries/Text/TextNativeComponent.js +4 -3
  376. package/Libraries/Text/TextProps.js +6 -0
  377. package/Libraries/TurboModule/RCTExport.js +1 -1
  378. package/Libraries/TurboModule/TurboModuleRegistry.js +4 -27
  379. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +2 -2
  380. package/Libraries/TypeSafety/RCTTypeSafety.podspec +3 -3
  381. package/Libraries/Types/CodegenTypes.js +2 -1
  382. package/Libraries/Types/CoreEventTypes.js +1 -3
  383. package/Libraries/{Components/Picker/PickerAndroid.ios.js → Types/RootTagTypes.js} +2 -3
  384. package/Libraries/UTFSequence.js +1 -1
  385. package/Libraries/Utilities/Appearance.js +22 -8
  386. package/Libraries/Utilities/BackHandler.android.js +0 -2
  387. package/Libraries/Utilities/DebugEnvironment.js +1 -3
  388. package/Libraries/Utilities/DevSettings.js +51 -56
  389. package/Libraries/Utilities/DeviceInfo.js +0 -2
  390. package/Libraries/Utilities/Dimensions.js +21 -20
  391. package/Libraries/Utilities/FeatureDetection.js +31 -0
  392. package/Libraries/Utilities/GlobalPerformanceLogger.js +0 -2
  393. package/Libraries/Utilities/HMRClient.js +15 -10
  394. package/Libraries/Utilities/JSDevSupportModule.js +0 -2
  395. package/Libraries/Utilities/LoadingView.android.js +0 -2
  396. package/Libraries/Utilities/LoadingView.ios.js +0 -2
  397. package/Libraries/Utilities/MatrixMath.js +1 -1
  398. package/Libraries/Utilities/NativeAppearance.js +0 -2
  399. package/Libraries/Utilities/NativeDevLoadingView.js +0 -2
  400. package/Libraries/Utilities/NativeDevSplitBundleLoader.js +0 -2
  401. package/Libraries/Utilities/NativeDeviceInfo.js +1 -3
  402. package/Libraries/Utilities/NativeJSDevSupport.js +0 -2
  403. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +0 -2
  404. package/Libraries/Utilities/NativePlatformConstantsIOS.js +0 -2
  405. package/Libraries/Utilities/PerformanceLoggerContext.js +11 -4
  406. package/Libraries/Utilities/Platform.android.js +6 -5
  407. package/Libraries/Utilities/Platform.ios.js +1 -2
  408. package/Libraries/Utilities/ReactNativeTestTools.js +12 -19
  409. package/Libraries/Utilities/codegenNativeCommands.js +1 -3
  410. package/Libraries/Utilities/codegenNativeComponent.js +0 -2
  411. package/Libraries/Utilities/createPerformanceLogger.js +0 -2
  412. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +1 -0
  413. package/Libraries/Utilities/defineLazyObjectProperty.js +1 -1
  414. package/Libraries/Utilities/deprecatedPropType.js +3 -5
  415. package/Libraries/Utilities/stringifySafe.js +1 -3
  416. package/Libraries/Utilities/useColorScheme.js +4 -4
  417. package/Libraries/Utilities/useMergeRefs.js +44 -0
  418. package/Libraries/Utilities/useRefEffect.js +45 -0
  419. package/Libraries/Utilities/useWindowDimensions.js +9 -6
  420. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +22 -28
  421. package/Libraries/Vibration/NativeVibration.js +0 -2
  422. package/Libraries/Vibration/RCTVibrationPlugins.mm +4 -3
  423. package/Libraries/Vibration/React-RCTVibration.podspec +3 -3
  424. package/Libraries/Vibration/Vibration.js +0 -2
  425. package/Libraries/WebSocket/NativeWebSocketModule.js +0 -2
  426. package/Libraries/WebSocket/WebSocket.js +27 -14
  427. package/Libraries/WebSocket/WebSocketInterceptor.js +6 -3
  428. package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -0
  429. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +0 -2
  430. package/Libraries/promiseRejectionTrackingOptions.js +2 -2
  431. package/Libraries/vendor/emitter/EventEmitter.js +37 -4
  432. package/Libraries/vendor/emitter/EventSubscription.js +19 -0
  433. package/Libraries/vendor/emitter/_EmitterSubscription.js +16 -15
  434. package/Libraries/vendor/emitter/_EventEmitter.js +51 -41
  435. package/Libraries/vendor/emitter/_EventSubscription.js +11 -7
  436. package/Libraries/vendor/emitter/_EventSubscriptionVendor.js +21 -14
  437. package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +125 -0
  438. package/README.md +7 -1
  439. package/React/AccessibilityResources/en.lproj/Localizable.strings +1 -1
  440. package/React/Base/RCTAssert.h +35 -18
  441. package/React/Base/RCTAssert.m +52 -0
  442. package/React/Base/RCTBridge.h +15 -3
  443. package/React/Base/RCTBridge.m +14 -5
  444. package/React/Base/RCTBridgeModule.h +104 -0
  445. package/React/Base/RCTBundleManager.m +78 -0
  446. package/React/Base/RCTBundleURLProvider.h +35 -9
  447. package/React/Base/RCTBundleURLProvider.mm +87 -24
  448. package/React/Base/RCTCallableJSModules.m +47 -0
  449. package/React/Base/RCTConstants.h +9 -10
  450. package/React/Base/RCTConstants.m +18 -18
  451. package/React/Base/RCTConvert.m +31 -7
  452. package/React/Base/RCTCxxConvert.h +1 -1
  453. package/React/Base/RCTDefines.h +10 -0
  454. package/React/Base/RCTEventDispatcherProtocol.h +1 -2
  455. package/React/{Views/RCTPickerManager.h → Base/RCTInitializing.h} +4 -2
  456. package/React/Base/RCTJavaScriptLoader.mm +1 -0
  457. package/React/Base/RCTModuleData.h +20 -3
  458. package/React/Base/RCTModuleData.mm +121 -3
  459. package/React/Base/RCTModuleRegistry.m +48 -0
  460. package/React/Base/RCTMultipartStreamReader.m +0 -2
  461. package/React/Base/RCTRootView.h +10 -1
  462. package/React/Base/RCTRootView.m +15 -37
  463. package/React/Base/RCTTVRemoteHandler.h +5 -2
  464. package/React/Base/RCTTVRemoteHandler.m +173 -70
  465. package/React/Base/RCTTouchHandler.m +12 -1
  466. package/React/Base/RCTUtils.m +6 -2
  467. package/React/Base/RCTVersion.m +2 -2
  468. package/React/Base/RCTViewRegistry.m +45 -0
  469. package/React/Base/Surface/RCTSurfaceStage.h +6 -11
  470. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h +1 -0
  471. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +11 -1
  472. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm +3 -0
  473. package/React/CoreModules/BUCK +6 -5
  474. package/React/CoreModules/CoreModulesPlugins.mm +4 -3
  475. package/React/CoreModules/RCTAccessibilityManager.mm +17 -10
  476. package/React/CoreModules/RCTActionSheetManager.mm +17 -13
  477. package/React/CoreModules/RCTAlertController.h +2 -1
  478. package/React/CoreModules/RCTAlertController.m +5 -0
  479. package/React/CoreModules/RCTAlertManager.mm +3 -0
  480. package/React/CoreModules/RCTAppearance.mm +3 -1
  481. package/React/CoreModules/RCTAsyncLocalStorage.mm +4 -0
  482. package/React/CoreModules/RCTDevLoadingView.mm +20 -23
  483. package/React/CoreModules/RCTDevMenu.h +0 -5
  484. package/React/CoreModules/RCTDevMenu.mm +43 -71
  485. package/React/CoreModules/RCTDevSettings.h +12 -2
  486. package/React/CoreModules/RCTDevSettings.mm +100 -56
  487. package/React/CoreModules/RCTDevSplitBundleLoader.mm +2 -7
  488. package/React/CoreModules/RCTDeviceInfo.mm +26 -22
  489. package/React/CoreModules/RCTEventDispatcher.h +2 -1
  490. package/React/CoreModules/RCTEventDispatcher.mm +18 -25
  491. package/React/CoreModules/RCTExceptionsManager.mm +7 -23
  492. package/React/CoreModules/RCTKeyboardObserver.mm +1 -1
  493. package/React/CoreModules/RCTLogBox.mm +15 -10
  494. package/React/CoreModules/RCTPerfMonitor.mm +11 -5
  495. package/React/CoreModules/RCTRedBox.mm +5 -8
  496. package/React/CoreModules/RCTSourceCode.mm +2 -1
  497. package/React/CoreModules/RCTTVNavigationEventEmitter.h +7 -0
  498. package/React/CoreModules/RCTTiming.h +2 -1
  499. package/React/CoreModules/RCTTiming.mm +1 -3
  500. package/React/CoreModules/RCTWebSocketExecutor.mm +6 -0
  501. package/React/CoreModules/React-CoreModules.podspec +3 -3
  502. package/React/CxxBridge/RCTCxxBridge.mm +99 -8
  503. package/React/CxxModule/RCTNativeModule.mm +3 -1
  504. package/React/DevSupport/RCTPackagerConnection.mm +12 -5
  505. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +21 -0
  506. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +12 -1
  507. package/React/FBReactNativeSpec/FBReactNativeSpec.podspec +3 -3
  508. package/React/Fabric/Mounting/ComponentViews/Image/RCTImageComponentView.h +2 -1
  509. package/React/Fabric/Mounting/ComponentViews/Image/RCTImageComponentView.mm +28 -36
  510. package/React/Fabric/Mounting/ComponentViews/InputAccessory/RCTInputAccessoryComponentView.mm +8 -7
  511. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +13 -9
  512. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropCoordinatorAdapter.mm +1 -3
  513. package/React/Fabric/Mounting/ComponentViews/Modal/RCTFabricModalHostViewController.mm +7 -0
  514. package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.h +3 -1
  515. package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +71 -26
  516. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.h +0 -1
  517. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.mm +0 -1
  518. package/React/Fabric/Mounting/ComponentViews/SafeAreaView/RCTSafeAreaViewComponentView.mm +34 -19
  519. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.h +6 -0
  520. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +24 -3
  521. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +186 -99
  522. package/React/Fabric/Mounting/ComponentViews/Text/RCTAccessibilityElement.h +23 -0
  523. package/React/Fabric/Mounting/ComponentViews/Text/RCTAccessibilityElement.mm +22 -0
  524. package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentAccessibilityProvider.mm +14 -9
  525. package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm +118 -30
  526. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +109 -28
  527. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm +48 -2
  528. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +143 -19
  529. package/React/Fabric/Mounting/RCTComponentViewFactory.h +10 -2
  530. package/React/Fabric/Mounting/RCTComponentViewFactory.mm +83 -46
  531. package/React/Fabric/Mounting/RCTComponentViewProtocol.h +3 -0
  532. package/React/Fabric/Mounting/RCTComponentViewRegistry.mm +1 -1
  533. package/React/Fabric/Mounting/RCTMountingManager.h +28 -1
  534. package/React/Fabric/Mounting/RCTMountingManager.mm +71 -3
  535. package/React/Fabric/Mounting/UIView+ComponentViewProtocol.h +4 -0
  536. package/React/Fabric/Mounting/UIView+ComponentViewProtocol.mm +30 -4
  537. package/React/Fabric/RCTConversions.h +20 -16
  538. package/React/Fabric/RCTScheduler.h +11 -16
  539. package/React/Fabric/RCTScheduler.mm +29 -46
  540. package/React/Fabric/RCTSurfacePresenter.h +8 -16
  541. package/React/Fabric/RCTSurfacePresenter.mm +62 -165
  542. package/React/Fabric/RCTSurfacePresenterBridgeAdapter.h +4 -2
  543. package/React/Fabric/RCTSurfacePresenterBridgeAdapter.mm +1 -1
  544. package/React/Fabric/RCTSurfaceRegistry.h +1 -1
  545. package/React/Fabric/RCTSurfaceTouchHandler.mm +39 -7
  546. package/React/Fabric/Surface/RCTFabricSurface.h +9 -6
  547. package/React/Fabric/Surface/RCTFabricSurface.mm +139 -127
  548. package/React/Modules/RCTEventEmitter.h +3 -2
  549. package/React/Modules/RCTEventEmitter.m +8 -11
  550. package/React/Modules/RCTI18nUtil.h +14 -6
  551. package/React/Modules/RCTI18nUtil.m +1 -47
  552. package/React/Modules/RCTTVMenuBridge.m +3 -0
  553. package/React/Modules/RCTUIManager.m +19 -9
  554. package/React/Profiler/RCTProfile.m +9 -8
  555. package/React/Profiler/RCTProfileTrampoline-arm.S +1 -1
  556. package/React/Profiler/RCTProfileTrampoline-arm64.S +2 -2
  557. package/React/React-RCTFabric.podspec +5 -5
  558. package/React/Tests/Text/RCTParagraphComponentViewTests.mm +72 -0
  559. package/React/Views/RCTBorderDrawing.m +28 -25
  560. package/React/Views/RCTComponentData.h +10 -1
  561. package/React/Views/RCTComponentData.m +23 -8
  562. package/React/Views/RCTConvert+CoreLocation.m +2 -2
  563. package/React/Views/RCTDatePickerManager.m +33 -0
  564. package/React/Views/RCTLayout.m +25 -21
  565. package/React/Views/RCTModalHostView.h +4 -1
  566. package/React/Views/RCTModalHostView.m +58 -31
  567. package/React/Views/RCTModalHostViewManager.m +4 -3
  568. package/React/Views/RCTShadowView+Layout.m +15 -12
  569. package/React/Views/RCTShadowView.m +3 -2
  570. package/React/Views/RCTTVFocusGuideView.m +1 -1
  571. package/React/Views/RCTView.h +7 -7
  572. package/React/Views/RCTView.m +31 -43
  573. package/React/Views/RCTViewManager.m +19 -2
  574. package/React/Views/RCTWeakViewHolder.h +19 -0
  575. package/React/Views/RefreshControl/RCTRefreshControl.m +22 -1
  576. package/React/Views/RefreshControl/RCTRefreshControlManager.m +1 -0
  577. package/React/Views/ScrollView/RCTScrollContentView.m +1 -1
  578. package/React/Views/ScrollView/RCTScrollView.h +1 -7
  579. package/React/Views/ScrollView/RCTScrollView.m +17 -63
  580. package/React/Views/ScrollView/RCTScrollViewManager.m +3 -0
  581. package/React/third-party.xcconfig +1 -1
  582. package/React-Core.podspec +4 -15
  583. package/React.podspec +2 -2
  584. package/ReactAndroid/Android-prebuilt.mk +82 -3
  585. package/ReactAndroid/README.md +2 -2
  586. package/ReactAndroid/build.gradle +145 -34
  587. package/ReactAndroid/gradle.properties +7 -5
  588. package/ReactAndroid/proguard-rules.pro +1 -7
  589. package/ReactAndroid/src/androidTest/buck-runner/BUCK +1 -0
  590. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK +2 -1
  591. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppInstrumentationTestCase.java +1 -1
  592. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/BUCK +2 -1
  593. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/ReactIdleDetectionUtil.java +1 -1
  594. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/network/BUCK +1 -0
  595. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/rule/BUCK +6 -5
  596. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK +1 -1
  597. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/TextInputTestCase.java +1 -2
  598. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/core/BUCK +6 -5
  599. package/ReactAndroid/src/androidTest/js/BUCK +26 -0
  600. package/ReactAndroid/src/androidTest/js/TestBundle.js +0 -5
  601. package/ReactAndroid/src/androidTest/js/UIManagerTestModule.js +7 -6
  602. package/ReactAndroid/src/main/java/com/facebook/BUCK +1 -0
  603. package/ReactAndroid/src/main/java/com/facebook/debug/debugoverlay/model/BUCK +1 -0
  604. package/ReactAndroid/src/main/java/com/facebook/debug/holder/BUCK +1 -0
  605. package/ReactAndroid/src/main/java/com/facebook/debug/tags/BUCK +1 -0
  606. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/Android.mk +2 -2
  607. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/BUCK +2 -0
  608. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/Android.mk +4 -4
  609. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/BUCK +2 -0
  610. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/HermesExecutorFactory.java +1 -1
  611. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/RuntimeConfig.java +0 -6
  612. package/ReactAndroid/src/main/java/com/facebook/hermes/unicode/BUCK +1 -0
  613. package/ReactAndroid/src/main/java/com/facebook/perftest/BUCK +1 -0
  614. package/ReactAndroid/src/main/java/com/facebook/proguard/annotations/BUCK +3 -2
  615. package/ReactAndroid/src/main/java/com/facebook/proguard/annotations/proguard_annotations.pro +1 -0
  616. package/ReactAndroid/src/main/java/com/facebook/react/BUCK +4 -1
  617. package/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java +3 -2
  618. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +8 -0
  619. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +10 -3
  620. package/ReactAndroid/src/main/java/com/facebook/react/ReactFragment.java +6 -2
  621. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +145 -67
  622. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +9 -1
  623. package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +8 -1
  624. package/ReactAndroid/src/main/java/com/facebook/react/{turbomodule/core/ReactPackageTurboModuleManagerDelegate.java → ReactPackageTurboModuleManagerDelegate.java} +18 -6
  625. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +92 -42
  626. package/ReactAndroid/src/main/java/com/facebook/react/animated/BUCK +2 -1
  627. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +10 -2
  628. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java +66 -33
  629. package/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java +4 -0
  630. package/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK +2 -0
  631. package/ReactAndroid/src/main/java/com/facebook/react/bridge/BackgroundExecutor.java +3 -2
  632. package/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java +7 -5
  633. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +7 -3
  634. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java +4 -1
  635. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JSIModuleRegistry.java +4 -0
  636. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java +37 -0
  637. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java +1 -1
  638. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModule.java +8 -1
  639. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java +26 -0
  640. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +46 -8
  641. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContextBaseJavaModule.java +2 -3
  642. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarkerConstants.java +13 -3
  643. package/ReactAndroid/src/main/java/com/facebook/react/bridge/{ReactSoftException.java → ReactSoftExceptionLogger.java} +8 -3
  644. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableNativeMap.java +52 -2
  645. package/ReactAndroid/src/main/java/com/facebook/react/bridge/SoftAssertions.java +8 -7
  646. package/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManager.java +37 -2
  647. package/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +3 -0
  648. package/ReactAndroid/src/main/java/com/facebook/react/common/build/ReactBuildConfig.java +1 -0
  649. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/BUCK +29 -0
  650. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/ReadableMapBuffer.java +347 -0
  651. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/ReadableMapBufferSoLoader.java +33 -0
  652. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/Android.mk +39 -0
  653. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/BUCK +34 -0
  654. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/OnLoad.cpp +15 -0
  655. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/ReadableMapBuffer.cpp +76 -0
  656. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/ReadableMapBuffer.h +51 -0
  657. package/ReactAndroid/src/main/java/com/facebook/react/common/network/BUCK +1 -0
  658. package/ReactAndroid/src/main/java/com/facebook/react/config/BUCK +3 -1
  659. package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +50 -38
  660. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK +3 -1
  661. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java +275 -0
  662. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevLoadingViewController.java +2 -2
  663. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +17 -60
  664. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +176 -344
  665. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.java +8 -8
  666. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java +13 -1
  667. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxModule.java +1 -1
  668. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/PackagerStatusCheck.java +100 -0
  669. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/{ReactInstanceManagerDevHelper.java → ReactInstanceDevHelper.java} +3 -2
  670. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxHandler.java +2 -16
  671. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/BundleLoadCallback.java +12 -0
  672. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java +6 -1
  673. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/ErrorType.java +23 -0
  674. package/ReactAndroid/src/main/java/com/facebook/react/fabric/BUCK +2 -1
  675. package/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.java +10 -1
  676. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricComponents.java +4 -3
  677. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java +17 -71
  678. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +466 -616
  679. package/ReactAndroid/src/main/java/com/facebook/react/fabric/StateWrapperImpl.java +37 -24
  680. package/ReactAndroid/src/main/java/com/facebook/react/fabric/SurfaceHandler.java +50 -0
  681. package/ReactAndroid/src/main/java/com/facebook/react/fabric/SurfaceHandlerBinding.java +131 -0
  682. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +36 -1
  683. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.java +27 -7
  684. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Android.mk +4 -5
  685. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK +4 -5
  686. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +300 -615
  687. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h +34 -13
  688. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/CoreComponentsRegistry.cpp +3 -6
  689. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.cpp +22 -2
  690. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.h +4 -0
  691. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/OnLoad.cpp +2 -0
  692. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/StateWrapperImpl.cpp +15 -28
  693. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/StateWrapperImpl.h +3 -1
  694. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/SurfaceHandlerBinding.cpp +122 -0
  695. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/SurfaceHandlerBinding.h +68 -0
  696. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.java +406 -0
  697. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +271 -658
  698. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +1008 -0
  699. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/DispatchIntCommandMountItem.java +9 -2
  700. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/DispatchStringCommandMountItem.java +9 -2
  701. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +39 -34
  702. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/MountItem.java +4 -0
  703. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.java +21 -23
  704. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SendAccessibilityEvent.java +11 -4
  705. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/Android.mk +2 -2
  706. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/BUCK +1 -0
  707. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/BUCK +1 -0
  708. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.java +3 -3
  709. package/ReactAndroid/src/main/java/com/facebook/react/module/annotations/BUCK +1 -0
  710. package/ReactAndroid/src/main/java/com/facebook/react/module/model/BUCK +1 -0
  711. package/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.java +21 -4
  712. package/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/BUCK +2 -1
  713. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.java +10 -1
  714. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/BUCK +2 -1
  715. package/ReactAndroid/src/main/java/com/facebook/react/modules/appregistry/BUCK +1 -0
  716. package/ReactAndroid/src/main/java/com/facebook/react/modules/appstate/AppStateModule.java +11 -1
  717. package/ReactAndroid/src/main/java/com/facebook/react/modules/appstate/BUCK +2 -1
  718. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BUCK +2 -1
  719. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.java +35 -7
  720. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/Android.mk +2 -2
  721. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/BUCK +1 -1
  722. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/BlobCollector.cpp +1 -0
  723. package/ReactAndroid/src/main/java/com/facebook/react/modules/bundleloader/BUCK +2 -1
  724. package/ReactAndroid/src/main/java/com/facebook/react/modules/camera/BUCK +2 -1
  725. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/BUCK +1 -0
  726. package/ReactAndroid/src/main/java/com/facebook/react/modules/common/BUCK +1 -0
  727. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK +2 -1
  728. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactAndroidHWInputDeviceHelper.java +138 -0
  729. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java +5 -2
  730. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK +2 -1
  731. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java +19 -13
  732. package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/AnimationsDebugModule.java +1 -1
  733. package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/BUCK +3 -1
  734. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/BUCK +2 -1
  735. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.java +19 -8
  736. package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/BUCK +2 -1
  737. package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/DialogModule.java +12 -4
  738. package/ReactAndroid/src/main/java/com/facebook/react/modules/fabric/BUCK +1 -0
  739. package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/BUCK +1 -0
  740. package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.java +10 -0
  741. package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/BUCK +3 -1
  742. package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nManagerModule.java +12 -12
  743. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/BUCK +2 -1
  744. package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/BUCK +2 -1
  745. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/BUCK +2 -1
  746. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.java +1 -1
  747. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/OkHttpClientProvider.java +1 -18
  748. package/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/BUCK +2 -1
  749. package/ReactAndroid/src/main/java/com/facebook/react/modules/share/BUCK +2 -1
  750. package/ReactAndroid/src/main/java/com/facebook/react/modules/sound/BUCK +2 -1
  751. package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/BUCK +2 -1
  752. package/ReactAndroid/src/main/java/com/facebook/react/modules/storage/AsyncStorageModule.java +1 -1
  753. package/ReactAndroid/src/main/java/com/facebook/react/modules/storage/BUCK +2 -1
  754. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/BUCK +4 -2
  755. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
  756. package/ReactAndroid/src/main/java/com/facebook/react/modules/toast/BUCK +2 -1
  757. package/ReactAndroid/src/main/java/com/facebook/react/modules/vibration/BUCK +2 -1
  758. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/BUCK +2 -1
  759. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK +1 -0
  760. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java +3 -1
  761. package/ReactAndroid/src/main/java/com/facebook/react/reactperflogger/BUCK +1 -0
  762. package/ReactAndroid/src/main/java/com/facebook/react/reactperflogger/jni/Android.mk +1 -1
  763. package/ReactAndroid/src/main/java/com/facebook/react/reactperflogger/jni/BUCK +1 -1
  764. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/BUCK +20 -0
  765. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/RuntimeSchedulerManager.java +39 -0
  766. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/Android.mk +34 -0
  767. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/BUCK +35 -0
  768. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/OnLoad.cpp +15 -0
  769. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.cpp +46 -0
  770. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.h +40 -0
  771. package/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK +1 -1
  772. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +0 -4
  773. package/ReactAndroid/src/main/java/com/facebook/react/surface/BUCK +1 -0
  774. package/ReactAndroid/src/main/java/com/facebook/react/touch/BUCK +1 -0
  775. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/BUCK +2 -1
  776. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java +11 -10
  777. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManagerDelegate.java +3 -0
  778. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModulePerfLogger.java +2 -0
  779. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/BUCK +1 -0
  780. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/TurboModule.java +4 -4
  781. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/Android.mk +4 -4
  782. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/BUCK +3 -2
  783. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp +115 -86
  784. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.h +14 -5
  785. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK +6 -1
  786. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +15 -1
  787. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ComponentNameResolver.java +17 -0
  788. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ComponentNameResolverManager.java +41 -0
  789. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.java +7 -28
  790. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FabricViewStateManager.java +5 -19
  791. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java +27 -0
  792. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +4 -13
  793. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java +10 -13
  794. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/OnLayoutEvent.java +17 -6
  795. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/PixelUtil.java +1 -6
  796. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java +16 -10
  797. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactClippingProhibitedView.java +26 -0
  798. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactClippingViewGroupHelper.java +5 -49
  799. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.java +25 -0
  800. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactRoot.java +14 -0
  801. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewUtil.java +18 -0
  802. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/StateWrapper.java +24 -4
  803. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.java +35 -7
  804. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.java +101 -68
  805. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +46 -5
  806. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementationProvider.java +35 -13
  807. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.java +69 -17
  808. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +55 -54
  809. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstantsHelper.java +1 -2
  810. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +13 -6
  811. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +15 -13
  812. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerRegistry.java +2 -2
  813. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerResolver.java +26 -0
  814. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java +16 -1
  815. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/annotations/BUCK +1 -0
  816. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/BUCK +1 -1
  817. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/BlackHoleEventDispatcher.java +3 -0
  818. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ContentSizeChangeEvent.java +8 -3
  819. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +134 -6
  820. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcher.java +3 -0
  821. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +8 -3
  822. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/LockFreeEventDispatcherImpl.java +236 -0
  823. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.java +10 -0
  824. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.java +32 -0
  825. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +80 -25
  826. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java +66 -5
  827. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +7 -4
  828. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/BUCK +21 -0
  829. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{BaseViewManagerDelegate.java → interfaces/BaseViewManagerDelegate.java} +0 -0
  830. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{BaseViewManagerInterface.java → interfaces/BaseViewManagerInterface.java} +0 -0
  831. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{FloatUtil.java → interfaces/FloatUtil.java} +0 -0
  832. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{Spacing.java → interfaces/Spacing.java} +0 -0
  833. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{ViewManagerDelegate.java → interfaces/ViewManagerDelegate.java} +0 -0
  834. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{ViewProps.java → interfaces/ViewProps.java} +10 -2
  835. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/Android.mk +37 -0
  836. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/BUCK +41 -0
  837. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/ComponentNameResolverManager.cpp +77 -0
  838. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/ComponentNameResolverManager.h +54 -0
  839. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/OnLoad.cpp +16 -0
  840. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/util/BUCK +1 -0
  841. package/ReactAndroid/src/main/java/com/facebook/react/util/BUCK +1 -0
  842. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/BUCK +1 -0
  843. package/ReactAndroid/src/main/java/com/facebook/react/views/common/BUCK +1 -0
  844. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/BUCK +3 -2
  845. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.java +17 -8
  846. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerClosedEvent.java +9 -10
  847. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerOpenedEvent.java +9 -10
  848. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerSlideEvent.java +7 -13
  849. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerStateChangedEvent.java +7 -13
  850. package/ReactAndroid/src/main/java/com/facebook/react/views/image/BUCK +2 -0
  851. package/ReactAndroid/src/main/java/com/facebook/react/views/image/ImageLoadEvent.java +45 -19
  852. package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactCallerContextFactory.java +2 -2
  853. package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.java +12 -7
  854. package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.java +75 -26
  855. package/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/BUCK +2 -0
  856. package/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/ImageSource.java +17 -0
  857. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/BUCK +5 -2
  858. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java +13 -3
  859. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java +56 -20
  860. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/RequestCloseEvent.java +12 -4
  861. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ShowEvent.java +12 -4
  862. package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/BUCK +3 -2
  863. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/BUCK +2 -0
  864. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerView.java +15 -0
  865. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +185 -28
  866. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +9 -4
  867. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +110 -16
  868. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.java +20 -3
  869. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +10 -5
  870. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java +41 -14
  871. package/ReactAndroid/src/main/java/com/facebook/react/views/slider/BUCK +3 -2
  872. package/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderEvent.java +0 -5
  873. package/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java +22 -27
  874. package/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSlidingCompleteEvent.java +13 -16
  875. package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/BUCK +3 -2
  876. package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/RefreshEvent.java +12 -4
  877. package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/SwipeRefreshLayoutManager.java +14 -11
  878. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/BUCK +3 -2
  879. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitch.java +13 -0
  880. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchEvent.java +9 -13
  881. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.java +6 -10
  882. package/ReactAndroid/src/main/java/com/facebook/react/views/text/BUCK +2 -0
  883. package/ReactAndroid/src/main/java/com/facebook/react/views/text/CustomStyleSpan.java +6 -8
  884. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java +6 -9
  885. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactClickableSpan.java +2 -1
  886. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactFontManager.java +59 -44
  887. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +16 -4
  888. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +11 -0
  889. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java +48 -1
  890. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTypefaceUtils.java +41 -59
  891. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +213 -141
  892. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +33 -51
  893. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +596 -0
  894. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TypefaceStyle.java +72 -0
  895. package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/BUCK +1 -0
  896. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/BUCK +2 -0
  897. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactContentSizeChangedEvent.java +10 -7
  898. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +34 -20
  899. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.java +5 -6
  900. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextChangedEvent.java +9 -7
  901. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputBlurEvent.java +9 -7
  902. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputEndEditingEvent.java +9 -7
  903. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputEvent.java +10 -7
  904. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputFocusEvent.java +14 -12
  905. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputKeyPressEvent.java +15 -14
  906. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +154 -70
  907. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputSelectionEvent.java +10 -7
  908. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputSubmitEditingEvent.java +14 -12
  909. package/ReactAndroid/src/main/java/com/facebook/react/views/unimplementedview/BUCK +1 -0
  910. package/ReactAndroid/src/main/java/com/facebook/react/views/view/BUCK +1 -0
  911. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.java +1 -5
  912. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +39 -8
  913. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +63 -65
  914. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +3 -1
  915. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ViewGroupClickEvent.java +11 -4
  916. package/ReactAndroid/src/main/java/com/facebook/systrace/BUCK +1 -0
  917. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.java +13 -7
  918. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +24 -2
  919. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaProps.java +151 -0
  920. package/ReactAndroid/src/main/jni/first-party/fb/BUCK +4 -0
  921. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/RefPtr.h +1 -1
  922. package/ReactAndroid/src/main/jni/first-party/fb/include/fb/StaticInitialized.h +1 -1
  923. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +2 -7
  924. package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJTypesVanilla.h +8 -4
  925. package/ReactAndroid/src/main/jni/react/jni/Android.mk +5 -7
  926. package/ReactAndroid/src/main/jni/react/jni/BUCK +3 -2
  927. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +56 -1
  928. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +4 -0
  929. package/ReactAndroid/src/main/jni/react/jni/JReactSoftExceptionLogger.cpp +21 -0
  930. package/ReactAndroid/src/main/jni/react/jni/JReactSoftExceptionLogger.h +28 -0
  931. package/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp +1 -1
  932. package/ReactAndroid/src/main/jni/react/jni/JavaModuleWrapper.cpp +0 -94
  933. package/ReactAndroid/src/main/jni/react/jni/JavaModuleWrapper.h +0 -30
  934. package/ReactAndroid/src/main/jni/react/jni/ProxyExecutor.h +1 -0
  935. package/ReactAndroid/src/main/jni/react/jni/ReadableNativeMap.cpp +7 -6
  936. package/ReactAndroid/src/main/jni/third-party/boost/Android.mk +7 -2
  937. package/ReactAndroid/src/main/jni/third-party/boost/asm/arm/jump_arm_aapcs_elf_gas.S +86 -0
  938. package/ReactAndroid/src/main/jni/third-party/boost/asm/arm/make_arm_aapcs_elf_gas.S +79 -0
  939. package/ReactAndroid/src/main/jni/third-party/boost/asm/arm/ontop_arm_aapcs_elf_gas.S +91 -0
  940. package/ReactAndroid/src/main/jni/third-party/boost/asm/arm64/jump_arm64_aapcs_elf_gas.S +114 -0
  941. package/ReactAndroid/src/main/jni/third-party/boost/asm/arm64/make_arm64_aapcs_elf_gas.S +85 -0
  942. package/ReactAndroid/src/main/jni/third-party/boost/asm/arm64/ontop_arm64_aapcs_elf_gas.S +113 -0
  943. package/ReactAndroid/src/main/jni/third-party/boost/asm/x86/jump_i386_sysv_elf_gas.S +78 -0
  944. package/ReactAndroid/src/main/jni/third-party/boost/asm/x86/make_i386_sysv_elf_gas.S +106 -0
  945. package/ReactAndroid/src/main/jni/third-party/boost/asm/x86/ontop_i386_sysv_elf_gas.S +85 -0
  946. package/ReactAndroid/src/main/jni/third-party/boost/asm/x86_64/jump_x86_64_sysv_elf_gas.S +76 -0
  947. package/ReactAndroid/src/main/jni/third-party/boost/asm/x86_64/make_x86_64_sysv_elf_gas.S +81 -0
  948. package/ReactAndroid/src/main/jni/third-party/boost/asm/x86_64/ontop_x86_64_sysv_elf_gas.S +79 -0
  949. package/ReactAndroid/src/main/jni/third-party/fmt/Android.mk +15 -0
  950. package/ReactAndroid/src/main/jni/third-party/folly/Android.mk +36 -16
  951. package/ReactAndroid/src/main/jni/third-party/libevent/Android.mk +36 -0
  952. package/ReactAndroid/src/main/jni/third-party/libevent/evconfig-private.h +49 -0
  953. package/{third-party-podspecs/libevent.podspec → ReactAndroid/src/main/jni/third-party/libevent/event-config.h} +141 -366
  954. package/ReactAndroid/src/main/libraries/fbcore/src/main/java/com/facebook/common/logging/BUCK +1 -0
  955. package/ReactAndroid/src/main/libraries/fbjni/BUCK +2 -2
  956. package/ReactAndroid/src/main/libraries/fresco/fresco-react-native/BUCK +93 -14
  957. package/ReactAndroid/src/main/libraries/soloader/java/com/facebook/soloader/BUCK +5 -5
  958. package/ReactAndroid/src/main/res/devsupport/values/strings.xml +2 -1
  959. package/ReactAndroid/src/main/res/views/uimanager/values/strings_unlocalized.xml +4 -8
  960. package/ReactAndroid/src/main/third-party/android/androidx/BUCK +61 -0
  961. package/ReactAndroid/src/main/third-party/java/asm/BUCK +1 -0
  962. package/ReactAndroid/src/main/third-party/java/fest/BUCK +1 -0
  963. package/ReactAndroid/src/main/third-party/java/infer-annotations/BUCK +2 -2
  964. package/ReactAndroid/src/main/third-party/java/junit/BUCK +1 -0
  965. package/ReactAndroid/src/main/third-party/java/mockito/BUCK +1 -0
  966. package/ReactAndroid/src/main/third-party/java/mockito2/BUCK +1 -0
  967. package/ReactAndroid/src/main/third-party/java/okhttp/BUCK +29 -9
  968. package/ReactAndroid/src/main/third-party/java/okio/BUCK +15 -5
  969. package/ReactAndroid/src/main/third-party/java/robolectric/{4.4/BUCK → BUCK} +1 -0
  970. package/ReactAndroid/src/main/third-party/java/sqlite/BUCK +1 -0
  971. package/ReactAndroid/src/main/third-party/java/testing-support-lib/BUCK +0 -31
  972. package/ReactAndroid/src/main/third-party/kotlin/BUCK +91 -0
  973. package/ReactAndroid/src/test/java/com/facebook/common/logging/BUCK +1 -0
  974. package/ReactAndroid/src/test/java/com/facebook/react/RootViewTest.java +8 -3
  975. package/ReactAndroid/src/test/java/com/facebook/react/animated/NativeAnimatedNodeTraversalTest.java +1 -1
  976. package/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK +2 -1
  977. package/ReactAndroid/src/test/java/com/facebook/react/bridge/ReactTestHelper.java +1 -0
  978. package/ReactAndroid/src/test/java/com/facebook/react/devsupport/JSDebuggerWebSocketClientTest.java +3 -1
  979. package/ReactAndroid/src/test/java/com/facebook/react/modules/BUCK +1 -0
  980. package/ReactAndroid/src/test/java/com/facebook/react/modules/deviceinfo/DeviceInfoModuleTest.java +168 -0
  981. package/ReactAndroid/src/test/java/com/facebook/react/modules/dialog/DialogModuleTest.java +1 -1
  982. package/ReactAndroid/src/test/java/com/facebook/react/modules/network/NetworkingModuleTest.java +10 -10
  983. package/ReactAndroid/src/test/java/com/facebook/react/modules/timing/TimingModuleTest.java +1 -1
  984. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/BaseViewManagerTest.java +32 -0
  985. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/SimpleViewPropertyTest.java +8 -2
  986. package/ReactAndroid/src/test/java/com/facebook/react/views/image/ReactImagePropertyTest.java +8 -0
  987. package/ReactAndroid/src/test/java/com/facebook/react/views/textinput/ReactTextInputPropertyTest.java +4 -0
  988. package/ReactAndroid/src/test/java/org/mockito/configuration/BUCK +1 -0
  989. package/ReactCommon/React-Fabric.podspec +50 -15
  990. package/ReactCommon/ReactCommon.podspec +9 -4
  991. package/ReactCommon/better/Android.mk +1 -1
  992. package/ReactCommon/better/BUCK +2 -2
  993. package/ReactCommon/callinvoker/Android.mk +1 -1
  994. package/ReactCommon/callinvoker/BUCK +1 -1
  995. package/ReactCommon/callinvoker/React-callinvoker.podspec +3 -3
  996. package/ReactCommon/cxxreact/Android.mk +2 -1
  997. package/ReactCommon/cxxreact/BUCK +2 -4
  998. package/ReactCommon/cxxreact/CxxNativeModule.cpp +28 -0
  999. package/ReactCommon/cxxreact/CxxNativeModule.h +9 -0
  1000. package/ReactCommon/cxxreact/Instance.cpp +33 -1
  1001. package/ReactCommon/cxxreact/Instance.h +1 -0
  1002. package/ReactCommon/cxxreact/JSBundleType.cpp +5 -0
  1003. package/ReactCommon/cxxreact/JSBundleType.h +1 -0
  1004. package/ReactCommon/cxxreact/JsArgumentHelpers-inl.h +3 -3
  1005. package/ReactCommon/cxxreact/JsArgumentHelpers.h +2 -2
  1006. package/ReactCommon/cxxreact/MethodCall.cpp +2 -2
  1007. package/ReactCommon/cxxreact/ModuleRegistry.cpp +5 -0
  1008. package/ReactCommon/cxxreact/NativeToJsBridge.cpp +0 -21
  1009. package/ReactCommon/cxxreact/NativeToJsBridge.h +0 -6
  1010. package/ReactCommon/cxxreact/React-cxxreact.podspec +6 -5
  1011. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  1012. package/ReactCommon/cxxreact/SystraceSection.h +2 -2
  1013. package/ReactCommon/hermes/React-hermes.podspec +53 -0
  1014. package/ReactCommon/hermes/executor/Android.mk +4 -4
  1015. package/ReactCommon/hermes/inspector/Android.mk +1 -2
  1016. package/ReactCommon/hermes/inspector/BUCK +8 -5
  1017. package/ReactCommon/hermes/inspector/Inspector.cpp +2 -3
  1018. package/ReactCommon/hermes/inspector/Inspector.h +6 -5
  1019. package/ReactCommon/hermes/inspector/InspectorState.cpp +8 -6
  1020. package/ReactCommon/hermes/inspector/chrome/Connection.cpp +115 -0
  1021. package/ReactCommon/hermes/inspector/chrome/MessageTypes.cpp +215 -1
  1022. package/ReactCommon/hermes/inspector/chrome/MessageTypes.h +115 -1
  1023. package/ReactCommon/hermes/inspector/chrome/cli/main.cpp +6 -5
  1024. package/ReactCommon/hermes/inspector/chrome/tests/ConnectionTests.cpp +144 -0
  1025. package/ReactCommon/hermes/inspector/tools/message_types.txt +4 -0
  1026. package/ReactCommon/hermes/inspector/tools/msggen/__tests__/CommandTest.js +1 -3
  1027. package/ReactCommon/hermes/inspector/tools/msggen/__tests__/EventTest.js +1 -3
  1028. package/ReactCommon/hermes/inspector/tools/msggen/__tests__/GraphTest.js +1 -3
  1029. package/ReactCommon/hermes/inspector/tools/msggen/__tests__/HeaderWriterTest.js +1 -3
  1030. package/ReactCommon/hermes/inspector/tools/msggen/__tests__/ImplementationWriterTest.js +1 -3
  1031. package/ReactCommon/hermes/inspector/tools/msggen/__tests__/PropertyTest.js +1 -3
  1032. package/ReactCommon/hermes/inspector/tools/msggen/__tests__/TypeTest.js +1 -3
  1033. package/ReactCommon/hermes/inspector/tools/msggen/package.json +1 -1
  1034. package/ReactCommon/hermes/inspector/tools/msggen/src/Command.js +0 -2
  1035. package/ReactCommon/hermes/inspector/tools/msggen/src/Converters.js +0 -2
  1036. package/ReactCommon/hermes/inspector/tools/msggen/src/Event.js +0 -2
  1037. package/ReactCommon/hermes/inspector/tools/msggen/src/Graph.js +0 -2
  1038. package/ReactCommon/hermes/inspector/tools/msggen/src/HeaderWriter.js +0 -2
  1039. package/ReactCommon/hermes/inspector/tools/msggen/src/ImplementationWriter.js +0 -2
  1040. package/ReactCommon/hermes/inspector/tools/msggen/src/Property.js +1 -2
  1041. package/ReactCommon/hermes/inspector/tools/msggen/src/TestHelpers.js +1 -3
  1042. package/ReactCommon/hermes/inspector/tools/msggen/src/Type.js +0 -2
  1043. package/ReactCommon/hermes/inspector/tools/msggen/src/index.js +1 -3
  1044. package/ReactCommon/hermes/inspector/tools/msggen/yarn.lock +2218 -1389
  1045. package/ReactCommon/jsi/Android.mk +4 -4
  1046. package/ReactCommon/jsi/BUCK +1 -5
  1047. package/ReactCommon/jsi/JSCRuntime.cpp +7 -0
  1048. package/ReactCommon/jsi/React-jsi.podspec +5 -5
  1049. package/ReactCommon/jsi/jsi/CMakeLists.txt +1 -1
  1050. package/ReactCommon/jsi/jsi/decorator.h +15 -0
  1051. package/ReactCommon/jsi/jsi/instrumentation.h +13 -0
  1052. package/ReactCommon/jsi/jsi/jsi.cpp +3 -0
  1053. package/ReactCommon/jsi/jsi/jsi.h +32 -3
  1054. package/ReactCommon/jsi/jsi/jsilib-posix.cpp +1 -11
  1055. package/ReactCommon/jsi/jsi/test/testlib.cpp +1 -0
  1056. package/ReactCommon/jsiexecutor/Android.mk +2 -2
  1057. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +4 -4
  1058. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +36 -3
  1059. package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +2 -0
  1060. package/ReactCommon/jsinspector/BUCK +2 -0
  1061. package/ReactCommon/jsinspector/React-jsinspector.podspec +2 -2
  1062. package/ReactCommon/libraries/fbcore/src/test/java/com/facebook/powermock/BUCK +2 -0
  1063. package/ReactCommon/logger/Android.mk +23 -0
  1064. package/ReactCommon/logger/BUCK +43 -0
  1065. package/ReactCommon/logger/React-logger.podspec +40 -0
  1066. package/ReactCommon/logger/react_native_log.cpp +52 -0
  1067. package/ReactCommon/logger/react_native_log.h +33 -0
  1068. package/ReactCommon/react/config/Android.mk +1 -1
  1069. package/ReactCommon/react/config/BUCK +1 -1
  1070. package/ReactCommon/react/debug/Android.mk +31 -0
  1071. package/ReactCommon/react/debug/BUCK +69 -0
  1072. package/ReactCommon/react/debug/flags.h +19 -0
  1073. package/ReactCommon/react/debug/react_native_assert.cpp +45 -0
  1074. package/ReactCommon/react/debug/react_native_assert.h +64 -0
  1075. package/ReactCommon/react/nativemodule/core/Android.mk +3 -3
  1076. package/ReactCommon/react/nativemodule/core/BUCK +4 -3
  1077. package/ReactCommon/react/nativemodule/core/ReactCommon/LongLivedObject.cpp +1 -0
  1078. package/ReactCommon/react/nativemodule/core/ReactCommon/LongLivedObject.h +3 -2
  1079. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.cpp +1 -1
  1080. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +2 -2
  1081. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +49 -8
  1082. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +11 -3
  1083. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +55 -1
  1084. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +119 -109
  1085. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.h +12 -8
  1086. package/ReactCommon/react/nativemodule/core/platform/ios/RCTBlockGuard.h +24 -0
  1087. package/ReactCommon/react/nativemodule/core/platform/ios/RCTBlockGuard.mm +28 -0
  1088. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModule.h +7 -15
  1089. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModule.mm +97 -48
  1090. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.h +0 -6
  1091. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm +147 -70
  1092. package/ReactCommon/react/nativemodule/samples/BUCK +6 -6
  1093. package/ReactCommon/react/nativemodule/samples/platform/android/Android.mk +2 -2
  1094. package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +3 -0
  1095. package/ReactCommon/react/nativemodule/samples/platform/android/SampleTurboModule.java +10 -0
  1096. package/ReactCommon/react/nativemodule/samples/platform/ios/RCTNativeSampleTurboModuleSpec.h +1 -0
  1097. package/ReactCommon/react/nativemodule/samples/platform/ios/RCTNativeSampleTurboModuleSpec.mm +11 -0
  1098. package/ReactCommon/react/nativemodule/samples/platform/ios/RCTSampleTurboCxxModule.mm +12 -0
  1099. package/ReactCommon/react/nativemodule/samples/platform/ios/RCTSampleTurboModule.mm +5 -3
  1100. package/ReactCommon/react/nativemodule/samples/platform/ios/SampleTurboCxxModuleLegacyImpl.cpp +11 -0
  1101. package/ReactCommon/react/nativemodule/samples/platform/ios/SampleTurboCxxModuleLegacyImpl.h +1 -0
  1102. package/ReactCommon/react/renderer/animations/Android.mk +3 -2
  1103. package/ReactCommon/react/renderer/animations/BUCK +5 -3
  1104. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +19 -130
  1105. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.h +1 -4
  1106. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +675 -391
  1107. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.h +75 -58
  1108. package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +544 -0
  1109. package/ReactCommon/react/renderer/attributedstring/Android.mk +4 -2
  1110. package/ReactCommon/react/renderer/attributedstring/AttributedStringBox.cpp +28 -6
  1111. package/ReactCommon/react/renderer/attributedstring/AttributedStringBox.h +2 -2
  1112. package/ReactCommon/react/renderer/attributedstring/BUCK +9 -4
  1113. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +7 -2
  1114. package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +2 -0
  1115. package/ReactCommon/react/renderer/attributedstring/conversions.h +666 -308
  1116. package/ReactCommon/react/renderer/attributedstring/primitives.h +16 -0
  1117. package/ReactCommon/react/renderer/attributedstring/tests/AttributedStringBoxTest.cpp +105 -0
  1118. package/ReactCommon/react/renderer/attributedstring/tests/AttributedStringTest.cpp +17 -20
  1119. package/ReactCommon/react/renderer/attributedstring/tests/ParagraphAttributesTest.cpp +7 -12
  1120. package/ReactCommon/react/renderer/attributedstring/tests/TextAttributesTest.cpp +13 -15
  1121. package/ReactCommon/react/renderer/componentregistry/Android.mk +3 -2
  1122. package/ReactCommon/react/renderer/componentregistry/BUCK +5 -4
  1123. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProvider.h +5 -4
  1124. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProviderRegistry.cpp +2 -2
  1125. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h +1 -0
  1126. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +20 -70
  1127. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.h +4 -1
  1128. package/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.cpp +73 -0
  1129. package/ReactCommon/react/renderer/{components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerShadowNode.cpp → componentregistry/componentNameByReactViewName.h} +7 -2
  1130. package/ReactCommon/react/renderer/componentregistry/native/Android.mk +29 -0
  1131. package/ReactCommon/react/renderer/componentregistry/native/BUCK +58 -0
  1132. package/ReactCommon/react/renderer/componentregistry/native/NativeComponentRegistryBinding.cpp +68 -0
  1133. package/ReactCommon/react/renderer/componentregistry/native/NativeComponentRegistryBinding.h +61 -0
  1134. package/ReactCommon/react/renderer/components/image/Android.mk +5 -3
  1135. package/ReactCommon/react/renderer/components/image/BUCK +7 -3
  1136. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +3 -2
  1137. package/ReactCommon/react/renderer/components/image/ImageProps.cpp +28 -9
  1138. package/ReactCommon/react/renderer/components/image/ImageProps.h +5 -1
  1139. package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +5 -5
  1140. package/ReactCommon/react/renderer/components/image/ImageState.h +9 -1
  1141. package/ReactCommon/react/renderer/components/image/conversions.h +29 -18
  1142. package/ReactCommon/react/renderer/components/inputaccessory/BUCK +4 -3
  1143. package/ReactCommon/react/renderer/components/inputaccessory/InputAccessoryComponentDescriptor.h +5 -3
  1144. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/BUCK +3 -3
  1145. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.h +1 -1
  1146. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +17 -4
  1147. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.cpp +6 -1
  1148. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.h +2 -0
  1149. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.h +1 -1
  1150. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mm +74 -15
  1151. package/ReactCommon/react/renderer/components/modal/Android.mk +4 -3
  1152. package/ReactCommon/react/renderer/components/modal/BUCK +6 -2
  1153. package/ReactCommon/react/renderer/components/modal/ModalHostViewComponentDescriptor.h +5 -3
  1154. package/ReactCommon/react/renderer/components/modal/ModalHostViewState.h +9 -2
  1155. package/ReactCommon/react/renderer/components/progressbar/Android.mk +3 -3
  1156. package/ReactCommon/react/renderer/components/progressbar/BUCK +4 -3
  1157. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarComponentDescriptor.h +4 -2
  1158. package/{ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni → ReactCommon}/react/renderer/components/rncore/ComponentDescriptors.h +1 -0
  1159. package/ReactCommon/react/renderer/components/rncore/ComponentDescriptors.h.bak +32 -0
  1160. package/{ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni → ReactCommon}/react/renderer/components/rncore/EventEmitters.cpp +1 -0
  1161. package/ReactCommon/react/renderer/components/rncore/EventEmitters.cpp.bak +149 -0
  1162. package/{ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni → ReactCommon}/react/renderer/components/rncore/EventEmitters.h +8 -0
  1163. package/ReactCommon/react/renderer/components/rncore/EventEmitters.h.bak +237 -0
  1164. package/ReactCommon/react/renderer/components/rncore/Props.cpp +218 -0
  1165. package/ReactCommon/react/renderer/components/rncore/Props.cpp.bak +218 -0
  1166. package/{ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni → ReactCommon}/react/renderer/components/rncore/Props.h +74 -27
  1167. package/ReactCommon/react/renderer/components/rncore/Props.h.bak +576 -0
  1168. package/ReactCommon/react/renderer/components/rncore/RCTComponentViewHelpers.h +273 -0
  1169. package/ReactCommon/react/renderer/components/rncore/RCTComponentViewHelpers.h.bak +273 -0
  1170. package/{ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni → ReactCommon}/react/renderer/components/rncore/ShadowNodes.cpp +1 -0
  1171. package/ReactCommon/react/renderer/components/rncore/ShadowNodes.cpp.bak +29 -0
  1172. package/{ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni → ReactCommon}/react/renderer/components/rncore/ShadowNodes.h +9 -0
  1173. package/ReactCommon/react/renderer/components/rncore/ShadowNodes.h.bak +126 -0
  1174. package/ReactCommon/react/renderer/components/root/Android.mk +4 -3
  1175. package/ReactCommon/react/renderer/components/root/BUCK +4 -3
  1176. package/ReactCommon/react/renderer/components/root/RootProps.cpp +12 -2
  1177. package/ReactCommon/react/renderer/components/root/RootProps.h +6 -1
  1178. package/ReactCommon/react/renderer/components/root/RootShadowNode.cpp +7 -1
  1179. package/ReactCommon/react/renderer/components/root/RootShadowNode.h +2 -0
  1180. package/ReactCommon/react/renderer/components/root/tests/RootShadowNodeTest.cpp +35 -3
  1181. package/ReactCommon/react/renderer/components/safeareaview/BUCK +4 -3
  1182. package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewComponentDescriptor.h +5 -3
  1183. package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewShadowNode.h +7 -0
  1184. package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewState.h +1 -3
  1185. package/ReactCommon/react/renderer/components/scrollview/Android.mk +5 -3
  1186. package/ReactCommon/react/renderer/components/scrollview/BUCK +6 -3
  1187. package/ReactCommon/react/renderer/components/scrollview/RCTComponentViewHelpers.h +38 -0
  1188. package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.cpp +59 -6
  1189. package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.h +10 -5
  1190. package/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.cpp +23 -2
  1191. package/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.h +1 -0
  1192. package/ReactCommon/react/renderer/components/scrollview/ScrollViewState.cpp +1 -1
  1193. package/ReactCommon/react/renderer/components/scrollview/ScrollViewState.h +15 -4
  1194. package/ReactCommon/react/renderer/components/scrollview/conversions.h +5 -0
  1195. package/ReactCommon/react/renderer/components/slider/Android.mk +4 -3
  1196. package/ReactCommon/react/renderer/components/slider/BUCK +5 -3
  1197. package/ReactCommon/react/renderer/components/slider/SliderComponentDescriptor.h +4 -2
  1198. package/ReactCommon/react/renderer/components/slider/SliderShadowNode.h +9 -8
  1199. package/ReactCommon/react/renderer/components/slider/SliderState.h +8 -0
  1200. package/ReactCommon/react/renderer/components/slider/platform/ios/SliderMeasurementsManager.cpp +3 -1
  1201. package/ReactCommon/react/renderer/components/switch/Android.mk +3 -3
  1202. package/ReactCommon/react/renderer/components/switch/BUCK +3 -3
  1203. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchComponentDescriptor.h +4 -2
  1204. package/ReactCommon/react/renderer/components/text/Android.mk +5 -3
  1205. package/ReactCommon/react/renderer/components/text/BUCK +10 -4
  1206. package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +32 -0
  1207. package/ReactCommon/react/renderer/components/text/BaseTextProps.h +5 -1
  1208. package/ReactCommon/react/renderer/components/text/BaseTextShadowNode.cpp +2 -3
  1209. package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +6 -9
  1210. package/ReactCommon/react/renderer/components/text/ParagraphProps.cpp +15 -6
  1211. package/ReactCommon/react/renderer/components/text/ParagraphProps.h +5 -1
  1212. package/ReactCommon/react/renderer/components/text/ParagraphShadowNode.cpp +13 -19
  1213. package/ReactCommon/react/renderer/components/text/ParagraphShadowNode.h +7 -6
  1214. package/ReactCommon/react/renderer/components/text/ParagraphState.cpp +4 -0
  1215. package/ReactCommon/react/renderer/components/text/ParagraphState.h +8 -3
  1216. package/ReactCommon/react/renderer/components/text/RawTextProps.cpp +3 -2
  1217. package/ReactCommon/react/renderer/components/text/RawTextProps.h +5 -1
  1218. package/ReactCommon/react/renderer/components/text/RawTextShadowNode.h +36 -2
  1219. package/ReactCommon/react/renderer/components/text/TextProps.cpp +6 -3
  1220. package/ReactCommon/react/renderer/components/text/TextProps.h +5 -1
  1221. package/ReactCommon/react/renderer/components/text/TextShadowNode.h +23 -0
  1222. package/ReactCommon/react/renderer/components/text/conversions.h +22 -0
  1223. package/ReactCommon/react/renderer/components/text/tests/ParagraphLocalDataTest.cpp +8 -5
  1224. package/ReactCommon/react/renderer/components/textinput/Android.mk +5 -3
  1225. package/ReactCommon/react/renderer/components/textinput/BUCK +8 -4
  1226. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h +8 -5
  1227. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp +58 -91
  1228. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h +10 -6
  1229. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp +13 -18
  1230. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.h +5 -5
  1231. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputState.cpp +0 -3
  1232. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputState.h +5 -8
  1233. package/ReactCommon/react/renderer/components/textinput/iostextinput/BUCK +5 -4
  1234. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputComponentDescriptor.h +4 -4
  1235. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputProps.cpp +46 -22
  1236. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputProps.h +6 -5
  1237. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputShadowNode.cpp +3 -2
  1238. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputShadowNode.h +7 -6
  1239. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputState.h +2 -0
  1240. package/ReactCommon/react/renderer/components/textinput/iostextinput/conversions.h +19 -7
  1241. package/ReactCommon/react/renderer/components/textinput/iostextinput/primitives.h +6 -0
  1242. package/ReactCommon/react/renderer/components/textinput/iostextinput/propsConversions.h +63 -2
  1243. package/ReactCommon/react/renderer/components/unimplementedview/Android.mk +4 -3
  1244. package/ReactCommon/react/renderer/components/unimplementedview/BUCK +4 -3
  1245. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.cpp +8 -3
  1246. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.h +5 -2
  1247. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewProps.h +1 -0
  1248. package/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h +28 -0
  1249. package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +24 -1
  1250. package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +4 -1
  1251. package/ReactCommon/react/renderer/components/view/Android.mk +5 -3
  1252. package/ReactCommon/react/renderer/components/view/BUCK +5 -3
  1253. package/ReactCommon/react/renderer/components/view/Touch.h +32 -1
  1254. package/ReactCommon/react/renderer/components/view/TouchEvent.h +0 -2
  1255. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +31 -9
  1256. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +2 -1
  1257. package/ReactCommon/react/renderer/components/view/ViewComponentDescriptor.h +10 -1
  1258. package/ReactCommon/react/renderer/components/view/ViewEventEmitter.cpp +62 -20
  1259. package/ReactCommon/react/renderer/components/view/ViewEventEmitter.h +28 -4
  1260. package/ReactCommon/react/renderer/components/view/ViewProps.cpp +62 -14
  1261. package/ReactCommon/react/renderer/components/view/ViewProps.h +7 -1
  1262. package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +5 -7
  1263. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +4 -17
  1264. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +177 -87
  1265. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h +4 -9
  1266. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +3 -2
  1267. package/ReactCommon/react/renderer/components/view/YogaStylableProps.h +2 -0
  1268. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +95 -24
  1269. package/ReactCommon/react/renderer/components/view/conversions.h +96 -50
  1270. package/ReactCommon/react/renderer/components/view/primitives.h +5 -4
  1271. package/ReactCommon/react/renderer/components/view/propsConversions.h +163 -28
  1272. package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +15 -5
  1273. package/ReactCommon/react/renderer/core/Android.mk +4 -2
  1274. package/ReactCommon/react/renderer/core/BUCK +7 -4
  1275. package/ReactCommon/react/renderer/core/BatchedEventQueue.cpp +5 -21
  1276. package/ReactCommon/react/renderer/core/BatchedEventQueue.h +4 -8
  1277. package/ReactCommon/react/renderer/core/ComponentDescriptor.h +6 -3
  1278. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +23 -22
  1279. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +10 -7
  1280. package/ReactCommon/react/renderer/core/ConcreteState.h +16 -49
  1281. package/ReactCommon/react/renderer/core/Constants.cpp +24 -0
  1282. package/ReactCommon/react/renderer/{components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerComponentDescriptor.h → core/Constants.h} +8 -6
  1283. package/ReactCommon/react/renderer/core/DynamicPropsUtilities.cpp +35 -0
  1284. package/ReactCommon/react/renderer/{components/picker/iospicker/PickerState.h → core/DynamicPropsUtilities.h} +5 -4
  1285. package/ReactCommon/react/renderer/core/EventDispatcher.cpp +9 -15
  1286. package/ReactCommon/react/renderer/core/EventDispatcher.h +5 -10
  1287. package/ReactCommon/react/renderer/core/EventEmitter.cpp +22 -12
  1288. package/ReactCommon/react/renderer/core/EventEmitter.h +7 -2
  1289. package/ReactCommon/react/renderer/core/EventPipe.h +2 -0
  1290. package/ReactCommon/react/renderer/core/EventPriority.h +1 -1
  1291. package/ReactCommon/react/renderer/core/EventQueue.cpp +39 -40
  1292. package/ReactCommon/react/renderer/core/EventQueue.h +15 -9
  1293. package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +82 -0
  1294. package/ReactCommon/react/renderer/core/EventQueueProcessor.h +36 -0
  1295. package/ReactCommon/react/renderer/core/EventTarget.cpp +4 -2
  1296. package/ReactCommon/react/renderer/core/LayoutConstraints.h +9 -2
  1297. package/ReactCommon/react/renderer/core/LayoutMetrics.cpp +65 -0
  1298. package/ReactCommon/react/renderer/core/LayoutMetrics.h +38 -4
  1299. package/ReactCommon/react/renderer/core/LayoutPrimitives.h +14 -6
  1300. package/ReactCommon/react/renderer/core/LayoutableShadowNode.cpp +1 -8
  1301. package/ReactCommon/react/renderer/core/LayoutableShadowNode.h +2 -22
  1302. package/ReactCommon/react/renderer/core/Props.cpp +10 -2
  1303. package/ReactCommon/react/renderer/core/Props.h +5 -1
  1304. package/ReactCommon/react/renderer/core/PropsParserContext.h +28 -0
  1305. package/ReactCommon/react/renderer/core/RawEvent.cpp +4 -2
  1306. package/ReactCommon/react/renderer/core/RawEvent.h +40 -3
  1307. package/ReactCommon/react/renderer/core/RawProps.cpp +5 -3
  1308. package/ReactCommon/react/renderer/core/RawProps.h +3 -1
  1309. package/ReactCommon/react/renderer/core/RawPropsKey.cpp +10 -7
  1310. package/ReactCommon/react/renderer/core/RawPropsKeyMap.cpp +8 -6
  1311. package/ReactCommon/react/renderer/core/RawPropsParser.cpp +10 -7
  1312. package/ReactCommon/react/renderer/core/RawPropsParser.h +13 -4
  1313. package/ReactCommon/react/renderer/core/RawValue.h +9 -7
  1314. package/ReactCommon/react/renderer/core/ReactEventPriority.h +43 -0
  1315. package/ReactCommon/react/renderer/core/ReactPrimitives.h +34 -0
  1316. package/ReactCommon/react/renderer/core/Sealable.cpp +4 -3
  1317. package/ReactCommon/react/renderer/core/Sealable.h +5 -1
  1318. package/ReactCommon/react/renderer/core/ShadowNode.cpp +45 -13
  1319. package/ReactCommon/react/renderer/core/ShadowNode.h +14 -4
  1320. package/ReactCommon/react/renderer/core/ShadowNodeFamily.cpp +2 -1
  1321. package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +1 -1
  1322. package/ReactCommon/react/renderer/core/ShadowNodeTraits.h +31 -6
  1323. package/ReactCommon/react/renderer/core/State.h +4 -3
  1324. package/ReactCommon/react/renderer/core/StateData.h +3 -0
  1325. package/ReactCommon/react/renderer/core/StateUpdate.h +0 -2
  1326. package/ReactCommon/react/renderer/core/UnbatchedEventQueue.cpp +0 -2
  1327. package/ReactCommon/react/renderer/core/conversions.h +11 -0
  1328. package/ReactCommon/react/renderer/core/propsConversions.h +19 -9
  1329. package/ReactCommon/react/renderer/core/tests/ComponentDescriptorTest.cpp +16 -4
  1330. package/ReactCommon/react/renderer/core/tests/ConcreteShadowNodeTest.cpp +1 -1
  1331. package/ReactCommon/react/renderer/core/tests/DynamicPropsUtilitiesTest.cpp +66 -0
  1332. package/ReactCommon/react/renderer/core/tests/EventQueueProcessorTest.cpp +134 -0
  1333. package/ReactCommon/react/renderer/core/tests/LayoutableShadowNodeTest.cpp +21 -12
  1334. package/ReactCommon/react/renderer/core/tests/RawPropsTest.cpp +99 -30
  1335. package/ReactCommon/react/renderer/core/tests/TestComponent.h +11 -7
  1336. package/ReactCommon/react/renderer/core/tests/traitCastTest.cpp +31 -0
  1337. package/ReactCommon/react/renderer/debug/Android.mk +1 -1
  1338. package/ReactCommon/react/renderer/debug/BUCK +4 -6
  1339. package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +11 -25
  1340. package/ReactCommon/react/renderer/debug/SystraceSection.h +2 -2
  1341. package/ReactCommon/react/renderer/debug/flags.h +50 -0
  1342. package/ReactCommon/react/renderer/element/BUCK +3 -3
  1343. package/ReactCommon/react/renderer/element/ComponentBuilder.cpp +4 -3
  1344. package/ReactCommon/react/renderer/graphics/Android.mk +6 -2
  1345. package/ReactCommon/react/renderer/graphics/BUCK +16 -4
  1346. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +5 -4
  1347. package/ReactCommon/react/renderer/graphics/Rect.h +4 -3
  1348. package/ReactCommon/react/renderer/graphics/RectangleCorners.h +2 -2
  1349. package/ReactCommon/react/renderer/graphics/RectangleEdges.h +16 -13
  1350. package/ReactCommon/react/renderer/graphics/Transform.cpp +4 -3
  1351. package/ReactCommon/react/renderer/graphics/conversions.h +102 -44
  1352. package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/PlatformColorParser.h +67 -0
  1353. package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.cpp +19 -10
  1354. package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.h +2 -0
  1355. package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/PlatformColorParser.h +29 -0
  1356. package/ReactCommon/react/renderer/graphics/platform/ios/Color.cpp +19 -10
  1357. package/ReactCommon/react/renderer/graphics/platform/ios/Color.h +44 -1
  1358. package/ReactCommon/react/renderer/graphics/platform/ios/PlatformColorParser.h +34 -0
  1359. package/ReactCommon/react/renderer/graphics/platform/ios/RCTPlatformColorUtils.h +12 -0
  1360. package/ReactCommon/react/renderer/graphics/platform/ios/RCTPlatformColorUtils.mm +206 -0
  1361. package/ReactCommon/react/renderer/graphics/rounding.h +9 -6
  1362. package/ReactCommon/react/renderer/graphics/tests/TransformTest.cpp +1 -0
  1363. package/ReactCommon/react/renderer/imagemanager/Android.mk +3 -2
  1364. package/ReactCommon/react/renderer/imagemanager/BUCK +5 -4
  1365. package/ReactCommon/react/renderer/imagemanager/ImageRequest.h +1 -3
  1366. package/ReactCommon/react/renderer/imagemanager/ImageResponseObserverCoordinator.cpp +5 -4
  1367. package/ReactCommon/react/renderer/imagemanager/ImageTelemetry.cpp +0 -6
  1368. package/ReactCommon/react/renderer/imagemanager/ImageTelemetry.h +5 -10
  1369. package/ReactCommon/react/renderer/imagemanager/platform/ios/ImageRequest.cpp +6 -1
  1370. package/ReactCommon/react/renderer/imagemanager/platform/ios/RCTImageManager.mm +0 -1
  1371. package/ReactCommon/react/renderer/imagemanager/platform/ios/RCTImagePrimitivesConversions.h +8 -6
  1372. package/ReactCommon/react/renderer/imagemanager/platform/ios/RCTSyncImageManager.mm +1 -1
  1373. package/ReactCommon/react/renderer/leakchecker/Android.mk +29 -0
  1374. package/ReactCommon/react/renderer/{components/picker/iospicker → leakchecker}/BUCK +8 -12
  1375. package/ReactCommon/react/renderer/leakchecker/LeakChecker.cpp +60 -0
  1376. package/ReactCommon/react/renderer/leakchecker/LeakChecker.h +39 -0
  1377. package/ReactCommon/react/renderer/leakchecker/WeakFamilyRegistry.cpp +37 -0
  1378. package/ReactCommon/react/renderer/leakchecker/WeakFamilyRegistry.h +39 -0
  1379. package/ReactCommon/react/renderer/mapbuffer/Android.mk +9 -6
  1380. package/ReactCommon/react/renderer/mapbuffer/BUCK +16 -6
  1381. package/ReactCommon/react/renderer/mapbuffer/MapBuffer.cpp +133 -2
  1382. package/ReactCommon/react/renderer/mapbuffer/MapBuffer.h +41 -3
  1383. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +226 -0
  1384. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.h +94 -0
  1385. package/ReactCommon/react/renderer/mapbuffer/primitives.h +91 -0
  1386. package/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp +144 -2
  1387. package/ReactCommon/react/renderer/mounting/Android.mk +4 -2
  1388. package/ReactCommon/react/renderer/mounting/BUCK +6 -3
  1389. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +809 -998
  1390. package/ReactCommon/react/renderer/mounting/Differentiator.h +38 -12
  1391. package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +17 -15
  1392. package/ReactCommon/react/renderer/mounting/MountingCoordinator.h +7 -11
  1393. package/ReactCommon/react/renderer/mounting/MountingTransaction.h +2 -2
  1394. package/ReactCommon/react/renderer/mounting/MountingTransactionMetadata.h +1 -1
  1395. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +70 -27
  1396. package/ReactCommon/react/renderer/mounting/ShadowTree.h +38 -15
  1397. package/ReactCommon/react/renderer/mounting/ShadowTreeDelegate.h +11 -0
  1398. package/ReactCommon/react/renderer/mounting/ShadowTreeRegistry.cpp +3 -1
  1399. package/ReactCommon/react/renderer/mounting/ShadowTreeRevision.h +1 -1
  1400. package/ReactCommon/react/renderer/mounting/ShadowView.cpp +19 -1
  1401. package/ReactCommon/react/renderer/mounting/ShadowView.h +46 -2
  1402. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +19 -5
  1403. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +10 -4
  1404. package/ReactCommon/react/renderer/mounting/StubView.cpp +38 -4
  1405. package/ReactCommon/react/renderer/mounting/StubView.h +6 -0
  1406. package/ReactCommon/react/renderer/mounting/StubViewTree.cpp +219 -91
  1407. package/ReactCommon/react/renderer/mounting/StubViewTree.h +15 -3
  1408. package/ReactCommon/react/renderer/mounting/TelemetryController.cpp +1 -1
  1409. package/ReactCommon/react/renderer/mounting/TelemetryController.h +1 -1
  1410. package/ReactCommon/react/renderer/mounting/stubs.cpp +49 -11
  1411. package/ReactCommon/react/renderer/mounting/stubs.h +13 -1
  1412. package/ReactCommon/react/renderer/mounting/tests/MountingTest.cpp +99 -96
  1413. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +242 -40
  1414. package/ReactCommon/react/renderer/mounting/tests/StackingContextTest.cpp +787 -0
  1415. package/ReactCommon/react/renderer/mounting/tests/StateReconciliationTest.cpp +34 -23
  1416. package/ReactCommon/react/renderer/runtimescheduler/Android.mk +27 -0
  1417. package/ReactCommon/react/renderer/runtimescheduler/BUCK +77 -0
  1418. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +116 -0
  1419. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +103 -0
  1420. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +170 -0
  1421. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +42 -0
  1422. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerClock.h +22 -0
  1423. package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriority.h +64 -0
  1424. package/ReactCommon/react/renderer/runtimescheduler/Task.cpp +35 -0
  1425. package/ReactCommon/react/renderer/runtimescheduler/Task.h +46 -0
  1426. package/ReactCommon/react/renderer/runtimescheduler/primitives.h +39 -0
  1427. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +472 -0
  1428. package/ReactCommon/react/renderer/runtimescheduler/tests/SchedulerPriorityTest.cpp +46 -0
  1429. package/ReactCommon/react/renderer/runtimescheduler/tests/StubClock.h +41 -0
  1430. package/ReactCommon/react/renderer/runtimescheduler/tests/StubQueue.h +38 -0
  1431. package/ReactCommon/react/renderer/scheduler/Android.mk +4 -2
  1432. package/ReactCommon/react/renderer/scheduler/AsynchronousEventBeat.cpp +16 -13
  1433. package/ReactCommon/react/renderer/scheduler/AsynchronousEventBeat.h +4 -4
  1434. package/ReactCommon/react/renderer/scheduler/BUCK +5 -3
  1435. package/ReactCommon/react/renderer/{components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerShadowNode.cpp → scheduler/InspectorData.h} +10 -3
  1436. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +108 -148
  1437. package/ReactCommon/react/renderer/scheduler/Scheduler.h +37 -39
  1438. package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +16 -10
  1439. package/ReactCommon/react/renderer/scheduler/SchedulerToolbox.h +10 -0
  1440. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +317 -0
  1441. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +209 -0
  1442. package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +104 -0
  1443. package/ReactCommon/react/renderer/scheduler/SurfaceManager.h +67 -0
  1444. package/ReactCommon/react/renderer/scheduler/SynchronousEventBeat.cpp +14 -5
  1445. package/ReactCommon/react/renderer/scheduler/SynchronousEventBeat.h +4 -1
  1446. package/ReactCommon/react/renderer/telemetry/Android.mk +31 -0
  1447. package/ReactCommon/react/renderer/telemetry/BUCK +84 -0
  1448. package/ReactCommon/react/renderer/{mounting → telemetry}/SurfaceTelemetry.cpp +5 -0
  1449. package/ReactCommon/react/renderer/{mounting → telemetry}/SurfaceTelemetry.h +3 -1
  1450. package/ReactCommon/react/renderer/telemetry/TransactionTelemetry.cpp +163 -0
  1451. package/ReactCommon/react/renderer/{mounting → telemetry}/TransactionTelemetry.h +11 -0
  1452. package/ReactCommon/react/renderer/telemetry/tests/TransactionTelemetryTest.cpp +176 -0
  1453. package/ReactCommon/react/renderer/templateprocessor/Android.mk +1 -1
  1454. package/ReactCommon/react/renderer/templateprocessor/BUCK +3 -3
  1455. package/ReactCommon/react/renderer/templateprocessor/UITemplateProcessor.cpp +5 -5
  1456. package/ReactCommon/react/renderer/templateprocessor/tests/UITemplateProcessorTest.cpp +5 -5
  1457. package/ReactCommon/react/renderer/textlayoutmanager/Android.mk +5 -2
  1458. package/ReactCommon/react/renderer/textlayoutmanager/BUCK +5 -3
  1459. package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.cpp +12 -9
  1460. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +145 -83
  1461. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.h +17 -1
  1462. package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.cpp +16 -2
  1463. package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.h +10 -7
  1464. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.mm +16 -11
  1465. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTTextLayoutManager.mm +14 -11
  1466. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/TextLayoutManager.mm +25 -3
  1467. package/ReactCommon/react/renderer/{components/picker → timeline}/BUCK +20 -34
  1468. package/ReactCommon/react/renderer/timeline/Timeline.cpp +120 -0
  1469. package/ReactCommon/react/renderer/timeline/Timeline.h +63 -0
  1470. package/ReactCommon/react/renderer/timeline/TimelineController.cpp +77 -0
  1471. package/ReactCommon/react/renderer/timeline/TimelineController.h +80 -0
  1472. package/ReactCommon/react/renderer/timeline/TimelineFrame.cpp +25 -0
  1473. package/ReactCommon/react/renderer/timeline/TimelineFrame.h +46 -0
  1474. package/ReactCommon/react/renderer/timeline/TimelineHandler.cpp +97 -0
  1475. package/ReactCommon/react/renderer/timeline/TimelineHandler.h +80 -0
  1476. package/ReactCommon/react/renderer/timeline/TimelineSnapshot.cpp +30 -0
  1477. package/ReactCommon/react/renderer/timeline/TimelineSnapshot.h +36 -0
  1478. package/ReactCommon/react/renderer/uimanager/Android.mk +4 -2
  1479. package/ReactCommon/react/renderer/uimanager/BUCK +5 -3
  1480. package/ReactCommon/react/renderer/uimanager/LayoutAnimationStatusDelegate.h +2 -4
  1481. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +172 -81
  1482. package/ReactCommon/react/renderer/uimanager/UIManager.h +63 -29
  1483. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationDelegate.h +2 -4
  1484. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +298 -135
  1485. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +35 -6
  1486. package/ReactCommon/react/renderer/uimanager/UIManagerCommitHook.h +43 -0
  1487. package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +23 -13
  1488. package/ReactCommon/react/renderer/uimanager/primitives.h +57 -9
  1489. package/ReactCommon/react/test_utils/BUCK +54 -0
  1490. package/ReactCommon/react/{renderer/mounting/tests → test_utils}/Entropy.h +4 -0
  1491. package/ReactCommon/react/test_utils/MockClock.h +29 -0
  1492. package/ReactCommon/react/{renderer/mounting/tests → test_utils}/shadowTreeGeneration.h +64 -7
  1493. package/ReactCommon/react/utils/Android.mk +8 -3
  1494. package/ReactCommon/react/utils/BUCK +9 -2
  1495. package/ReactCommon/react/utils/CalledOnceMovableOnlyFunction.h +6 -4
  1496. package/ReactCommon/react/utils/ContextContainer.h +14 -7
  1497. package/ReactCommon/react/utils/LayoutManager.h +150 -0
  1498. package/ReactCommon/react/utils/ManagedObjectWrapper.h +3 -1
  1499. package/ReactCommon/react/utils/RunLoopObserver.cpp +5 -4
  1500. package/ReactCommon/reactperflogger/Android.mk +1 -1
  1501. package/ReactCommon/reactperflogger/BUCK +1 -1
  1502. package/ReactCommon/reactperflogger/React-perflogger.podspec +3 -3
  1503. package/ReactCommon/runtimeexecutor/Android.mk +1 -1
  1504. package/ReactCommon/runtimeexecutor/BUCK +2 -2
  1505. package/ReactCommon/runtimeexecutor/React-runtimeexecutor.podspec +3 -3
  1506. package/ReactCommon/runtimeexecutor/ReactCommon/RuntimeExecutor.h +14 -2
  1507. package/ReactCommon/yoga/Yoga.podspec +2 -2
  1508. package/ReactCommon/yoga/yoga/BitUtils.h +3 -2
  1509. package/ReactCommon/yoga/yoga/CompactValue.h +2 -2
  1510. package/ReactCommon/yoga/yoga/Utils.cpp +1 -1
  1511. package/ReactCommon/yoga/yoga/YGNode.cpp +111 -110
  1512. package/ReactCommon/yoga/yoga/YGNode.h +11 -0
  1513. package/ReactCommon/yoga/yoga/YGNodePrint.cpp +7 -4
  1514. package/ReactCommon/yoga/yoga/Yoga-internal.h +4 -5
  1515. package/ReactCommon/yoga/yoga/Yoga.cpp +116 -161
  1516. package/ReactCommon/yoga/yoga/Yoga.h +1 -1
  1517. package/android/com/facebook/react/react-native/{0.64.2-2/react-native-0.64.2-2.aar → 0.66.3-0/react-native-0.66.3-0.aar} +0 -0
  1518. package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.aar.md5 +1 -0
  1519. package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.aar.sha1 +1 -0
  1520. package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.aar.sha256 +1 -0
  1521. package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.aar.sha512 +1 -0
  1522. package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.module +273 -0
  1523. package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.module.md5 +1 -0
  1524. package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.module.sha1 +1 -0
  1525. package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.module.sha256 +1 -0
  1526. package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.module.sha512 +1 -0
  1527. package/android/com/facebook/react/react-native/{0.64.2-2/react-native-0.64.2-2.pom → 0.66.3-0/react-native-0.66.3-0.pom} +28 -11
  1528. package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.pom.md5 +1 -0
  1529. package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.pom.sha1 +1 -0
  1530. package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.pom.sha256 +1 -0
  1531. package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.pom.sha512 +1 -0
  1532. package/android/com/facebook/react/react-native/maven-metadata.xml +4 -3
  1533. package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
  1534. package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
  1535. package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -0
  1536. package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -0
  1537. package/flow/HermesInternalType.js +114 -0
  1538. package/flow/global.js +23 -0
  1539. package/flow-typed/npm/promise_v8.x.x.js +3 -3
  1540. package/flow-typed/npm/react-test-renderer_v16.x.x.js +79 -0
  1541. package/index.js +107 -50
  1542. package/interface.js +0 -8
  1543. package/jest/mockNativeComponent.js +36 -0
  1544. package/jest/preprocessor.js +3 -2
  1545. package/jest/renderer.js +3 -9
  1546. package/jest/setup.js +35 -39
  1547. package/local-cli/cli.js +0 -0
  1548. package/package.json +62 -22
  1549. package/react.gradle +32 -17
  1550. package/readme.diff +305 -0
  1551. package/scripts/find-node.sh +8 -6
  1552. package/scripts/generate-specs-cli.js +20 -13
  1553. package/scripts/generate-specs.sh +31 -23
  1554. package/scripts/ios-configure-glog.sh +1 -1
  1555. package/scripts/launchPackager.bat +12 -12
  1556. package/scripts/react-native-xcode.sh +12 -2
  1557. package/scripts/react_native_pods.rb +75 -126
  1558. package/template/_flowconfig +3 -4
  1559. package/template/_gitignore +1 -0
  1560. package/template/android/app/build.gradle +12 -7
  1561. package/template/android/app/src/main/res/values/styles.xml +0 -1
  1562. package/template/android/build.gradle +7 -7
  1563. package/template/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  1564. package/template/android/gradle.properties +1 -1
  1565. package/template/ios/HelloWorld/AppDelegate.m +5 -6
  1566. package/template/ios/Podfile +3 -4
  1567. package/template/package.json +4 -4
  1568. package/third-party-podspecs/DoubleConversion.podspec +3 -1
  1569. package/third-party-podspecs/RCT-Folly.podspec +30 -11
  1570. package/third-party-podspecs/boost.podspec +23 -0
  1571. package/third-party-podspecs/fmt.podspec +24 -0
  1572. package/third-party-podspecs/glog.podspec +1 -1
  1573. package/Libraries/.npmignore +0 -1
  1574. package/Libraries/BUCK +0 -36
  1575. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.android.js +0 -158
  1576. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js +0 -273
  1577. package/Libraries/Components/Picker/AndroidDialogPickerNativeComponent.js +0 -82
  1578. package/Libraries/Components/Picker/AndroidDialogPickerViewConfig.js +0 -30
  1579. package/Libraries/Components/Picker/AndroidDropdownPickerNativeComponent.js +0 -69
  1580. package/Libraries/Components/Picker/Picker.js +0 -165
  1581. package/Libraries/Components/Picker/PickerAndroid.android.js +0 -145
  1582. package/Libraries/Components/Picker/PickerIOS.ios.js +0 -164
  1583. package/Libraries/Components/Picker/RCTPickerNativeComponent.js +0 -72
  1584. package/Libraries/Components/Picker/RCTPickerViewConfig.js +0 -41
  1585. package/Libraries/Components/ScrollResponder.js +0 -796
  1586. package/Libraries/Components/StatusBar/StatusBarIOS.js +0 -21
  1587. package/Libraries/Image/ImageViewViewConfig.js +0 -68
  1588. package/Libraries/StyleSheet/StyleSheetValidation.js +0 -100
  1589. package/Libraries/Utilities/registerGeneratedViewConfig.js +0 -83
  1590. package/Libraries/promiseRejectionIsError.js +0 -24
  1591. package/React/Base/RCTJSInvokerModule.h +0 -18
  1592. package/React/Fabric/Mounting/ComponentViews/Picker/RCTPickerComponentView.h +0 -19
  1593. package/React/Fabric/Mounting/ComponentViews/Picker/RCTPickerComponentView.mm +0 -205
  1594. package/React/Views/RCTPicker.h +0 -23
  1595. package/React/Views/RCTPicker.m +0 -121
  1596. package/React/Views/RCTPickerManager.m +0 -68
  1597. package/ReactAndroid/.npmignore +0 -3
  1598. package/ReactAndroid/build.gradle.orig +0 -479
  1599. package/ReactAndroid/release.gradle +0 -142
  1600. package/ReactAndroid/src/androidTest/assets/AndroidTestBundle.js +0 -107023
  1601. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ReactPickerTestCase.java +0 -196
  1602. package/ReactAndroid/src/androidTest/js/PickerAndroidTestModule.js +0 -89
  1603. package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.java +0 -98
  1604. package/ReactAndroid/src/main/java/com/facebook/react/ReactFragmentActivity.java +0 -15
  1605. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +0 -82
  1606. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/BatchMountItem.java +0 -117
  1607. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/CreateMountItem.java +0 -68
  1608. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/InsertMountItem.java +0 -47
  1609. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/RemoveDeleteMultiMountItem.java +0 -90
  1610. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/UpdateEventEmitterMountItem.java +0 -33
  1611. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/UpdateLayoutMountItem.java +0 -90
  1612. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/UpdatePaddingMountItem.java +0 -53
  1613. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/UpdatePropsMountItem.java +0 -42
  1614. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/UpdateStateMountItem.java +0 -43
  1615. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/ActivityIndicatorViewManagerDelegate.java +0 -42
  1616. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/ActivityIndicatorViewManagerInterface.java +0 -20
  1617. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDialogPickerManagerDelegate.java +0 -48
  1618. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDialogPickerManagerInterface.java +0 -23
  1619. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDrawerLayoutManagerDelegate.java +0 -61
  1620. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDrawerLayoutManagerInterface.java +0 -24
  1621. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDropdownPickerManagerDelegate.java +0 -48
  1622. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDropdownPickerManagerInterface.java +0 -22
  1623. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidProgressBarManagerDelegate.java +0 -51
  1624. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidProgressBarManagerInterface.java +0 -23
  1625. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwipeRefreshLayoutManagerDelegate.java +0 -58
  1626. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwipeRefreshLayoutManagerInterface.java +0 -24
  1627. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwitchManagerDelegate.java +0 -67
  1628. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwitchManagerInterface.java +0 -26
  1629. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/MaskedViewManagerDelegate.java +0 -26
  1630. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/MaskedViewManagerInterface.java +0 -16
  1631. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/ModalHostViewManagerDelegate.java +0 -54
  1632. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/ModalHostViewManagerInterface.java +0 -25
  1633. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/ProgressViewManagerDelegate.java +0 -49
  1634. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/ProgressViewManagerInterface.java +0 -23
  1635. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SafeAreaViewManagerDelegate.java +0 -32
  1636. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SafeAreaViewManagerInterface.java +0 -16
  1637. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SegmentedControlManagerDelegate.java +0 -52
  1638. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SegmentedControlManagerInterface.java +0 -24
  1639. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SliderManagerDelegate.java +0 -73
  1640. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SliderManagerInterface.java +0 -31
  1641. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/UnimplementedNativeViewManagerDelegate.java +0 -32
  1642. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/UnimplementedNativeViewManagerInterface.java +0 -17
  1643. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni/Android.mk +0 -29
  1644. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni/react/renderer/components/rncore/Props.cpp +0 -191
  1645. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/BUCK +0 -29
  1646. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactDialogPickerManager.java +0 -51
  1647. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactDropdownPickerManager.java +0 -50
  1648. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactPicker.java +0 -196
  1649. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactPickerAdapter.java +0 -95
  1650. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactPickerItem.java +0 -43
  1651. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactPickerManager.java +0 -97
  1652. package/ReactAndroid/src/main/java/com/facebook/react/views/picker/events/PickerItemSelectEvent.java +0 -40
  1653. package/ReactAndroid/src/main/jni/first-party/fbjni/.gitignore +0 -2
  1654. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libc++_shared.so +0 -0
  1655. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libfb.so +0 -0
  1656. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libfbjni.so +0 -0
  1657. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libfolly_futures.so +0 -0
  1658. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libfolly_json.so +0 -0
  1659. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libglog.so +0 -0
  1660. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libglog_init.so +0 -0
  1661. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libhermes-executor-common-debug.so +0 -0
  1662. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libhermes-executor-common-release.so +0 -0
  1663. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libhermes-executor-debug.so +0 -0
  1664. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libhermes-executor-release.so +0 -0
  1665. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libhermes-inspector.so +0 -0
  1666. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libjscexecutor.so +0 -0
  1667. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libjsijniprofiler.so +0 -0
  1668. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libjsinspector.so +0 -0
  1669. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libreact_codegen_reactandroidspec.so +0 -0
  1670. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libreact_nativemodule_core.so +0 -0
  1671. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libreactnativeblob.so +0 -0
  1672. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libreactnativejni.so +0 -0
  1673. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libreactnativeutilsjni.so +0 -0
  1674. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libreactperfloggerjni.so +0 -0
  1675. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libturbomodulejsijni.so +0 -0
  1676. package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libyoga.so +0 -0
  1677. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libc++_shared.so +0 -0
  1678. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libfb.so +0 -0
  1679. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libfbjni.so +0 -0
  1680. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libfolly_futures.so +0 -0
  1681. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libfolly_json.so +0 -0
  1682. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libglog.so +0 -0
  1683. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libglog_init.so +0 -0
  1684. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libhermes-executor-common-debug.so +0 -0
  1685. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libhermes-executor-common-release.so +0 -0
  1686. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libhermes-executor-debug.so +0 -0
  1687. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libhermes-executor-release.so +0 -0
  1688. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libhermes-inspector.so +0 -0
  1689. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libjscexecutor.so +0 -0
  1690. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libjsijniprofiler.so +0 -0
  1691. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libjsinspector.so +0 -0
  1692. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libreact_codegen_reactandroidspec.so +0 -0
  1693. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libreact_nativemodule_core.so +0 -0
  1694. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libreactnativeblob.so +0 -0
  1695. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libreactnativejni.so +0 -0
  1696. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libreactnativeutilsjni.so +0 -0
  1697. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libreactperfloggerjni.so +0 -0
  1698. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libturbomodulejsijni.so +0 -0
  1699. package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libyoga.so +0 -0
  1700. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libc++_shared.so +0 -0
  1701. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libfb.so +0 -0
  1702. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libfbjni.so +0 -0
  1703. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libfolly_futures.so +0 -0
  1704. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libfolly_json.so +0 -0
  1705. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libglog.so +0 -0
  1706. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libglog_init.so +0 -0
  1707. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libhermes-executor-common-debug.so +0 -0
  1708. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libhermes-executor-common-release.so +0 -0
  1709. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libhermes-executor-debug.so +0 -0
  1710. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libhermes-executor-release.so +0 -0
  1711. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libhermes-inspector.so +0 -0
  1712. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libjscexecutor.so +0 -0
  1713. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libjsijniprofiler.so +0 -0
  1714. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libjsinspector.so +0 -0
  1715. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libreact_codegen_reactandroidspec.so +0 -0
  1716. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libreact_nativemodule_core.so +0 -0
  1717. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libreactnativeblob.so +0 -0
  1718. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libreactnativejni.so +0 -0
  1719. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libreactnativeutilsjni.so +0 -0
  1720. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libreactperfloggerjni.so +0 -0
  1721. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libturbomodulejsijni.so +0 -0
  1722. package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libyoga.so +0 -0
  1723. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libc++_shared.so +0 -0
  1724. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libfb.so +0 -0
  1725. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libfbjni.so +0 -0
  1726. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libfolly_futures.so +0 -0
  1727. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libfolly_json.so +0 -0
  1728. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libglog.so +0 -0
  1729. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libglog_init.so +0 -0
  1730. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libhermes-executor-common-debug.so +0 -0
  1731. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libhermes-executor-common-release.so +0 -0
  1732. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libhermes-executor-debug.so +0 -0
  1733. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libhermes-executor-release.so +0 -0
  1734. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libhermes-inspector.so +0 -0
  1735. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libjscexecutor.so +0 -0
  1736. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libjsijniprofiler.so +0 -0
  1737. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libjsinspector.so +0 -0
  1738. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libreact_codegen_reactandroidspec.so +0 -0
  1739. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libreact_nativemodule_core.so +0 -0
  1740. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libreactnativeblob.so +0 -0
  1741. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libreactnativejni.so +0 -0
  1742. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libreactnativeutilsjni.so +0 -0
  1743. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libreactperfloggerjni.so +0 -0
  1744. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libturbomodulejsijni.so +0 -0
  1745. package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libyoga.so +0 -0
  1746. package/ReactAndroid/src/main/third-party/android/support/v4/BUCK +0 -685
  1747. package/ReactAndroid/src/main/third-party/android/support/v7/appcompat/BUCK +0 -62
  1748. package/ReactAndroid/src/main/third-party/android/support/v7/appcompat/aar-unpacker.py +0 -20
  1749. package/ReactCommon/cxxreact/re_worker_requirements +0 -6
  1750. package/ReactCommon/hermes/inspector/tools/msggen/.gitignore +0 -3
  1751. package/ReactCommon/react/renderer/components/picker/Android.mk +0 -37
  1752. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerEventEmitter.cpp +0 -23
  1753. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerEventEmitter.h +0 -27
  1754. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerProps.cpp +0 -28
  1755. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerProps.h +0 -77
  1756. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerShadowNode.h +0 -29
  1757. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerComponentDescriptor.h +0 -21
  1758. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerEventEmitter.cpp +0 -23
  1759. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerEventEmitter.h +0 -27
  1760. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerProps.cpp +0 -28
  1761. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerProps.h +0 -77
  1762. package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerShadowNode.h +0 -29
  1763. package/ReactCommon/react/renderer/components/picker/iospicker/PickerComponentDescriptor.h +0 -26
  1764. package/ReactCommon/react/renderer/components/picker/iospicker/PickerEventEmitter.cpp +0 -23
  1765. package/ReactCommon/react/renderer/components/picker/iospicker/PickerEventEmitter.h +0 -28
  1766. package/ReactCommon/react/renderer/components/picker/iospicker/PickerProps.cpp +0 -46
  1767. package/ReactCommon/react/renderer/components/picker/iospicker/PickerProps.h +0 -36
  1768. package/ReactCommon/react/renderer/components/picker/iospicker/PickerShadowNode.cpp +0 -16
  1769. package/ReactCommon/react/renderer/components/picker/iospicker/PickerShadowNode.h +0 -33
  1770. package/ReactCommon/react/renderer/components/picker/iospicker/conversions.h +0 -47
  1771. package/ReactCommon/react/renderer/components/picker/iospicker/primitives.h +0 -29
  1772. package/ReactCommon/react/renderer/core/ConcreteStateTeller.h +0 -152
  1773. package/ReactCommon/react/renderer/mounting/TransactionTelemetry.cpp +0 -142
  1774. package/ReactCommon/react/renderer/mounting/tests/TransactionTelemetryTest.cpp +0 -125
  1775. package/android/com/facebook/react/react-native/0.64.2-2/react-native-0.64.2-2-sources.jar +0 -0
  1776. package/android/com/facebook/react/react-native/0.64.2-2/react-native-0.64.2-2-sources.jar.md5 +0 -1
  1777. package/android/com/facebook/react/react-native/0.64.2-2/react-native-0.64.2-2-sources.jar.sha1 +0 -1
  1778. package/android/com/facebook/react/react-native/0.64.2-2/react-native-0.64.2-2.aar.md5 +0 -1
  1779. package/android/com/facebook/react/react-native/0.64.2-2/react-native-0.64.2-2.aar.sha1 +0 -1
  1780. package/android/com/facebook/react/react-native/0.64.2-2/react-native-0.64.2-2.pom.md5 +0 -1
  1781. package/android/com/facebook/react/react-native/0.64.2-2/react-native-0.64.2-2.pom.sha1 +0 -1
  1782. package/template/ios/HelloWorld.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  1783. package/template/ios/HelloWorld.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
@@ -9,22 +9,35 @@
9
9
 
10
10
  #include <better/map.h>
11
11
  #include <better/small_vector.h>
12
+ #include <react/debug/react_native_assert.h>
12
13
  #include <react/renderer/core/LayoutableShadowNode.h>
13
14
  #include <react/renderer/debug/SystraceSection.h>
14
15
  #include <algorithm>
15
16
  #include "ShadowView.h"
16
17
 
17
- // Uncomment this to enable verbose diffing logs, which can be useful for
18
- // debugging.
19
- // #define DEBUG_LOGS_DIFFER
20
-
21
18
  #ifdef DEBUG_LOGS_DIFFER
22
19
  #include <glog/logging.h>
20
+ #define DEBUG_LOGS_BREADCRUMBS 1
23
21
  #define DEBUG_LOGS(code) code
24
22
  #else
25
23
  #define DEBUG_LOGS(code)
26
24
  #endif
27
25
 
26
+ #ifdef DEBUG_LOGS_BREADCRUMBS
27
+ #define BREADCRUMB_TYPE std::string
28
+ #define DIFF_BREADCRUMB(X) (breadcrumb + " - " + std::string(X))
29
+ #define CREATE_DIFF_BREADCRUMB(X) std::to_string(X)
30
+ #else
31
+
32
+ enum class NoBreadcrumb {};
33
+
34
+ #define BREADCRUMB_TYPE NoBreadcrumb const &
35
+ #define DIFF_BREADCRUMB(X) \
36
+ {}
37
+ #define CREATE_DIFF_BREADCRUMB(X) \
38
+ {}
39
+ #endif
40
+
28
41
  namespace facebook {
29
42
  namespace react {
30
43
 
@@ -86,7 +99,7 @@ class TinyMap final {
86
99
  inline Iterator find(KeyT key) {
87
100
  cleanVector();
88
101
 
89
- assert(key != 0);
102
+ react_native_assert(key != 0);
90
103
 
91
104
  if (begin_() == nullptr) {
92
105
  return end();
@@ -102,7 +115,7 @@ class TinyMap final {
102
115
  }
103
116
 
104
117
  inline void insert(Pair pair) {
105
- assert(pair.first != 0);
118
+ react_native_assert(pair.first != 0);
106
119
  vector_.push_back(pair);
107
120
  }
108
121
 
@@ -156,30 +169,31 @@ class TinyMap final {
156
169
  }
157
170
 
158
171
  better::small_vector<Pair, DefaultSize> vector_;
159
- int numErased_{0};
160
- int erasedAtFront_{0};
172
+ size_t numErased_{0};
173
+ size_t erasedAtFront_{0};
161
174
  };
162
175
 
163
176
  /*
164
177
  * Sorting comparator for `reorderInPlaceIfNeeded`.
165
178
  */
166
179
  static bool shouldFirstPairComesBeforeSecondOne(
167
- ShadowViewNodePair const &lhs,
168
- ShadowViewNodePair const &rhs) noexcept {
169
- return lhs.shadowNode->getOrderIndex() < rhs.shadowNode->getOrderIndex();
180
+ ShadowViewNodePair const *lhs,
181
+ ShadowViewNodePair const *rhs) noexcept {
182
+ return lhs->shadowNode->getOrderIndex() < rhs->shadowNode->getOrderIndex();
170
183
  }
171
184
 
172
185
  /*
173
186
  * Reorders pairs in-place based on `orderIndex` using a stable sort algorithm.
174
187
  */
175
- static void reorderInPlaceIfNeeded(ShadowViewNodePair::List &pairs) noexcept {
188
+ static void reorderInPlaceIfNeeded(
189
+ ShadowViewNodePair::NonOwningList &pairs) noexcept {
176
190
  if (pairs.size() < 2) {
177
191
  return;
178
192
  }
179
193
 
180
194
  auto isReorderNeeded = false;
181
195
  for (auto const &pair : pairs) {
182
- if (pair.shadowNode->getOrderIndex() != 0) {
196
+ if (pair->shadowNode->getOrderIndex() != 0) {
183
197
  isReorderNeeded = true;
184
198
  break;
185
199
  }
@@ -193,8 +207,13 @@ static void reorderInPlaceIfNeeded(ShadowViewNodePair::List &pairs) noexcept {
193
207
  pairs.begin(), pairs.end(), &shouldFirstPairComesBeforeSecondOne);
194
208
  }
195
209
 
210
+ static inline bool shadowNodeIsConcrete(ShadowNode const &shadowNode) {
211
+ return shadowNode.getTraits().check(ShadowNodeTraits::Trait::FormsView);
212
+ }
213
+
196
214
  static void sliceChildShadowNodeViewPairsRecursivelyV2(
197
- ShadowViewNodePair::List &pairList,
215
+ ShadowViewNodePair::NonOwningList &pairList,
216
+ ViewNodePairScope &scope,
198
217
  Point layoutOffset,
199
218
  ShadowNode const &shadowNode) {
200
219
  for (auto const &sharedChildShadowNode : shadowNode.getChildren()) {
@@ -218,25 +237,34 @@ static void sliceChildShadowNodeViewPairsRecursivelyV2(
218
237
  // This might not be a FormsView, or a FormsStackingContext. We let the
219
238
  // differ handle removal of flattened views from the Mounting layer and
220
239
  // shuffling their children around.
221
- bool isConcreteView =
222
- childShadowNode.getTraits().check(ShadowNodeTraits::Trait::FormsView);
240
+ bool isConcreteView = shadowNodeIsConcrete(childShadowNode);
223
241
  bool areChildrenFlattened = !childShadowNode.getTraits().check(
224
242
  ShadowNodeTraits::Trait::FormsStackingContext);
225
- pairList.push_back(
226
- {shadowView, &childShadowNode, areChildrenFlattened, isConcreteView});
227
-
228
- if (!childShadowNode.getTraits().check(
229
- ShadowNodeTraits::Trait::FormsStackingContext)) {
243
+ Point storedOrigin = {};
244
+ if (areChildrenFlattened) {
245
+ storedOrigin = origin;
246
+ }
247
+ scope.push_back(
248
+ {shadowView,
249
+ &childShadowNode,
250
+ areChildrenFlattened,
251
+ isConcreteView,
252
+ storedOrigin});
253
+ pairList.push_back(&scope.back());
254
+
255
+ if (areChildrenFlattened) {
230
256
  sliceChildShadowNodeViewPairsRecursivelyV2(
231
- pairList, origin, childShadowNode);
257
+ pairList, scope, origin, childShadowNode);
232
258
  }
233
259
  }
234
260
  }
235
261
 
236
- ShadowViewNodePair::List sliceChildShadowNodeViewPairsV2(
262
+ ShadowViewNodePair::NonOwningList sliceChildShadowNodeViewPairsV2(
237
263
  ShadowNode const &shadowNode,
238
- bool allowFlattened) {
239
- auto pairList = ShadowViewNodePair::List{};
264
+ ViewNodePairScope &scope,
265
+ bool allowFlattened,
266
+ Point layoutOffset) {
267
+ auto pairList = ShadowViewNodePair::NonOwningList{};
240
268
 
241
269
  if (!shadowNode.getTraits().check(
242
270
  ShadowNodeTraits::Trait::FormsStackingContext) &&
@@ -245,23 +273,41 @@ ShadowViewNodePair::List sliceChildShadowNodeViewPairsV2(
245
273
  return pairList;
246
274
  }
247
275
 
248
- sliceChildShadowNodeViewPairsRecursivelyV2(pairList, {0, 0}, shadowNode);
276
+ sliceChildShadowNodeViewPairsRecursivelyV2(
277
+ pairList, scope, layoutOffset, shadowNode);
249
278
 
250
279
  // Sorting pairs based on `orderIndex` if needed.
251
280
  reorderInPlaceIfNeeded(pairList);
252
281
 
253
282
  // Set list and mountIndex for each after reordering
254
283
  size_t mountIndex = 0;
255
- for (auto &child : pairList) {
256
- child.mountIndex = (child.isConcreteView ? mountIndex++ : -1);
284
+ for (auto child : pairList) {
285
+ child->mountIndex = (child->isConcreteView ? mountIndex++ : -1);
257
286
  }
258
287
 
259
288
  return pairList;
260
289
  }
261
290
 
291
+ /**
292
+ * Prefer calling this over `sliceChildShadowNodeViewPairsV2` directly, when
293
+ * possible. This can account for adding parent LayoutMetrics that are
294
+ * important to take into account, but tricky, in (un)flattening cases.
295
+ */
296
+ static ShadowViewNodePair::NonOwningList
297
+ sliceChildShadowNodeViewPairsFromViewNodePair(
298
+ ShadowViewNodePair const &shadowViewNodePair,
299
+ ViewNodePairScope &scope,
300
+ bool allowFlattened = false) {
301
+ return sliceChildShadowNodeViewPairsV2(
302
+ *shadowViewNodePair.shadowNode,
303
+ scope,
304
+ allowFlattened,
305
+ shadowViewNodePair.contextOrigin);
306
+ }
307
+
262
308
  /*
263
- * Before we start to diff, let's make sure all our core data structures are in
264
- * good shape to deliver the best performance.
309
+ * Before we start to diff, let's make sure all our core data structures are
310
+ * in good shape to deliver the best performance.
265
311
  */
266
312
  static_assert(
267
313
  std::is_move_constructible<ShadowViewMutation>::value,
@@ -273,8 +319,8 @@ static_assert(
273
319
  std::is_move_constructible<ShadowViewNodePair>::value,
274
320
  "`ShadowViewNodePair` must be `move constructible`.");
275
321
  static_assert(
276
- std::is_move_constructible<ShadowViewNodePair::List>::value,
277
- "`ShadowViewNodePair::List` must be `move constructible`.");
322
+ std::is_move_constructible<ShadowViewNodePair::NonOwningList>::value,
323
+ "`ShadowViewNodePair::NonOwningList` must be `move constructible`.");
278
324
 
279
325
  static_assert(
280
326
  std::is_move_assignable<ShadowViewMutation>::value,
@@ -286,29 +332,52 @@ static_assert(
286
332
  std::is_move_assignable<ShadowViewNodePair>::value,
287
333
  "`ShadowViewNodePair` must be `move assignable`.");
288
334
  static_assert(
289
- std::is_move_assignable<ShadowViewNodePair::List>::value,
290
- "`ShadowViewNodePair::List` must be `move assignable`.");
335
+ std::is_move_assignable<ShadowViewNodePair::NonOwningList>::value,
336
+ "`ShadowViewNodePair::NonOwningList` must be `move assignable`.");
291
337
 
292
- // Forward declaration
293
338
  static void calculateShadowViewMutationsV2(
339
+ BREADCRUMB_TYPE breadcrumb,
340
+ ViewNodePairScope &scope,
294
341
  ShadowViewMutation::List &mutations,
295
342
  ShadowView const &parentShadowView,
296
- ShadowViewNodePair::List &&oldChildPairs,
297
- ShadowViewNodePair::List &&newChildPairs);
343
+ ShadowViewNodePair::NonOwningList &&oldChildPairs,
344
+ ShadowViewNodePair::NonOwningList &&newChildPairs);
298
345
 
299
346
  struct OrderedMutationInstructionContainer {
300
- ShadowViewMutation::List &createMutations;
301
- ShadowViewMutation::List &deleteMutations;
302
- ShadowViewMutation::List &insertMutations;
303
- ShadowViewMutation::List &removeMutations;
304
- ShadowViewMutation::List &updateMutations;
305
- ShadowViewMutation::List &downwardMutations;
306
- 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{};
307
354
  };
308
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
+
309
376
  static void calculateShadowViewMutationsFlattener(
377
+ BREADCRUMB_TYPE breadcrumb,
378
+ ViewNodePairScope &scope,
310
379
  ReparentMode reparentMode,
311
- OrderedMutationInstructionContainer &mutationInstructionContainer,
380
+ OrderedMutationInstructionContainer &mutationContainer,
312
381
  ShadowView const &parentShadowView,
313
382
  TinyMap<Tag, ShadowViewNodePair *> &unvisitedFlattenedNodes,
314
383
  ShadowViewNodePair const &node,
@@ -316,15 +385,210 @@ static void calculateShadowViewMutationsFlattener(
316
385
  TinyMap<Tag, ShadowViewNodePair *> *parentSubVisitedOtherOldNodes =
317
386
  nullptr);
318
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
+
319
581
  /**
320
582
  * Here we flatten or unflatten a subtree, given an unflattened node in either
321
583
  * the old or new tree, and a list of flattened nodes in the other tree.
322
584
  *
323
- * For example: if you are Flattening, the node will be in the old tree and the
585
+ * For example: if you are Flattening, the node will be in the old tree and
586
+ the
324
587
  * list will be from the new tree. If you are Unflattening, the opposite is
325
588
  true.
326
589
 
327
- * It is currently not possible for ReactJS, and therefore React Native, to move
590
+ * It is currently not possible for ReactJS, and therefore React Native, to
591
+ move
328
592
  * a node *from* one parent to another without an entirely new subtree being
329
593
  * created. When we "reparent" in React Native here it is only because
330
594
  intermediate
@@ -335,7 +599,8 @@ static void calculateShadowViewMutationsFlattener(
335
599
  * expanding vertically in that way.
336
600
 
337
601
  * Sketch of algorithm:
338
- * 0. Create a map of nodes in the flattened list. This should be done *before*
602
+ * 0. Create a map of nodes in the flattened list. This should be done
603
+ *before*
339
604
  * calling this function.
340
605
  * 1. Traverse the Node Subtree; remove elements from the map as they are
341
606
  * visited in the tree.
@@ -346,13 +611,16 @@ static void calculateShadowViewMutationsFlattener(
346
611
  * View if we're flattening.
347
612
  * If a node is in the list but not the map, it means it's been visited and
348
613
  * Update has already been
349
- * performed in the subtree. If it *is* in the map, it means the node is not
614
+ * performed in the subtree. If it *is* in the map, it means the node is
615
+ not
350
616
  * * in the Tree, and should be Deleted/Created
351
617
  * **after this function is called**, by the caller.
352
618
  */
353
619
  static void calculateShadowViewMutationsFlattener(
620
+ BREADCRUMB_TYPE breadcrumb,
621
+ ViewNodePairScope &scope,
354
622
  ReparentMode reparentMode,
355
- OrderedMutationInstructionContainer &mutationInstructionContainer,
623
+ OrderedMutationInstructionContainer &mutationContainer,
356
624
  ShadowView const &parentShadowView,
357
625
  TinyMap<Tag, ShadowViewNodePair *> &unvisitedOtherNodes,
358
626
  ShadowViewNodePair const &node,
@@ -366,8 +634,8 @@ static void calculateShadowViewMutationsFlattener(
366
634
  });
367
635
 
368
636
  // Step 1: iterate through entire tree
369
- ShadowViewNodePair::List treeChildren =
370
- sliceChildShadowNodeViewPairsV2(*node.shadowNode);
637
+ ShadowViewNodePair::NonOwningList treeChildren =
638
+ sliceChildShadowNodeViewPairsFromViewNodePair(node, scope);
371
639
 
372
640
  DEBUG_LOGS({
373
641
  LOG(ERROR) << "Differ Flattener 1.4: "
@@ -377,9 +645,9 @@ static void calculateShadowViewMutationsFlattener(
377
645
  LOG(ERROR) << "Differ Flattener Entry: Child Pairs: ";
378
646
  std::string strTreeChildPairs;
379
647
  for (size_t k = 0; k < treeChildren.size(); k++) {
380
- strTreeChildPairs.append(std::to_string(treeChildren[k].shadowView.tag));
381
- strTreeChildPairs.append(treeChildren[k].isConcreteView ? "" : "'");
382
- strTreeChildPairs.append(treeChildren[k].flattened ? "*" : "");
648
+ strTreeChildPairs.append(std::to_string(treeChildren[k]->shadowView.tag));
649
+ strTreeChildPairs.append(treeChildren[k]->isConcreteView ? "" : "'");
650
+ strTreeChildPairs.append(treeChildren[k]->flattened ? "*" : "");
383
651
  strTreeChildPairs.append(", ");
384
652
  }
385
653
  std::string strListChildPairs;
@@ -396,7 +664,8 @@ static void calculateShadowViewMutationsFlattener(
396
664
  << strListChildPairs;
397
665
  });
398
666
 
399
- // Views in other tree that are visited by sub-flattening or sub-unflattening
667
+ // Views in other tree that are visited by sub-flattening or
668
+ // sub-unflattening
400
669
  TinyMap<Tag, ShadowViewNodePair *> subVisitedOtherNewNodes{};
401
670
  TinyMap<Tag, ShadowViewNodePair *> subVisitedOtherOldNodes{};
402
671
  auto subVisitedNewMap =
@@ -413,28 +682,7 @@ static void calculateShadowViewMutationsFlattener(
413
682
  for (size_t index = 0;
414
683
  index < treeChildren.size() && index < treeChildren.size();
415
684
  index++) {
416
- // First, remove all children of the tree being flattened, or insert
417
- // children into parent tree if they're being unflattened. Then, look up
418
- // each node in the "unvisited" list and update the nodes and subtrees if
419
- // appropriate.
420
- auto &treeChildPair = treeChildren[index];
421
-
422
- // Caller will take care of the corresponding action in the other tree.
423
- if (treeChildPair.isConcreteView) {
424
- if (reparentMode == ReparentMode::Flatten) {
425
- mutationInstructionContainer.removeMutations.push_back(
426
- ShadowViewMutation::RemoveMutation(
427
- node.shadowView,
428
- treeChildPair.shadowView,
429
- treeChildPair.mountIndex));
430
- } else {
431
- mutationInstructionContainer.insertMutations.push_back(
432
- ShadowViewMutation::InsertMutation(
433
- node.shadowView,
434
- treeChildPair.shadowView,
435
- treeChildPair.mountIndex));
436
- }
437
- }
685
+ auto &treeChildPair = *treeChildren[index];
438
686
 
439
687
  // Try to find node in other tree
440
688
  auto unvisitedIt = unvisitedOtherNodes.find(treeChildPair.shadowView.tag);
@@ -443,14 +691,129 @@ static void calculateShadowViewMutationsFlattener(
443
691
  ? subVisitedNewMap->find(treeChildPair.shadowView.tag)
444
692
  : subVisitedNewMap->end());
445
693
  auto subVisitedOtherOldIt =
446
- (unvisitedIt == unvisitedOtherNodes.end()
694
+ (unvisitedIt == unvisitedOtherNodes.end() && subVisitedNewMap->end()
447
695
  ? subVisitedOldMap->find(treeChildPair.shadowView.tag)
448
696
  : subVisitedOldMap->end());
449
697
 
450
- // Find in other tree
451
- if (unvisitedIt != unvisitedOtherNodes.end() ||
698
+ bool existsInOtherTree = unvisitedIt != unvisitedOtherNodes.end() ||
452
699
  subVisitedOtherNewIt != subVisitedNewMap->end() ||
453
- subVisitedOtherOldIt != subVisitedOldMap->end()) {
700
+ subVisitedOtherOldIt != subVisitedOldMap->end();
701
+
702
+ auto otherTreeNodePairPtr =
703
+ (existsInOtherTree
704
+ ? (unvisitedIt != unvisitedOtherNodes.end()
705
+ ? unvisitedIt->second
706
+ : (subVisitedOtherNewIt != subVisitedNewMap->end()
707
+ ? subVisitedOtherNewIt->second
708
+ : subVisitedOtherOldIt->second))
709
+ : nullptr);
710
+
711
+ react_native_assert(
712
+ !existsInOtherTree ||
713
+ (unvisitedIt != unvisitedOtherNodes.end() ||
714
+ subVisitedOtherNewIt != subVisitedNewMap->end() ||
715
+ subVisitedOtherOldIt != subVisitedOldMap->end()));
716
+ react_native_assert(
717
+ unvisitedIt == unvisitedOtherNodes.end() ||
718
+ unvisitedIt->second->shadowView.tag == treeChildPair.shadowView.tag);
719
+ react_native_assert(
720
+ subVisitedOtherNewIt == subVisitedNewMap->end() ||
721
+ subVisitedOtherNewIt->second->shadowView.tag ==
722
+ treeChildPair.shadowView.tag);
723
+ react_native_assert(
724
+ subVisitedOtherOldIt == subVisitedOldMap->end() ||
725
+ subVisitedOtherOldIt->second->shadowView.tag ==
726
+ treeChildPair.shadowView.tag);
727
+
728
+ bool alreadyUpdated = false;
729
+
730
+ // Find in other tree and updated `otherTreePair` pointers
731
+ if (existsInOtherTree) {
732
+ react_native_assert(otherTreeNodePairPtr != nullptr);
733
+ auto newTreeNodePair =
734
+ (reparentMode == ReparentMode::Flatten ? otherTreeNodePairPtr
735
+ : &treeChildPair);
736
+ auto oldTreeNodePair =
737
+ (reparentMode == ReparentMode::Flatten ? &treeChildPair
738
+ : otherTreeNodePairPtr);
739
+
740
+ react_native_assert(newTreeNodePair->shadowView.tag != 0);
741
+ react_native_assert(oldTreeNodePair->shadowView.tag != 0);
742
+ react_native_assert(
743
+ oldTreeNodePair->shadowView.tag == newTreeNodePair->shadowView.tag);
744
+
745
+ alreadyUpdated =
746
+ newTreeNodePair->inOtherTree() || oldTreeNodePair->inOtherTree();
747
+
748
+ // We want to update these values unconditionally. Always do this
749
+ // before hitting any "continue" statements.
750
+ newTreeNodePair->otherTreePair = oldTreeNodePair;
751
+ oldTreeNodePair->otherTreePair = newTreeNodePair;
752
+ react_native_assert(treeChildPair.otherTreePair != nullptr);
753
+ }
754
+
755
+ // Remove all children (non-recursively) of tree being flattened, or
756
+ // insert children into parent tree if they're being unflattened.
757
+ // Caller will take care of the corresponding action in the other tree
758
+ // (caller will handle DELETE case if we REMOVE here; caller will handle
759
+ // CREATE case if we INSERT here).
760
+ if (treeChildPair.isConcreteView) {
761
+ if (reparentMode == ReparentMode::Flatten) {
762
+ // treeChildPair.shadowView represents the "old" view in this case.
763
+ // If there's a "new" view, an UPDATE new -> old will be generated
764
+ // and will be executed before the REMOVE. Thus, we must actually
765
+ // perform a REMOVE (new view) FROM (old index) in this case so that
766
+ // we don't hit asserts in StubViewTree's REMOVE path.
767
+ // We also only do this if the "other" (newer) view is concrete. If
768
+ // it's not concrete, there will be no UPDATE mutation.
769
+ react_native_assert(existsInOtherTree == treeChildPair.inOtherTree());
770
+ if (treeChildPair.inOtherTree() &&
771
+ treeChildPair.otherTreePair->isConcreteView) {
772
+ mutationContainer.removeMutations.push_back(
773
+ ShadowViewMutation::RemoveMutation(
774
+ node.shadowView,
775
+ treeChildPair.otherTreePair->shadowView,
776
+ static_cast<int>(treeChildPair.mountIndex)));
777
+ } else {
778
+ mutationContainer.removeMutations.push_back(
779
+ ShadowViewMutation::RemoveMutation(
780
+ node.shadowView,
781
+ treeChildPair.shadowView,
782
+ static_cast<int>(treeChildPair.mountIndex)));
783
+ }
784
+ } else {
785
+ // treeChildParent represents the "new" version of the node, so
786
+ // we can safely insert it without checking in the other tree
787
+ mutationContainer.insertMutations.push_back(
788
+ ShadowViewMutation::InsertMutation(
789
+ node.shadowView,
790
+ treeChildPair.shadowView,
791
+ static_cast<int>(treeChildPair.mountIndex)));
792
+ }
793
+ }
794
+
795
+ // Find in other tree
796
+ if (existsInOtherTree) {
797
+ react_native_assert(otherTreeNodePairPtr != nullptr);
798
+ auto &otherTreeNodePair = *otherTreeNodePairPtr;
799
+
800
+ auto &newTreeNodePair =
801
+ (reparentMode == ReparentMode::Flatten ? otherTreeNodePair
802
+ : treeChildPair);
803
+ auto &oldTreeNodePair =
804
+ (reparentMode == ReparentMode::Flatten ? treeChildPair
805
+ : otherTreeNodePair);
806
+
807
+ react_native_assert(newTreeNodePair.shadowView.tag != 0);
808
+ react_native_assert(oldTreeNodePair.shadowView.tag != 0);
809
+ react_native_assert(
810
+ oldTreeNodePair.shadowView.tag == newTreeNodePair.shadowView.tag);
811
+
812
+ // If we've already done updates, don't repeat it.
813
+ if (alreadyUpdated) {
814
+ continue;
815
+ }
816
+
454
817
  // If we've already done updates on this node, don't repeat.
455
818
  if (reparentMode == ReparentMode::Flatten &&
456
819
  unvisitedIt == unvisitedOtherNodes.end() &&
@@ -463,47 +826,36 @@ static void calculateShadowViewMutationsFlattener(
463
826
  continue;
464
827
  }
465
828
 
466
- auto &otherTreeNodePair =
467
- *(unvisitedIt != unvisitedOtherNodes.end()
468
- ? unvisitedIt->second
469
- : (subVisitedOtherNewIt != subVisitedNewMap->end()
470
- ? subVisitedOtherNewIt->second
471
- : subVisitedOtherOldIt->second));
472
-
473
- // If we've already done updates, don't repeat it.
474
- if (treeChildPair.inOtherTree || otherTreeNodePair.inOtherTree) {
475
- continue;
476
- }
477
-
478
- auto &newTreeNodePair =
479
- (reparentMode == ReparentMode::Flatten ? otherTreeNodePair
480
- : treeChildPair);
481
- auto &oldTreeNodePair =
482
- (reparentMode == ReparentMode::Flatten ? treeChildPair
483
- : otherTreeNodePair);
484
-
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.
485
833
  if (newTreeNodePair.shadowView != oldTreeNodePair.shadowView &&
486
834
  newTreeNodePair.isConcreteView && oldTreeNodePair.isConcreteView) {
487
- mutationInstructionContainer.updateMutations.push_back(
835
+ mutationContainer.updateMutations.push_back(
488
836
  ShadowViewMutation::UpdateMutation(
489
- parentShadowView,
490
- oldTreeNodePair.shadowView,
491
- newTreeNodePair.shadowView,
492
- newTreeNodePair.mountIndex));
837
+ oldTreeNodePair.shadowView, newTreeNodePair.shadowView));
493
838
  }
494
839
 
495
840
  // Update children if appropriate.
496
841
  if (!oldTreeNodePair.flattened && !newTreeNodePair.flattened) {
497
842
  if (oldTreeNodePair.shadowNode != newTreeNodePair.shadowNode) {
843
+ ViewNodePairScope innerScope{};
498
844
  calculateShadowViewMutationsV2(
499
- mutationInstructionContainer.downwardMutations,
845
+ DIFF_BREADCRUMB(
846
+ "(Un)Flattener trivial update of " +
847
+ std::to_string(newTreeNodePair.shadowView.tag)),
848
+ innerScope,
849
+ mutationContainer.downwardMutations,
500
850
  newTreeNodePair.shadowView,
501
- sliceChildShadowNodeViewPairsV2(*oldTreeNodePair.shadowNode),
502
- sliceChildShadowNodeViewPairsV2(*newTreeNodePair.shadowNode));
851
+ sliceChildShadowNodeViewPairsFromViewNodePair(
852
+ oldTreeNodePair, innerScope),
853
+ sliceChildShadowNodeViewPairsFromViewNodePair(
854
+ newTreeNodePair, innerScope));
503
855
  }
504
856
  } else if (oldTreeNodePair.flattened != newTreeNodePair.flattened) {
505
- // We need to handle one of the children being flattened or unflattened,
506
- // in the context of a parent flattening or unflattening.
857
+ // We need to handle one of the children being flattened or
858
+ // unflattened, in the context of a parent flattening or unflattening.
507
859
  ReparentMode childReparentMode =
508
860
  (oldTreeNodePair.flattened ? ReparentMode::Unflatten
509
861
  : ReparentMode::Flatten);
@@ -512,8 +864,20 @@ static void calculateShadowViewMutationsFlattener(
512
864
  // This is a flatten-flatten, or unflatten-unflatten.
513
865
  if (childReparentMode == reparentMode) {
514
866
  calculateShadowViewMutationsFlattener(
867
+ DIFF_BREADCRUMB(
868
+ std::string(
869
+ reparentMode == ReparentMode::Flatten
870
+ ? "Flatten-Flatten"
871
+ : "Unflatten-Unflatten") +
872
+ " new:" +
873
+ std::to_string(
874
+ reparentMode == ReparentMode::Flatten
875
+ ? parentShadowView.tag
876
+ : newTreeNodePair.shadowView.tag) +
877
+ " old:" + std::to_string(treeChildPair.shadowView.tag)),
878
+ scope,
515
879
  childReparentMode,
516
- mutationInstructionContainer,
880
+ mutationContainer,
517
881
  (reparentMode == ReparentMode::Flatten
518
882
  ? parentShadowView
519
883
  : newTreeNodePair.shadowView),
@@ -522,89 +886,72 @@ static void calculateShadowViewMutationsFlattener(
522
886
  subVisitedNewMap,
523
887
  subVisitedOldMap);
524
888
  } else {
525
- // Unflatten parent, flatten child
526
- if (childReparentMode == ReparentMode::Flatten) {
527
- // Construct unvisited nodes map
528
- auto unvisitedNewChildPairs = TinyMap<Tag, ShadowViewNodePair *>{};
529
- // Memory note: these oldFlattenedNodes all disappear at the end of
530
- // this "else" block, including any annotations we put on them.
531
- auto newFlattenedNodes = sliceChildShadowNodeViewPairsV2(
532
- *newTreeNodePair.shadowNode, true);
533
- for (size_t i = 0; i < newFlattenedNodes.size(); i++) {
534
- auto &newChild = newFlattenedNodes[i];
535
-
536
- auto unvisitedOtherNodesIt =
537
- unvisitedOtherNodes.find(newChild.shadowView.tag);
538
- if (unvisitedOtherNodesIt != unvisitedOtherNodes.end()) {
539
- auto &unvisitedItPair = *unvisitedOtherNodesIt->second;
540
- unvisitedNewChildPairs.insert(
541
- {unvisitedItPair.shadowView.tag, &unvisitedItPair});
542
- } else {
543
- unvisitedNewChildPairs.insert(
544
- {newChild.shadowView.tag, &newChild});
545
- }
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});
546
910
  }
911
+ }
547
912
 
913
+ // Unflatten parent, flatten child
914
+ if (childReparentMode == ReparentMode::Flatten) {
548
915
  // Flatten old tree into new list
549
916
  // At the end of this loop we still want to know which of these
550
917
  // children are visited, so we reuse the `newRemainingPairs` map.
551
918
  calculateShadowViewMutationsFlattener(
919
+ DIFF_BREADCRUMB(
920
+ std::string("Flatten old tree into new list; new:") +
921
+ std::to_string(
922
+ reparentMode == ReparentMode::Flatten
923
+ ? parentShadowView.tag
924
+ : newTreeNodePair.shadowView.tag) +
925
+ " old:" + std::to_string(oldTreeNodePair.shadowView.tag)),
926
+ scope,
552
927
  ReparentMode::Flatten,
553
- mutationInstructionContainer,
928
+ mutationContainer,
554
929
  (reparentMode == ReparentMode::Flatten
555
930
  ? parentShadowView
556
931
  : newTreeNodePair.shadowView),
557
- unvisitedNewChildPairs,
932
+ unvisitedRecursiveChildPairs,
558
933
  oldTreeNodePair,
559
934
  subVisitedNewMap,
560
935
  subVisitedOldMap);
561
-
562
- for (auto &newFlattenedNode : newFlattenedNodes) {
563
- auto unvisitedOldChildPairIt =
564
- unvisitedNewChildPairs.find(newFlattenedNode.shadowView.tag);
565
-
566
- if (unvisitedOldChildPairIt == unvisitedNewChildPairs.end()) {
567
- // Node was visited.
568
-
569
- auto deleteCreateIt = deletionCreationCandidatePairs.find(
570
- newFlattenedNode.shadowView.tag);
571
- if (deleteCreateIt != deletionCreationCandidatePairs.end()) {
572
- deletionCreationCandidatePairs.erase(deleteCreateIt);
573
- }
574
- }
575
- }
576
936
  }
577
937
  // Flatten parent, unflatten child
578
938
  else {
579
- // Construct unvisited nodes map
580
- auto unvisitedOldChildPairs = TinyMap<Tag, ShadowViewNodePair *>{};
581
- // Memory note: these oldFlattenedNodes all disappear at the end of
582
- // this "else" block, including any annotations we put on them.
583
- auto oldFlattenedNodes = sliceChildShadowNodeViewPairsV2(
584
- *oldTreeNodePair.shadowNode, true);
585
- for (size_t i = 0; i < oldFlattenedNodes.size(); i++) {
586
- auto &oldChild = oldFlattenedNodes[i];
587
-
588
- auto unvisitedOtherNodesIt =
589
- unvisitedOtherNodes.find(oldChild.shadowView.tag);
590
- if (unvisitedOtherNodesIt != unvisitedOtherNodes.end()) {
591
- auto &unvisitedItPair = *unvisitedOtherNodesIt->second;
592
- unvisitedOldChildPairs.insert(
593
- {unvisitedItPair.shadowView.tag, &unvisitedItPair});
594
- } else {
595
- unvisitedOldChildPairs.insert(
596
- {oldChild.shadowView.tag, &oldChild});
597
- }
598
- }
599
-
600
939
  // Unflatten old list into new tree
601
940
  calculateShadowViewMutationsFlattener(
941
+ DIFF_BREADCRUMB(
942
+ "Unflatten old list into new tree; old:" +
943
+ std::to_string(
944
+ reparentMode == ReparentMode::Flatten
945
+ ? parentShadowView.tag
946
+ : newTreeNodePair.shadowView.tag) +
947
+ " new:" + std::to_string(newTreeNodePair.shadowView.tag)),
948
+ scope,
602
949
  ReparentMode::Unflatten,
603
- mutationInstructionContainer,
950
+ mutationContainer,
604
951
  (reparentMode == ReparentMode::Flatten
605
952
  ? parentShadowView
606
953
  : newTreeNodePair.shadowView),
607
- unvisitedOldChildPairs,
954
+ unvisitedRecursiveChildPairs,
608
955
  newTreeNodePair,
609
956
  subVisitedNewMap,
610
957
  subVisitedOldMap);
@@ -612,45 +959,24 @@ static void calculateShadowViewMutationsFlattener(
612
959
  // If old nodes were not visited, we know that we can delete them
613
960
  // now. They will be removed from the hierarchy by the outermost
614
961
  // loop of this function.
615
- for (auto &oldFlattenedNode : oldFlattenedNodes) {
616
- auto unvisitedOldChildPairIt =
617
- unvisitedOldChildPairs.find(oldFlattenedNode.shadowView.tag);
618
- if (unvisitedOldChildPairIt != unvisitedOldChildPairs.end()) {
619
- // Node unvisited - mark the entire subtree for deletion
620
- if (oldFlattenedNode.isConcreteView) {
621
- auto tag = oldFlattenedNode.shadowView.tag;
622
- auto oldRemainingChildInListIt = std::find_if(
623
- treeChildren.begin(),
624
- treeChildren.end(),
625
- [&tag](ShadowViewNodePair &nodePair) {
626
- return nodePair.shadowView.tag == tag;
627
- });
628
- if (oldRemainingChildInListIt != treeChildren.end()) {
629
- auto deleteCreateIt = deletionCreationCandidatePairs.find(
630
- oldFlattenedNode.shadowView.tag);
631
- if (deleteCreateIt ==
632
- deletionCreationCandidatePairs.end()) {
633
- deletionCreationCandidatePairs.insert(
634
- {tag, &*oldRemainingChildInListIt});
635
- }
636
- } else {
637
- // TODO: we might want to remove this block. It seems
638
- // impossible to hit this logically (and empirically, after
639
- // testing on lots of randomized and pathologically
640
- // constructed trees) but I'm leaving this here out of an
641
- // abundance of caution.
642
- mutationInstructionContainer.deleteMutations.push_back(
643
- ShadowViewMutation::DeleteMutation(
644
- oldFlattenedNode.shadowView));
645
-
646
- calculateShadowViewMutationsV2(
647
- mutationInstructionContainer
648
- .destructiveDownwardMutations,
649
- oldFlattenedNode.shadowView,
650
- sliceChildShadowNodeViewPairsV2(
651
- *oldFlattenedNode.shadowNode),
652
- {});
653
- }
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});
654
980
  }
655
981
  } else {
656
982
  // Node was visited - make sure to remove it from
@@ -660,13 +986,6 @@ static void calculateShadowViewMutationsFlattener(
660
986
  if (newRemainingIt != unvisitedOtherNodes.end()) {
661
987
  unvisitedOtherNodes.erase(newRemainingIt);
662
988
  }
663
-
664
- // We also remove it from delete/creation candidates
665
- auto deleteCreateIt = deletionCreationCandidatePairs.find(
666
- oldFlattenedNode.shadowView.tag);
667
- if (deleteCreateIt != deletionCreationCandidatePairs.end()) {
668
- deletionCreationCandidatePairs.erase(deleteCreateIt);
669
- }
670
989
  }
671
990
  }
672
991
  }
@@ -677,35 +996,23 @@ static void calculateShadowViewMutationsFlattener(
677
996
  // concrete view. Removing the node from the unvisited list prevents the
678
997
  // caller from taking further action on this node, so make sure to
679
998
  // delete/create if the Concreteness of the node has changed.
680
- if (newTreeNodePair.isConcreteView != oldTreeNodePair.isConcreteView &&
681
- !newTreeNodePair.inOtherTree) {
999
+ if (newTreeNodePair.isConcreteView != oldTreeNodePair.isConcreteView) {
682
1000
  if (newTreeNodePair.isConcreteView) {
683
- mutationInstructionContainer.createMutations.push_back(
1001
+ mutationContainer.createMutations.push_back(
684
1002
  ShadowViewMutation::CreateMutation(newTreeNodePair.shadowView));
685
1003
  } else {
686
- mutationInstructionContainer.deleteMutations.push_back(
687
- ShadowViewMutation::DeleteMutation(newTreeNodePair.shadowView));
1004
+ mutationContainer.deleteMutations.push_back(
1005
+ ShadowViewMutation::DeleteMutation(oldTreeNodePair.shadowView));
688
1006
  }
689
1007
  }
690
1008
 
691
- treeChildPair.inOtherTree = true;
692
- otherTreeNodePair.inOtherTree = true;
693
-
694
- if (parentSubVisitedOtherNewNodes != nullptr) {
695
- parentSubVisitedOtherNewNodes->insert(
696
- {newTreeNodePair.shadowView.tag, &newTreeNodePair});
697
- }
698
- if (parentSubVisitedOtherOldNodes != nullptr) {
699
- parentSubVisitedOtherOldNodes->insert(
700
- {oldTreeNodePair.shadowView.tag, &oldTreeNodePair});
701
- }
702
-
703
- if (unvisitedIt != unvisitedOtherNodes.end()) {
704
- unvisitedOtherNodes.erase(unvisitedIt);
705
- }
1009
+ subVisitedNewMap->insert(
1010
+ {newTreeNodePair.shadowView.tag, &newTreeNodePair});
1011
+ subVisitedOldMap->insert(
1012
+ {oldTreeNodePair.shadowView.tag, &oldTreeNodePair});
706
1013
  } else {
707
1014
  // Node does not in exist in other tree.
708
- if (treeChildPair.isConcreteView && !treeChildPair.inOtherTree) {
1015
+ if (treeChildPair.isConcreteView && !treeChildPair.inOtherTree()) {
709
1016
  auto deletionCreationIt =
710
1017
  deletionCreationCandidatePairs.find(treeChildPair.shadowView.tag);
711
1018
  if (deletionCreationIt == deletionCreationCandidatePairs.end()) {
@@ -717,8 +1024,8 @@ static void calculateShadowViewMutationsFlattener(
717
1024
  }
718
1025
 
719
1026
  // Final step: go through creation/deletion candidates and delete/create
720
- // subtrees if they were never visited during the execution of the above loop
721
- // and recursions.
1027
+ // subtrees if they were never visited during the execution of the above
1028
+ // loop and recursions.
722
1029
  for (auto it = deletionCreationCandidatePairs.begin();
723
1030
  it != deletionCreationCandidatePairs.end();
724
1031
  it++) {
@@ -727,42 +1034,60 @@ static void calculateShadowViewMutationsFlattener(
727
1034
  }
728
1035
  auto &treeChildPair = *it->second;
729
1036
 
730
- // If node was visited during a flattening/unflattening recursion.
731
- if (treeChildPair.inOtherTree) {
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.
1042
+ if (treeChildPair.inOtherTree()) {
732
1043
  continue;
733
1044
  }
734
1045
 
735
1046
  if (reparentMode == ReparentMode::Flatten) {
736
- mutationInstructionContainer.deleteMutations.push_back(
1047
+ mutationContainer.deleteMutations.push_back(
737
1048
  ShadowViewMutation::DeleteMutation(treeChildPair.shadowView));
738
1049
 
739
1050
  if (!treeChildPair.flattened) {
1051
+ ViewNodePairScope innerScope{};
740
1052
  calculateShadowViewMutationsV2(
741
- mutationInstructionContainer.destructiveDownwardMutations,
1053
+ DIFF_BREADCRUMB(
1054
+ "Recursively delete tree child pair (flatten case): " +
1055
+ std::to_string(treeChildPair.shadowView.tag)),
1056
+ innerScope,
1057
+ mutationContainer.destructiveDownwardMutations,
742
1058
  treeChildPair.shadowView,
743
- sliceChildShadowNodeViewPairsV2(*treeChildPair.shadowNode),
1059
+ sliceChildShadowNodeViewPairsFromViewNodePair(
1060
+ treeChildPair, innerScope),
744
1061
  {});
745
1062
  }
746
1063
  } else {
747
- mutationInstructionContainer.createMutations.push_back(
1064
+ mutationContainer.createMutations.push_back(
748
1065
  ShadowViewMutation::CreateMutation(treeChildPair.shadowView));
749
1066
 
750
1067
  if (!treeChildPair.flattened) {
1068
+ ViewNodePairScope innerScope{};
751
1069
  calculateShadowViewMutationsV2(
752
- mutationInstructionContainer.downwardMutations,
1070
+ DIFF_BREADCRUMB(
1071
+ "Recursively delete tree child pair (unflatten case): " +
1072
+ std::to_string(treeChildPair.shadowView.tag)),
1073
+ innerScope,
1074
+ mutationContainer.downwardMutations,
753
1075
  treeChildPair.shadowView,
754
1076
  {},
755
- sliceChildShadowNodeViewPairsV2(*treeChildPair.shadowNode));
1077
+ sliceChildShadowNodeViewPairsFromViewNodePair(
1078
+ treeChildPair, innerScope));
756
1079
  }
757
1080
  }
758
1081
  }
759
1082
  }
760
1083
 
761
1084
  static void calculateShadowViewMutationsV2(
1085
+ BREADCRUMB_TYPE breadcrumb,
1086
+ ViewNodePairScope &scope,
762
1087
  ShadowViewMutation::List &mutations,
763
1088
  ShadowView const &parentShadowView,
764
- ShadowViewNodePair::List &&oldChildPairs,
765
- ShadowViewNodePair::List &&newChildPairs) {
1089
+ ShadowViewNodePair::NonOwningList &&oldChildPairs,
1090
+ ShadowViewNodePair::NonOwningList &&newChildPairs) {
766
1091
  if (oldChildPairs.empty() && newChildPairs.empty()) {
767
1092
  return;
768
1093
  }
@@ -770,21 +1095,7 @@ static void calculateShadowViewMutationsV2(
770
1095
  size_t index = 0;
771
1096
 
772
1097
  // Lists of mutations
773
- auto createMutations = ShadowViewMutation::List{};
774
- auto deleteMutations = ShadowViewMutation::List{};
775
- auto insertMutations = ShadowViewMutation::List{};
776
- auto removeMutations = ShadowViewMutation::List{};
777
- auto updateMutations = ShadowViewMutation::List{};
778
- auto downwardMutations = ShadowViewMutation::List{};
779
- auto destructiveDownwardMutations = ShadowViewMutation::List{};
780
- auto mutationInstructionContainer =
781
- OrderedMutationInstructionContainer{createMutations,
782
- deleteMutations,
783
- insertMutations,
784
- removeMutations,
785
- updateMutations,
786
- downwardMutations,
787
- destructiveDownwardMutations};
1098
+ auto mutationContainer = OrderedMutationInstructionContainer{};
788
1099
 
789
1100
  DEBUG_LOGS({
790
1101
  LOG(ERROR) << "Differ Entry: Child Pairs of node: [" << parentShadowView.tag
@@ -792,19 +1103,19 @@ static void calculateShadowViewMutationsV2(
792
1103
  std::string strOldChildPairs;
793
1104
  for (size_t oldIndex = 0; oldIndex < oldChildPairs.size(); oldIndex++) {
794
1105
  strOldChildPairs.append(
795
- std::to_string(oldChildPairs[oldIndex].shadowView.tag));
1106
+ std::to_string(oldChildPairs[oldIndex]->shadowView.tag));
796
1107
  strOldChildPairs.append(
797
- oldChildPairs[oldIndex].isConcreteView ? "" : "'");
798
- strOldChildPairs.append(oldChildPairs[oldIndex].flattened ? "*" : "");
1108
+ oldChildPairs[oldIndex]->isConcreteView ? "" : "'");
1109
+ strOldChildPairs.append(oldChildPairs[oldIndex]->flattened ? "*" : "");
799
1110
  strOldChildPairs.append(", ");
800
1111
  }
801
1112
  std::string strNewChildPairs;
802
1113
  for (size_t newIndex = 0; newIndex < newChildPairs.size(); newIndex++) {
803
1114
  strNewChildPairs.append(
804
- std::to_string(newChildPairs[newIndex].shadowView.tag));
1115
+ std::to_string(newChildPairs[newIndex]->shadowView.tag));
805
1116
  strNewChildPairs.append(
806
- newChildPairs[newIndex].isConcreteView ? "" : "'");
807
- strNewChildPairs.append(newChildPairs[newIndex].flattened ? "*" : "");
1117
+ newChildPairs[newIndex]->isConcreteView ? "" : "'");
1118
+ strNewChildPairs.append(newChildPairs[newIndex]->flattened ? "*" : "");
808
1119
  strNewChildPairs.append(", ");
809
1120
  }
810
1121
  LOG(ERROR) << "Differ Entry: Old Child Pairs: " << strOldChildPairs;
@@ -814,8 +1125,8 @@ static void calculateShadowViewMutationsV2(
814
1125
  // Stage 1: Collecting `Update` mutations
815
1126
  for (index = 0; index < oldChildPairs.size() && index < newChildPairs.size();
816
1127
  index++) {
817
- auto &oldChildPair = oldChildPairs[index];
818
- auto &newChildPair = newChildPairs[index];
1128
+ auto &oldChildPair = *oldChildPairs[index];
1129
+ auto &newChildPair = *newChildPairs[index];
819
1130
 
820
1131
  if (oldChildPair.shadowView.tag != newChildPair.shadowView.tag) {
821
1132
  DEBUG_LOGS({
@@ -829,8 +1140,8 @@ static void calculateShadowViewMutationsV2(
829
1140
  break;
830
1141
  }
831
1142
 
832
- // If either view was flattened, and that has changed this frame, don't try
833
- // to update
1143
+ // If either view was flattened, and that has changed this frame, don't
1144
+ // try to update
834
1145
  if (oldChildPair.flattened != newChildPair.flattened ||
835
1146
  oldChildPair.isConcreteView != newChildPair.isConcreteView) {
836
1147
  break;
@@ -849,23 +1160,27 @@ static void calculateShadowViewMutationsV2(
849
1160
 
850
1161
  if (newChildPair.isConcreteView &&
851
1162
  oldChildPair.shadowView != newChildPair.shadowView) {
852
- updateMutations.push_back(ShadowViewMutation::UpdateMutation(
853
- parentShadowView,
854
- oldChildPair.shadowView,
855
- newChildPair.shadowView,
856
- newChildPair.mountIndex));
1163
+ mutationContainer.updateMutations.push_back(
1164
+ ShadowViewMutation::UpdateMutation(
1165
+ oldChildPair.shadowView, newChildPair.shadowView));
857
1166
  }
858
1167
 
859
1168
  // Recursively update tree if ShadowNode pointers are not equal
860
1169
  if (!oldChildPair.flattened &&
861
1170
  oldChildPair.shadowNode != newChildPair.shadowNode) {
862
- auto oldGrandChildPairs =
863
- sliceChildShadowNodeViewPairsV2(*oldChildPair.shadowNode);
864
- auto newGrandChildPairs =
865
- sliceChildShadowNodeViewPairsV2(*newChildPair.shadowNode);
1171
+ ViewNodePairScope innerScope{};
1172
+ auto oldGrandChildPairs = sliceChildShadowNodeViewPairsFromViewNodePair(
1173
+ oldChildPair, innerScope);
1174
+ auto newGrandChildPairs = sliceChildShadowNodeViewPairsFromViewNodePair(
1175
+ newChildPair, innerScope);
866
1176
  calculateShadowViewMutationsV2(
867
- *(newGrandChildPairs.size() ? &downwardMutations
868
- : &destructiveDownwardMutations),
1177
+ DIFF_BREADCRUMB(
1178
+ "Stage 1: Recurse on " +
1179
+ std::to_string(oldChildPair.shadowView.tag)),
1180
+ innerScope,
1181
+ *(newGrandChildPairs.size()
1182
+ ? &mutationContainer.downwardMutations
1183
+ : &mutationContainer.destructiveDownwardMutations),
869
1184
  oldChildPair.shadowView,
870
1185
  std::move(oldGrandChildPairs),
871
1186
  std::move(newGrandChildPairs));
@@ -878,7 +1193,7 @@ static void calculateShadowViewMutationsV2(
878
1193
  // We've reached the end of the new children. We can delete+remove the
879
1194
  // rest.
880
1195
  for (; index < oldChildPairs.size(); index++) {
881
- auto const &oldChildPair = oldChildPairs[index];
1196
+ auto const &oldChildPair = *oldChildPairs[index];
882
1197
 
883
1198
  DEBUG_LOGS({
884
1199
  LOG(ERROR) << "Differ Branch 2: Deleting Tag/Tree: ["
@@ -890,24 +1205,32 @@ static void calculateShadowViewMutationsV2(
890
1205
  continue;
891
1206
  }
892
1207
 
893
- deleteMutations.push_back(
1208
+ mutationContainer.deleteMutations.push_back(
894
1209
  ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
895
- removeMutations.push_back(ShadowViewMutation::RemoveMutation(
896
- parentShadowView, oldChildPair.shadowView, oldChildPair.mountIndex));
1210
+ mutationContainer.removeMutations.push_back(
1211
+ ShadowViewMutation::RemoveMutation(
1212
+ parentShadowView,
1213
+ oldChildPair.shadowView,
1214
+ static_cast<int>(oldChildPair.mountIndex)));
897
1215
 
898
1216
  // We also have to call the algorithm recursively to clean up the entire
899
1217
  // subtree starting from the removed view.
1218
+ ViewNodePairScope innerScope{};
900
1219
  calculateShadowViewMutationsV2(
901
- destructiveDownwardMutations,
1220
+ DIFF_BREADCRUMB(
1221
+ "Trivial delete " + std::to_string(oldChildPair.shadowView.tag)),
1222
+ innerScope,
1223
+ mutationContainer.destructiveDownwardMutations,
902
1224
  oldChildPair.shadowView,
903
- sliceChildShadowNodeViewPairsV2(*oldChildPair.shadowNode),
1225
+ sliceChildShadowNodeViewPairsFromViewNodePair(
1226
+ oldChildPair, innerScope),
904
1227
  {});
905
1228
  }
906
1229
  } else if (index == oldChildPairs.size()) {
907
1230
  // If we don't have any more existing children we can choose a fast path
908
1231
  // since the rest will all be create+insert.
909
1232
  for (; index < newChildPairs.size(); index++) {
910
- auto const &newChildPair = newChildPairs[index];
1233
+ auto const &newChildPair = *newChildPairs[index];
911
1234
 
912
1235
  DEBUG_LOGS({
913
1236
  LOG(ERROR) << "Differ Branch 3: Creating Tag/Tree: ["
@@ -919,16 +1242,24 @@ static void calculateShadowViewMutationsV2(
919
1242
  continue;
920
1243
  }
921
1244
 
922
- insertMutations.push_back(ShadowViewMutation::InsertMutation(
923
- parentShadowView, newChildPair.shadowView, newChildPair.mountIndex));
924
- 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(
925
1251
  ShadowViewMutation::CreateMutation(newChildPair.shadowView));
926
1252
 
1253
+ ViewNodePairScope innerScope{};
927
1254
  calculateShadowViewMutationsV2(
928
- downwardMutations,
1255
+ DIFF_BREADCRUMB(
1256
+ "Trivial create " + std::to_string(newChildPair.shadowView.tag)),
1257
+ innerScope,
1258
+ mutationContainer.downwardMutations,
929
1259
  newChildPair.shadowView,
930
1260
  {},
931
- sliceChildShadowNodeViewPairsV2(*newChildPair.shadowNode));
1261
+ sliceChildShadowNodeViewPairsFromViewNodePair(
1262
+ newChildPair, innerScope));
932
1263
  }
933
1264
  } else {
934
1265
  // Collect map of tags in the new list
@@ -936,7 +1267,7 @@ static void calculateShadowViewMutationsV2(
936
1267
  auto newInsertedPairs = TinyMap<Tag, ShadowViewNodePair *>{};
937
1268
  auto deletionCandidatePairs = TinyMap<Tag, ShadowViewNodePair const *>{};
938
1269
  for (; index < newChildPairs.size(); index++) {
939
- auto &newChildPair = newChildPairs[index];
1270
+ auto &newChildPair = *newChildPairs[index];
940
1271
  newRemainingPairs.insert({newChildPair.shadowView.tag, &newChildPair});
941
1272
  }
942
1273
 
@@ -952,8 +1283,8 @@ static void calculateShadowViewMutationsV2(
952
1283
 
953
1284
  // Advance both pointers if pointing to the same element
954
1285
  if (haveNewPair && haveOldPair) {
955
- auto const &oldChildPair = oldChildPairs[oldIndex];
956
- auto const &newChildPair = newChildPairs[newIndex];
1286
+ auto const &oldChildPair = *oldChildPairs[oldIndex];
1287
+ auto const &newChildPair = *newChildPairs[newIndex];
957
1288
 
958
1289
  Tag newTag = newChildPair.shadowView.tag;
959
1290
  Tag oldTag = oldChildPair.shadowView.tag;
@@ -971,142 +1302,29 @@ static void calculateShadowViewMutationsV2(
971
1302
  << " with parent: [" << parentShadowView.tag << "]";
972
1303
  });
973
1304
 
974
- // Check concrete-ness of views
975
- // Create/Delete and Insert/Remove if necessary
976
- if (oldChildPair.isConcreteView != newChildPair.isConcreteView) {
977
- if (newChildPair.isConcreteView) {
978
- insertMutations.push_back(ShadowViewMutation::InsertMutation(
979
- parentShadowView,
980
- newChildPair.shadowView,
981
- newChildPair.mountIndex));
982
- createMutations.push_back(
983
- ShadowViewMutation::CreateMutation(newChildPair.shadowView));
984
- } else {
985
- removeMutations.push_back(ShadowViewMutation::RemoveMutation(
986
- parentShadowView,
987
- oldChildPair.shadowView,
988
- oldChildPair.mountIndex));
989
- deleteMutations.push_back(
990
- ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
991
- }
992
- } else if (
993
- oldChildPair.isConcreteView && newChildPair.isConcreteView) {
994
- // Even if node's children are flattened, it might still be a
995
- // concrete view. The case where they're different is handled above.
996
- if (oldChildPair.shadowView != newChildPair.shadowView) {
997
- updateMutations.push_back(ShadowViewMutation::UpdateMutation(
998
- parentShadowView,
999
- oldChildPair.shadowView,
1000
- newChildPair.shadowView,
1001
- newChildPair.mountIndex));
1002
- }
1003
-
1004
- // Remove from newRemainingPairs
1005
- auto newRemainingPairIt = newRemainingPairs.find(oldTag);
1006
- if (newRemainingPairIt != newRemainingPairs.end()) {
1007
- newRemainingPairs.erase(newRemainingPairIt);
1008
- }
1009
- }
1010
-
1011
- // Are we flattening or unflattening either one? If node was flattened
1012
- // in both trees, there's no change, just continue.
1013
- if (oldChildPair.flattened && newChildPair.flattened) {
1014
- newIndex++;
1015
- oldIndex++;
1016
- continue;
1017
- }
1018
- // We are either flattening or unflattening this node.
1019
- if (oldChildPair.flattened != newChildPair.flattened) {
1020
- DEBUG_LOGS({
1021
- LOG(ERROR) << "Differ: flattening or unflattening at branch 6: ["
1022
- << oldChildPair.shadowView.tag << "] ["
1023
- << newChildPair.shadowView.tag << "] "
1024
- << oldChildPair.flattened << " "
1025
- << newChildPair.flattened << " with parent: ["
1026
- << parentShadowView.tag << "]";
1027
- });
1028
-
1029
- // Flattening
1030
- if (!oldChildPair.flattened) {
1031
- // Flatten old tree into new list
1032
- // At the end of this loop we still want to know which of these
1033
- // children are visited, so we reuse the `newRemainingPairs` map.
1034
- calculateShadowViewMutationsFlattener(
1035
- ReparentMode::Flatten,
1036
- mutationInstructionContainer,
1037
- parentShadowView,
1038
- newRemainingPairs,
1039
- oldChildPair);
1040
- }
1041
- // Unflattening
1042
- else {
1043
- // Construct unvisited nodes map
1044
- auto unvisitedOldChildPairs =
1045
- TinyMap<Tag, ShadowViewNodePair *>{};
1046
- // We don't know where all the children of oldChildPair are within
1047
- // oldChildPairs, but we know that they're in the same relative
1048
- // order. The reason for this is because of flattening + zIndex:
1049
- // the children could be listed before the parent, interwoven with
1050
- // children from other nodes, etc.
1051
- auto oldFlattenedNodes = sliceChildShadowNodeViewPairsV2(
1052
- *oldChildPair.shadowNode, true);
1053
- for (size_t i = 0, j = 0;
1054
- i < oldChildPairs.size() && j < oldFlattenedNodes.size();
1055
- i++) {
1056
- auto &oldChild = oldChildPairs[i];
1057
- if (oldChild.shadowView.tag ==
1058
- oldFlattenedNodes[j].shadowView.tag) {
1059
- unvisitedOldChildPairs.insert(
1060
- {oldChild.shadowView.tag, &oldChild});
1061
- j++;
1062
- }
1063
- }
1064
-
1065
- // Unflatten old list into new tree
1066
- calculateShadowViewMutationsFlattener(
1067
- ReparentMode::Unflatten,
1068
- mutationInstructionContainer,
1069
- parentShadowView,
1070
- unvisitedOldChildPairs,
1071
- newChildPair);
1072
-
1073
- // If old nodes were not visited, we know that we can delete them
1074
- // now. They will be removed from the hierarchy by the outermost
1075
- // loop of this function.
1076
- for (auto &oldFlattenedNode : oldFlattenedNodes) {
1077
- auto unvisitedOldChildPairIt = unvisitedOldChildPairs.find(
1078
- oldFlattenedNode.shadowView.tag);
1079
- if (unvisitedOldChildPairIt == unvisitedOldChildPairs.end()) {
1080
- // Node was visited - make sure to remove it from
1081
- // "newRemainingPairs" map
1082
- auto newRemainingIt =
1083
- newRemainingPairs.find(oldFlattenedNode.shadowView.tag);
1084
- if (newRemainingIt != newRemainingPairs.end()) {
1085
- newRemainingPairs.erase(newRemainingIt);
1086
- }
1087
- }
1088
- }
1089
- }
1090
-
1091
- newIndex++;
1092
- oldIndex++;
1093
- continue;
1094
- }
1095
-
1096
- // Update subtrees if View is not flattened, and if node addresses are
1097
- // not equal
1098
- if (oldChildPair.shadowNode != newChildPair.shadowNode) {
1099
- auto oldGrandChildPairs =
1100
- sliceChildShadowNodeViewPairsV2(*oldChildPair.shadowNode);
1101
- auto newGrandChildPairs =
1102
- sliceChildShadowNodeViewPairsV2(*newChildPair.shadowNode);
1103
- calculateShadowViewMutationsV2(
1104
- *(newGrandChildPairs.size() ? &downwardMutations
1105
- : &destructiveDownwardMutations),
1106
- oldChildPair.shadowView,
1107
- std::move(oldGrandChildPairs),
1108
- std::move(newGrandChildPairs));
1109
- }
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);
1315
+
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);
1110
1328
 
1111
1329
  newIndex++;
1112
1330
  oldIndex++;
@@ -1117,7 +1335,7 @@ static void calculateShadowViewMutationsV2(
1117
1335
  // We have an old pair, but we either don't have any remaining new pairs
1118
1336
  // or we have one but it's not matched up with the old pair
1119
1337
  if (haveOldPair) {
1120
- auto const &oldChildPair = oldChildPairs[oldIndex];
1338
+ auto const &oldChildPair = *oldChildPairs[oldIndex];
1121
1339
 
1122
1340
  Tag oldTag = oldChildPair.shadowView.tag;
1123
1341
 
@@ -1129,148 +1347,29 @@ static void calculateShadowViewMutationsV2(
1129
1347
  if (insertedIt != newInsertedPairs.end()) {
1130
1348
  auto const &newChildPair = *insertedIt->second;
1131
1349
 
1132
- // The node has been reordered and we are also flattening or
1133
- // unflattening
1134
- if (oldChildPair.flattened != newChildPair.flattened) {
1135
- DEBUG_LOGS({
1136
- LOG(ERROR)
1137
- << "Differ: branch 7: Flattening or unflattening already-inserted node upon remove (move/reorder operation)."
1138
- << oldChildPair.shadowView.tag << " "
1139
- << oldChildPair.flattened << " // "
1140
- << newChildPair.shadowView.tag << " "
1141
- << newChildPair.flattened;
1142
- });
1143
-
1144
- // Unflattening.
1145
- // The node in question was already inserted and we are
1146
- // *unflattening* it, so we just need to update the subtree nodes
1147
- // and remove them from the view hierarchy. Any of the unvisited
1148
- // nodes in the old tree will be deleted.
1149
- // TODO: can we consolidate this code? It's identical to the first
1150
- // block above.
1151
- if (!oldChildPair.flattened) {
1152
- // Flatten old tree into new list
1153
- // At the end of this loop we still want to know which of these
1154
- // children are visited, so we reuse the `newRemainingPairs` map.
1155
- calculateShadowViewMutationsFlattener(
1156
- ReparentMode::Flatten,
1157
- mutationInstructionContainer,
1158
- parentShadowView,
1159
- newRemainingPairs,
1160
- oldChildPair);
1161
- }
1162
- // Unflattening
1163
- else {
1164
- // Construct unvisited nodes map
1165
- auto unvisitedOldChildPairs =
1166
- TinyMap<Tag, ShadowViewNodePair *>{};
1167
- // We don't know where all the children of oldChildPair are within
1168
- // oldChildPairs, but we know that they're in the same relative
1169
- // order. The reason for this is because of flattening + zIndex:
1170
- // the children could be listed before the parent, interwoven with
1171
- // children from other nodes, etc.
1172
- auto oldFlattenedNodes = sliceChildShadowNodeViewPairsV2(
1173
- *oldChildPair.shadowNode, true);
1174
- for (size_t i = 0, j = 0;
1175
- i < oldChildPairs.size() && j < oldFlattenedNodes.size();
1176
- i++) {
1177
- auto &oldChild = oldChildPairs[i];
1178
- if (oldChild.shadowView.tag ==
1179
- oldFlattenedNodes[j].shadowView.tag) {
1180
- unvisitedOldChildPairs.insert(
1181
- {oldChild.shadowView.tag, &oldChild});
1182
- j++;
1183
- }
1184
- }
1185
-
1186
- // Unflatten old list into new tree
1187
- calculateShadowViewMutationsFlattener(
1188
- ReparentMode::Unflatten,
1189
- mutationInstructionContainer,
1190
- parentShadowView,
1191
- unvisitedOldChildPairs,
1192
- newChildPair);
1193
-
1194
- // If old nodes were not visited, we know that we can delete them
1195
- // now. They will be removed from the hierarchy by the outermost
1196
- // loop of this function. TODO: delete recursively? create
1197
- // recursively?
1198
- for (auto &oldFlattenedNode : oldFlattenedNodes) {
1199
- auto unvisitedOldChildPairIt = unvisitedOldChildPairs.find(
1200
- oldFlattenedNode.shadowView.tag);
1201
- if (unvisitedOldChildPairIt == unvisitedOldChildPairs.end()) {
1202
- // Node was visited - make sure to remove it from
1203
- // "newRemainingPairs" map
1204
- auto newRemainingIt =
1205
- newRemainingPairs.find(oldFlattenedNode.shadowView.tag);
1206
- if (newRemainingIt != newRemainingPairs.end()) {
1207
- newRemainingPairs.erase(newRemainingIt);
1208
- }
1209
- }
1210
- }
1211
- }
1212
- }
1213
-
1214
- // Check concrete-ness of views
1215
- // Create/Delete and Insert/Remove if necessary
1216
- // TODO: document: Insert should already be handled by outermost loop,
1217
- // but not Remove
1218
- if (oldChildPair.isConcreteView != newChildPair.isConcreteView) {
1219
- if (newChildPair.isConcreteView) {
1220
- createMutations.push_back(
1221
- ShadowViewMutation::CreateMutation(newChildPair.shadowView));
1222
- } else {
1223
- removeMutations.push_back(ShadowViewMutation::RemoveMutation(
1224
- parentShadowView,
1225
- oldChildPair.shadowView,
1226
- oldChildPair.mountIndex));
1227
- deleteMutations.push_back(
1228
- ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
1229
- }
1230
- }
1231
-
1232
- // We handled this case above. We fall through to check concreteness
1233
- // of old/new view to remove/insert create/delete above, and then bail
1234
- // out here.
1235
- if (oldChildPair.flattened != newChildPair.flattened) {
1236
- newInsertedPairs.erase(insertedIt);
1237
- oldIndex++;
1238
- continue;
1239
- }
1240
-
1241
- // old and new child pairs are both either flattened or unflattened at
1242
- // this point. If they're not views, we don't need to update subtrees.
1243
- if (oldChildPair.isConcreteView) {
1244
- // TODO: do we always want to remove here? There are cases where we
1245
- // might be able to remove this to prevent unnecessary
1246
- // removes/inserts in cases of (un)flattening + reorders?
1247
- removeMutations.push_back(ShadowViewMutation::RemoveMutation(
1248
- parentShadowView,
1249
- oldChildPair.shadowView,
1250
- oldChildPair.mountIndex));
1251
-
1252
- if (oldChildPair.shadowView != newChildPair.shadowView) {
1253
- updateMutations.push_back(ShadowViewMutation::UpdateMutation(
1254
- parentShadowView,
1255
- oldChildPair.shadowView,
1256
- newChildPair.shadowView,
1257
- newChildPair.mountIndex));
1258
- }
1259
- }
1260
- if (!oldChildPair.flattened &&
1261
- oldChildPair.shadowNode != newChildPair.shadowNode) {
1262
- // Update subtrees
1263
- auto oldGrandChildPairs =
1264
- sliceChildShadowNodeViewPairsV2(*oldChildPair.shadowNode);
1265
- auto newGrandChildPairs =
1266
- sliceChildShadowNodeViewPairsV2(*newChildPair.shadowNode);
1267
- calculateShadowViewMutationsV2(
1268
- *(newGrandChildPairs.size() ? &downwardMutations
1269
- : &destructiveDownwardMutations),
1270
- oldChildPair.shadowView,
1271
- std::move(oldGrandChildPairs),
1272
- std::move(newGrandChildPairs));
1273
- }
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);
1360
+
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);
1274
1373
 
1275
1374
  newInsertedPairs.erase(insertedIt);
1276
1375
  oldIndex++;
@@ -1282,26 +1381,61 @@ static void calculateShadowViewMutationsV2(
1282
1381
  // generate remove+delete for this node and its subtree.
1283
1382
  auto const newIt = newRemainingPairs.find(oldTag);
1284
1383
  if (newIt == newRemainingPairs.end()) {
1384
+ oldIndex++;
1385
+
1386
+ if (!oldChildPair.isConcreteView) {
1387
+ continue;
1388
+ }
1389
+
1390
+ // From here, we know the oldChildPair is concrete.
1391
+ // We *probably* need to generate a REMOVE mutation (see edge-case
1392
+ // notes below).
1393
+
1285
1394
  DEBUG_LOGS({
1286
1395
  LOG(ERROR)
1287
1396
  << "Differ Branch 9: Removing tag that was not reinserted: "
1288
1397
  << oldIndex << ": [" << oldChildPair.shadowView.tag << "]"
1289
1398
  << (oldChildPair.flattened ? " (flattened)" : "")
1290
1399
  << (oldChildPair.isConcreteView ? " (concrete)" : "")
1291
- << " with parent: [" << parentShadowView.tag << "]";
1400
+ << " with parent: [" << parentShadowView.tag << "] "
1401
+ << "node is in other tree? "
1402
+ << (oldChildPair.inOtherTree() ? "yes" : "no");
1292
1403
  });
1293
1404
 
1294
- if (oldChildPair.isConcreteView) {
1295
- removeMutations.push_back(ShadowViewMutation::RemoveMutation(
1296
- parentShadowView,
1297
- oldChildPair.shadowView,
1298
- oldChildPair.mountIndex));
1299
-
1300
- deletionCandidatePairs.insert(
1301
- {oldChildPair.shadowView.tag, &oldChildPair});
1405
+ // Edge case: node is not found in `newRemainingPairs`, due to
1406
+ // complex (un)flattening cases, but exists in other tree *and* is
1407
+ // concrete.
1408
+ if (oldChildPair.inOtherTree() &&
1409
+ oldChildPair.otherTreePair->isConcreteView) {
1410
+ ShadowView const &otherTreeView =
1411
+ oldChildPair.otherTreePair->shadowView;
1412
+
1413
+ // Remove, but remove using the *new* node, since we know
1414
+ // an UPDATE mutation from old -> new has been generated.
1415
+ // Practically this shouldn't matter for most mounting layer
1416
+ // implementations, but helps adhere to the invariant that
1417
+ // for all mutation instructions, "oldViewShadowNode" == "current
1418
+ // node on mounting layer / stubView".
1419
+ // Here we do *not" need to generate a potential DELETE mutation
1420
+ // because we know the view is concrete, and still in the new
1421
+ // hierarchy.
1422
+ mutationContainer.removeMutations.push_back(
1423
+ ShadowViewMutation::RemoveMutation(
1424
+ parentShadowView,
1425
+ otherTreeView,
1426
+ static_cast<int>(oldChildPair.mountIndex)));
1427
+ continue;
1302
1428
  }
1303
1429
 
1304
- oldIndex++;
1430
+ mutationContainer.removeMutations.push_back(
1431
+ ShadowViewMutation::RemoveMutation(
1432
+ parentShadowView,
1433
+ oldChildPair.shadowView,
1434
+ static_cast<int>(oldChildPair.mountIndex)));
1435
+
1436
+ deletionCandidatePairs.insert(
1437
+ {oldChildPair.shadowView.tag, &oldChildPair});
1438
+
1305
1439
  continue;
1306
1440
  }
1307
1441
  }
@@ -1309,7 +1443,7 @@ static void calculateShadowViewMutationsV2(
1309
1443
  // At this point, oldTag is -1 or is in the new list, and hasn't been
1310
1444
  // inserted or matched yet. We're not sure yet if the new node is in the
1311
1445
  // old list - generate an insert instruction for the new node.
1312
- auto &newChildPair = newChildPairs[newIndex];
1446
+ auto &newChildPair = *newChildPairs[newIndex];
1313
1447
  DEBUG_LOGS({
1314
1448
  LOG(ERROR)
1315
1449
  << "Differ Branch 10: Inserting tag/tree that was not (yet?) removed from hierarchy: "
@@ -1320,21 +1454,29 @@ static void calculateShadowViewMutationsV2(
1320
1454
  << " with parent: [" << parentShadowView.tag << "]";
1321
1455
  });
1322
1456
  if (newChildPair.isConcreteView) {
1323
- insertMutations.push_back(ShadowViewMutation::InsertMutation(
1324
- parentShadowView,
1325
- newChildPair.shadowView,
1326
- newChildPair.mountIndex));
1457
+ mutationContainer.insertMutations.push_back(
1458
+ ShadowViewMutation::InsertMutation(
1459
+ parentShadowView,
1460
+ newChildPair.shadowView,
1461
+ static_cast<int>(newChildPair.mountIndex)));
1327
1462
  }
1328
- if (!newChildPair.inOtherTree) {
1463
+
1464
+ // `inOtherTree` is only set to true during flattening/unflattening of
1465
+ // parent. If the parent isn't (un)flattened, this will always be
1466
+ // `false`, even if the node is in the other (old) tree. In this case,
1467
+ // we expect the node to be removed from `newInsertedPairs` when we
1468
+ // later encounter it in this loop.
1469
+ if (!newChildPair.inOtherTree()) {
1329
1470
  newInsertedPairs.insert({newChildPair.shadowView.tag, &newChildPair});
1330
1471
  }
1472
+
1331
1473
  newIndex++;
1332
1474
  }
1333
1475
 
1334
1476
  // Penultimate step: generate Delete instructions for entirely deleted
1335
1477
  // subtrees/nodes. We do this here because we need to traverse the entire
1336
- // list to make sure that a node was not reparented into an unflattened node
1337
- // that occurs *after* it in the hierarchy, due to zIndex ordering.
1478
+ // list to make sure that a node was not reparented into an unflattened
1479
+ // node that occurs *after* it in the hierarchy, due to zIndex ordering.
1338
1480
  for (auto it = deletionCandidatePairs.begin();
1339
1481
  it != deletionCandidatePairs.end();
1340
1482
  it++) {
@@ -1350,27 +1492,34 @@ static void calculateShadowViewMutationsV2(
1350
1492
  << "[" << oldChildPair.shadowView.tag << "]"
1351
1493
  << (oldChildPair.flattened ? "(flattened)" : "")
1352
1494
  << (oldChildPair.isConcreteView ? "(concrete)" : "")
1353
- << (oldChildPair.inOtherTree ? "(in other tree)" : "")
1354
- << " with parent: [" << parentShadowView.tag << "]";
1495
+ << (oldChildPair.inOtherTree() ? "(in other tree)" : "")
1496
+ << " with parent: [" << parentShadowView.tag << "] ##"
1497
+ << std::hash<ShadowView>{}(oldChildPair.shadowView);
1355
1498
  });
1356
1499
 
1357
1500
  // This can happen when the parent is unflattened
1358
- if (!oldChildPair.inOtherTree) {
1359
- deleteMutations.push_back(
1501
+ if (!oldChildPair.inOtherTree() && oldChildPair.isConcreteView) {
1502
+ mutationContainer.deleteMutations.push_back(
1360
1503
  ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
1361
1504
 
1362
1505
  // We also have to call the algorithm recursively to clean up the
1363
1506
  // entire subtree starting from the removed view.
1507
+ ViewNodePairScope innerScope{};
1364
1508
  calculateShadowViewMutationsV2(
1365
- destructiveDownwardMutations,
1509
+ DIFF_BREADCRUMB(
1510
+ "Non-trivial delete " +
1511
+ std::to_string(oldChildPair.shadowView.tag)),
1512
+ innerScope,
1513
+ mutationContainer.destructiveDownwardMutations,
1366
1514
  oldChildPair.shadowView,
1367
- sliceChildShadowNodeViewPairsV2(*oldChildPair.shadowNode),
1515
+ sliceChildShadowNodeViewPairsFromViewNodePair(
1516
+ oldChildPair, innerScope),
1368
1517
  {});
1369
1518
  }
1370
1519
  }
1371
1520
 
1372
- // Final step: generate Create instructions for entirely new subtrees/nodes
1373
- // that are not the result of flattening or unflattening.
1521
+ // Final step: generate Create instructions for entirely new
1522
+ // subtrees/nodes that are not the result of flattening or unflattening.
1374
1523
  for (auto it = newInsertedPairs.begin(); it != newInsertedPairs.end();
1375
1524
  it++) {
1376
1525
  // Erased elements of a TinyMap will have a Tag/key of 0 - skip those
@@ -1389,61 +1538,70 @@ static void calculateShadowViewMutationsV2(
1389
1538
  << "[" << newChildPair.shadowView.tag << "]"
1390
1539
  << (newChildPair.flattened ? "(flattened)" : "")
1391
1540
  << (newChildPair.isConcreteView ? "(concrete)" : "")
1392
- << (newChildPair.inOtherTree ? "(in other tree)" : "")
1541
+ << (newChildPair.inOtherTree() ? "(in other tree)" : "")
1393
1542
  << " with parent: [" << parentShadowView.tag << "]";
1394
1543
  });
1395
1544
 
1396
1545
  if (!newChildPair.isConcreteView) {
1397
1546
  continue;
1398
1547
  }
1399
- if (newChildPair.inOtherTree) {
1548
+ if (newChildPair.inOtherTree()) {
1400
1549
  continue;
1401
1550
  }
1402
1551
 
1403
- createMutations.push_back(
1552
+ mutationContainer.createMutations.push_back(
1404
1553
  ShadowViewMutation::CreateMutation(newChildPair.shadowView));
1405
1554
 
1555
+ ViewNodePairScope innerScope{};
1406
1556
  calculateShadowViewMutationsV2(
1407
- downwardMutations,
1557
+ DIFF_BREADCRUMB(
1558
+ "Non-trivial create " +
1559
+ std::to_string(newChildPair.shadowView.tag)),
1560
+ innerScope,
1561
+ mutationContainer.downwardMutations,
1408
1562
  newChildPair.shadowView,
1409
1563
  {},
1410
- sliceChildShadowNodeViewPairsV2(*newChildPair.shadowNode));
1564
+ sliceChildShadowNodeViewPairsFromViewNodePair(
1565
+ newChildPair, innerScope));
1411
1566
  }
1412
1567
  }
1413
1568
 
1414
1569
  // All mutations in an optimal order:
1415
1570
  std::move(
1416
- destructiveDownwardMutations.begin(),
1417
- destructiveDownwardMutations.end(),
1571
+ mutationContainer.destructiveDownwardMutations.begin(),
1572
+ mutationContainer.destructiveDownwardMutations.end(),
1418
1573
  std::back_inserter(mutations));
1419
1574
  std::move(
1420
- updateMutations.begin(),
1421
- updateMutations.end(),
1575
+ mutationContainer.updateMutations.begin(),
1576
+ mutationContainer.updateMutations.end(),
1422
1577
  std::back_inserter(mutations));
1423
1578
  std::move(
1424
- removeMutations.rbegin(),
1425
- removeMutations.rend(),
1579
+ mutationContainer.removeMutations.rbegin(),
1580
+ mutationContainer.removeMutations.rend(),
1426
1581
  std::back_inserter(mutations));
1427
1582
  std::move(
1428
- deleteMutations.begin(),
1429
- deleteMutations.end(),
1583
+ mutationContainer.deleteMutations.begin(),
1584
+ mutationContainer.deleteMutations.end(),
1430
1585
  std::back_inserter(mutations));
1431
1586
  std::move(
1432
- createMutations.begin(),
1433
- createMutations.end(),
1587
+ mutationContainer.createMutations.begin(),
1588
+ mutationContainer.createMutations.end(),
1434
1589
  std::back_inserter(mutations));
1435
1590
  std::move(
1436
- downwardMutations.begin(),
1437
- downwardMutations.end(),
1591
+ mutationContainer.downwardMutations.begin(),
1592
+ mutationContainer.downwardMutations.end(),
1438
1593
  std::back_inserter(mutations));
1439
1594
  std::move(
1440
- insertMutations.begin(),
1441
- insertMutations.end(),
1595
+ mutationContainer.insertMutations.begin(),
1596
+ mutationContainer.insertMutations.end(),
1442
1597
  std::back_inserter(mutations));
1443
1598
  }
1444
1599
 
1445
- static void sliceChildShadowNodeViewPairsRecursively(
1446
- ShadowViewNodePair::List &pairList,
1600
+ /**
1601
+ * Only used by unit tests currently.
1602
+ */
1603
+ static void sliceChildShadowNodeViewPairsRecursivelyLegacy(
1604
+ ShadowViewNodePair::OwningList &pairList,
1447
1605
  Point layoutOffset,
1448
1606
  ShadowNode const &shadowNode) {
1449
1607
  for (auto const &sharedChildShadowNode : shadowNode.getChildren()) {
@@ -1473,15 +1631,18 @@ static void sliceChildShadowNodeViewPairsRecursively(
1473
1631
  pairList.push_back({shadowView, &childShadowNode});
1474
1632
  }
1475
1633
 
1476
- sliceChildShadowNodeViewPairsRecursively(
1634
+ sliceChildShadowNodeViewPairsRecursivelyLegacy(
1477
1635
  pairList, origin, childShadowNode);
1478
1636
  }
1479
1637
  }
1480
1638
  }
1481
1639
 
1482
- ShadowViewNodePair::List sliceChildShadowNodeViewPairs(
1640
+ /**
1641
+ * Only used by unit tests currently.
1642
+ */
1643
+ ShadowViewNodePair::OwningList sliceChildShadowNodeViewPairsLegacy(
1483
1644
  ShadowNode const &shadowNode) {
1484
- auto pairList = ShadowViewNodePair::List{};
1645
+ auto pairList = ShadowViewNodePair::OwningList{};
1485
1646
 
1486
1647
  if (!shadowNode.getTraits().check(
1487
1648
  ShadowNodeTraits::Trait::FormsStackingContext) &&
@@ -1489,367 +1650,23 @@ ShadowViewNodePair::List sliceChildShadowNodeViewPairs(
1489
1650
  return pairList;
1490
1651
  }
1491
1652
 
1492
- sliceChildShadowNodeViewPairsRecursively(pairList, {0, 0}, shadowNode);
1653
+ sliceChildShadowNodeViewPairsRecursivelyLegacy(pairList, {0, 0}, shadowNode);
1493
1654
 
1494
1655
  return pairList;
1495
1656
  }
1496
1657
 
1497
- static void calculateShadowViewMutations(
1498
- ShadowViewMutation::List &mutations,
1499
- ShadowView const &parentShadowView,
1500
- ShadowViewNodePair::List &&oldChildPairs,
1501
- ShadowViewNodePair::List &&newChildPairs) {
1502
- if (oldChildPairs.empty() && newChildPairs.empty()) {
1503
- return;
1504
- }
1505
-
1506
- // Sorting pairs based on `orderIndex` if needed.
1507
- reorderInPlaceIfNeeded(oldChildPairs);
1508
- reorderInPlaceIfNeeded(newChildPairs);
1509
-
1510
- auto index = int{0};
1511
-
1512
- // Lists of mutations
1513
- auto createMutations = ShadowViewMutation::List{};
1514
- auto deleteMutations = ShadowViewMutation::List{};
1515
- auto insertMutations = ShadowViewMutation::List{};
1516
- auto removeMutations = ShadowViewMutation::List{};
1517
- auto updateMutations = ShadowViewMutation::List{};
1518
- auto downwardMutations = ShadowViewMutation::List{};
1519
- auto destructiveDownwardMutations = ShadowViewMutation::List{};
1520
-
1521
- // Stage 1: Collecting `Update` mutations
1522
- for (index = 0; index < oldChildPairs.size() && index < newChildPairs.size();
1523
- index++) {
1524
- auto const &oldChildPair = oldChildPairs[index];
1525
- auto const &newChildPair = newChildPairs[index];
1526
-
1527
- if (oldChildPair.shadowView.tag != newChildPair.shadowView.tag) {
1528
- DEBUG_LOGS({
1529
- LOG(ERROR) << "Differ Branch 1.1: Tags Different: ["
1530
- << oldChildPair.shadowView.tag << "] ["
1531
- << newChildPair.shadowView.tag << "]";
1532
- });
1533
-
1534
- // Totally different nodes, updating is impossible.
1535
- break;
1536
- }
1537
-
1538
- DEBUG_LOGS({
1539
- LOG(ERROR) << "Differ Branch 1.2: Same tags, update and recurse: ["
1540
- << oldChildPair.shadowView.tag << "]"
1541
- << (oldChildPair.flattened ? " (flattened)" : "")
1542
- << (oldChildPair.isConcreteView ? " (concrete)" : "") << "["
1543
- << newChildPair.shadowView.tag << "]"
1544
- << (newChildPair.flattened ? " (flattened)" : "")
1545
- << (newChildPair.isConcreteView ? " (concrete)" : "");
1546
- });
1547
-
1548
- if (oldChildPair.shadowView != newChildPair.shadowView) {
1549
- updateMutations.push_back(ShadowViewMutation::UpdateMutation(
1550
- parentShadowView,
1551
- oldChildPair.shadowView,
1552
- newChildPair.shadowView,
1553
- index));
1554
- }
1555
-
1556
- auto oldGrandChildPairs =
1557
- sliceChildShadowNodeViewPairs(*oldChildPair.shadowNode);
1558
- auto newGrandChildPairs =
1559
- sliceChildShadowNodeViewPairs(*newChildPair.shadowNode);
1560
- calculateShadowViewMutations(
1561
- *(newGrandChildPairs.size() ? &downwardMutations
1562
- : &destructiveDownwardMutations),
1563
- oldChildPair.shadowView,
1564
- std::move(oldGrandChildPairs),
1565
- std::move(newGrandChildPairs));
1566
- }
1567
-
1568
- size_t lastIndexAfterFirstStage = index;
1569
-
1570
- if (index == newChildPairs.size()) {
1571
- // We've reached the end of the new children. We can delete+remove the
1572
- // rest.
1573
- for (; index < oldChildPairs.size(); index++) {
1574
- auto const &oldChildPair = oldChildPairs[index];
1575
-
1576
- DEBUG_LOGS({
1577
- LOG(ERROR)
1578
- << "Differ Branch 2: Deleting Tag/Tree (may be reparented): ["
1579
- << oldChildPair.shadowView.tag << "]";
1580
- });
1581
-
1582
- deleteMutations.push_back(
1583
- ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
1584
- removeMutations.push_back(ShadowViewMutation::RemoveMutation(
1585
- parentShadowView, oldChildPair.shadowView, index));
1586
-
1587
- // We also have to call the algorithm recursively to clean up the entire
1588
- // subtree starting from the removed view.
1589
- calculateShadowViewMutations(
1590
- destructiveDownwardMutations,
1591
- oldChildPair.shadowView,
1592
- sliceChildShadowNodeViewPairs(*oldChildPair.shadowNode),
1593
- {});
1594
- }
1595
- } else if (index == oldChildPairs.size()) {
1596
- // If we don't have any more existing children we can choose a fast path
1597
- // since the rest will all be create+insert.
1598
- for (; index < newChildPairs.size(); index++) {
1599
- auto const &newChildPair = newChildPairs[index];
1600
-
1601
- DEBUG_LOGS({
1602
- LOG(ERROR)
1603
- << "Differ Branch 3: Creating Tag/Tree (may be reparented): ["
1604
- << newChildPair.shadowView.tag << "]";
1605
- });
1606
-
1607
- insertMutations.push_back(ShadowViewMutation::InsertMutation(
1608
- parentShadowView, newChildPair.shadowView, index));
1609
- createMutations.push_back(
1610
- ShadowViewMutation::CreateMutation(newChildPair.shadowView));
1611
-
1612
- calculateShadowViewMutations(
1613
- downwardMutations,
1614
- newChildPair.shadowView,
1615
- {},
1616
- sliceChildShadowNodeViewPairs(*newChildPair.shadowNode));
1617
- }
1618
- } else {
1619
- // Collect map of tags in the new list
1620
- // In the future it would be nice to use TinyMap for newInsertedPairs, but
1621
- // it's challenging to build an iterator that will work for our use-case
1622
- // here.
1623
- auto newRemainingPairs = TinyMap<Tag, ShadowViewNodePair const *>{};
1624
- auto newInsertedPairs = TinyMap<Tag, ShadowViewNodePair const *>{};
1625
- for (; index < newChildPairs.size(); index++) {
1626
- auto const &newChildPair = newChildPairs[index];
1627
- newRemainingPairs.insert({newChildPair.shadowView.tag, &newChildPair});
1628
- }
1629
-
1630
- // Walk through both lists at the same time
1631
- // We will perform updates, create+insert, remove+delete, remove+insert
1632
- // (move) here.
1633
- size_t oldIndex = lastIndexAfterFirstStage,
1634
- newIndex = lastIndexAfterFirstStage, newSize = newChildPairs.size(),
1635
- oldSize = oldChildPairs.size();
1636
- while (newIndex < newSize || oldIndex < oldSize) {
1637
- bool haveNewPair = newIndex < newSize;
1638
- bool haveOldPair = oldIndex < oldSize;
1639
-
1640
- // Advance both pointers if pointing to the same element
1641
- if (haveNewPair && haveOldPair) {
1642
- auto const &newChildPair = newChildPairs[newIndex];
1643
- auto const &oldChildPair = oldChildPairs[oldIndex];
1644
-
1645
- Tag newTag = newChildPair.shadowView.tag;
1646
- Tag oldTag = oldChildPair.shadowView.tag;
1647
-
1648
- if (newTag == oldTag) {
1649
- DEBUG_LOGS({
1650
- LOG(ERROR) << "Differ Branch 5: Matched Tags at indices: "
1651
- << oldIndex << " " << newIndex << ": ["
1652
- << oldChildPair.shadowView.tag << "]["
1653
- << newChildPair.shadowView.tag << "]";
1654
- });
1655
-
1656
- // Generate Update instructions
1657
- if (oldChildPair.shadowView != newChildPair.shadowView) {
1658
- updateMutations.push_back(ShadowViewMutation::UpdateMutation(
1659
- parentShadowView,
1660
- oldChildPair.shadowView,
1661
- newChildPair.shadowView,
1662
- index));
1663
- }
1664
-
1665
- // Remove from newRemainingPairs
1666
- auto newRemainingPairIt = newRemainingPairs.find(oldTag);
1667
- if (newRemainingPairIt != newRemainingPairs.end()) {
1668
- newRemainingPairs.erase(newRemainingPairIt);
1669
- }
1670
-
1671
- // Update subtrees
1672
- if (oldChildPair.shadowNode != newChildPair.shadowNode) {
1673
- auto oldGrandChildPairs =
1674
- sliceChildShadowNodeViewPairs(*oldChildPair.shadowNode);
1675
- auto newGrandChildPairs =
1676
- sliceChildShadowNodeViewPairs(*newChildPair.shadowNode);
1677
- calculateShadowViewMutations(
1678
- *(newGrandChildPairs.size() ? &downwardMutations
1679
- : &destructiveDownwardMutations),
1680
- oldChildPair.shadowView,
1681
- std::move(oldGrandChildPairs),
1682
- std::move(newGrandChildPairs));
1683
- }
1684
-
1685
- newIndex++;
1686
- oldIndex++;
1687
- continue;
1688
- }
1689
- }
1690
-
1691
- if (haveOldPair) {
1692
- auto const &oldChildPair = oldChildPairs[oldIndex];
1693
- Tag oldTag = oldChildPair.shadowView.tag;
1694
-
1695
- // Was oldTag already inserted? This indicates a reordering, not just
1696
- // a move. The new node has already been inserted, we just need to
1697
- // remove the node from its old position now.
1698
- auto const insertedIt = newInsertedPairs.find(oldTag);
1699
- if (insertedIt != newInsertedPairs.end()) {
1700
- DEBUG_LOGS({
1701
- LOG(ERROR)
1702
- << "Differ Branch 6: Removing tag that was already inserted: "
1703
- << oldIndex << ": [" << oldChildPair.shadowView.tag << "]";
1704
- });
1705
-
1706
- removeMutations.push_back(ShadowViewMutation::RemoveMutation(
1707
- parentShadowView, oldChildPair.shadowView, oldIndex));
1708
-
1709
- // Generate update instruction since we have an iterator ref to the
1710
- // new node
1711
- auto const &newChildPair = *insertedIt->second;
1712
- if (oldChildPair.shadowView != newChildPair.shadowView) {
1713
- updateMutations.push_back(ShadowViewMutation::UpdateMutation(
1714
- parentShadowView,
1715
- oldChildPair.shadowView,
1716
- newChildPair.shadowView,
1717
- index));
1718
- }
1719
-
1720
- // Update subtrees
1721
- if (oldChildPair.shadowNode != newChildPair.shadowNode) {
1722
- auto oldGrandChildPairs =
1723
- sliceChildShadowNodeViewPairs(*oldChildPair.shadowNode);
1724
- auto newGrandChildPairs =
1725
- sliceChildShadowNodeViewPairs(*newChildPair.shadowNode);
1726
- calculateShadowViewMutations(
1727
- *(newGrandChildPairs.size() ? &downwardMutations
1728
- : &destructiveDownwardMutations),
1729
- oldChildPair.shadowView,
1730
- std::move(oldGrandChildPairs),
1731
- std::move(newGrandChildPairs));
1732
- }
1733
-
1734
- newInsertedPairs.erase(insertedIt);
1735
- oldIndex++;
1736
- continue;
1737
- }
1738
-
1739
- // Should we generate a delete+remove instruction for the old node?
1740
- // If there's an old node and it's not found in the "new" list, we
1741
- // generate remove+delete for this node and its subtree.
1742
- auto const newIt = newRemainingPairs.find(oldTag);
1743
- if (newIt == newRemainingPairs.end()) {
1744
- DEBUG_LOGS({
1745
- LOG(ERROR)
1746
- << "Differ Branch 8: Removing tag/tree that was not reinserted (may be reparented): "
1747
- << oldIndex << ": [" << oldChildPair.shadowView.tag << "]";
1748
- });
1749
-
1750
- removeMutations.push_back(ShadowViewMutation::RemoveMutation(
1751
- parentShadowView, oldChildPair.shadowView, oldIndex));
1752
-
1753
- deleteMutations.push_back(
1754
- ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
1755
-
1756
- // We also have to call the algorithm recursively to clean up the
1757
- // entire subtree starting from the removed view.
1758
- calculateShadowViewMutations(
1759
- destructiveDownwardMutations,
1760
- oldChildPair.shadowView,
1761
- sliceChildShadowNodeViewPairs(*oldChildPair.shadowNode),
1762
- {});
1763
-
1764
- oldIndex++;
1765
- continue;
1766
- }
1767
- }
1768
-
1769
- // At this point, oldTag is -1 or is in the new list, and hasn't been
1770
- // inserted or matched yet. We're not sure yet if the new node is in the
1771
- // old list - generate an insert instruction for the new node.
1772
- auto const &newChildPair = newChildPairs[newIndex];
1773
- DEBUG_LOGS({
1774
- LOG(ERROR)
1775
- << "Differ Branch 9: Inserting tag/tree that was not yet removed from hierarchy (may be reparented): "
1776
- << newIndex << ": [" << newChildPair.shadowView.tag << "]";
1777
- });
1778
- insertMutations.push_back(ShadowViewMutation::InsertMutation(
1779
- parentShadowView, newChildPair.shadowView, newIndex));
1780
- newInsertedPairs.insert({newChildPair.shadowView.tag, &newChildPair});
1781
- newIndex++;
1782
- }
1783
-
1784
- // Final step: generate Create instructions for new nodes
1785
- for (auto it = newInsertedPairs.begin(); it != newInsertedPairs.end();
1786
- it++) {
1787
- // Erased elements of a TinyMap will have a Tag/key of 0 - skip those
1788
- // These *should* be removed by the map; there are currently no KNOWN
1789
- // cases where TinyMap will do the wrong thing, but there are not yet
1790
- // any unit tests explicitly for TinyMap, so this is safer for now.
1791
- if (it->first == 0) {
1792
- continue;
1793
- }
1794
-
1795
- auto const &newChildPair = *it->second;
1796
-
1797
- DEBUG_LOGS({
1798
- LOG(ERROR)
1799
- << "Differ Branch 9: Inserting tag/tree that was not yet removed from hierarchy (may be reparented): "
1800
- << newIndex << ": [" << newChildPair.shadowView.tag << "]";
1801
- });
1802
-
1803
- createMutations.push_back(
1804
- ShadowViewMutation::CreateMutation(newChildPair.shadowView));
1805
-
1806
- calculateShadowViewMutations(
1807
- downwardMutations,
1808
- newChildPair.shadowView,
1809
- {},
1810
- sliceChildShadowNodeViewPairs(*newChildPair.shadowNode));
1811
- }
1812
- }
1813
-
1814
- // All mutations in an optimal order:
1815
- std::move(
1816
- destructiveDownwardMutations.begin(),
1817
- destructiveDownwardMutations.end(),
1818
- std::back_inserter(mutations));
1819
- std::move(
1820
- updateMutations.begin(),
1821
- updateMutations.end(),
1822
- std::back_inserter(mutations));
1823
- std::move(
1824
- removeMutations.rbegin(),
1825
- removeMutations.rend(),
1826
- std::back_inserter(mutations));
1827
- std::move(
1828
- deleteMutations.begin(),
1829
- deleteMutations.end(),
1830
- std::back_inserter(mutations));
1831
- std::move(
1832
- createMutations.begin(),
1833
- createMutations.end(),
1834
- std::back_inserter(mutations));
1835
- std::move(
1836
- downwardMutations.begin(),
1837
- downwardMutations.end(),
1838
- std::back_inserter(mutations));
1839
- std::move(
1840
- insertMutations.begin(),
1841
- insertMutations.end(),
1842
- std::back_inserter(mutations));
1843
- }
1844
-
1845
1658
  ShadowViewMutation::List calculateShadowViewMutations(
1846
1659
  ShadowNode const &oldRootShadowNode,
1847
- ShadowNode const &newRootShadowNode,
1848
- bool enableReparentingDetection) {
1660
+ ShadowNode const &newRootShadowNode) {
1849
1661
  SystraceSection s("calculateShadowViewMutations");
1850
1662
 
1851
1663
  // Root shadow nodes must be belong the same family.
1852
- assert(ShadowNode::sameFamily(oldRootShadowNode, newRootShadowNode));
1664
+ react_native_assert(
1665
+ ShadowNode::sameFamily(oldRootShadowNode, newRootShadowNode));
1666
+
1667
+ // See explanation of scope in Differentiator.h.
1668
+ ViewNodePairScope viewNodePairScope{};
1669
+ ViewNodePairScope innerViewNodePairScope{};
1853
1670
 
1854
1671
  auto mutations = ShadowViewMutation::List{};
1855
1672
  mutations.reserve(256);
@@ -1859,22 +1676,16 @@ ShadowViewMutation::List calculateShadowViewMutations(
1859
1676
 
1860
1677
  if (oldRootShadowView != newRootShadowView) {
1861
1678
  mutations.push_back(ShadowViewMutation::UpdateMutation(
1862
- ShadowView(), oldRootShadowView, newRootShadowView, -1));
1679
+ oldRootShadowView, newRootShadowView));
1863
1680
  }
1864
1681
 
1865
- if (enableReparentingDetection) {
1866
- calculateShadowViewMutationsV2(
1867
- mutations,
1868
- ShadowView(oldRootShadowNode),
1869
- sliceChildShadowNodeViewPairsV2(oldRootShadowNode),
1870
- sliceChildShadowNodeViewPairsV2(newRootShadowNode));
1871
- } else {
1872
- calculateShadowViewMutations(
1873
- mutations,
1874
- ShadowView(oldRootShadowNode),
1875
- sliceChildShadowNodeViewPairs(oldRootShadowNode),
1876
- sliceChildShadowNodeViewPairs(newRootShadowNode));
1877
- }
1682
+ calculateShadowViewMutationsV2(
1683
+ CREATE_DIFF_BREADCRUMB(oldRootShadowView.tag),
1684
+ innerViewNodePairScope,
1685
+ mutations,
1686
+ ShadowView(oldRootShadowNode),
1687
+ sliceChildShadowNodeViewPairsV2(oldRootShadowNode, viewNodePairScope),
1688
+ sliceChildShadowNodeViewPairsV2(newRootShadowNode, viewNodePairScope));
1878
1689
 
1879
1690
  return mutations;
1880
1691
  }