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.
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +0 -2
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +0 -2
- package/Libraries/ActionSheetIOS/React-RCTActionSheet.podspec +2 -2
- package/Libraries/Alert/Alert.js +3 -5
- package/Libraries/Alert/NativeAlertManager.js +0 -2
- package/Libraries/Alert/RCTAlertManager.android.js +0 -2
- package/Libraries/Alert/RCTAlertManager.ios.js +0 -2
- package/Libraries/Animated/Animated.js +0 -2
- package/Libraries/Animated/AnimatedEvent.js +4 -3
- package/Libraries/Animated/AnimatedImplementation.js +0 -2
- package/Libraries/Animated/AnimatedMock.js +1 -8
- package/Libraries/Animated/AnimatedWeb.js +6 -3
- package/Libraries/Animated/NativeAnimatedHelper.js +9 -6
- package/Libraries/Animated/NativeAnimatedModule.js +0 -2
- package/Libraries/Animated/NativeAnimatedTurboModule.js +0 -2
- package/Libraries/Animated/animations/Animation.js +1 -0
- package/Libraries/Animated/animations/DecayAnimation.js +2 -0
- package/Libraries/Animated/animations/SpringAnimation.js +1 -0
- package/Libraries/Animated/animations/TimingAnimation.js +3 -0
- package/Libraries/Animated/components/AnimatedFlatList.js +0 -2
- package/Libraries/Animated/components/AnimatedImage.js +3 -5
- package/Libraries/Animated/components/AnimatedScrollView.js +3 -5
- package/Libraries/Animated/components/AnimatedSectionList.js +1 -3
- package/Libraries/Animated/components/AnimatedText.js +3 -5
- package/Libraries/Animated/components/AnimatedView.js +3 -3
- package/Libraries/Animated/createAnimatedComponent.js +48 -29
- package/Libraries/Animated/createAnimatedComponentInjection.js +48 -0
- package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +48 -0
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +21 -22
- package/Libraries/Animated/nodes/AnimatedProps.js +0 -1
- package/Libraries/Animated/nodes/AnimatedValue.js +24 -5
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -0
- package/Libraries/Animated/useAnimatedProps.js +211 -0
- package/Libraries/AppState/AppState.js +116 -132
- package/Libraries/AppState/NativeAppState.js +0 -2
- package/Libraries/BatchedBridge/MessageQueue.js +19 -14
- package/Libraries/BatchedBridge/NativeModules.js +5 -1
- package/Libraries/Blob/BlobManager.js +0 -2
- package/Libraries/Blob/FileReader.js +1 -3
- package/Libraries/Blob/NativeBlobModule.js +0 -2
- package/Libraries/Blob/NativeFileReaderModule.js +0 -2
- package/Libraries/Blob/RCTBlobManager.h +2 -1
- package/Libraries/Blob/RCTBlobManager.mm +10 -12
- package/Libraries/Blob/RCTBlobPlugins.mm +4 -3
- package/Libraries/Blob/RCTFileReaderModule.mm +3 -9
- package/Libraries/Blob/React-RCTBlob.podspec +3 -3
- package/Libraries/Blob/URL.js +17 -19
- package/Libraries/BugReporting/BugReporting.js +2 -2
- package/Libraries/BugReporting/getReactData.js +2 -2
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +350 -0
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +4 -2
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +0 -2
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +35 -0
- package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.ios.js +26 -0
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +22 -21
- package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +0 -2
- package/Libraries/Components/AppleTV/TVFocusGuideView.js +24 -1
- package/Libraries/Components/Button.js +42 -15
- package/Libraries/Components/Clipboard/Clipboard.js +0 -2
- package/Libraries/Components/Clipboard/NativeClipboard.js +0 -2
- package/Libraries/Components/DatePicker/DatePickerIOS.android.js +4 -5
- package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +48 -9
- package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +1 -2
- package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +0 -2
- package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +0 -2
- package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +0 -2
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +0 -2
- package/Libraries/Components/Keyboard/Keyboard.js +52 -57
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +17 -22
- package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +0 -2
- package/Libraries/Components/MaskedView/MaskedViewIOS.ios.js +3 -3
- package/Libraries/Components/Pressable/Pressable.js +22 -8
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +18 -17
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +15 -13
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +0 -2
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +4 -5
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +2 -5
- package/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +0 -2
- package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +2 -12
- package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +9 -3
- package/Libraries/Components/RefreshControl/RefreshControl.js +7 -26
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +2 -3
- package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +0 -2
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +1 -1
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +9 -26
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +31 -45
- package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +12 -26
- package/Libraries/Components/ScrollView/ScrollView.js +786 -232
- package/Libraries/Components/ScrollView/ScrollViewContext.js +3 -3
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +75 -21
- package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +5 -12
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +256 -242
- package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +13 -5
- package/Libraries/Components/ScrollView/processDecelerationRate.js +0 -2
- package/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js +0 -2
- package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js +4 -5
- package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js +17 -11
- package/Libraries/Components/Slider/Slider.js +20 -9
- package/Libraries/Components/Slider/SliderNativeComponent.js +0 -2
- package/Libraries/Components/Sound/NativeSoundManager.js +0 -2
- package/Libraries/Components/Sound/SoundManager.js +0 -1
- package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +0 -2
- package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +0 -2
- package/Libraries/Components/StatusBar/StatusBar.js +10 -21
- package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +0 -2
- package/Libraries/Components/Switch/Switch.js +102 -122
- package/Libraries/Components/Switch/SwitchNativeComponent.js +0 -2
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +14 -20
- package/Libraries/Components/TextInput/AndroidTextInputViewConfig.js +7 -5
- package/Libraries/Components/TextInput/InputAccessoryView.js +6 -8
- package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +0 -2
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +6 -5
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -16
- package/Libraries/Components/TextInput/{RCTSinglelineTextInputViewConfig.js → RCTTextInputViewConfig.js} +3 -5
- package/Libraries/Components/TextInput/TextInput.js +289 -227
- package/Libraries/Components/TextInput/TextInputNativeCommands.js +0 -2
- package/Libraries/Components/TextInput/TextInputState.js +1 -3
- package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +0 -2
- package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +0 -1
- package/Libraries/Components/Touchable/BoundingDimensions.js +1 -2
- package/Libraries/Components/Touchable/PooledClass.js +1 -2
- package/Libraries/Components/Touchable/Position.js +1 -2
- package/Libraries/Components/Touchable/Touchable.js +30 -59
- package/Libraries/Components/Touchable/TouchableBounce.js +0 -2
- package/Libraries/Components/Touchable/TouchableHighlight.js +23 -7
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +16 -5
- package/Libraries/Components/Touchable/TouchableOpacity.js +19 -8
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +13 -4
- package/Libraries/Components/Touchable/ensurePositiveDelayProps.js +1 -2
- package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +0 -2
- package/Libraries/Components/UnimplementedViews/UnimplementedView.js +2 -3
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +133 -68
- package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -2
- package/Libraries/Components/View/ReactNativeViewViewConfig.js +13 -11
- package/Libraries/Components/View/View.js +2 -4
- package/Libraries/Components/View/ViewAccessibility.js +3 -0
- package/Libraries/Components/View/ViewNativeComponent.js +17 -62
- package/Libraries/Core/Devtools/getDevServer.js +0 -2
- package/Libraries/Core/Devtools/parseErrorStack.js +0 -9
- package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
- package/Libraries/Core/ExceptionsManager.js +48 -40
- package/Libraries/Core/ExtendedError.js +19 -0
- package/Libraries/Core/InitializeCore.js +1 -0
- package/Libraries/Core/NativeExceptionsManager.js +0 -2
- package/Libraries/Core/ReactFiberErrorDialog.js +44 -34
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/ReactNativeVersionCheck.js +0 -2
- package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +0 -2
- package/Libraries/Core/Timers/JSTimers.js +41 -58
- package/Libraries/Core/Timers/NativeTiming.js +0 -2
- package/Libraries/Core/Timers/immediateShim.js +67 -0
- package/Libraries/Core/Timers/queueMicrotask.js +41 -0
- package/Libraries/Core/polyfillPromise.js +1 -1
- package/Libraries/Core/setUpDeveloperTools.js +53 -58
- package/Libraries/Core/setUpReactDevTools.js +18 -1
- package/Libraries/Core/setUpReactRefresh.js +3 -1
- package/Libraries/Core/setUpRegeneratorRuntime.js +25 -8
- package/Libraries/Core/setUpTimers.js +64 -5
- package/Libraries/Core/setUpXHR.js +4 -4
- package/Libraries/DeprecatedPropTypes/DeprecatedImagePropType.android.js +131 -0
- package/Libraries/DeprecatedPropTypes/{DeprecatedImagePropType.js → DeprecatedImagePropType.ios.js} +0 -0
- package/Libraries/DeprecatedPropTypes/DeprecatedTextInputPropTypes.js +5 -5
- package/Libraries/DeprecatedPropTypes/DeprecatedViewAccessibility.js +2 -0
- package/Libraries/EventEmitter/NativeEventEmitter.js +100 -47
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +9 -70
- package/Libraries/EventEmitter/RCTEventEmitter.js +5 -1
- package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +0 -2
- package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +31 -8
- package/Libraries/FBLazyVector/BUCK +5 -1
- package/Libraries/FBLazyVector/FBLazyVector.podspec +2 -2
- package/Libraries/HeapCapture/HeapCapture.js +0 -2
- package/Libraries/HeapCapture/NativeJSCHeapCapture.js +0 -2
- package/Libraries/Image/AssetSourceResolver.js +8 -16
- package/Libraries/Image/AssetUtils.js +48 -0
- package/Libraries/Image/Image.android.js +43 -132
- package/Libraries/Image/Image.ios.js +58 -29
- package/Libraries/Image/ImageAnalyticsTagContext.js +4 -2
- package/Libraries/Image/ImageBackground.js +2 -2
- package/Libraries/Image/ImageInjection.js +28 -0
- package/Libraries/Image/ImagePickerIOS.js +0 -2
- package/Libraries/Image/ImageSource.js +57 -14
- package/Libraries/Image/ImageViewNativeComponent.js +70 -27
- package/Libraries/Image/NativeImageEditor.js +0 -2
- package/Libraries/Image/NativeImageLoaderAndroid.js +0 -2
- package/Libraries/Image/NativeImageLoaderIOS.js +6 -2
- package/Libraries/Image/NativeImagePickerIOS.js +0 -2
- package/Libraries/Image/NativeImageStoreAndroid.js +0 -2
- package/Libraries/Image/NativeImageStoreIOS.js +0 -2
- package/Libraries/Image/RCTAnimatedImage.m +6 -3
- package/Libraries/Image/RCTGIFImageDecoder.mm +6 -0
- package/Libraries/Image/RCTImageBlurUtils.m +17 -11
- package/Libraries/Image/RCTImageEditingManager.mm +4 -4
- package/Libraries/Image/RCTImageLoader.h +2 -2
- package/Libraries/Image/RCTImageLoader.mm +31 -30
- package/Libraries/Image/RCTImageLoaderWithAttributionProtocol.h +0 -5
- package/Libraries/Image/RCTImagePlugins.mm +4 -3
- package/Libraries/Image/RCTImageStoreManager.mm +5 -5
- package/Libraries/Image/RCTImageURLLoaderWithAttribution.h +1 -0
- package/Libraries/Image/RCTLocalAssetImageLoader.mm +5 -0
- package/Libraries/Image/React-RCTImage.podspec +3 -3
- package/Libraries/Image/TextInlineImageNativeComponent.js +84 -2
- package/Libraries/Image/nativeImageSource.js +0 -2
- package/Libraries/Image/resolveAssetSource.js +2 -1
- package/Libraries/Inspector/ElementProperties.js +1 -1
- package/Libraries/Inspector/Inspector.js +13 -4
- package/Libraries/Inspector/InspectorPanel.js +1 -1
- package/Libraries/Interaction/FrameRateLogger.js +0 -2
- package/Libraries/Interaction/InteractionManager.js +7 -6
- package/Libraries/Interaction/InteractionMixin.js +1 -2
- package/Libraries/Interaction/PanResponder.js +1 -1
- package/Libraries/LayoutAnimation/LayoutAnimation.js +53 -17
- package/Libraries/Linking/Linking.js +19 -10
- package/Libraries/Linking/NativeIntentAndroid.js +0 -2
- package/Libraries/Linking/NativeLinkingManager.js +0 -2
- package/Libraries/LinkingIOS/RCTLinkingPlugins.mm +4 -3
- package/Libraries/LinkingIOS/React-RCTLinking.podspec +3 -3
- package/Libraries/Lists/CellRenderMask.js +145 -0
- package/Libraries/Lists/FillRateHelper.js +1 -1
- package/Libraries/Lists/FlatList.js +80 -52
- package/Libraries/Lists/SectionList.js +20 -23
- package/Libraries/Lists/SectionListModern.js +249 -0
- package/Libraries/Lists/ViewabilityHelper.js +9 -9
- package/Libraries/Lists/VirtualizeUtils.js +18 -20
- package/Libraries/Lists/VirtualizedList.js +190 -132
- package/Libraries/Lists/VirtualizedListContext.js +3 -2
- package/Libraries/Lists/VirtualizedSectionList.js +247 -209
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +6 -6
- package/Libraries/LogBox/Data/LogBoxData.js +21 -19
- package/Libraries/LogBox/Data/LogBoxLog.js +0 -2
- package/Libraries/LogBox/Data/LogBoxSymbolication.js +0 -2
- package/Libraries/LogBox/Data/parseLogBoxLog.js +0 -2
- package/Libraries/LogBox/LogBox.js +114 -49
- package/Libraries/LogBox/LogBoxInspectorContainer.js +0 -2
- package/Libraries/LogBox/LogBoxNotificationContainer.js +0 -2
- package/Libraries/LogBox/UI/LogBoxButton.js +0 -2
- package/Libraries/LogBox/UI/LogBoxInspector.js +0 -2
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +0 -2
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +0 -2
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +0 -2
- package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +0 -2
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +0 -2
- package/Libraries/LogBox/UI/LogBoxInspectorSection.js +0 -2
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +4 -5
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +0 -2
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +4 -3
- package/Libraries/LogBox/UI/LogBoxMessage.js +0 -2
- package/Libraries/LogBox/UI/LogBoxNotification.js +3 -4
- package/Libraries/LogBox/UI/LogBoxStyle.js +0 -2
- package/Libraries/Modal/Modal.js +46 -21
- package/Libraries/{Components/Picker/PickerIOS.android.js → Modal/ModalInjection.js} +5 -4
- package/Libraries/Modal/NativeModalManager.js +0 -2
- package/Libraries/Modal/RCTModalHostViewNativeComponent.js +8 -4
- package/Libraries/NativeAnimation/RCTAnimationPlugins.mm +4 -3
- package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +7 -2
- package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.h +1 -1
- package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.m +1 -1
- package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.h +2 -1
- package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +31 -23
- package/Libraries/NativeAnimation/React-RCTAnimation.podspec +4 -4
- package/Libraries/NativeComponent/NativeComponentRegistry.js +157 -0
- package/Libraries/NativeComponent/ViewConfig.js +50 -0
- package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -2
- package/Libraries/NativeModules/specs/NativeDevMenu.js +0 -2
- package/Libraries/NativeModules/specs/NativeDevSettings.js +0 -2
- package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +0 -2
- package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +0 -2
- package/Libraries/NativeModules/specs/NativeLogBox.js +0 -2
- package/Libraries/NativeModules/specs/NativeRedBox.js +0 -2
- package/Libraries/NativeModules/specs/NativeSourceCode.js +0 -2
- package/Libraries/Network/NativeNetworkingAndroid.js +0 -2
- package/Libraries/Network/NativeNetworkingIOS.js +0 -2
- package/Libraries/Network/RCTDataRequestHandler.mm +6 -0
- package/Libraries/Network/RCTFileRequestHandler.mm +6 -0
- package/Libraries/Network/RCTHTTPRequestHandler.h +5 -0
- package/Libraries/Network/RCTHTTPRequestHandler.mm +27 -9
- package/Libraries/Network/RCTNetworkPlugins.mm +4 -3
- package/Libraries/Network/RCTNetworking.android.js +8 -4
- package/Libraries/Network/RCTNetworking.h +1 -1
- package/Libraries/Network/RCTNetworking.ios.js +63 -20
- package/Libraries/Network/RCTNetworking.mm +13 -3
- package/Libraries/Network/React-RCTNetwork.podspec +3 -3
- package/Libraries/Network/XMLHttpRequest.js +5 -3
- package/Libraries/Network/convertRequestBody.js +2 -1
- package/Libraries/NewAppScreen/components/Colors.js +0 -2
- package/Libraries/NewAppScreen/components/Header.js +1 -1
- package/Libraries/NewAppScreen/components/HermesBadge.js +7 -4
- package/Libraries/NewAppScreen/components/LearnMoreLinks.js +0 -1
- package/Libraries/NewAppScreen/index.js +0 -2
- package/Libraries/Performance/NativeJSCSamplingProfiler.js +0 -2
- package/Libraries/Performance/QuickPerformanceLogger.js +4 -4
- package/Libraries/Performance/Systrace.js +3 -5
- package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +4 -3
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +10 -5
- package/Libraries/Pressability/HoverState.js +0 -2
- package/Libraries/Pressability/Pressability.js +24 -22
- package/Libraries/Pressability/PressabilityDebug.js +9 -4
- package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +47 -0
- package/Libraries/Pressability/PressabilityTypes.js +18 -0
- package/Libraries/Pressability/usePressability.js +0 -2
- package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +3 -0
- package/Libraries/PushNotificationIOS/PushNotificationIOS.js +43 -4
- package/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +13 -0
- package/Libraries/PushNotificationIOS/RCTPushNotificationPlugins.mm +4 -3
- package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +3 -3
- package/Libraries/RCTRequired/BUCK +4 -1
- package/Libraries/RCTRequired/RCTRequired.podspec +2 -2
- package/Libraries/ReactNative/AppContainer.js +3 -25
- package/Libraries/ReactNative/AppRegistry.js +48 -7
- package/Libraries/ReactNative/DisplayMode.js +32 -0
- package/Libraries/ReactNative/DummyUIManager.js +9 -1
- package/Libraries/ReactNative/FabricUIManager.js +6 -5
- package/Libraries/ReactNative/HeadlessJsTaskError.js +0 -2
- package/Libraries/ReactNative/I18nManager.js +23 -9
- package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +0 -2
- package/Libraries/ReactNative/NativeI18nManager.js +1 -2
- package/Libraries/ReactNative/NativeUIManager.js +2 -3
- package/Libraries/ReactNative/PaperUIManager.js +69 -42
- package/Libraries/ReactNative/RootTag.js +6 -4
- package/Libraries/ReactNative/UIManager.js +7 -4
- package/Libraries/{Text/TextInjection.js → ReactNative/UIManagerInjection.js} +2 -6
- package/Libraries/ReactNative/UIManagerProperties.js +1 -0
- package/Libraries/ReactNative/getCachedComponentWithDebugName.js +32 -0
- package/Libraries/ReactNative/getNativeComponentAttributes.js +2 -1
- package/Libraries/ReactNative/renderApplication.js +24 -6
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +8 -4
- package/Libraries/Reliability/UserFlow.js +26 -4
- package/Libraries/Renderer/REVISION +1 -1
- package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +8933 -7603
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +5810 -4905
- package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +2893 -2551
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +2114 -1953
- package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +3309 -2815
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +2576 -2266
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +9064 -7879
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5675 -4840
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +2701 -2490
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +2279 -2138
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +3068 -2709
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +2574 -2282
- package/Libraries/Renderer/shims/ReactFabric.js +5 -3
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -0
- package/Libraries/Renderer/shims/ReactNative.js +3 -0
- package/Libraries/Renderer/shims/ReactNativeTypes.js +104 -63
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +8 -11
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +5 -3
- package/Libraries/Settings/NativeSettingsManager.js +0 -2
- package/Libraries/Settings/RCTSettingsManager.mm +2 -2
- package/Libraries/Settings/RCTSettingsPlugins.mm +4 -3
- package/Libraries/Settings/React-RCTSettings.podspec +3 -3
- package/Libraries/Settings/Settings.ios.js +4 -2
- package/Libraries/Share/NativeShareModule.js +0 -2
- package/Libraries/Share/Share.js +0 -2
- package/Libraries/Storage/AsyncStorage.js +68 -49
- package/Libraries/Storage/NativeAsyncLocalStorage.js +10 -9
- package/Libraries/Storage/NativeAsyncSQLiteDBStorage.js +10 -9
- package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +0 -2
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +16 -3
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +8 -3
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +2 -2
- package/Libraries/StyleSheet/Rect.js +0 -2
- package/Libraries/StyleSheet/StyleSheet.js +3 -5
- package/Libraries/StyleSheet/StyleSheetTypes.js +5 -0
- package/Libraries/StyleSheet/flattenStyle.js +5 -7
- package/Libraries/StyleSheet/normalizeColor.js +0 -2
- package/Libraries/StyleSheet/processColorArray.js +16 -6
- package/Libraries/StyleSheet/processTransform.js +6 -6
- package/Libraries/StyleSheet/splitLayoutProps.js +50 -48
- package/Libraries/SurfaceHostingComponent/RCTSurfaceHostingComponent.mm +1 -1
- package/Libraries/Text/React-RCTText.podspec +2 -2
- package/Libraries/Text/Text.js +187 -235
- package/Libraries/Text/TextAncestor.js +7 -1
- package/Libraries/Text/TextInput/Multiline/RCTUITextView.h +0 -2
- package/Libraries/Text/TextInput/Multiline/RCTUITextView.m +12 -2
- package/Libraries/Text/TextInput/RCTBaseTextInputView.m +8 -0
- package/Libraries/Text/TextNativeComponent.js +4 -3
- package/Libraries/Text/TextProps.js +6 -0
- package/Libraries/TurboModule/RCTExport.js +1 -1
- package/Libraries/TurboModule/TurboModuleRegistry.js +4 -27
- package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +2 -2
- package/Libraries/TypeSafety/RCTTypeSafety.podspec +3 -3
- package/Libraries/Types/CodegenTypes.js +2 -1
- package/Libraries/Types/CoreEventTypes.js +1 -3
- package/Libraries/{Components/Picker/PickerAndroid.ios.js → Types/RootTagTypes.js} +2 -3
- package/Libraries/UTFSequence.js +1 -1
- package/Libraries/Utilities/Appearance.js +22 -8
- package/Libraries/Utilities/BackHandler.android.js +0 -2
- package/Libraries/Utilities/DebugEnvironment.js +1 -3
- package/Libraries/Utilities/DevSettings.js +51 -56
- package/Libraries/Utilities/DeviceInfo.js +0 -2
- package/Libraries/Utilities/Dimensions.js +21 -20
- package/Libraries/Utilities/FeatureDetection.js +31 -0
- package/Libraries/Utilities/GlobalPerformanceLogger.js +0 -2
- package/Libraries/Utilities/HMRClient.js +15 -10
- package/Libraries/Utilities/JSDevSupportModule.js +0 -2
- package/Libraries/Utilities/LoadingView.android.js +0 -2
- package/Libraries/Utilities/LoadingView.ios.js +0 -2
- package/Libraries/Utilities/MatrixMath.js +1 -1
- package/Libraries/Utilities/NativeAppearance.js +0 -2
- package/Libraries/Utilities/NativeDevLoadingView.js +0 -2
- package/Libraries/Utilities/NativeDevSplitBundleLoader.js +0 -2
- package/Libraries/Utilities/NativeDeviceInfo.js +1 -3
- package/Libraries/Utilities/NativeJSDevSupport.js +0 -2
- package/Libraries/Utilities/NativePlatformConstantsAndroid.js +0 -2
- package/Libraries/Utilities/NativePlatformConstantsIOS.js +0 -2
- package/Libraries/Utilities/PerformanceLoggerContext.js +11 -4
- package/Libraries/Utilities/Platform.android.js +6 -5
- package/Libraries/Utilities/Platform.ios.js +1 -2
- package/Libraries/Utilities/ReactNativeTestTools.js +12 -19
- package/Libraries/Utilities/codegenNativeCommands.js +1 -3
- package/Libraries/Utilities/codegenNativeComponent.js +0 -2
- package/Libraries/Utilities/createPerformanceLogger.js +0 -2
- package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +1 -0
- package/Libraries/Utilities/defineLazyObjectProperty.js +1 -1
- package/Libraries/Utilities/deprecatedPropType.js +3 -5
- package/Libraries/Utilities/stringifySafe.js +1 -3
- package/Libraries/Utilities/useColorScheme.js +4 -4
- package/Libraries/Utilities/useMergeRefs.js +44 -0
- package/Libraries/Utilities/useRefEffect.js +45 -0
- package/Libraries/Utilities/useWindowDimensions.js +9 -6
- package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +22 -28
- package/Libraries/Vibration/NativeVibration.js +0 -2
- package/Libraries/Vibration/RCTVibrationPlugins.mm +4 -3
- package/Libraries/Vibration/React-RCTVibration.podspec +3 -3
- package/Libraries/Vibration/Vibration.js +0 -2
- package/Libraries/WebSocket/NativeWebSocketModule.js +0 -2
- package/Libraries/WebSocket/WebSocket.js +27 -14
- package/Libraries/WebSocket/WebSocketInterceptor.js +6 -3
- package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -0
- package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +0 -2
- package/Libraries/promiseRejectionTrackingOptions.js +2 -2
- package/Libraries/vendor/emitter/EventEmitter.js +37 -4
- package/Libraries/vendor/emitter/EventSubscription.js +19 -0
- package/Libraries/vendor/emitter/_EmitterSubscription.js +16 -15
- package/Libraries/vendor/emitter/_EventEmitter.js +51 -41
- package/Libraries/vendor/emitter/_EventSubscription.js +11 -7
- package/Libraries/vendor/emitter/_EventSubscriptionVendor.js +21 -14
- package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +125 -0
- package/README.md +7 -1
- package/React/AccessibilityResources/en.lproj/Localizable.strings +1 -1
- package/React/Base/RCTAssert.h +35 -18
- package/React/Base/RCTAssert.m +52 -0
- package/React/Base/RCTBridge.h +15 -3
- package/React/Base/RCTBridge.m +14 -5
- package/React/Base/RCTBridgeModule.h +104 -0
- package/React/Base/RCTBundleManager.m +78 -0
- package/React/Base/RCTBundleURLProvider.h +35 -9
- package/React/Base/RCTBundleURLProvider.mm +87 -24
- package/React/Base/RCTCallableJSModules.m +47 -0
- package/React/Base/RCTConstants.h +9 -10
- package/React/Base/RCTConstants.m +18 -18
- package/React/Base/RCTConvert.m +31 -7
- package/React/Base/RCTCxxConvert.h +1 -1
- package/React/Base/RCTDefines.h +10 -0
- package/React/Base/RCTEventDispatcherProtocol.h +1 -2
- package/React/{Views/RCTPickerManager.h → Base/RCTInitializing.h} +4 -2
- package/React/Base/RCTJavaScriptLoader.mm +1 -0
- package/React/Base/RCTModuleData.h +20 -3
- package/React/Base/RCTModuleData.mm +121 -3
- package/React/Base/RCTModuleRegistry.m +48 -0
- package/React/Base/RCTMultipartStreamReader.m +0 -2
- package/React/Base/RCTRootView.h +10 -1
- package/React/Base/RCTRootView.m +15 -37
- package/React/Base/RCTTVRemoteHandler.h +5 -2
- package/React/Base/RCTTVRemoteHandler.m +173 -70
- package/React/Base/RCTTouchHandler.m +12 -1
- package/React/Base/RCTUtils.m +6 -2
- package/React/Base/RCTVersion.m +2 -2
- package/React/Base/RCTViewRegistry.m +45 -0
- package/React/Base/Surface/RCTSurfaceStage.h +6 -11
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h +1 -0
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +11 -1
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm +3 -0
- package/React/CoreModules/BUCK +6 -5
- package/React/CoreModules/CoreModulesPlugins.mm +4 -3
- package/React/CoreModules/RCTAccessibilityManager.mm +17 -10
- package/React/CoreModules/RCTActionSheetManager.mm +17 -13
- package/React/CoreModules/RCTAlertController.h +2 -1
- package/React/CoreModules/RCTAlertController.m +5 -0
- package/React/CoreModules/RCTAlertManager.mm +3 -0
- package/React/CoreModules/RCTAppearance.mm +3 -1
- package/React/CoreModules/RCTAsyncLocalStorage.mm +4 -0
- package/React/CoreModules/RCTDevLoadingView.mm +20 -23
- package/React/CoreModules/RCTDevMenu.h +0 -5
- package/React/CoreModules/RCTDevMenu.mm +43 -71
- package/React/CoreModules/RCTDevSettings.h +12 -2
- package/React/CoreModules/RCTDevSettings.mm +100 -56
- package/React/CoreModules/RCTDevSplitBundleLoader.mm +2 -7
- package/React/CoreModules/RCTDeviceInfo.mm +26 -22
- package/React/CoreModules/RCTEventDispatcher.h +2 -1
- package/React/CoreModules/RCTEventDispatcher.mm +18 -25
- package/React/CoreModules/RCTExceptionsManager.mm +7 -23
- package/React/CoreModules/RCTKeyboardObserver.mm +1 -1
- package/React/CoreModules/RCTLogBox.mm +15 -10
- package/React/CoreModules/RCTPerfMonitor.mm +11 -5
- package/React/CoreModules/RCTRedBox.mm +5 -8
- package/React/CoreModules/RCTSourceCode.mm +2 -1
- package/React/CoreModules/RCTTVNavigationEventEmitter.h +7 -0
- package/React/CoreModules/RCTTiming.h +2 -1
- package/React/CoreModules/RCTTiming.mm +1 -3
- package/React/CoreModules/RCTWebSocketExecutor.mm +6 -0
- package/React/CoreModules/React-CoreModules.podspec +3 -3
- package/React/CxxBridge/RCTCxxBridge.mm +99 -8
- package/React/CxxModule/RCTNativeModule.mm +3 -1
- package/React/DevSupport/RCTPackagerConnection.mm +12 -5
- package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +21 -0
- package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +12 -1
- package/React/FBReactNativeSpec/FBReactNativeSpec.podspec +3 -3
- package/React/Fabric/Mounting/ComponentViews/Image/RCTImageComponentView.h +2 -1
- package/React/Fabric/Mounting/ComponentViews/Image/RCTImageComponentView.mm +28 -36
- package/React/Fabric/Mounting/ComponentViews/InputAccessory/RCTInputAccessoryComponentView.mm +8 -7
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +13 -9
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropCoordinatorAdapter.mm +1 -3
- package/React/Fabric/Mounting/ComponentViews/Modal/RCTFabricModalHostViewController.mm +7 -0
- package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.h +3 -1
- package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +71 -26
- package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.h +0 -1
- package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.mm +0 -1
- package/React/Fabric/Mounting/ComponentViews/SafeAreaView/RCTSafeAreaViewComponentView.mm +34 -19
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.h +6 -0
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +24 -3
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +186 -99
- package/React/Fabric/Mounting/ComponentViews/Text/RCTAccessibilityElement.h +23 -0
- package/React/Fabric/Mounting/ComponentViews/Text/RCTAccessibilityElement.mm +22 -0
- package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentAccessibilityProvider.mm +14 -9
- package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm +118 -30
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +109 -28
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm +48 -2
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +143 -19
- package/React/Fabric/Mounting/RCTComponentViewFactory.h +10 -2
- package/React/Fabric/Mounting/RCTComponentViewFactory.mm +83 -46
- package/React/Fabric/Mounting/RCTComponentViewProtocol.h +3 -0
- package/React/Fabric/Mounting/RCTComponentViewRegistry.mm +1 -1
- package/React/Fabric/Mounting/RCTMountingManager.h +28 -1
- package/React/Fabric/Mounting/RCTMountingManager.mm +71 -3
- package/React/Fabric/Mounting/UIView+ComponentViewProtocol.h +4 -0
- package/React/Fabric/Mounting/UIView+ComponentViewProtocol.mm +30 -4
- package/React/Fabric/RCTConversions.h +20 -16
- package/React/Fabric/RCTScheduler.h +11 -16
- package/React/Fabric/RCTScheduler.mm +29 -46
- package/React/Fabric/RCTSurfacePresenter.h +8 -16
- package/React/Fabric/RCTSurfacePresenter.mm +62 -165
- package/React/Fabric/RCTSurfacePresenterBridgeAdapter.h +4 -2
- package/React/Fabric/RCTSurfacePresenterBridgeAdapter.mm +1 -1
- package/React/Fabric/RCTSurfaceRegistry.h +1 -1
- package/React/Fabric/RCTSurfaceTouchHandler.mm +39 -7
- package/React/Fabric/Surface/RCTFabricSurface.h +9 -6
- package/React/Fabric/Surface/RCTFabricSurface.mm +139 -127
- package/React/Modules/RCTEventEmitter.h +3 -2
- package/React/Modules/RCTEventEmitter.m +8 -11
- package/React/Modules/RCTI18nUtil.h +14 -6
- package/React/Modules/RCTI18nUtil.m +1 -47
- package/React/Modules/RCTTVMenuBridge.m +3 -0
- package/React/Modules/RCTUIManager.m +19 -9
- package/React/Profiler/RCTProfile.m +9 -8
- package/React/Profiler/RCTProfileTrampoline-arm.S +1 -1
- package/React/Profiler/RCTProfileTrampoline-arm64.S +2 -2
- package/React/React-RCTFabric.podspec +5 -5
- package/React/Tests/Text/RCTParagraphComponentViewTests.mm +72 -0
- package/React/Views/RCTBorderDrawing.m +28 -25
- package/React/Views/RCTComponentData.h +10 -1
- package/React/Views/RCTComponentData.m +23 -8
- package/React/Views/RCTConvert+CoreLocation.m +2 -2
- package/React/Views/RCTDatePickerManager.m +33 -0
- package/React/Views/RCTLayout.m +25 -21
- package/React/Views/RCTModalHostView.h +4 -1
- package/React/Views/RCTModalHostView.m +58 -31
- package/React/Views/RCTModalHostViewManager.m +4 -3
- package/React/Views/RCTShadowView+Layout.m +15 -12
- package/React/Views/RCTShadowView.m +3 -2
- package/React/Views/RCTTVFocusGuideView.m +1 -1
- package/React/Views/RCTView.h +7 -7
- package/React/Views/RCTView.m +31 -43
- package/React/Views/RCTViewManager.m +19 -2
- package/React/Views/RCTWeakViewHolder.h +19 -0
- package/React/Views/RefreshControl/RCTRefreshControl.m +22 -1
- package/React/Views/RefreshControl/RCTRefreshControlManager.m +1 -0
- package/React/Views/ScrollView/RCTScrollContentView.m +1 -1
- package/React/Views/ScrollView/RCTScrollView.h +1 -7
- package/React/Views/ScrollView/RCTScrollView.m +17 -63
- package/React/Views/ScrollView/RCTScrollViewManager.m +3 -0
- package/React/third-party.xcconfig +1 -1
- package/React-Core.podspec +4 -15
- package/React.podspec +2 -2
- package/ReactAndroid/Android-prebuilt.mk +82 -3
- package/ReactAndroid/README.md +2 -2
- package/ReactAndroid/build.gradle +145 -34
- package/ReactAndroid/gradle.properties +7 -5
- package/ReactAndroid/proguard-rules.pro +1 -7
- package/ReactAndroid/src/androidTest/buck-runner/BUCK +1 -0
- package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK +2 -1
- package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppInstrumentationTestCase.java +1 -1
- package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/BUCK +2 -1
- package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/ReactIdleDetectionUtil.java +1 -1
- package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/network/BUCK +1 -0
- package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/rule/BUCK +6 -5
- package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK +1 -1
- package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/TextInputTestCase.java +1 -2
- package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/core/BUCK +6 -5
- package/ReactAndroid/src/androidTest/js/BUCK +26 -0
- package/ReactAndroid/src/androidTest/js/TestBundle.js +0 -5
- package/ReactAndroid/src/androidTest/js/UIManagerTestModule.js +7 -6
- package/ReactAndroid/src/main/java/com/facebook/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/debug/debugoverlay/model/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/debug/holder/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/debug/tags/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/Android.mk +2 -2
- package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/BUCK +2 -0
- package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/Android.mk +4 -4
- package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/BUCK +2 -0
- package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/HermesExecutorFactory.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/RuntimeConfig.java +0 -6
- package/ReactAndroid/src/main/java/com/facebook/hermes/unicode/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/perftest/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/proguard/annotations/BUCK +3 -2
- package/ReactAndroid/src/main/java/com/facebook/proguard/annotations/proguard_annotations.pro +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/BUCK +4 -1
- package/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +8 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +10 -3
- package/ReactAndroid/src/main/java/com/facebook/react/ReactFragment.java +6 -2
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +145 -67
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +9 -1
- package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +8 -1
- package/ReactAndroid/src/main/java/com/facebook/react/{turbomodule/core/ReactPackageTurboModuleManagerDelegate.java → ReactPackageTurboModuleManagerDelegate.java} +18 -6
- package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +92 -42
- package/ReactAndroid/src/main/java/com/facebook/react/animated/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +10 -2
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java +66 -33
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BackgroundExecutor.java +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java +7 -5
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +7 -3
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java +4 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JSIModuleRegistry.java +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java +37 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModule.java +8 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java +26 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +46 -8
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContextBaseJavaModule.java +2 -3
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarkerConstants.java +13 -3
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/{ReactSoftException.java → ReactSoftExceptionLogger.java} +8 -3
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableNativeMap.java +52 -2
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/SoftAssertions.java +8 -7
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManager.java +37 -2
- package/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/build/ReactBuildConfig.java +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/BUCK +29 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/ReadableMapBuffer.java +347 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/ReadableMapBufferSoLoader.java +33 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/Android.mk +39 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/BUCK +34 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/OnLoad.cpp +15 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/ReadableMapBuffer.cpp +76 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/ReadableMapBuffer.h +51 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/network/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/config/BUCK +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +50 -38
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java +275 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevLoadingViewController.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +17 -60
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +176 -344
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.java +8 -8
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java +13 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxModule.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/PackagerStatusCheck.java +100 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/{ReactInstanceManagerDevHelper.java → ReactInstanceDevHelper.java} +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxHandler.java +2 -16
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/BundleLoadCallback.java +12 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java +6 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/ErrorType.java +23 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.java +10 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricComponents.java +4 -3
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java +17 -71
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +466 -616
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/StateWrapperImpl.java +37 -24
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/SurfaceHandler.java +50 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/SurfaceHandlerBinding.java +131 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +36 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.java +27 -7
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Android.mk +4 -5
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK +4 -5
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +300 -615
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h +34 -13
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/CoreComponentsRegistry.cpp +3 -6
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.cpp +22 -2
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.h +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/OnLoad.cpp +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/StateWrapperImpl.cpp +15 -28
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/StateWrapperImpl.h +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/SurfaceHandlerBinding.cpp +122 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/SurfaceHandlerBinding.h +68 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.java +406 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +271 -658
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +1008 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/DispatchIntCommandMountItem.java +9 -2
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/DispatchStringCommandMountItem.java +9 -2
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +39 -34
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/MountItem.java +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.java +21 -23
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SendAccessibilityEvent.java +11 -4
- package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/Android.mk +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.java +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/module/annotations/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/module/model/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.java +21 -4
- package/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.java +10 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appregistry/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appstate/AppStateModule.java +11 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appstate/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.java +35 -7
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/Android.mk +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/BlobCollector.cpp +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/bundleloader/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/camera/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/common/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactAndroidHWInputDeviceHelper.java +138 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java +5 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java +19 -13
- package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/AnimationsDebugModule.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/BUCK +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.java +19 -8
- package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/DialogModule.java +12 -4
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fabric/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.java +10 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/BUCK +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nManagerModule.java +12 -12
- package/ReactAndroid/src/main/java/com/facebook/react/modules/image/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/OkHttpClientProvider.java +1 -18
- package/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/share/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/sound/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/storage/AsyncStorageModule.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/storage/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/BUCK +4 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/toast/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/vibration/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/reactperflogger/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/reactperflogger/jni/Android.mk +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/reactperflogger/jni/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/BUCK +20 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/RuntimeSchedulerManager.java +39 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/Android.mk +34 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/BUCK +35 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/OnLoad.cpp +15 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.cpp +46 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.h +40 -0
- package/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +0 -4
- package/ReactAndroid/src/main/java/com/facebook/react/surface/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/touch/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java +11 -10
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManagerDelegate.java +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModulePerfLogger.java +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/TurboModule.java +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/Android.mk +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/BUCK +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp +115 -86
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.h +14 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK +6 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +15 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ComponentNameResolver.java +17 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ComponentNameResolverManager.java +41 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.java +7 -28
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FabricViewStateManager.java +5 -19
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java +27 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +4 -13
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java +10 -13
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/OnLayoutEvent.java +17 -6
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/PixelUtil.java +1 -6
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java +16 -10
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactClippingProhibitedView.java +26 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactClippingViewGroupHelper.java +5 -49
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.java +25 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactRoot.java +14 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewUtil.java +18 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/StateWrapper.java +24 -4
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.java +35 -7
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.java +101 -68
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +46 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementationProvider.java +35 -13
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.java +69 -17
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +55 -54
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstantsHelper.java +1 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +13 -6
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +15 -13
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerRegistry.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerResolver.java +26 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java +16 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/annotations/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/BlackHoleEventDispatcher.java +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ContentSizeChangeEvent.java +8 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +134 -6
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcher.java +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +8 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/LockFreeEventDispatcherImpl.java +236 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.java +10 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.java +32 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +80 -25
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java +66 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +7 -4
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/BUCK +21 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{BaseViewManagerDelegate.java → interfaces/BaseViewManagerDelegate.java} +0 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{BaseViewManagerInterface.java → interfaces/BaseViewManagerInterface.java} +0 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{FloatUtil.java → interfaces/FloatUtil.java} +0 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{Spacing.java → interfaces/Spacing.java} +0 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{ViewManagerDelegate.java → interfaces/ViewManagerDelegate.java} +0 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{ViewProps.java → interfaces/ViewProps.java} +10 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/Android.mk +37 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/BUCK +41 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/ComponentNameResolverManager.cpp +77 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/ComponentNameResolverManager.h +54 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/OnLoad.cpp +16 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/util/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/util/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/common/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/BUCK +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.java +17 -8
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerClosedEvent.java +9 -10
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerOpenedEvent.java +9 -10
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerSlideEvent.java +7 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerStateChangedEvent.java +7 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/BUCK +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/ImageLoadEvent.java +45 -19
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactCallerContextFactory.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.java +12 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.java +75 -26
- package/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/BUCK +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/ImageSource.java +17 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/BUCK +5 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java +13 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java +56 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/RequestCloseEvent.java +12 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ShowEvent.java +12 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/BUCK +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/BUCK +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerView.java +15 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +185 -28
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +9 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +110 -16
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.java +20 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +10 -5
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java +41 -14
- package/ReactAndroid/src/main/java/com/facebook/react/views/slider/BUCK +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderEvent.java +0 -5
- package/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java +22 -27
- package/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSlidingCompleteEvent.java +13 -16
- package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/BUCK +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/RefreshEvent.java +12 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/SwipeRefreshLayoutManager.java +14 -11
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/BUCK +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitch.java +13 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchEvent.java +9 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.java +6 -10
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/BUCK +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/CustomStyleSpan.java +6 -8
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java +6 -9
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactClickableSpan.java +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactFontManager.java +59 -44
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +16 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +11 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java +48 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTypefaceUtils.java +41 -59
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +213 -141
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +33 -51
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +596 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TypefaceStyle.java +72 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/BUCK +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactContentSizeChangedEvent.java +10 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +34 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.java +5 -6
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextChangedEvent.java +9 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputBlurEvent.java +9 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputEndEditingEvent.java +9 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputEvent.java +10 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputFocusEvent.java +14 -12
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputKeyPressEvent.java +15 -14
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +154 -70
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputSelectionEvent.java +10 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputSubmitEditingEvent.java +14 -12
- package/ReactAndroid/src/main/java/com/facebook/react/views/unimplementedview/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.java +1 -5
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +39 -8
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +63 -65
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ViewGroupClickEvent.java +11 -4
- package/ReactAndroid/src/main/java/com/facebook/systrace/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.java +13 -7
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +24 -2
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaProps.java +151 -0
- package/ReactAndroid/src/main/jni/first-party/fb/BUCK +4 -0
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/RefPtr.h +1 -1
- package/ReactAndroid/src/main/jni/first-party/fb/include/fb/StaticInitialized.h +1 -1
- package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +2 -7
- package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJTypesVanilla.h +8 -4
- package/ReactAndroid/src/main/jni/react/jni/Android.mk +5 -7
- package/ReactAndroid/src/main/jni/react/jni/BUCK +3 -2
- package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +56 -1
- package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +4 -0
- package/ReactAndroid/src/main/jni/react/jni/JReactSoftExceptionLogger.cpp +21 -0
- package/ReactAndroid/src/main/jni/react/jni/JReactSoftExceptionLogger.h +28 -0
- package/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp +1 -1
- package/ReactAndroid/src/main/jni/react/jni/JavaModuleWrapper.cpp +0 -94
- package/ReactAndroid/src/main/jni/react/jni/JavaModuleWrapper.h +0 -30
- package/ReactAndroid/src/main/jni/react/jni/ProxyExecutor.h +1 -0
- package/ReactAndroid/src/main/jni/react/jni/ReadableNativeMap.cpp +7 -6
- package/ReactAndroid/src/main/jni/third-party/boost/Android.mk +7 -2
- package/ReactAndroid/src/main/jni/third-party/boost/asm/arm/jump_arm_aapcs_elf_gas.S +86 -0
- package/ReactAndroid/src/main/jni/third-party/boost/asm/arm/make_arm_aapcs_elf_gas.S +79 -0
- package/ReactAndroid/src/main/jni/third-party/boost/asm/arm/ontop_arm_aapcs_elf_gas.S +91 -0
- package/ReactAndroid/src/main/jni/third-party/boost/asm/arm64/jump_arm64_aapcs_elf_gas.S +114 -0
- package/ReactAndroid/src/main/jni/third-party/boost/asm/arm64/make_arm64_aapcs_elf_gas.S +85 -0
- package/ReactAndroid/src/main/jni/third-party/boost/asm/arm64/ontop_arm64_aapcs_elf_gas.S +113 -0
- package/ReactAndroid/src/main/jni/third-party/boost/asm/x86/jump_i386_sysv_elf_gas.S +78 -0
- package/ReactAndroid/src/main/jni/third-party/boost/asm/x86/make_i386_sysv_elf_gas.S +106 -0
- package/ReactAndroid/src/main/jni/third-party/boost/asm/x86/ontop_i386_sysv_elf_gas.S +85 -0
- package/ReactAndroid/src/main/jni/third-party/boost/asm/x86_64/jump_x86_64_sysv_elf_gas.S +76 -0
- package/ReactAndroid/src/main/jni/third-party/boost/asm/x86_64/make_x86_64_sysv_elf_gas.S +81 -0
- package/ReactAndroid/src/main/jni/third-party/boost/asm/x86_64/ontop_x86_64_sysv_elf_gas.S +79 -0
- package/ReactAndroid/src/main/jni/third-party/fmt/Android.mk +15 -0
- package/ReactAndroid/src/main/jni/third-party/folly/Android.mk +36 -16
- package/ReactAndroid/src/main/jni/third-party/libevent/Android.mk +36 -0
- package/ReactAndroid/src/main/jni/third-party/libevent/evconfig-private.h +49 -0
- package/{third-party-podspecs/libevent.podspec → ReactAndroid/src/main/jni/third-party/libevent/event-config.h} +141 -366
- package/ReactAndroid/src/main/libraries/fbcore/src/main/java/com/facebook/common/logging/BUCK +1 -0
- package/ReactAndroid/src/main/libraries/fbjni/BUCK +2 -2
- package/ReactAndroid/src/main/libraries/fresco/fresco-react-native/BUCK +93 -14
- package/ReactAndroid/src/main/libraries/soloader/java/com/facebook/soloader/BUCK +5 -5
- package/ReactAndroid/src/main/res/devsupport/values/strings.xml +2 -1
- package/ReactAndroid/src/main/res/views/uimanager/values/strings_unlocalized.xml +4 -8
- package/ReactAndroid/src/main/third-party/android/androidx/BUCK +61 -0
- package/ReactAndroid/src/main/third-party/java/asm/BUCK +1 -0
- package/ReactAndroid/src/main/third-party/java/fest/BUCK +1 -0
- package/ReactAndroid/src/main/third-party/java/infer-annotations/BUCK +2 -2
- package/ReactAndroid/src/main/third-party/java/junit/BUCK +1 -0
- package/ReactAndroid/src/main/third-party/java/mockito/BUCK +1 -0
- package/ReactAndroid/src/main/third-party/java/mockito2/BUCK +1 -0
- package/ReactAndroid/src/main/third-party/java/okhttp/BUCK +29 -9
- package/ReactAndroid/src/main/third-party/java/okio/BUCK +15 -5
- package/ReactAndroid/src/main/third-party/java/robolectric/{4.4/BUCK → BUCK} +1 -0
- package/ReactAndroid/src/main/third-party/java/sqlite/BUCK +1 -0
- package/ReactAndroid/src/main/third-party/java/testing-support-lib/BUCK +0 -31
- package/ReactAndroid/src/main/third-party/kotlin/BUCK +91 -0
- package/ReactAndroid/src/test/java/com/facebook/common/logging/BUCK +1 -0
- package/ReactAndroid/src/test/java/com/facebook/react/RootViewTest.java +8 -3
- package/ReactAndroid/src/test/java/com/facebook/react/animated/NativeAnimatedNodeTraversalTest.java +1 -1
- package/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK +2 -1
- package/ReactAndroid/src/test/java/com/facebook/react/bridge/ReactTestHelper.java +1 -0
- package/ReactAndroid/src/test/java/com/facebook/react/devsupport/JSDebuggerWebSocketClientTest.java +3 -1
- package/ReactAndroid/src/test/java/com/facebook/react/modules/BUCK +1 -0
- package/ReactAndroid/src/test/java/com/facebook/react/modules/deviceinfo/DeviceInfoModuleTest.java +168 -0
- package/ReactAndroid/src/test/java/com/facebook/react/modules/dialog/DialogModuleTest.java +1 -1
- package/ReactAndroid/src/test/java/com/facebook/react/modules/network/NetworkingModuleTest.java +10 -10
- package/ReactAndroid/src/test/java/com/facebook/react/modules/timing/TimingModuleTest.java +1 -1
- package/ReactAndroid/src/test/java/com/facebook/react/uimanager/BaseViewManagerTest.java +32 -0
- package/ReactAndroid/src/test/java/com/facebook/react/uimanager/SimpleViewPropertyTest.java +8 -2
- package/ReactAndroid/src/test/java/com/facebook/react/views/image/ReactImagePropertyTest.java +8 -0
- package/ReactAndroid/src/test/java/com/facebook/react/views/textinput/ReactTextInputPropertyTest.java +4 -0
- package/ReactAndroid/src/test/java/org/mockito/configuration/BUCK +1 -0
- package/ReactCommon/React-Fabric.podspec +50 -15
- package/ReactCommon/ReactCommon.podspec +9 -4
- package/ReactCommon/better/Android.mk +1 -1
- package/ReactCommon/better/BUCK +2 -2
- package/ReactCommon/callinvoker/Android.mk +1 -1
- package/ReactCommon/callinvoker/BUCK +1 -1
- package/ReactCommon/callinvoker/React-callinvoker.podspec +3 -3
- package/ReactCommon/cxxreact/Android.mk +2 -1
- package/ReactCommon/cxxreact/BUCK +2 -4
- package/ReactCommon/cxxreact/CxxNativeModule.cpp +28 -0
- package/ReactCommon/cxxreact/CxxNativeModule.h +9 -0
- package/ReactCommon/cxxreact/Instance.cpp +33 -1
- package/ReactCommon/cxxreact/Instance.h +1 -0
- package/ReactCommon/cxxreact/JSBundleType.cpp +5 -0
- package/ReactCommon/cxxreact/JSBundleType.h +1 -0
- package/ReactCommon/cxxreact/JsArgumentHelpers-inl.h +3 -3
- package/ReactCommon/cxxreact/JsArgumentHelpers.h +2 -2
- package/ReactCommon/cxxreact/MethodCall.cpp +2 -2
- package/ReactCommon/cxxreact/ModuleRegistry.cpp +5 -0
- package/ReactCommon/cxxreact/NativeToJsBridge.cpp +0 -21
- package/ReactCommon/cxxreact/NativeToJsBridge.h +0 -6
- package/ReactCommon/cxxreact/React-cxxreact.podspec +6 -5
- package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
- package/ReactCommon/cxxreact/SystraceSection.h +2 -2
- package/ReactCommon/hermes/React-hermes.podspec +53 -0
- package/ReactCommon/hermes/executor/Android.mk +4 -4
- package/ReactCommon/hermes/inspector/Android.mk +1 -2
- package/ReactCommon/hermes/inspector/BUCK +8 -5
- package/ReactCommon/hermes/inspector/Inspector.cpp +2 -3
- package/ReactCommon/hermes/inspector/Inspector.h +6 -5
- package/ReactCommon/hermes/inspector/InspectorState.cpp +8 -6
- package/ReactCommon/hermes/inspector/chrome/Connection.cpp +115 -0
- package/ReactCommon/hermes/inspector/chrome/MessageTypes.cpp +215 -1
- package/ReactCommon/hermes/inspector/chrome/MessageTypes.h +115 -1
- package/ReactCommon/hermes/inspector/chrome/cli/main.cpp +6 -5
- package/ReactCommon/hermes/inspector/chrome/tests/ConnectionTests.cpp +144 -0
- package/ReactCommon/hermes/inspector/tools/message_types.txt +4 -0
- package/ReactCommon/hermes/inspector/tools/msggen/__tests__/CommandTest.js +1 -3
- package/ReactCommon/hermes/inspector/tools/msggen/__tests__/EventTest.js +1 -3
- package/ReactCommon/hermes/inspector/tools/msggen/__tests__/GraphTest.js +1 -3
- package/ReactCommon/hermes/inspector/tools/msggen/__tests__/HeaderWriterTest.js +1 -3
- package/ReactCommon/hermes/inspector/tools/msggen/__tests__/ImplementationWriterTest.js +1 -3
- package/ReactCommon/hermes/inspector/tools/msggen/__tests__/PropertyTest.js +1 -3
- package/ReactCommon/hermes/inspector/tools/msggen/__tests__/TypeTest.js +1 -3
- package/ReactCommon/hermes/inspector/tools/msggen/package.json +1 -1
- package/ReactCommon/hermes/inspector/tools/msggen/src/Command.js +0 -2
- package/ReactCommon/hermes/inspector/tools/msggen/src/Converters.js +0 -2
- package/ReactCommon/hermes/inspector/tools/msggen/src/Event.js +0 -2
- package/ReactCommon/hermes/inspector/tools/msggen/src/Graph.js +0 -2
- package/ReactCommon/hermes/inspector/tools/msggen/src/HeaderWriter.js +0 -2
- package/ReactCommon/hermes/inspector/tools/msggen/src/ImplementationWriter.js +0 -2
- package/ReactCommon/hermes/inspector/tools/msggen/src/Property.js +1 -2
- package/ReactCommon/hermes/inspector/tools/msggen/src/TestHelpers.js +1 -3
- package/ReactCommon/hermes/inspector/tools/msggen/src/Type.js +0 -2
- package/ReactCommon/hermes/inspector/tools/msggen/src/index.js +1 -3
- package/ReactCommon/hermes/inspector/tools/msggen/yarn.lock +2218 -1389
- package/ReactCommon/jsi/Android.mk +4 -4
- package/ReactCommon/jsi/BUCK +1 -5
- package/ReactCommon/jsi/JSCRuntime.cpp +7 -0
- package/ReactCommon/jsi/React-jsi.podspec +5 -5
- package/ReactCommon/jsi/jsi/CMakeLists.txt +1 -1
- package/ReactCommon/jsi/jsi/decorator.h +15 -0
- package/ReactCommon/jsi/jsi/instrumentation.h +13 -0
- package/ReactCommon/jsi/jsi/jsi.cpp +3 -0
- package/ReactCommon/jsi/jsi/jsi.h +32 -3
- package/ReactCommon/jsi/jsi/jsilib-posix.cpp +1 -11
- package/ReactCommon/jsi/jsi/test/testlib.cpp +1 -0
- package/ReactCommon/jsiexecutor/Android.mk +2 -2
- package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +4 -4
- package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +36 -3
- package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +2 -0
- package/ReactCommon/jsinspector/BUCK +2 -0
- package/ReactCommon/jsinspector/React-jsinspector.podspec +2 -2
- package/ReactCommon/libraries/fbcore/src/test/java/com/facebook/powermock/BUCK +2 -0
- package/ReactCommon/logger/Android.mk +23 -0
- package/ReactCommon/logger/BUCK +43 -0
- package/ReactCommon/logger/React-logger.podspec +40 -0
- package/ReactCommon/logger/react_native_log.cpp +52 -0
- package/ReactCommon/logger/react_native_log.h +33 -0
- package/ReactCommon/react/config/Android.mk +1 -1
- package/ReactCommon/react/config/BUCK +1 -1
- package/ReactCommon/react/debug/Android.mk +31 -0
- package/ReactCommon/react/debug/BUCK +69 -0
- package/ReactCommon/react/debug/flags.h +19 -0
- package/ReactCommon/react/debug/react_native_assert.cpp +45 -0
- package/ReactCommon/react/debug/react_native_assert.h +64 -0
- package/ReactCommon/react/nativemodule/core/Android.mk +3 -3
- package/ReactCommon/react/nativemodule/core/BUCK +4 -3
- package/ReactCommon/react/nativemodule/core/ReactCommon/LongLivedObject.cpp +1 -0
- package/ReactCommon/react/nativemodule/core/ReactCommon/LongLivedObject.h +3 -2
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.cpp +1 -1
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +2 -2
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +49 -8
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +11 -3
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +55 -1
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +119 -109
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.h +12 -8
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTBlockGuard.h +24 -0
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTBlockGuard.mm +28 -0
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModule.h +7 -15
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModule.mm +97 -48
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.h +0 -6
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm +147 -70
- package/ReactCommon/react/nativemodule/samples/BUCK +6 -6
- package/ReactCommon/react/nativemodule/samples/platform/android/Android.mk +2 -2
- package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +3 -0
- package/ReactCommon/react/nativemodule/samples/platform/android/SampleTurboModule.java +10 -0
- package/ReactCommon/react/nativemodule/samples/platform/ios/RCTNativeSampleTurboModuleSpec.h +1 -0
- package/ReactCommon/react/nativemodule/samples/platform/ios/RCTNativeSampleTurboModuleSpec.mm +11 -0
- package/ReactCommon/react/nativemodule/samples/platform/ios/RCTSampleTurboCxxModule.mm +12 -0
- package/ReactCommon/react/nativemodule/samples/platform/ios/RCTSampleTurboModule.mm +5 -3
- package/ReactCommon/react/nativemodule/samples/platform/ios/SampleTurboCxxModuleLegacyImpl.cpp +11 -0
- package/ReactCommon/react/nativemodule/samples/platform/ios/SampleTurboCxxModuleLegacyImpl.h +1 -0
- package/ReactCommon/react/renderer/animations/Android.mk +3 -2
- package/ReactCommon/react/renderer/animations/BUCK +5 -3
- package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +19 -130
- package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.h +1 -4
- package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +675 -391
- package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.h +75 -58
- package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +544 -0
- package/ReactCommon/react/renderer/attributedstring/Android.mk +4 -2
- package/ReactCommon/react/renderer/attributedstring/AttributedStringBox.cpp +28 -6
- package/ReactCommon/react/renderer/attributedstring/AttributedStringBox.h +2 -2
- package/ReactCommon/react/renderer/attributedstring/BUCK +9 -4
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +7 -2
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +2 -0
- package/ReactCommon/react/renderer/attributedstring/conversions.h +666 -308
- package/ReactCommon/react/renderer/attributedstring/primitives.h +16 -0
- package/ReactCommon/react/renderer/attributedstring/tests/AttributedStringBoxTest.cpp +105 -0
- package/ReactCommon/react/renderer/attributedstring/tests/AttributedStringTest.cpp +17 -20
- package/ReactCommon/react/renderer/attributedstring/tests/ParagraphAttributesTest.cpp +7 -12
- package/ReactCommon/react/renderer/attributedstring/tests/TextAttributesTest.cpp +13 -15
- package/ReactCommon/react/renderer/componentregistry/Android.mk +3 -2
- package/ReactCommon/react/renderer/componentregistry/BUCK +5 -4
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProvider.h +5 -4
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProviderRegistry.cpp +2 -2
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h +1 -0
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +20 -70
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.h +4 -1
- package/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.cpp +73 -0
- package/ReactCommon/react/renderer/{components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerShadowNode.cpp → componentregistry/componentNameByReactViewName.h} +7 -2
- package/ReactCommon/react/renderer/componentregistry/native/Android.mk +29 -0
- package/ReactCommon/react/renderer/componentregistry/native/BUCK +58 -0
- package/ReactCommon/react/renderer/componentregistry/native/NativeComponentRegistryBinding.cpp +68 -0
- package/ReactCommon/react/renderer/componentregistry/native/NativeComponentRegistryBinding.h +61 -0
- package/ReactCommon/react/renderer/components/image/Android.mk +5 -3
- package/ReactCommon/react/renderer/components/image/BUCK +7 -3
- package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +3 -2
- package/ReactCommon/react/renderer/components/image/ImageProps.cpp +28 -9
- package/ReactCommon/react/renderer/components/image/ImageProps.h +5 -1
- package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +5 -5
- package/ReactCommon/react/renderer/components/image/ImageState.h +9 -1
- package/ReactCommon/react/renderer/components/image/conversions.h +29 -18
- package/ReactCommon/react/renderer/components/inputaccessory/BUCK +4 -3
- package/ReactCommon/react/renderer/components/inputaccessory/InputAccessoryComponentDescriptor.h +5 -3
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/BUCK +3 -3
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.h +1 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +17 -4
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.cpp +6 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.h +2 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.h +1 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mm +74 -15
- package/ReactCommon/react/renderer/components/modal/Android.mk +4 -3
- package/ReactCommon/react/renderer/components/modal/BUCK +6 -2
- package/ReactCommon/react/renderer/components/modal/ModalHostViewComponentDescriptor.h +5 -3
- package/ReactCommon/react/renderer/components/modal/ModalHostViewState.h +9 -2
- package/ReactCommon/react/renderer/components/progressbar/Android.mk +3 -3
- package/ReactCommon/react/renderer/components/progressbar/BUCK +4 -3
- package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarComponentDescriptor.h +4 -2
- package/{ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni → ReactCommon}/react/renderer/components/rncore/ComponentDescriptors.h +1 -0
- package/ReactCommon/react/renderer/components/rncore/ComponentDescriptors.h.bak +32 -0
- package/{ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni → ReactCommon}/react/renderer/components/rncore/EventEmitters.cpp +1 -0
- package/ReactCommon/react/renderer/components/rncore/EventEmitters.cpp.bak +149 -0
- package/{ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni → ReactCommon}/react/renderer/components/rncore/EventEmitters.h +8 -0
- package/ReactCommon/react/renderer/components/rncore/EventEmitters.h.bak +237 -0
- package/ReactCommon/react/renderer/components/rncore/Props.cpp +218 -0
- package/ReactCommon/react/renderer/components/rncore/Props.cpp.bak +218 -0
- package/{ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni → ReactCommon}/react/renderer/components/rncore/Props.h +74 -27
- package/ReactCommon/react/renderer/components/rncore/Props.h.bak +576 -0
- package/ReactCommon/react/renderer/components/rncore/RCTComponentViewHelpers.h +273 -0
- package/ReactCommon/react/renderer/components/rncore/RCTComponentViewHelpers.h.bak +273 -0
- package/{ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni → ReactCommon}/react/renderer/components/rncore/ShadowNodes.cpp +1 -0
- package/ReactCommon/react/renderer/components/rncore/ShadowNodes.cpp.bak +29 -0
- package/{ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni → ReactCommon}/react/renderer/components/rncore/ShadowNodes.h +9 -0
- package/ReactCommon/react/renderer/components/rncore/ShadowNodes.h.bak +126 -0
- package/ReactCommon/react/renderer/components/root/Android.mk +4 -3
- package/ReactCommon/react/renderer/components/root/BUCK +4 -3
- package/ReactCommon/react/renderer/components/root/RootProps.cpp +12 -2
- package/ReactCommon/react/renderer/components/root/RootProps.h +6 -1
- package/ReactCommon/react/renderer/components/root/RootShadowNode.cpp +7 -1
- package/ReactCommon/react/renderer/components/root/RootShadowNode.h +2 -0
- package/ReactCommon/react/renderer/components/root/tests/RootShadowNodeTest.cpp +35 -3
- package/ReactCommon/react/renderer/components/safeareaview/BUCK +4 -3
- package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewComponentDescriptor.h +5 -3
- package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewShadowNode.h +7 -0
- package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewState.h +1 -3
- package/ReactCommon/react/renderer/components/scrollview/Android.mk +5 -3
- package/ReactCommon/react/renderer/components/scrollview/BUCK +6 -3
- package/ReactCommon/react/renderer/components/scrollview/RCTComponentViewHelpers.h +38 -0
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.cpp +59 -6
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.h +10 -5
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.cpp +23 -2
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.h +1 -0
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewState.cpp +1 -1
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewState.h +15 -4
- package/ReactCommon/react/renderer/components/scrollview/conversions.h +5 -0
- package/ReactCommon/react/renderer/components/slider/Android.mk +4 -3
- package/ReactCommon/react/renderer/components/slider/BUCK +5 -3
- package/ReactCommon/react/renderer/components/slider/SliderComponentDescriptor.h +4 -2
- package/ReactCommon/react/renderer/components/slider/SliderShadowNode.h +9 -8
- package/ReactCommon/react/renderer/components/slider/SliderState.h +8 -0
- package/ReactCommon/react/renderer/components/slider/platform/ios/SliderMeasurementsManager.cpp +3 -1
- package/ReactCommon/react/renderer/components/switch/Android.mk +3 -3
- package/ReactCommon/react/renderer/components/switch/BUCK +3 -3
- package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchComponentDescriptor.h +4 -2
- package/ReactCommon/react/renderer/components/text/Android.mk +5 -3
- package/ReactCommon/react/renderer/components/text/BUCK +10 -4
- package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +32 -0
- package/ReactCommon/react/renderer/components/text/BaseTextProps.h +5 -1
- package/ReactCommon/react/renderer/components/text/BaseTextShadowNode.cpp +2 -3
- package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +6 -9
- package/ReactCommon/react/renderer/components/text/ParagraphProps.cpp +15 -6
- package/ReactCommon/react/renderer/components/text/ParagraphProps.h +5 -1
- package/ReactCommon/react/renderer/components/text/ParagraphShadowNode.cpp +13 -19
- package/ReactCommon/react/renderer/components/text/ParagraphShadowNode.h +7 -6
- package/ReactCommon/react/renderer/components/text/ParagraphState.cpp +4 -0
- package/ReactCommon/react/renderer/components/text/ParagraphState.h +8 -3
- package/ReactCommon/react/renderer/components/text/RawTextProps.cpp +3 -2
- package/ReactCommon/react/renderer/components/text/RawTextProps.h +5 -1
- package/ReactCommon/react/renderer/components/text/RawTextShadowNode.h +36 -2
- package/ReactCommon/react/renderer/components/text/TextProps.cpp +6 -3
- package/ReactCommon/react/renderer/components/text/TextProps.h +5 -1
- package/ReactCommon/react/renderer/components/text/TextShadowNode.h +23 -0
- package/ReactCommon/react/renderer/components/text/conversions.h +22 -0
- package/ReactCommon/react/renderer/components/text/tests/ParagraphLocalDataTest.cpp +8 -5
- package/ReactCommon/react/renderer/components/textinput/Android.mk +5 -3
- package/ReactCommon/react/renderer/components/textinput/BUCK +8 -4
- package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h +8 -5
- package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp +58 -91
- package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h +10 -6
- package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp +13 -18
- package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.h +5 -5
- package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputState.cpp +0 -3
- package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputState.h +5 -8
- package/ReactCommon/react/renderer/components/textinput/iostextinput/BUCK +5 -4
- package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputComponentDescriptor.h +4 -4
- package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputProps.cpp +46 -22
- package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputProps.h +6 -5
- package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputShadowNode.cpp +3 -2
- package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputShadowNode.h +7 -6
- package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputState.h +2 -0
- package/ReactCommon/react/renderer/components/textinput/iostextinput/conversions.h +19 -7
- package/ReactCommon/react/renderer/components/textinput/iostextinput/primitives.h +6 -0
- package/ReactCommon/react/renderer/components/textinput/iostextinput/propsConversions.h +63 -2
- package/ReactCommon/react/renderer/components/unimplementedview/Android.mk +4 -3
- package/ReactCommon/react/renderer/components/unimplementedview/BUCK +4 -3
- package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.cpp +8 -3
- package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.h +5 -2
- package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewProps.h +1 -0
- package/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h +28 -0
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +24 -1
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +4 -1
- package/ReactCommon/react/renderer/components/view/Android.mk +5 -3
- package/ReactCommon/react/renderer/components/view/BUCK +5 -3
- package/ReactCommon/react/renderer/components/view/Touch.h +32 -1
- package/ReactCommon/react/renderer/components/view/TouchEvent.h +0 -2
- package/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +31 -9
- package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +2 -1
- package/ReactCommon/react/renderer/components/view/ViewComponentDescriptor.h +10 -1
- package/ReactCommon/react/renderer/components/view/ViewEventEmitter.cpp +62 -20
- package/ReactCommon/react/renderer/components/view/ViewEventEmitter.h +28 -4
- package/ReactCommon/react/renderer/components/view/ViewProps.cpp +62 -14
- package/ReactCommon/react/renderer/components/view/ViewProps.h +7 -1
- package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +5 -7
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +4 -17
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +177 -87
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h +4 -9
- package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +3 -2
- package/ReactCommon/react/renderer/components/view/YogaStylableProps.h +2 -0
- package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +95 -24
- package/ReactCommon/react/renderer/components/view/conversions.h +96 -50
- package/ReactCommon/react/renderer/components/view/primitives.h +5 -4
- package/ReactCommon/react/renderer/components/view/propsConversions.h +163 -28
- package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +15 -5
- package/ReactCommon/react/renderer/core/Android.mk +4 -2
- package/ReactCommon/react/renderer/core/BUCK +7 -4
- package/ReactCommon/react/renderer/core/BatchedEventQueue.cpp +5 -21
- package/ReactCommon/react/renderer/core/BatchedEventQueue.h +4 -8
- package/ReactCommon/react/renderer/core/ComponentDescriptor.h +6 -3
- package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +23 -22
- package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +10 -7
- package/ReactCommon/react/renderer/core/ConcreteState.h +16 -49
- package/ReactCommon/react/renderer/core/Constants.cpp +24 -0
- package/ReactCommon/react/renderer/{components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerComponentDescriptor.h → core/Constants.h} +8 -6
- package/ReactCommon/react/renderer/core/DynamicPropsUtilities.cpp +35 -0
- package/ReactCommon/react/renderer/{components/picker/iospicker/PickerState.h → core/DynamicPropsUtilities.h} +5 -4
- package/ReactCommon/react/renderer/core/EventDispatcher.cpp +9 -15
- package/ReactCommon/react/renderer/core/EventDispatcher.h +5 -10
- package/ReactCommon/react/renderer/core/EventEmitter.cpp +22 -12
- package/ReactCommon/react/renderer/core/EventEmitter.h +7 -2
- package/ReactCommon/react/renderer/core/EventPipe.h +2 -0
- package/ReactCommon/react/renderer/core/EventPriority.h +1 -1
- package/ReactCommon/react/renderer/core/EventQueue.cpp +39 -40
- package/ReactCommon/react/renderer/core/EventQueue.h +15 -9
- package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +82 -0
- package/ReactCommon/react/renderer/core/EventQueueProcessor.h +36 -0
- package/ReactCommon/react/renderer/core/EventTarget.cpp +4 -2
- package/ReactCommon/react/renderer/core/LayoutConstraints.h +9 -2
- package/ReactCommon/react/renderer/core/LayoutMetrics.cpp +65 -0
- package/ReactCommon/react/renderer/core/LayoutMetrics.h +38 -4
- package/ReactCommon/react/renderer/core/LayoutPrimitives.h +14 -6
- package/ReactCommon/react/renderer/core/LayoutableShadowNode.cpp +1 -8
- package/ReactCommon/react/renderer/core/LayoutableShadowNode.h +2 -22
- package/ReactCommon/react/renderer/core/Props.cpp +10 -2
- package/ReactCommon/react/renderer/core/Props.h +5 -1
- package/ReactCommon/react/renderer/core/PropsParserContext.h +28 -0
- package/ReactCommon/react/renderer/core/RawEvent.cpp +4 -2
- package/ReactCommon/react/renderer/core/RawEvent.h +40 -3
- package/ReactCommon/react/renderer/core/RawProps.cpp +5 -3
- package/ReactCommon/react/renderer/core/RawProps.h +3 -1
- package/ReactCommon/react/renderer/core/RawPropsKey.cpp +10 -7
- package/ReactCommon/react/renderer/core/RawPropsKeyMap.cpp +8 -6
- package/ReactCommon/react/renderer/core/RawPropsParser.cpp +10 -7
- package/ReactCommon/react/renderer/core/RawPropsParser.h +13 -4
- package/ReactCommon/react/renderer/core/RawValue.h +9 -7
- package/ReactCommon/react/renderer/core/ReactEventPriority.h +43 -0
- package/ReactCommon/react/renderer/core/ReactPrimitives.h +34 -0
- package/ReactCommon/react/renderer/core/Sealable.cpp +4 -3
- package/ReactCommon/react/renderer/core/Sealable.h +5 -1
- package/ReactCommon/react/renderer/core/ShadowNode.cpp +45 -13
- package/ReactCommon/react/renderer/core/ShadowNode.h +14 -4
- package/ReactCommon/react/renderer/core/ShadowNodeFamily.cpp +2 -1
- package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +1 -1
- package/ReactCommon/react/renderer/core/ShadowNodeTraits.h +31 -6
- package/ReactCommon/react/renderer/core/State.h +4 -3
- package/ReactCommon/react/renderer/core/StateData.h +3 -0
- package/ReactCommon/react/renderer/core/StateUpdate.h +0 -2
- package/ReactCommon/react/renderer/core/UnbatchedEventQueue.cpp +0 -2
- package/ReactCommon/react/renderer/core/conversions.h +11 -0
- package/ReactCommon/react/renderer/core/propsConversions.h +19 -9
- package/ReactCommon/react/renderer/core/tests/ComponentDescriptorTest.cpp +16 -4
- package/ReactCommon/react/renderer/core/tests/ConcreteShadowNodeTest.cpp +1 -1
- package/ReactCommon/react/renderer/core/tests/DynamicPropsUtilitiesTest.cpp +66 -0
- package/ReactCommon/react/renderer/core/tests/EventQueueProcessorTest.cpp +134 -0
- package/ReactCommon/react/renderer/core/tests/LayoutableShadowNodeTest.cpp +21 -12
- package/ReactCommon/react/renderer/core/tests/RawPropsTest.cpp +99 -30
- package/ReactCommon/react/renderer/core/tests/TestComponent.h +11 -7
- package/ReactCommon/react/renderer/core/tests/traitCastTest.cpp +31 -0
- package/ReactCommon/react/renderer/debug/Android.mk +1 -1
- package/ReactCommon/react/renderer/debug/BUCK +4 -6
- package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +11 -25
- package/ReactCommon/react/renderer/debug/SystraceSection.h +2 -2
- package/ReactCommon/react/renderer/debug/flags.h +50 -0
- package/ReactCommon/react/renderer/element/BUCK +3 -3
- package/ReactCommon/react/renderer/element/ComponentBuilder.cpp +4 -3
- package/ReactCommon/react/renderer/graphics/Android.mk +6 -2
- package/ReactCommon/react/renderer/graphics/BUCK +16 -4
- package/ReactCommon/react/renderer/graphics/React-graphics.podspec +5 -4
- package/ReactCommon/react/renderer/graphics/Rect.h +4 -3
- package/ReactCommon/react/renderer/graphics/RectangleCorners.h +2 -2
- package/ReactCommon/react/renderer/graphics/RectangleEdges.h +16 -13
- package/ReactCommon/react/renderer/graphics/Transform.cpp +4 -3
- package/ReactCommon/react/renderer/graphics/conversions.h +102 -44
- package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/PlatformColorParser.h +67 -0
- package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.cpp +19 -10
- package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.h +2 -0
- package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/PlatformColorParser.h +29 -0
- package/ReactCommon/react/renderer/graphics/platform/ios/Color.cpp +19 -10
- package/ReactCommon/react/renderer/graphics/platform/ios/Color.h +44 -1
- package/ReactCommon/react/renderer/graphics/platform/ios/PlatformColorParser.h +34 -0
- package/ReactCommon/react/renderer/graphics/platform/ios/RCTPlatformColorUtils.h +12 -0
- package/ReactCommon/react/renderer/graphics/platform/ios/RCTPlatformColorUtils.mm +206 -0
- package/ReactCommon/react/renderer/graphics/rounding.h +9 -6
- package/ReactCommon/react/renderer/graphics/tests/TransformTest.cpp +1 -0
- package/ReactCommon/react/renderer/imagemanager/Android.mk +3 -2
- package/ReactCommon/react/renderer/imagemanager/BUCK +5 -4
- package/ReactCommon/react/renderer/imagemanager/ImageRequest.h +1 -3
- package/ReactCommon/react/renderer/imagemanager/ImageResponseObserverCoordinator.cpp +5 -4
- package/ReactCommon/react/renderer/imagemanager/ImageTelemetry.cpp +0 -6
- package/ReactCommon/react/renderer/imagemanager/ImageTelemetry.h +5 -10
- package/ReactCommon/react/renderer/imagemanager/platform/ios/ImageRequest.cpp +6 -1
- package/ReactCommon/react/renderer/imagemanager/platform/ios/RCTImageManager.mm +0 -1
- package/ReactCommon/react/renderer/imagemanager/platform/ios/RCTImagePrimitivesConversions.h +8 -6
- package/ReactCommon/react/renderer/imagemanager/platform/ios/RCTSyncImageManager.mm +1 -1
- package/ReactCommon/react/renderer/leakchecker/Android.mk +29 -0
- package/ReactCommon/react/renderer/{components/picker/iospicker → leakchecker}/BUCK +8 -12
- package/ReactCommon/react/renderer/leakchecker/LeakChecker.cpp +60 -0
- package/ReactCommon/react/renderer/leakchecker/LeakChecker.h +39 -0
- package/ReactCommon/react/renderer/leakchecker/WeakFamilyRegistry.cpp +37 -0
- package/ReactCommon/react/renderer/leakchecker/WeakFamilyRegistry.h +39 -0
- package/ReactCommon/react/renderer/mapbuffer/Android.mk +9 -6
- package/ReactCommon/react/renderer/mapbuffer/BUCK +16 -6
- package/ReactCommon/react/renderer/mapbuffer/MapBuffer.cpp +133 -2
- package/ReactCommon/react/renderer/mapbuffer/MapBuffer.h +41 -3
- package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +226 -0
- package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.h +94 -0
- package/ReactCommon/react/renderer/mapbuffer/primitives.h +91 -0
- package/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp +144 -2
- package/ReactCommon/react/renderer/mounting/Android.mk +4 -2
- package/ReactCommon/react/renderer/mounting/BUCK +6 -3
- package/ReactCommon/react/renderer/mounting/Differentiator.cpp +809 -998
- package/ReactCommon/react/renderer/mounting/Differentiator.h +38 -12
- package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +17 -15
- package/ReactCommon/react/renderer/mounting/MountingCoordinator.h +7 -11
- package/ReactCommon/react/renderer/mounting/MountingTransaction.h +2 -2
- package/ReactCommon/react/renderer/mounting/MountingTransactionMetadata.h +1 -1
- package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +70 -27
- package/ReactCommon/react/renderer/mounting/ShadowTree.h +38 -15
- package/ReactCommon/react/renderer/mounting/ShadowTreeDelegate.h +11 -0
- package/ReactCommon/react/renderer/mounting/ShadowTreeRegistry.cpp +3 -1
- package/ReactCommon/react/renderer/mounting/ShadowTreeRevision.h +1 -1
- package/ReactCommon/react/renderer/mounting/ShadowView.cpp +19 -1
- package/ReactCommon/react/renderer/mounting/ShadowView.h +46 -2
- package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +19 -5
- package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +10 -4
- package/ReactCommon/react/renderer/mounting/StubView.cpp +38 -4
- package/ReactCommon/react/renderer/mounting/StubView.h +6 -0
- package/ReactCommon/react/renderer/mounting/StubViewTree.cpp +219 -91
- package/ReactCommon/react/renderer/mounting/StubViewTree.h +15 -3
- package/ReactCommon/react/renderer/mounting/TelemetryController.cpp +1 -1
- package/ReactCommon/react/renderer/mounting/TelemetryController.h +1 -1
- package/ReactCommon/react/renderer/mounting/stubs.cpp +49 -11
- package/ReactCommon/react/renderer/mounting/stubs.h +13 -1
- package/ReactCommon/react/renderer/mounting/tests/MountingTest.cpp +99 -96
- package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +242 -40
- package/ReactCommon/react/renderer/mounting/tests/StackingContextTest.cpp +787 -0
- package/ReactCommon/react/renderer/mounting/tests/StateReconciliationTest.cpp +34 -23
- package/ReactCommon/react/renderer/runtimescheduler/Android.mk +27 -0
- package/ReactCommon/react/renderer/runtimescheduler/BUCK +77 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +116 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +103 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +170 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +42 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerClock.h +22 -0
- package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriority.h +64 -0
- package/ReactCommon/react/renderer/runtimescheduler/Task.cpp +35 -0
- package/ReactCommon/react/renderer/runtimescheduler/Task.h +46 -0
- package/ReactCommon/react/renderer/runtimescheduler/primitives.h +39 -0
- package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +472 -0
- package/ReactCommon/react/renderer/runtimescheduler/tests/SchedulerPriorityTest.cpp +46 -0
- package/ReactCommon/react/renderer/runtimescheduler/tests/StubClock.h +41 -0
- package/ReactCommon/react/renderer/runtimescheduler/tests/StubQueue.h +38 -0
- package/ReactCommon/react/renderer/scheduler/Android.mk +4 -2
- package/ReactCommon/react/renderer/scheduler/AsynchronousEventBeat.cpp +16 -13
- package/ReactCommon/react/renderer/scheduler/AsynchronousEventBeat.h +4 -4
- package/ReactCommon/react/renderer/scheduler/BUCK +5 -3
- package/ReactCommon/react/renderer/{components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerShadowNode.cpp → scheduler/InspectorData.h} +10 -3
- package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +108 -148
- package/ReactCommon/react/renderer/scheduler/Scheduler.h +37 -39
- package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +16 -10
- package/ReactCommon/react/renderer/scheduler/SchedulerToolbox.h +10 -0
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +317 -0
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +209 -0
- package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +104 -0
- package/ReactCommon/react/renderer/scheduler/SurfaceManager.h +67 -0
- package/ReactCommon/react/renderer/scheduler/SynchronousEventBeat.cpp +14 -5
- package/ReactCommon/react/renderer/scheduler/SynchronousEventBeat.h +4 -1
- package/ReactCommon/react/renderer/telemetry/Android.mk +31 -0
- package/ReactCommon/react/renderer/telemetry/BUCK +84 -0
- package/ReactCommon/react/renderer/{mounting → telemetry}/SurfaceTelemetry.cpp +5 -0
- package/ReactCommon/react/renderer/{mounting → telemetry}/SurfaceTelemetry.h +3 -1
- package/ReactCommon/react/renderer/telemetry/TransactionTelemetry.cpp +163 -0
- package/ReactCommon/react/renderer/{mounting → telemetry}/TransactionTelemetry.h +11 -0
- package/ReactCommon/react/renderer/telemetry/tests/TransactionTelemetryTest.cpp +176 -0
- package/ReactCommon/react/renderer/templateprocessor/Android.mk +1 -1
- package/ReactCommon/react/renderer/templateprocessor/BUCK +3 -3
- package/ReactCommon/react/renderer/templateprocessor/UITemplateProcessor.cpp +5 -5
- package/ReactCommon/react/renderer/templateprocessor/tests/UITemplateProcessorTest.cpp +5 -5
- package/ReactCommon/react/renderer/textlayoutmanager/Android.mk +5 -2
- package/ReactCommon/react/renderer/textlayoutmanager/BUCK +5 -3
- package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.cpp +12 -9
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +145 -83
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.h +17 -1
- package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.cpp +16 -2
- package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.h +10 -7
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.mm +16 -11
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTTextLayoutManager.mm +14 -11
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/TextLayoutManager.mm +25 -3
- package/ReactCommon/react/renderer/{components/picker → timeline}/BUCK +20 -34
- package/ReactCommon/react/renderer/timeline/Timeline.cpp +120 -0
- package/ReactCommon/react/renderer/timeline/Timeline.h +63 -0
- package/ReactCommon/react/renderer/timeline/TimelineController.cpp +77 -0
- package/ReactCommon/react/renderer/timeline/TimelineController.h +80 -0
- package/ReactCommon/react/renderer/timeline/TimelineFrame.cpp +25 -0
- package/ReactCommon/react/renderer/timeline/TimelineFrame.h +46 -0
- package/ReactCommon/react/renderer/timeline/TimelineHandler.cpp +97 -0
- package/ReactCommon/react/renderer/timeline/TimelineHandler.h +80 -0
- package/ReactCommon/react/renderer/timeline/TimelineSnapshot.cpp +30 -0
- package/ReactCommon/react/renderer/timeline/TimelineSnapshot.h +36 -0
- package/ReactCommon/react/renderer/uimanager/Android.mk +4 -2
- package/ReactCommon/react/renderer/uimanager/BUCK +5 -3
- package/ReactCommon/react/renderer/uimanager/LayoutAnimationStatusDelegate.h +2 -4
- package/ReactCommon/react/renderer/uimanager/UIManager.cpp +172 -81
- package/ReactCommon/react/renderer/uimanager/UIManager.h +63 -29
- package/ReactCommon/react/renderer/uimanager/UIManagerAnimationDelegate.h +2 -4
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +298 -135
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +35 -6
- package/ReactCommon/react/renderer/uimanager/UIManagerCommitHook.h +43 -0
- package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +23 -13
- package/ReactCommon/react/renderer/uimanager/primitives.h +57 -9
- package/ReactCommon/react/test_utils/BUCK +54 -0
- package/ReactCommon/react/{renderer/mounting/tests → test_utils}/Entropy.h +4 -0
- package/ReactCommon/react/test_utils/MockClock.h +29 -0
- package/ReactCommon/react/{renderer/mounting/tests → test_utils}/shadowTreeGeneration.h +64 -7
- package/ReactCommon/react/utils/Android.mk +8 -3
- package/ReactCommon/react/utils/BUCK +9 -2
- package/ReactCommon/react/utils/CalledOnceMovableOnlyFunction.h +6 -4
- package/ReactCommon/react/utils/ContextContainer.h +14 -7
- package/ReactCommon/react/utils/LayoutManager.h +150 -0
- package/ReactCommon/react/utils/ManagedObjectWrapper.h +3 -1
- package/ReactCommon/react/utils/RunLoopObserver.cpp +5 -4
- package/ReactCommon/reactperflogger/Android.mk +1 -1
- package/ReactCommon/reactperflogger/BUCK +1 -1
- package/ReactCommon/reactperflogger/React-perflogger.podspec +3 -3
- package/ReactCommon/runtimeexecutor/Android.mk +1 -1
- package/ReactCommon/runtimeexecutor/BUCK +2 -2
- package/ReactCommon/runtimeexecutor/React-runtimeexecutor.podspec +3 -3
- package/ReactCommon/runtimeexecutor/ReactCommon/RuntimeExecutor.h +14 -2
- package/ReactCommon/yoga/Yoga.podspec +2 -2
- package/ReactCommon/yoga/yoga/BitUtils.h +3 -2
- package/ReactCommon/yoga/yoga/CompactValue.h +2 -2
- package/ReactCommon/yoga/yoga/Utils.cpp +1 -1
- package/ReactCommon/yoga/yoga/YGNode.cpp +111 -110
- package/ReactCommon/yoga/yoga/YGNode.h +11 -0
- package/ReactCommon/yoga/yoga/YGNodePrint.cpp +7 -4
- package/ReactCommon/yoga/yoga/Yoga-internal.h +4 -5
- package/ReactCommon/yoga/yoga/Yoga.cpp +116 -161
- package/ReactCommon/yoga/yoga/Yoga.h +1 -1
- 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
- package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.aar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.aar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.aar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.aar.sha512 +1 -0
- package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.module +273 -0
- package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.module.md5 +1 -0
- package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.module.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.module.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.module.sha512 +1 -0
- 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
- package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.pom.md5 +1 -0
- package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.pom.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.pom.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.66.3-0/react-native-0.66.3-0.pom.sha512 +1 -0
- package/android/com/facebook/react/react-native/maven-metadata.xml +4 -3
- package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
- package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
- package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -0
- package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -0
- package/flow/HermesInternalType.js +114 -0
- package/flow/global.js +23 -0
- package/flow-typed/npm/promise_v8.x.x.js +3 -3
- package/flow-typed/npm/react-test-renderer_v16.x.x.js +79 -0
- package/index.js +107 -50
- package/interface.js +0 -8
- package/jest/mockNativeComponent.js +36 -0
- package/jest/preprocessor.js +3 -2
- package/jest/renderer.js +3 -9
- package/jest/setup.js +35 -39
- package/local-cli/cli.js +0 -0
- package/package.json +62 -22
- package/react.gradle +32 -17
- package/readme.diff +305 -0
- package/scripts/find-node.sh +8 -6
- package/scripts/generate-specs-cli.js +20 -13
- package/scripts/generate-specs.sh +31 -23
- package/scripts/ios-configure-glog.sh +1 -1
- package/scripts/launchPackager.bat +12 -12
- package/scripts/react-native-xcode.sh +12 -2
- package/scripts/react_native_pods.rb +75 -126
- package/template/_flowconfig +3 -4
- package/template/_gitignore +1 -0
- package/template/android/app/build.gradle +12 -7
- package/template/android/app/src/main/res/values/styles.xml +0 -1
- package/template/android/build.gradle +7 -7
- package/template/android/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/template/android/gradle.properties +1 -1
- package/template/ios/HelloWorld/AppDelegate.m +5 -6
- package/template/ios/Podfile +3 -4
- package/template/package.json +4 -4
- package/third-party-podspecs/DoubleConversion.podspec +3 -1
- package/third-party-podspecs/RCT-Folly.podspec +30 -11
- package/third-party-podspecs/boost.podspec +23 -0
- package/third-party-podspecs/fmt.podspec +24 -0
- package/third-party-podspecs/glog.podspec +1 -1
- package/Libraries/.npmignore +0 -1
- package/Libraries/BUCK +0 -36
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.android.js +0 -158
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js +0 -273
- package/Libraries/Components/Picker/AndroidDialogPickerNativeComponent.js +0 -82
- package/Libraries/Components/Picker/AndroidDialogPickerViewConfig.js +0 -30
- package/Libraries/Components/Picker/AndroidDropdownPickerNativeComponent.js +0 -69
- package/Libraries/Components/Picker/Picker.js +0 -165
- package/Libraries/Components/Picker/PickerAndroid.android.js +0 -145
- package/Libraries/Components/Picker/PickerIOS.ios.js +0 -164
- package/Libraries/Components/Picker/RCTPickerNativeComponent.js +0 -72
- package/Libraries/Components/Picker/RCTPickerViewConfig.js +0 -41
- package/Libraries/Components/ScrollResponder.js +0 -796
- package/Libraries/Components/StatusBar/StatusBarIOS.js +0 -21
- package/Libraries/Image/ImageViewViewConfig.js +0 -68
- package/Libraries/StyleSheet/StyleSheetValidation.js +0 -100
- package/Libraries/Utilities/registerGeneratedViewConfig.js +0 -83
- package/Libraries/promiseRejectionIsError.js +0 -24
- package/React/Base/RCTJSInvokerModule.h +0 -18
- package/React/Fabric/Mounting/ComponentViews/Picker/RCTPickerComponentView.h +0 -19
- package/React/Fabric/Mounting/ComponentViews/Picker/RCTPickerComponentView.mm +0 -205
- package/React/Views/RCTPicker.h +0 -23
- package/React/Views/RCTPicker.m +0 -121
- package/React/Views/RCTPickerManager.m +0 -68
- package/ReactAndroid/.npmignore +0 -3
- package/ReactAndroid/build.gradle.orig +0 -479
- package/ReactAndroid/release.gradle +0 -142
- package/ReactAndroid/src/androidTest/assets/AndroidTestBundle.js +0 -107023
- package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ReactPickerTestCase.java +0 -196
- package/ReactAndroid/src/androidTest/js/PickerAndroidTestModule.js +0 -89
- package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.java +0 -98
- package/ReactAndroid/src/main/java/com/facebook/react/ReactFragmentActivity.java +0 -15
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +0 -82
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/BatchMountItem.java +0 -117
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/CreateMountItem.java +0 -68
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/InsertMountItem.java +0 -47
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/RemoveDeleteMultiMountItem.java +0 -90
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/UpdateEventEmitterMountItem.java +0 -33
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/UpdateLayoutMountItem.java +0 -90
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/UpdatePaddingMountItem.java +0 -53
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/UpdatePropsMountItem.java +0 -42
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/UpdateStateMountItem.java +0 -43
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/ActivityIndicatorViewManagerDelegate.java +0 -42
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/ActivityIndicatorViewManagerInterface.java +0 -20
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDialogPickerManagerDelegate.java +0 -48
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDialogPickerManagerInterface.java +0 -23
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDrawerLayoutManagerDelegate.java +0 -61
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDrawerLayoutManagerInterface.java +0 -24
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDropdownPickerManagerDelegate.java +0 -48
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidDropdownPickerManagerInterface.java +0 -22
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidProgressBarManagerDelegate.java +0 -51
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidProgressBarManagerInterface.java +0 -23
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwipeRefreshLayoutManagerDelegate.java +0 -58
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwipeRefreshLayoutManagerInterface.java +0 -24
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwitchManagerDelegate.java +0 -67
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidSwitchManagerInterface.java +0 -26
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/MaskedViewManagerDelegate.java +0 -26
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/MaskedViewManagerInterface.java +0 -16
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/ModalHostViewManagerDelegate.java +0 -54
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/ModalHostViewManagerInterface.java +0 -25
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/ProgressViewManagerDelegate.java +0 -49
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/ProgressViewManagerInterface.java +0 -23
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SafeAreaViewManagerDelegate.java +0 -32
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SafeAreaViewManagerInterface.java +0 -16
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SegmentedControlManagerDelegate.java +0 -52
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SegmentedControlManagerInterface.java +0 -24
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SliderManagerDelegate.java +0 -73
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SliderManagerInterface.java +0 -31
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/UnimplementedNativeViewManagerDelegate.java +0 -32
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/UnimplementedNativeViewManagerInterface.java +0 -17
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni/Android.mk +0 -29
- package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/jni/react/renderer/components/rncore/Props.cpp +0 -191
- package/ReactAndroid/src/main/java/com/facebook/react/views/picker/BUCK +0 -29
- package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactDialogPickerManager.java +0 -51
- package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactDropdownPickerManager.java +0 -50
- package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactPicker.java +0 -196
- package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactPickerAdapter.java +0 -95
- package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactPickerItem.java +0 -43
- package/ReactAndroid/src/main/java/com/facebook/react/views/picker/ReactPickerManager.java +0 -97
- package/ReactAndroid/src/main/java/com/facebook/react/views/picker/events/PickerItemSelectEvent.java +0 -40
- package/ReactAndroid/src/main/jni/first-party/fbjni/.gitignore +0 -2
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libc++_shared.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libfb.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libfbjni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libfolly_futures.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libfolly_json.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libglog.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libglog_init.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libhermes-executor-common-debug.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libhermes-executor-common-release.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libhermes-executor-debug.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libhermes-executor-release.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libhermes-inspector.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libjscexecutor.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libjsijniprofiler.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libjsinspector.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libreact_codegen_reactandroidspec.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libreact_nativemodule_core.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libreactnativeblob.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libreactnativejni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libreactnativeutilsjni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libreactperfloggerjni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libturbomodulejsijni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/arm64-v8a/libyoga.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libc++_shared.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libfb.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libfbjni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libfolly_futures.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libfolly_json.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libglog.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libglog_init.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libhermes-executor-common-debug.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libhermes-executor-common-release.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libhermes-executor-debug.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libhermes-executor-release.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libhermes-inspector.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libjscexecutor.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libjsijniprofiler.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libjsinspector.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libreact_codegen_reactandroidspec.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libreact_nativemodule_core.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libreactnativeblob.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libreactnativejni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libreactnativeutilsjni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libreactperfloggerjni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libturbomodulejsijni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/libyoga.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libc++_shared.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libfb.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libfbjni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libfolly_futures.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libfolly_json.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libglog.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libglog_init.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libhermes-executor-common-debug.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libhermes-executor-common-release.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libhermes-executor-debug.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libhermes-executor-release.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libhermes-inspector.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libjscexecutor.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libjsijniprofiler.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libjsinspector.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libreact_codegen_reactandroidspec.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libreact_nativemodule_core.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libreactnativeblob.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libreactnativejni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libreactnativeutilsjni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libreactperfloggerjni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libturbomodulejsijni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86/libyoga.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libc++_shared.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libfb.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libfbjni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libfolly_futures.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libfolly_json.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libglog.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libglog_init.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libhermes-executor-common-debug.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libhermes-executor-common-release.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libhermes-executor-debug.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libhermes-executor-release.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libhermes-inspector.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libjscexecutor.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libjsijniprofiler.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libjsinspector.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libreact_codegen_reactandroidspec.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libreact_nativemodule_core.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libreactnativeblob.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libreactnativejni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libreactnativeutilsjni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libreactperfloggerjni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libturbomodulejsijni.so +0 -0
- package/ReactAndroid/src/main/jni/prebuilt/lib/x86_64/libyoga.so +0 -0
- package/ReactAndroid/src/main/third-party/android/support/v4/BUCK +0 -685
- package/ReactAndroid/src/main/third-party/android/support/v7/appcompat/BUCK +0 -62
- package/ReactAndroid/src/main/third-party/android/support/v7/appcompat/aar-unpacker.py +0 -20
- package/ReactCommon/cxxreact/re_worker_requirements +0 -6
- package/ReactCommon/hermes/inspector/tools/msggen/.gitignore +0 -3
- package/ReactCommon/react/renderer/components/picker/Android.mk +0 -37
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerEventEmitter.cpp +0 -23
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerEventEmitter.h +0 -27
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerProps.cpp +0 -28
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerProps.h +0 -77
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerShadowNode.h +0 -29
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerComponentDescriptor.h +0 -21
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerEventEmitter.cpp +0 -23
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerEventEmitter.h +0 -27
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerProps.cpp +0 -28
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerProps.h +0 -77
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerShadowNode.h +0 -29
- package/ReactCommon/react/renderer/components/picker/iospicker/PickerComponentDescriptor.h +0 -26
- package/ReactCommon/react/renderer/components/picker/iospicker/PickerEventEmitter.cpp +0 -23
- package/ReactCommon/react/renderer/components/picker/iospicker/PickerEventEmitter.h +0 -28
- package/ReactCommon/react/renderer/components/picker/iospicker/PickerProps.cpp +0 -46
- package/ReactCommon/react/renderer/components/picker/iospicker/PickerProps.h +0 -36
- package/ReactCommon/react/renderer/components/picker/iospicker/PickerShadowNode.cpp +0 -16
- package/ReactCommon/react/renderer/components/picker/iospicker/PickerShadowNode.h +0 -33
- package/ReactCommon/react/renderer/components/picker/iospicker/conversions.h +0 -47
- package/ReactCommon/react/renderer/components/picker/iospicker/primitives.h +0 -29
- package/ReactCommon/react/renderer/core/ConcreteStateTeller.h +0 -152
- package/ReactCommon/react/renderer/mounting/TransactionTelemetry.cpp +0 -142
- package/ReactCommon/react/renderer/mounting/tests/TransactionTelemetryTest.cpp +0 -125
- package/android/com/facebook/react/react-native/0.64.2-2/react-native-0.64.2-2-sources.jar +0 -0
- package/android/com/facebook/react/react-native/0.64.2-2/react-native-0.64.2-2-sources.jar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.64.2-2/react-native-0.64.2-2-sources.jar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.64.2-2/react-native-0.64.2-2.aar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.64.2-2/react-native-0.64.2-2.aar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.64.2-2/react-native-0.64.2-2.pom.md5 +0 -1
- package/android/com/facebook/react/react-native/0.64.2-2/react-native-0.64.2-2.pom.sha1 +0 -1
- package/template/ios/HelloWorld.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
160
|
-
|
|
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
|
|
168
|
-
ShadowViewNodePair const
|
|
169
|
-
return lhs
|
|
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(
|
|
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
|
|
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::
|
|
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
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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::
|
|
262
|
+
ShadowViewNodePair::NonOwningList sliceChildShadowNodeViewPairsV2(
|
|
237
263
|
ShadowNode const &shadowNode,
|
|
238
|
-
|
|
239
|
-
|
|
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(
|
|
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
|
|
256
|
-
child
|
|
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
|
|
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::
|
|
277
|
-
"`ShadowViewNodePair::
|
|
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::
|
|
290
|
-
"`ShadowViewNodePair::
|
|
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::
|
|
297
|
-
ShadowViewNodePair::
|
|
343
|
+
ShadowViewNodePair::NonOwningList &&oldChildPairs,
|
|
344
|
+
ShadowViewNodePair::NonOwningList &&newChildPairs);
|
|
298
345
|
|
|
299
346
|
struct OrderedMutationInstructionContainer {
|
|
300
|
-
ShadowViewMutation::List
|
|
301
|
-
ShadowViewMutation::List
|
|
302
|
-
ShadowViewMutation::List
|
|
303
|
-
ShadowViewMutation::List
|
|
304
|
-
ShadowViewMutation::List
|
|
305
|
-
ShadowViewMutation::List
|
|
306
|
-
ShadowViewMutation::List
|
|
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 &
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 &
|
|
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::
|
|
370
|
-
|
|
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]
|
|
381
|
-
strTreeChildPairs.append(treeChildren[k]
|
|
382
|
-
strTreeChildPairs.append(treeChildren[k]
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
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
|
-
|
|
835
|
+
mutationContainer.updateMutations.push_back(
|
|
488
836
|
ShadowViewMutation::UpdateMutation(
|
|
489
|
-
|
|
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
|
-
|
|
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
|
-
|
|
502
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
//
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
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
|
-
|
|
928
|
+
mutationContainer,
|
|
554
929
|
(reparentMode == ReparentMode::Flatten
|
|
555
930
|
? parentShadowView
|
|
556
931
|
: newTreeNodePair.shadowView),
|
|
557
|
-
|
|
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
|
-
|
|
950
|
+
mutationContainer,
|
|
604
951
|
(reparentMode == ReparentMode::Flatten
|
|
605
952
|
? parentShadowView
|
|
606
953
|
: newTreeNodePair.shadowView),
|
|
607
|
-
|
|
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
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
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
|
-
|
|
1001
|
+
mutationContainer.createMutations.push_back(
|
|
684
1002
|
ShadowViewMutation::CreateMutation(newTreeNodePair.shadowView));
|
|
685
1003
|
} else {
|
|
686
|
-
|
|
687
|
-
ShadowViewMutation::DeleteMutation(
|
|
1004
|
+
mutationContainer.deleteMutations.push_back(
|
|
1005
|
+
ShadowViewMutation::DeleteMutation(oldTreeNodePair.shadowView));
|
|
688
1006
|
}
|
|
689
1007
|
}
|
|
690
1008
|
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1059
|
+
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1060
|
+
treeChildPair, innerScope),
|
|
744
1061
|
{});
|
|
745
1062
|
}
|
|
746
1063
|
} else {
|
|
747
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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::
|
|
765
|
-
ShadowViewNodePair::
|
|
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
|
|
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]
|
|
1106
|
+
std::to_string(oldChildPairs[oldIndex]->shadowView.tag));
|
|
796
1107
|
strOldChildPairs.append(
|
|
797
|
-
oldChildPairs[oldIndex]
|
|
798
|
-
strOldChildPairs.append(oldChildPairs[oldIndex]
|
|
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]
|
|
1115
|
+
std::to_string(newChildPairs[newIndex]->shadowView.tag));
|
|
805
1116
|
strNewChildPairs.append(
|
|
806
|
-
newChildPairs[newIndex]
|
|
807
|
-
strNewChildPairs.append(newChildPairs[newIndex]
|
|
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
|
|
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(
|
|
853
|
-
|
|
854
|
-
|
|
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
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
1171
|
+
ViewNodePairScope innerScope{};
|
|
1172
|
+
auto oldGrandChildPairs = sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1173
|
+
oldChildPair, innerScope);
|
|
1174
|
+
auto newGrandChildPairs = sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1175
|
+
newChildPair, innerScope);
|
|
866
1176
|
calculateShadowViewMutationsV2(
|
|
867
|
-
|
|
868
|
-
|
|
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(
|
|
896
|
-
|
|
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
|
-
|
|
1220
|
+
DIFF_BREADCRUMB(
|
|
1221
|
+
"Trivial delete " + std::to_string(oldChildPair.shadowView.tag)),
|
|
1222
|
+
innerScope,
|
|
1223
|
+
mutationContainer.destructiveDownwardMutations,
|
|
902
1224
|
oldChildPair.shadowView,
|
|
903
|
-
|
|
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(
|
|
923
|
-
|
|
924
|
-
|
|
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
|
-
|
|
1255
|
+
DIFF_BREADCRUMB(
|
|
1256
|
+
"Trivial create " + std::to_string(newChildPair.shadowView.tag)),
|
|
1257
|
+
innerScope,
|
|
1258
|
+
mutationContainer.downwardMutations,
|
|
929
1259
|
newChildPair.shadowView,
|
|
930
1260
|
{},
|
|
931
|
-
|
|
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
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
oldChildPair.
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
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
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
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
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
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
|
-
|
|
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(
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1457
|
+
mutationContainer.insertMutations.push_back(
|
|
1458
|
+
ShadowViewMutation::InsertMutation(
|
|
1459
|
+
parentShadowView,
|
|
1460
|
+
newChildPair.shadowView,
|
|
1461
|
+
static_cast<int>(newChildPair.mountIndex)));
|
|
1327
1462
|
}
|
|
1328
|
-
|
|
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
|
|
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
|
-
|
|
1509
|
+
DIFF_BREADCRUMB(
|
|
1510
|
+
"Non-trivial delete " +
|
|
1511
|
+
std::to_string(oldChildPair.shadowView.tag)),
|
|
1512
|
+
innerScope,
|
|
1513
|
+
mutationContainer.destructiveDownwardMutations,
|
|
1366
1514
|
oldChildPair.shadowView,
|
|
1367
|
-
|
|
1515
|
+
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1516
|
+
oldChildPair, innerScope),
|
|
1368
1517
|
{});
|
|
1369
1518
|
}
|
|
1370
1519
|
}
|
|
1371
1520
|
|
|
1372
|
-
// Final step: generate Create instructions for entirely new
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1446
|
-
|
|
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
|
-
|
|
1634
|
+
sliceChildShadowNodeViewPairsRecursivelyLegacy(
|
|
1477
1635
|
pairList, origin, childShadowNode);
|
|
1478
1636
|
}
|
|
1479
1637
|
}
|
|
1480
1638
|
}
|
|
1481
1639
|
|
|
1482
|
-
|
|
1640
|
+
/**
|
|
1641
|
+
* Only used by unit tests currently.
|
|
1642
|
+
*/
|
|
1643
|
+
ShadowViewNodePair::OwningList sliceChildShadowNodeViewPairsLegacy(
|
|
1483
1644
|
ShadowNode const &shadowNode) {
|
|
1484
|
-
auto pairList = ShadowViewNodePair::
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1679
|
+
oldRootShadowView, newRootShadowView));
|
|
1863
1680
|
}
|
|
1864
1681
|
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
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
|
}
|