react-native 0.0.0-201c10733 → 0.0.0-268efb102
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 +14 -3
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +2 -2
- package/Libraries/ActionSheetIOS/React-RCTActionSheet.podspec +1 -1
- 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 +26 -7
- 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 +10 -7
- 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 +0 -2
- package/Libraries/Animated/components/AnimatedScrollView.js +0 -2
- package/Libraries/Animated/components/AnimatedSectionList.js +1 -3
- package/Libraries/Animated/components/AnimatedText.js +0 -2
- package/Libraries/Animated/components/AnimatedView.js +0 -2
- package/Libraries/Animated/createAnimatedComponent.js +25 -19
- 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 +90 -164
- 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 +1 -3
- package/Libraries/Blob/RCTBlobPlugins.mm +4 -3
- package/Libraries/Blob/React-RCTBlob.podspec +3 -3
- package/Libraries/Blob/URL.js +18 -20
- 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 +6 -8
- package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +0 -2
- package/Libraries/Components/Button.js +45 -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 +50 -14
- package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +1 -2
- package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +0 -2
- package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +0 -2
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -9
- package/Libraries/Components/Keyboard/Keyboard.js +16 -17
- 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 +20 -7
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +18 -17
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +0 -2
- 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 +0 -2
- package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +9 -3
- package/Libraries/Components/RefreshControl/RefreshControl.js +5 -7
- 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 +11 -15
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +2 -4
- package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +2 -4
- package/Libraries/Components/ScrollView/ScrollView.js +754 -170
- package/Libraries/Components/ScrollView/ScrollViewContext.js +0 -2
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +3 -4
- package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +2 -0
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +31 -10
- package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +2 -0
- 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 +19 -8
- 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 +98 -118
- package/Libraries/Components/Switch/SwitchNativeComponent.js +0 -2
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +9 -8
- package/Libraries/Components/TextInput/AndroidTextInputViewConfig.js +2 -3
- 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 +128 -69
- 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 +26 -55
- package/Libraries/Components/Touchable/TouchableBounce.js +0 -2
- package/Libraries/Components/Touchable/TouchableHighlight.js +22 -6
- 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/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 +1 -3
- package/Libraries/Components/View/View.js +2 -4
- package/Libraries/Components/View/ViewAccessibility.js +3 -0
- package/Libraries/Components/View/ViewNativeComponent.js +0 -2
- 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 +51 -41
- 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 +1 -1
- package/Libraries/Core/ReactNativeVersionCheck.js +0 -2
- package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +0 -2
- package/Libraries/Core/Timers/JSTimers.js +41 -31
- 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/setUpBatchedBridge.js +1 -1
- package/Libraries/Core/setUpDeveloperTools.js +53 -58
- package/Libraries/Core/setUpGlobals.js +2 -0
- package/Libraries/Core/setUpReactDevTools.js +18 -1
- package/Libraries/Core/setUpRegeneratorRuntime.js +25 -8
- package/Libraries/Core/setUpTimers.js +65 -6
- 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 -51
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +9 -77
- package/Libraries/EventEmitter/RCTEventEmitter.js +5 -1
- package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +0 -2
- package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +31 -10
- package/Libraries/FBLazyVector/BUCK +5 -1
- package/Libraries/FBLazyVector/FBLazyVector.podspec +1 -1
- package/Libraries/HeapCapture/HeapCapture.js +0 -2
- package/Libraries/HeapCapture/NativeJSCHeapCapture.js +0 -2
- package/Libraries/Image/AssetUtils.js +0 -2
- package/Libraries/Image/Image.android.js +22 -133
- package/Libraries/Image/Image.ios.js +39 -33
- package/Libraries/Image/ImageAnalyticsTagContext.js +0 -2
- package/Libraries/Image/ImageBackground.js +10 -8
- package/Libraries/Image/ImageInjection.js +28 -0
- package/Libraries/Image/ImagePickerIOS.js +0 -2
- package/Libraries/Image/ImageProps.js +28 -0
- package/Libraries/Image/ImageSource.js +57 -14
- package/Libraries/Image/ImageViewNativeComponent.js +0 -2
- package/Libraries/Image/NativeImageEditor.js +0 -2
- package/Libraries/Image/NativeImageLoaderAndroid.js +0 -2
- package/Libraries/Image/NativeImageLoaderIOS.js +2 -3
- package/Libraries/Image/NativeImagePickerIOS.js +0 -2
- package/Libraries/Image/NativeImageStoreAndroid.js +0 -2
- package/Libraries/Image/NativeImageStoreIOS.js +0 -2
- package/Libraries/Image/RCTGIFImageDecoder.mm +6 -0
- package/Libraries/Image/RCTImageLoader.h +2 -2
- package/Libraries/Image/RCTImageLoader.mm +6 -18
- package/Libraries/Image/RCTImageLoaderWithAttributionProtocol.h +0 -5
- package/Libraries/Image/RCTImagePlugins.mm +4 -3
- package/Libraries/Image/RCTImageStoreManager.mm +5 -5
- 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/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 +3 -5
- package/Libraries/Interaction/PanResponder.js +1 -1
- package/Libraries/LayoutAnimation/LayoutAnimation.js +53 -17
- package/Libraries/Linking/Linking.js +5 -7
- 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 +77 -53
- 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 +176 -132
- package/Libraries/Lists/VirtualizedListContext.js +0 -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/LogBoxImages/alert-triangle.png +0 -0
- package/Libraries/LogBox/UI/LogBoxImages/chevron-left.png +0 -0
- package/Libraries/LogBox/UI/LogBoxImages/chevron-right.png +0 -0
- package/Libraries/LogBox/UI/LogBoxImages/close.png +0 -0
- package/Libraries/LogBox/UI/LogBoxImages/loader.png +0 -0
- 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 +42 -21
- package/Libraries/{Text/TextInjection.js → Modal/ModalInjection.js} +3 -5
- package/Libraries/Modal/NativeModalManager.js +0 -2
- package/Libraries/Modal/RCTModalHostViewNativeComponent.js +8 -4
- package/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.m +0 -3
- package/Libraries/NativeAnimation/RCTAnimationPlugins.mm +4 -3
- package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +6 -3
- package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.h +1 -1
- package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.m +1 -1
- package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +32 -28
- package/Libraries/NativeAnimation/React-RCTAnimation.podspec +3 -3
- package/Libraries/NativeComponent/NativeComponentRegistry.js +34 -2
- 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 +25 -7
- package/Libraries/Network/RCTNetworkPlugins.mm +4 -3
- package/Libraries/Network/RCTNetworking.android.js +6 -3
- package/Libraries/Network/RCTNetworking.h +1 -1
- package/Libraries/Network/RCTNetworking.ios.js +63 -21
- package/Libraries/Network/RCTNetworking.mm +3 -3
- package/Libraries/Network/React-RCTNetwork.podspec +2 -2
- 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 +4 -1
- package/Libraries/NewAppScreen/components/LearnMoreLinks.js +0 -1
- package/Libraries/NewAppScreen/components/logo.png +0 -0
- package/Libraries/NewAppScreen/index.js +0 -2
- package/Libraries/Performance/NativeJSCSamplingProfiler.js +0 -2
- package/Libraries/Performance/QuickPerformanceLogger.js +4 -4
- 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 +18 -13
- package/Libraries/Pressability/PressabilityDebug.js +9 -4
- package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +48 -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 +18 -3
- package/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +13 -1
- 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 +7 -2
- 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 +13 -7
- package/Libraries/ReactNative/RootTag.js +2 -4
- package/Libraries/ReactNative/UIManager.js +2 -3
- package/Libraries/ReactNative/UIManagerInjection.js +0 -2
- package/Libraries/ReactNative/getCachedComponentWithDebugName.js +32 -0
- package/Libraries/ReactNative/renderApplication.js +24 -6
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +6 -3
- package/Libraries/Reliability/UserFlow.js +7 -0
- package/Libraries/Renderer/REVISION +1 -1
- package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +9484 -7643
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +7877 -6935
- package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +3038 -2506
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +2112 -1937
- package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +3375 -2693
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +2568 -2244
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +9638 -7942
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5736 -4864
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +2865 -2464
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +2275 -2120
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +3190 -2643
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +2565 -2259
- 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 +21 -15
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -0
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +3 -0
- package/Libraries/Settings/NativeSettingsManager.js +0 -2
- package/Libraries/Settings/RCTSettingsPlugins.mm +4 -3
- package/Libraries/Settings/React-RCTSettings.podspec +2 -2
- 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 +1 -2
- package/Libraries/Storage/NativeAsyncLocalStorage.js +0 -2
- package/Libraries/Storage/NativeAsyncSQLiteDBStorage.js +0 -2
- 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/normalizeColor.js +2 -4
- package/Libraries/StyleSheet/processColorArray.js +16 -6
- package/Libraries/StyleSheet/processTransform.js +6 -6
- package/Libraries/StyleSheet/splitLayoutProps.js +0 -4
- 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/TextInput/Multiline/RCTUITextView.h +0 -2
- package/Libraries/Text/TextInput/Multiline/RCTUITextView.m +12 -2
- package/Libraries/Text/TextInput/RCTBaseTextInputView.m +10 -12
- package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.m +4 -11
- package/Libraries/Text/TextNativeComponent.js +0 -2
- package/Libraries/Text/TextProps.js +7 -7
- package/Libraries/TurboModule/RCTExport.js +1 -1
- package/Libraries/TurboModule/TurboModuleRegistry.js +1 -5
- package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +0 -2
- package/Libraries/TypeSafety/RCTTypeSafety.podspec +3 -3
- package/Libraries/Types/CoreEventTypes.js +0 -2
- package/Libraries/{Components/Picker/PickerAndroid.ios.js → Types/RootTagTypes.js} +2 -3
- package/Libraries/UTFSequence.js +1 -1
- package/Libraries/Utilities/Appearance.js +13 -7
- package/Libraries/Utilities/BackHandler.android.js +0 -2
- package/Libraries/Utilities/DebugEnvironment.js +0 -2
- package/Libraries/Utilities/DevSettings.js +48 -58
- package/Libraries/Utilities/DeviceInfo.js +0 -2
- package/Libraries/Utilities/Dimensions.js +19 -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 +8 -4
- package/Libraries/Utilities/Platform.android.js +0 -2
- package/Libraries/Utilities/Platform.ios.js +0 -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 +2 -4
- 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 +0 -2
- package/Libraries/Vibration/NativeVibration.js +0 -2
- package/Libraries/Vibration/RCTVibrationPlugins.mm +4 -3
- package/Libraries/Vibration/React-RCTVibration.podspec +2 -2
- package/Libraries/Vibration/Vibration.js +0 -2
- package/Libraries/WebSocket/NativeWebSocketModule.js +0 -2
- package/Libraries/WebSocket/WebSocket.js +12 -12
- 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 +36 -2
- package/Libraries/vendor/emitter/EventSubscription.js +19 -0
- package/Libraries/vendor/emitter/_EmitterSubscription.js +7 -7
- package/Libraries/vendor/emitter/_EventEmitter.js +28 -42
- package/Libraries/vendor/emitter/_EventSubscription.js +4 -2
- package/Libraries/vendor/emitter/_EventSubscriptionVendor.js +1 -1
- package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +0 -2
- package/README.md +5 -5
- package/React/Base/RCTAssert.h +29 -11
- package/React/Base/RCTAssert.m +52 -0
- package/React/Base/RCTBridge+Private.h +8 -0
- package/React/Base/RCTBridge.h +20 -0
- package/React/Base/RCTBridge.m +39 -7
- package/React/Base/RCTBridgeModule.h +62 -12
- package/React/Base/RCTBundleManager.m +78 -0
- package/React/Base/RCTBundleURLProvider.h +35 -9
- package/React/Base/RCTBundleURLProvider.mm +90 -25
- package/React/Base/RCTCallableJSModules.m +47 -0
- package/React/Base/RCTConstants.h +3 -16
- package/React/Base/RCTConstants.m +6 -36
- package/React/Base/RCTConvert.h +1 -1
- package/React/Base/RCTConvert.m +31 -7
- package/React/Base/RCTCxxConvert.h +1 -1
- package/React/Base/RCTDefines.h +22 -3
- package/React/Base/RCTEventDispatcherProtocol.h +3 -2
- package/React/{Views/RCTPickerManager.h → Base/RCTInitializing.h} +4 -2
- package/React/Base/RCTJSThread.h +29 -0
- package/React/Base/RCTJSThread.m +19 -0
- package/React/Base/RCTModuleData.h +11 -3
- package/React/Base/RCTModuleData.mm +66 -1
- package/React/Base/RCTMultipartStreamReader.m +0 -2
- package/React/Base/RCTRootView.h +25 -1
- package/React/Base/RCTRootView.m +27 -4
- package/React/Base/RCTTouchHandler.m +3 -0
- package/React/Base/RCTUtils.h +3 -0
- package/React/Base/RCTUtils.m +14 -7
- package/React/Base/RCTVersion.m +1 -1
- package/React/Base/Surface/RCTSurfaceStage.h +6 -11
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h +12 -0
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +46 -2
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm +3 -0
- package/React/CoreModules/BUCK +4 -3
- package/React/CoreModules/CoreModulesPlugins.mm +4 -3
- package/React/CoreModules/RCTAccessibilityManager.mm +1 -1
- package/React/CoreModules/RCTActionSheetManager.mm +14 -5
- package/React/CoreModules/RCTAsyncLocalStorage.mm +4 -0
- package/React/CoreModules/RCTDevLoadingView.mm +25 -33
- package/React/CoreModules/RCTDevMenu.h +0 -5
- package/React/CoreModules/RCTDevMenu.mm +29 -60
- package/React/CoreModules/RCTDevSettings.h +12 -2
- package/React/CoreModules/RCTDevSettings.mm +96 -53
- package/React/CoreModules/RCTDevSplitBundleLoader.mm +3 -8
- package/React/CoreModules/RCTDeviceInfo.mm +4 -5
- package/React/CoreModules/RCTEventDispatcher.h +2 -1
- package/React/CoreModules/RCTEventDispatcher.mm +23 -25
- package/React/CoreModules/RCTKeyboardObserver.mm +1 -1
- package/React/CoreModules/RCTLogBox.mm +14 -10
- package/React/CoreModules/RCTPerfMonitor.mm +15 -4
- package/React/CoreModules/RCTRedBox.mm +3 -12
- package/React/CoreModules/RCTSourceCode.mm +2 -1
- 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 +93 -33
- package/React/CxxModule/RCTNativeModule.mm +3 -1
- package/React/DevSupport/RCTPackagerConnection.h +3 -0
- package/React/DevSupport/RCTPackagerConnection.mm +19 -8
- package/{Libraries → React}/FBReactNativeSpec/FBReactNativeSpec.podspec +15 -8
- package/React/Fabric/Mounting/ComponentViews/Image/RCTImageComponentView.h +2 -1
- package/React/Fabric/Mounting/ComponentViews/Image/RCTImageComponentView.mm +5 -10
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +4 -2
- 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 +62 -20
- package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.h +0 -1
- package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.mm +0 -1
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +5 -0
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +135 -87
- 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 +104 -16
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +53 -17
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm +48 -2
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.h +6 -0
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +122 -8
- 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 -12
- package/React/Fabric/Mounting/RCTMountingManager.h +22 -1
- package/React/Fabric/Mounting/RCTMountingManager.mm +57 -3
- package/React/Fabric/Mounting/UIView+ComponentViewProtocol.h +4 -0
- package/React/Fabric/Mounting/UIView+ComponentViewProtocol.mm +30 -4
- package/React/Fabric/RCTConversions.h +3 -0
- package/React/Fabric/RCTScheduler.h +8 -16
- package/React/Fabric/RCTScheduler.mm +36 -54
- package/React/Fabric/RCTSurfacePresenter.h +8 -16
- package/React/Fabric/RCTSurfacePresenter.mm +49 -170
- package/React/Fabric/RCTSurfacePresenterBridgeAdapter.h +4 -2
- package/React/Fabric/RCTSurfacePresenterBridgeAdapter.mm +1 -1
- package/React/Fabric/RCTSurfaceRegistry.h +1 -1
- package/React/Fabric/Surface/RCTFabricSurface.h +2 -6
- package/React/Fabric/Surface/RCTFabricSurface.mm +132 -129
- package/React/Modules/RCTEventEmitter.h +1 -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/RCTUIManager.m +8 -2
- 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 +63 -0
- package/React/Views/RCTComponentData.h +10 -1
- package/React/Views/RCTComponentData.m +23 -8
- package/React/Views/RCTDatePickerManager.m +33 -0
- package/React/Views/RCTFont.mm +54 -38
- package/React/Views/RCTModalHostView.h +5 -1
- package/React/Views/RCTModalHostView.m +52 -20
- package/React/Views/RCTModalHostViewManager.m +5 -0
- package/React/Views/RCTView.h +7 -7
- package/React/Views/RCTView.m +32 -49
- package/React/Views/RCTViewManager.m +22 -4
- package/React/Views/RCTWeakViewHolder.h +19 -0
- package/React/Views/RefreshControl/RCTRefreshControl.m +26 -0
- package/React/Views/RefreshControl/RCTRefreshControlManager.m +1 -0
- package/React/Views/SafeAreaView/RCTSafeAreaView.m +1 -5
- package/React/Views/ScrollView/RCTScrollView.h +1 -0
- package/React/Views/ScrollView/RCTScrollView.m +123 -36
- package/React/Views/ScrollView/RCTScrollViewManager.m +4 -7
- package/React/Views/UIView+React.m +2 -11
- package/React/third-party.xcconfig +1 -1
- package/React-Core.podspec +5 -4
- package/React.podspec +2 -2
- package/ReactAndroid/Android-prebuilt.mk +19 -3
- package/ReactAndroid/README.md +2 -2
- package/ReactAndroid/build.gradle +137 -25
- package/ReactAndroid/gradle.properties +7 -5
- package/ReactAndroid/src/androidTest/buck-runner/BUCK +1 -0
- package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK +1 -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 +1 -1
- package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/ReactIdleDetectionUtil.java +1 -1
- package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/rule/BUCK +5 -5
- package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK +0 -2
- package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/core/BUCK +5 -5
- package/ReactAndroid/src/androidTest/js/BUCK +26 -0
- package/ReactAndroid/src/androidTest/js/TestBundle.js +0 -12
- package/ReactAndroid/src/androidTest/js/UIManagerTestModule.js +7 -6
- package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/Android.mk +2 -2
- package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/Android.mk +4 -4
- 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/proguard/annotations/BUCK +2 -2
- package/ReactAndroid/src/main/java/com/facebook/proguard/annotations/proguard_annotations.pro +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.java +5 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactFragment.java +6 -2
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +184 -92
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +37 -1
- package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +21 -1
- package/ReactAndroid/src/main/java/com/facebook/react/{turbomodule/core/ReactPackageTurboModuleManagerDelegate.java → ReactPackageTurboModuleManagerDelegate.java} +2 -3
- package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +40 -28
- package/ReactAndroid/src/main/java/com/facebook/react/animated/BUCK +1 -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 +5 -5
- 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/CatalystInstance.java +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +11 -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/ReactCxxErrorHandler.java +39 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarkerConstants.java +7 -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/RuntimeScheduler.java +21 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/SoftAssertions.java +8 -7
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManager.java +10 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +3 -2
- 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/config/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +61 -29
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java +275 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java +97 -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 +9 -58
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +189 -352
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.java +4 -73
- 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/{modules/datepicker/DatePickerMode.java → devsupport/interfaces/BundleLoadCallback.java} +3 -6
- 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 +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.java +15 -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 +9 -64
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +317 -393
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/StateWrapperImpl.java +40 -1
- 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 +14 -2
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Android.mk +5 -3
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/AsyncEventBeatV2.cpp +69 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/AsyncEventBeatV2.h +40 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +308 -103
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h +33 -8
- 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 +16 -2
- 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 +414 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +134 -71
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +247 -40
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +4 -6
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.java +13 -6
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SendAccessibilityEvent.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/Android.mk +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.java +3 -3
- 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 +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/BUCK +1 -1
- 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 +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BUCK +1 -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/bundleloader/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/camera/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/{JavaScriptTimerManager.java → JavaScriptTimerExecutor.java} +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JavaTimerManager.java +7 -7
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java +7 -4
- 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 +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/BUCK +1 -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 +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/DialogModule.java +12 -4
- 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 +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nManagerModule.java +19 -13
- package/ReactAndroid/src/main/java/com/facebook/react/modules/image/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.java +23 -19
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +1 -4
- 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 +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/share/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/sound/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/BUCK +1 -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 +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/BUCK +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/toast/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/vibration/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java +11 -9
- 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/shell/BUCK +0 -2
- package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +0 -9
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/BUCK +0 -1
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java +9 -6
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManagerDelegate.java +3 -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 +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/BUCK +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp +40 -7
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.h +10 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK +3 -0
- 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 +2 -11
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java +14 -5
- 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 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactOverflowView.java +25 -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 +21 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.java +162 -66
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +4 -8
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementationProvider.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.java +29 -20
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +15 -17
- 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 +7 -4
- 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/events/ContentSizeChangeEvent.java +8 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +100 -8
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/LockFreeEventDispatcherImpl.java +236 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.java +8 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +21 -7
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java +58 -4
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/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/views/drawer/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.java +12 -4
- 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/ImageLoadEvent.java +2 -16
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.java +10 -5
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java +12 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java +23 -12
- 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 +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerView.java +29 -6
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +184 -24
- 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 +109 -12
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.java +18 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +9 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java +37 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/slider/BUCK +1 -1
- 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 +5 -7
- 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 +1 -1
- 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 +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/BUCK +1 -1
- 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 +1 -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/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/ReactTextAnchorViewManager.java +0 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +32 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +19 -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 +230 -139
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +45 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +616 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TypefaceStyle.java +72 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/BUCK +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactContentSizeChangedEvent.java +3 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +19 -8
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.java +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextChangedEvent.java +3 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputBlurEvent.java +3 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputEndEditingEvent.java +3 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputEvent.java +3 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputFocusEvent.java +8 -18
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputKeyPressEvent.java +9 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +126 -63
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputSelectionEvent.java +3 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputSubmitEditingEvent.java +8 -18
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/CanvasUtil.java +92 -0
- 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 +49 -2
- 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/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/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 +6 -3
- package/ReactAndroid/src/main/jni/react/jni/BUCK +5 -2
- package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +61 -0
- package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +8 -0
- package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.cpp +18 -0
- package/{ReactCommon/react/renderer/components/picker/iospicker/primitives.h → ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h} +6 -10
- package/ReactAndroid/src/main/jni/react/jni/JReactSoftExceptionLogger.cpp +21 -0
- package/ReactAndroid/src/main/jni/react/jni/JReactSoftExceptionLogger.h +28 -0
- package/{ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerComponentDescriptor.h → ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.cpp} +8 -7
- package/ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.h +30 -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/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/fbjni/BUCK +2 -2
- package/ReactAndroid/src/main/libraries/fresco/fresco-react-native/BUCK +26 -26
- 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 +63 -2
- package/ReactAndroid/src/main/third-party/java/infer-annotations/BUCK +2 -2
- 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} +0 -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/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 +1 -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/views/image/ReactImagePropertyTest.java +8 -0
- package/ReactAndroid/src/test/java/com/facebook/react/views/textinput/ReactTextInputPropertyTest.java +4 -0
- package/ReactCommon/React-Fabric.podspec +58 -14
- package/ReactCommon/ReactCommon.podspec +8 -3
- package/ReactCommon/better/Android.mk +1 -1
- package/ReactCommon/better/BUCK +2 -2
- package/ReactCommon/callinvoker/Android.mk +1 -1
- package/ReactCommon/callinvoker/BUCK +3 -3
- 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 +21 -1
- 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 +5 -4
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/hermes/React-hermes.podspec +5 -5
- 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/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/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 +8 -5
- 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 +2246 -1419
- package/ReactCommon/jsi/Android.mk +1 -1
- package/ReactCommon/jsi/BUCK +1 -3
- package/ReactCommon/jsi/JSCRuntime.cpp +7 -0
- package/ReactCommon/jsi/React-jsi.podspec +4 -4
- 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 +31 -2
- package/ReactCommon/jsi/jsi/jsilib-posix.cpp +1 -11
- package/ReactCommon/jsiexecutor/Android.mk +2 -2
- package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +3 -3
- 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 +1 -1
- 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 +3 -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/TurboModuleBinding.cpp +46 -1
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +10 -0
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +55 -1
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +76 -42
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.h +11 -1
- 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 -16
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModule.mm +79 -32
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.h +0 -7
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm +123 -127
- package/ReactCommon/react/nativemodule/samples/BUCK +4 -5
- package/ReactCommon/react/nativemodule/samples/platform/android/Android.mk +2 -2
- package/ReactCommon/react/nativemodule/samples/platform/ios/RCTSampleTurboCxxModule.mm +12 -0
- package/ReactCommon/react/nativemodule/samples/platform/ios/RCTSampleTurboModule.mm +0 -2
- package/ReactCommon/react/renderer/animations/Android.mk +3 -2
- package/ReactCommon/react/renderer/animations/BUCK +6 -3
- package/ReactCommon/react/renderer/animations/LayoutAnimationCallbackWrapper.h +34 -0
- package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +11 -66
- package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.h +8 -13
- package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +1117 -1147
- package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.h +98 -243
- package/ReactCommon/react/renderer/animations/conversions.h +212 -0
- package/ReactCommon/react/renderer/animations/primitives.h +104 -0
- package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +544 -0
- package/ReactCommon/react/renderer/animations/utils.cpp +71 -0
- package/ReactCommon/react/renderer/animations/utils.h +80 -0
- package/ReactCommon/react/renderer/attributedstring/Android.mk +4 -2
- package/ReactCommon/react/renderer/attributedstring/AttributedString.h +0 -1
- 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/ParagraphAttributes.cpp +7 -3
- package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h +12 -2
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +7 -2
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +3 -1
- package/ReactCommon/react/renderer/attributedstring/conversions.h +718 -305
- package/ReactCommon/react/renderer/attributedstring/primitives.h +34 -1
- 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/ComponentDescriptorProviderRegistry.cpp +2 -2
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h +1 -0
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +17 -67
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.h +4 -1
- package/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.cpp +73 -0
- package/ReactCommon/react/renderer/{components/picker/iospicker/PickerShadowNode.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/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 +5 -10
- 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 +69 -12
- 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 +6 -0
- 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/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/scrollview/Android.mk +5 -3
- package/ReactCommon/react/renderer/components/scrollview/BUCK +6 -3
- 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 +12 -2
- 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/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 +5 -24
- 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 +9 -16
- 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 +2 -8
- 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 -2
- 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 +6 -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 +6 -4
- package/ReactCommon/react/renderer/components/view/BUCK +5 -3
- package/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +19 -5
- package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +2 -1
- package/ReactCommon/react/renderer/components/view/ViewComponentDescriptor.h +0 -22
- package/ReactCommon/react/renderer/components/view/ViewEventEmitter.cpp +1 -1
- 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 -8
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +5 -19
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +1 -1
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +147 -78
- 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 +99 -24
- package/ReactCommon/react/renderer/components/view/conversions.h +89 -45
- 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 +11 -2
- package/ReactCommon/react/renderer/core/Android.mk +4 -2
- package/ReactCommon/react/renderer/core/BUCK +7 -4
- package/ReactCommon/react/renderer/core/BatchedEventQueue.cpp +2 -34
- package/ReactCommon/react/renderer/core/BatchedEventQueue.h +2 -9
- package/ReactCommon/react/renderer/core/ComponentDescriptor.h +6 -3
- package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +28 -27
- package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +11 -5
- package/ReactCommon/react/renderer/core/ConcreteState.h +7 -3
- 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 -36
- package/ReactCommon/react/renderer/core/EventQueue.h +14 -8
- 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 +6 -0
- package/ReactCommon/react/renderer/core/LayoutMetrics.cpp +65 -0
- package/ReactCommon/react/renderer/core/LayoutMetrics.h +35 -2
- package/ReactCommon/react/renderer/core/LayoutPrimitives.h +14 -6
- package/ReactCommon/react/renderer/core/LayoutableShadowNode.cpp +1 -1
- package/ReactCommon/react/renderer/core/LayoutableShadowNode.h +2 -7
- package/ReactCommon/react/renderer/core/Props.cpp +10 -2
- package/ReactCommon/react/renderer/core/Props.h +6 -1
- package/ReactCommon/react/renderer/core/PropsParserContext.h +29 -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 +18 -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 +11 -2
- 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 -2
- 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 +42 -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 +2 -1
- package/ReactCommon/react/renderer/core/ShadowNodeTraits.h +17 -1
- package/ReactCommon/react/renderer/core/State.h +3 -0
- package/ReactCommon/react/renderer/core/StateData.h +3 -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/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/flags.h +50 -0
- package/ReactCommon/react/renderer/element/BUCK +3 -3
- package/ReactCommon/react/renderer/graphics/Android.mk +7 -3
- package/ReactCommon/react/renderer/graphics/BUCK +16 -4
- package/ReactCommon/react/renderer/graphics/React-graphics.podspec +4 -3
- package/ReactCommon/react/renderer/graphics/Transform.cpp +5 -4
- package/ReactCommon/react/renderer/graphics/Transform.h +1 -1
- 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 +14 -6
- 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 +14 -6
- 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/imagemanager/Android.mk +3 -2
- package/ReactCommon/react/renderer/imagemanager/BUCK +5 -4
- package/ReactCommon/react/renderer/imagemanager/ImageResponseObserverCoordinator.cpp +5 -4
- 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 +14 -5
- package/ReactCommon/react/renderer/mapbuffer/MapBuffer.cpp +131 -4
- package/ReactCommon/react/renderer/mapbuffer/MapBuffer.h +40 -4
- 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 +141 -5
- package/ReactCommon/react/renderer/mounting/Android.mk +5 -2
- package/ReactCommon/react/renderer/mounting/BUCK +6 -3
- package/ReactCommon/react/renderer/mounting/Differentiator.cpp +794 -620
- package/ReactCommon/react/renderer/mounting/Differentiator.h +31 -4
- package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +4 -2
- package/ReactCommon/react/renderer/mounting/MountingCoordinator.h +1 -4
- package/ReactCommon/react/renderer/mounting/MountingOverrideDelegate.h +1 -1
- 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 +19 -15
- package/ReactCommon/react/renderer/mounting/ShadowTree.h +11 -4
- 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 +15 -1
- package/ReactCommon/react/renderer/mounting/ShadowView.h +45 -2
- package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +28 -0
- package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +17 -0
- package/ReactCommon/react/renderer/mounting/StubView.cpp +21 -2
- package/ReactCommon/react/renderer/mounting/StubView.h +3 -0
- package/ReactCommon/react/renderer/mounting/StubViewTree.cpp +204 -77
- 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 +5 -4
- package/ReactCommon/react/renderer/mounting/tests/MountingTest.cpp +13 -2
- package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +232 -9
- package/ReactCommon/react/renderer/mounting/tests/StateReconciliationTest.cpp +18 -8
- package/ReactCommon/react/renderer/runtimescheduler/Android.mk +28 -0
- package/ReactCommon/react/renderer/runtimescheduler/BUCK +77 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +118 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +105 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +171 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +44 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.cpp +30 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.h +34 -0
- package/ReactCommon/react/renderer/{components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerComponentDescriptor.h → runtimescheduler/RuntimeSchedulerClock.h} +8 -5
- package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriority.h +65 -0
- package/ReactCommon/react/renderer/runtimescheduler/Task.cpp +37 -0
- package/ReactCommon/react/renderer/runtimescheduler/Task.h +48 -0
- package/ReactCommon/react/renderer/runtimescheduler/primitives.h +41 -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/AndroidDialogPickerShadowNode.cpp → scheduler/InspectorData.h} +10 -2
- package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +81 -132
- package/ReactCommon/react/renderer/scheduler/Scheduler.h +32 -35
- package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +12 -10
- package/ReactCommon/react/renderer/scheduler/SchedulerToolbox.h +2 -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/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 +132 -3
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.h +17 -1
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.h +2 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.mm +22 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/TextLayoutManager.mm +25 -3
- package/ReactCommon/react/renderer/{components/picker → timeline}/BUCK +14 -28
- 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 +121 -36
- package/ReactCommon/react/renderer/uimanager/UIManager.h +40 -21
- package/ReactCommon/react/renderer/uimanager/UIManagerAnimationDelegate.h +3 -5
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +201 -77
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +29 -6
- package/ReactCommon/react/renderer/uimanager/UIManagerCommitHook.h +2 -4
- package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +16 -15
- package/ReactCommon/react/renderer/uimanager/primitives.h +57 -9
- package/ReactCommon/react/test_utils/BUCK +57 -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/components/picker/iospicker/PickerEventEmitter.h → test_utils/MockSurfaceHandler.h} +6 -9
- package/ReactCommon/react/{renderer/mounting/tests → test_utils}/shadowTreeGeneration.h +61 -5
- 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 +4 -24
- package/ReactCommon/react/utils/LayoutManager.h +56 -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 +2 -2
- package/ReactCommon/runtimeexecutor/Android.mk +1 -1
- package/ReactCommon/runtimeexecutor/BUCK +2 -2
- package/ReactCommon/runtimeexecutor/React-runtimeexecutor.podspec +2 -2
- package/ReactCommon/runtimeexecutor/ReactCommon/RuntimeExecutor.h +14 -2
- package/ReactCommon/yoga/Yoga.podspec +1 -1
- package/ReactCommon/yoga/yoga/BitUtils.h +3 -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 +114 -159
- package/ReactCommon/yoga/yoga/Yoga.h +1 -1
- package/android/com/facebook/react/react-native/0.0.0-268efb102/react-native-0.0.0-268efb102.aar +0 -0
- package/android/com/facebook/react/react-native/0.0.0-268efb102/react-native-0.0.0-268efb102.aar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-268efb102/react-native-0.0.0-268efb102.aar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-268efb102/react-native-0.0.0-268efb102.aar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-268efb102/react-native-0.0.0-268efb102.aar.sha512 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-268efb102/react-native-0.0.0-268efb102.module +272 -0
- package/android/com/facebook/react/react-native/0.0.0-268efb102/react-native-0.0.0-268efb102.module.md5 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-268efb102/react-native-0.0.0-268efb102.module.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-268efb102/react-native-0.0.0-268efb102.module.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-268efb102/react-native-0.0.0-268efb102.module.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.0.0-201c10733/react-native-0.0.0-201c10733.pom → 0.0.0-268efb102/react-native-0.0.0-268efb102.pom} +24 -13
- package/android/com/facebook/react/react-native/0.0.0-268efb102/react-native-0.0.0-268efb102.pom.md5 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-268efb102/react-native-0.0.0-268efb102.pom.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-268efb102/react-native-0.0.0-268efb102.pom.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-268efb102/react-native-0.0.0-268efb102.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 +68 -0
- package/flow-typed/npm/react-test-renderer_v16.x.x.js +79 -0
- package/index.js +122 -60
- package/jest/preprocessor.js +75 -7
- package/jest/renderer.js +3 -9
- package/jest/setup.js +21 -15
- package/package.json +61 -21
- package/react.gradle +47 -25
- package/scripts/find-node.sh +39 -0
- package/scripts/generate-specs-cli.js +20 -2
- package/scripts/ios-configure-glog.sh +4 -0
- package/scripts/react-native-xcode.sh +7 -23
- package/scripts/react_native_pods.rb +215 -47
- 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 -8
- package/template/android/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/template/android/gradle.properties +1 -1
- package/template/ios/HelloWorld.xcodeproj/project.pbxproj +2 -0
- package/template/ios/Podfile +1 -0
- package/template/package.json +4 -5
- package/third-party-podspecs/DoubleConversion.podspec +1 -1
- package/third-party-podspecs/RCT-Folly.podspec +31 -11
- package/third-party-podspecs/boost.podspec +23 -0
- package/third-party-podspecs/glog.podspec +1 -1
- package/Libraries/BUCK +0 -56
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.android.js +0 -169
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js +0 -280
- package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +0 -89
- package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js +0 -30
- package/Libraries/Components/DatePickerAndroid/DatePickerAndroidTypes.js +0 -30
- 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.android.js +0 -14
- 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 -797
- package/Libraries/Components/StaticContainer.react.js +0 -51
- package/Libraries/Components/StatusBar/StatusBarIOS.js +0 -35
- package/Libraries/Components/Touchable/ensurePositiveDelayProps.js +0 -26
- package/Libraries/Interaction/InteractionMixin.js +0 -55
- package/Libraries/ReactNative/queryLayoutByID.js +0 -58
- package/Libraries/StyleSheet/StyleSheetValidation.js +0 -100
- package/Libraries/Utilities/registerGeneratedViewConfig.js +0 -36
- 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 -206
- package/React/Views/RCTPicker.h +0 -23
- package/React/Views/RCTPicker.m +0 -122
- package/React/Views/RCTPickerManager.m +0 -68
- package/ReactAndroid/release.gradle +0 -87
- package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/DatePickerDialogTestCase.java +0 -172
- package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ReactPickerTestCase.java +0 -196
- package/ReactAndroid/src/androidTest/js/DatePickerDialogTestModule.js +0 -45
- package/ReactAndroid/src/androidTest/js/PickerAndroidTestModule.js +0 -89
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +0 -82
- package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK +0 -27
- package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogFragment.java +0 -137
- package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java +0 -147
- package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DismissableDatePickerDialog.java +0 -117
- 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/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/views/picker/BUCK +0 -30
- 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/ReactCommon/cxxreact/re_worker_requirements +0 -6
- 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/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.cpp +0 -17
- 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/PickerProps.cpp +0 -46
- package/ReactCommon/react/renderer/components/picker/iospicker/PickerProps.h +0 -36
- 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/mounting/TransactionTelemetry.cpp +0 -142
- package/ReactCommon/react/renderer/mounting/tests/TransactionTelemetryTest.cpp +0 -125
- package/android/com/facebook/react/react-native/0.0.0-201c10733/react-native-0.0.0-201c10733.aar +0 -0
- package/android/com/facebook/react/react-native/0.0.0-201c10733/react-native-0.0.0-201c10733.aar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-201c10733/react-native-0.0.0-201c10733.aar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-201c10733/react-native-0.0.0-201c10733.pom.md5 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-201c10733/react-native-0.0.0-201c10733.pom.sha1 +0 -1
- package/scripts/generate-specs.sh +0 -91
|
@@ -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,28 +826,13 @@ 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
837
|
oldTreeNodePair.shadowView, newTreeNodePair.shadowView));
|
|
490
838
|
}
|
|
@@ -492,15 +840,22 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
492
840
|
// Update children if appropriate.
|
|
493
841
|
if (!oldTreeNodePair.flattened && !newTreeNodePair.flattened) {
|
|
494
842
|
if (oldTreeNodePair.shadowNode != newTreeNodePair.shadowNode) {
|
|
843
|
+
ViewNodePairScope innerScope{};
|
|
495
844
|
calculateShadowViewMutationsV2(
|
|
496
|
-
|
|
845
|
+
DIFF_BREADCRUMB(
|
|
846
|
+
"(Un)Flattener trivial update of " +
|
|
847
|
+
std::to_string(newTreeNodePair.shadowView.tag)),
|
|
848
|
+
innerScope,
|
|
849
|
+
mutationContainer.downwardMutations,
|
|
497
850
|
newTreeNodePair.shadowView,
|
|
498
|
-
|
|
499
|
-
|
|
851
|
+
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
852
|
+
oldTreeNodePair, innerScope),
|
|
853
|
+
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
854
|
+
newTreeNodePair, innerScope));
|
|
500
855
|
}
|
|
501
856
|
} else if (oldTreeNodePair.flattened != newTreeNodePair.flattened) {
|
|
502
|
-
// We need to handle one of the children being flattened or
|
|
503
|
-
// 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.
|
|
504
859
|
ReparentMode childReparentMode =
|
|
505
860
|
(oldTreeNodePair.flattened ? ReparentMode::Unflatten
|
|
506
861
|
: ReparentMode::Flatten);
|
|
@@ -509,8 +864,20 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
509
864
|
// This is a flatten-flatten, or unflatten-unflatten.
|
|
510
865
|
if (childReparentMode == reparentMode) {
|
|
511
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,
|
|
512
879
|
childReparentMode,
|
|
513
|
-
|
|
880
|
+
mutationContainer,
|
|
514
881
|
(reparentMode == ReparentMode::Flatten
|
|
515
882
|
? parentShadowView
|
|
516
883
|
: newTreeNodePair.shadowView),
|
|
@@ -519,89 +886,72 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
519
886
|
subVisitedNewMap,
|
|
520
887
|
subVisitedOldMap);
|
|
521
888
|
} else {
|
|
522
|
-
//
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
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});
|
|
543
910
|
}
|
|
911
|
+
}
|
|
544
912
|
|
|
913
|
+
// Unflatten parent, flatten child
|
|
914
|
+
if (childReparentMode == ReparentMode::Flatten) {
|
|
545
915
|
// Flatten old tree into new list
|
|
546
916
|
// At the end of this loop we still want to know which of these
|
|
547
917
|
// children are visited, so we reuse the `newRemainingPairs` map.
|
|
548
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,
|
|
549
927
|
ReparentMode::Flatten,
|
|
550
|
-
|
|
928
|
+
mutationContainer,
|
|
551
929
|
(reparentMode == ReparentMode::Flatten
|
|
552
930
|
? parentShadowView
|
|
553
931
|
: newTreeNodePair.shadowView),
|
|
554
|
-
|
|
932
|
+
unvisitedRecursiveChildPairs,
|
|
555
933
|
oldTreeNodePair,
|
|
556
934
|
subVisitedNewMap,
|
|
557
935
|
subVisitedOldMap);
|
|
558
|
-
|
|
559
|
-
for (auto &newFlattenedNode : newFlattenedNodes) {
|
|
560
|
-
auto unvisitedOldChildPairIt =
|
|
561
|
-
unvisitedNewChildPairs.find(newFlattenedNode.shadowView.tag);
|
|
562
|
-
|
|
563
|
-
if (unvisitedOldChildPairIt == unvisitedNewChildPairs.end()) {
|
|
564
|
-
// Node was visited.
|
|
565
|
-
|
|
566
|
-
auto deleteCreateIt = deletionCreationCandidatePairs.find(
|
|
567
|
-
newFlattenedNode.shadowView.tag);
|
|
568
|
-
if (deleteCreateIt != deletionCreationCandidatePairs.end()) {
|
|
569
|
-
deletionCreationCandidatePairs.erase(deleteCreateIt);
|
|
570
|
-
}
|
|
571
|
-
}
|
|
572
|
-
}
|
|
573
936
|
}
|
|
574
937
|
// Flatten parent, unflatten child
|
|
575
938
|
else {
|
|
576
|
-
// Construct unvisited nodes map
|
|
577
|
-
auto unvisitedOldChildPairs = TinyMap<Tag, ShadowViewNodePair *>{};
|
|
578
|
-
// Memory note: these oldFlattenedNodes all disappear at the end of
|
|
579
|
-
// this "else" block, including any annotations we put on them.
|
|
580
|
-
auto oldFlattenedNodes = sliceChildShadowNodeViewPairsV2(
|
|
581
|
-
*oldTreeNodePair.shadowNode, true);
|
|
582
|
-
for (size_t i = 0; i < oldFlattenedNodes.size(); i++) {
|
|
583
|
-
auto &oldChild = oldFlattenedNodes[i];
|
|
584
|
-
|
|
585
|
-
auto unvisitedOtherNodesIt =
|
|
586
|
-
unvisitedOtherNodes.find(oldChild.shadowView.tag);
|
|
587
|
-
if (unvisitedOtherNodesIt != unvisitedOtherNodes.end()) {
|
|
588
|
-
auto &unvisitedItPair = *unvisitedOtherNodesIt->second;
|
|
589
|
-
unvisitedOldChildPairs.insert(
|
|
590
|
-
{unvisitedItPair.shadowView.tag, &unvisitedItPair});
|
|
591
|
-
} else {
|
|
592
|
-
unvisitedOldChildPairs.insert(
|
|
593
|
-
{oldChild.shadowView.tag, &oldChild});
|
|
594
|
-
}
|
|
595
|
-
}
|
|
596
|
-
|
|
597
939
|
// Unflatten old list into new tree
|
|
598
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,
|
|
599
949
|
ReparentMode::Unflatten,
|
|
600
|
-
|
|
950
|
+
mutationContainer,
|
|
601
951
|
(reparentMode == ReparentMode::Flatten
|
|
602
952
|
? parentShadowView
|
|
603
953
|
: newTreeNodePair.shadowView),
|
|
604
|
-
|
|
954
|
+
unvisitedRecursiveChildPairs,
|
|
605
955
|
newTreeNodePair,
|
|
606
956
|
subVisitedNewMap,
|
|
607
957
|
subVisitedOldMap);
|
|
@@ -609,45 +959,24 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
609
959
|
// If old nodes were not visited, we know that we can delete them
|
|
610
960
|
// now. They will be removed from the hierarchy by the outermost
|
|
611
961
|
// loop of this function.
|
|
612
|
-
for (auto
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
deletionCreationCandidatePairs.insert(
|
|
631
|
-
{tag, &*oldRemainingChildInListIt});
|
|
632
|
-
}
|
|
633
|
-
} else {
|
|
634
|
-
// TODO: we might want to remove this block. It seems
|
|
635
|
-
// impossible to hit this logically (and empirically, after
|
|
636
|
-
// testing on lots of randomized and pathologically
|
|
637
|
-
// constructed trees) but I'm leaving this here out of an
|
|
638
|
-
// abundance of caution.
|
|
639
|
-
mutationInstructionContainer.deleteMutations.push_back(
|
|
640
|
-
ShadowViewMutation::DeleteMutation(
|
|
641
|
-
oldFlattenedNode.shadowView));
|
|
642
|
-
|
|
643
|
-
calculateShadowViewMutationsV2(
|
|
644
|
-
mutationInstructionContainer
|
|
645
|
-
.destructiveDownwardMutations,
|
|
646
|
-
oldFlattenedNode.shadowView,
|
|
647
|
-
sliceChildShadowNodeViewPairsV2(
|
|
648
|
-
*oldFlattenedNode.shadowNode),
|
|
649
|
-
{});
|
|
650
|
-
}
|
|
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});
|
|
651
980
|
}
|
|
652
981
|
} else {
|
|
653
982
|
// Node was visited - make sure to remove it from
|
|
@@ -657,13 +986,6 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
657
986
|
if (newRemainingIt != unvisitedOtherNodes.end()) {
|
|
658
987
|
unvisitedOtherNodes.erase(newRemainingIt);
|
|
659
988
|
}
|
|
660
|
-
|
|
661
|
-
// We also remove it from delete/creation candidates
|
|
662
|
-
auto deleteCreateIt = deletionCreationCandidatePairs.find(
|
|
663
|
-
oldFlattenedNode.shadowView.tag);
|
|
664
|
-
if (deleteCreateIt != deletionCreationCandidatePairs.end()) {
|
|
665
|
-
deletionCreationCandidatePairs.erase(deleteCreateIt);
|
|
666
|
-
}
|
|
667
989
|
}
|
|
668
990
|
}
|
|
669
991
|
}
|
|
@@ -674,35 +996,23 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
674
996
|
// concrete view. Removing the node from the unvisited list prevents the
|
|
675
997
|
// caller from taking further action on this node, so make sure to
|
|
676
998
|
// delete/create if the Concreteness of the node has changed.
|
|
677
|
-
if (newTreeNodePair.isConcreteView != oldTreeNodePair.isConcreteView
|
|
678
|
-
!newTreeNodePair.inOtherTree) {
|
|
999
|
+
if (newTreeNodePair.isConcreteView != oldTreeNodePair.isConcreteView) {
|
|
679
1000
|
if (newTreeNodePair.isConcreteView) {
|
|
680
|
-
|
|
1001
|
+
mutationContainer.createMutations.push_back(
|
|
681
1002
|
ShadowViewMutation::CreateMutation(newTreeNodePair.shadowView));
|
|
682
1003
|
} else {
|
|
683
|
-
|
|
684
|
-
ShadowViewMutation::DeleteMutation(
|
|
1004
|
+
mutationContainer.deleteMutations.push_back(
|
|
1005
|
+
ShadowViewMutation::DeleteMutation(oldTreeNodePair.shadowView));
|
|
685
1006
|
}
|
|
686
1007
|
}
|
|
687
1008
|
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
parentSubVisitedOtherNewNodes->insert(
|
|
693
|
-
{newTreeNodePair.shadowView.tag, &newTreeNodePair});
|
|
694
|
-
}
|
|
695
|
-
if (parentSubVisitedOtherOldNodes != nullptr) {
|
|
696
|
-
parentSubVisitedOtherOldNodes->insert(
|
|
697
|
-
{oldTreeNodePair.shadowView.tag, &oldTreeNodePair});
|
|
698
|
-
}
|
|
699
|
-
|
|
700
|
-
if (unvisitedIt != unvisitedOtherNodes.end()) {
|
|
701
|
-
unvisitedOtherNodes.erase(unvisitedIt);
|
|
702
|
-
}
|
|
1009
|
+
subVisitedNewMap->insert(
|
|
1010
|
+
{newTreeNodePair.shadowView.tag, &newTreeNodePair});
|
|
1011
|
+
subVisitedOldMap->insert(
|
|
1012
|
+
{oldTreeNodePair.shadowView.tag, &oldTreeNodePair});
|
|
703
1013
|
} else {
|
|
704
1014
|
// Node does not in exist in other tree.
|
|
705
|
-
if (treeChildPair.isConcreteView && !treeChildPair.inOtherTree) {
|
|
1015
|
+
if (treeChildPair.isConcreteView && !treeChildPair.inOtherTree()) {
|
|
706
1016
|
auto deletionCreationIt =
|
|
707
1017
|
deletionCreationCandidatePairs.find(treeChildPair.shadowView.tag);
|
|
708
1018
|
if (deletionCreationIt == deletionCreationCandidatePairs.end()) {
|
|
@@ -714,8 +1024,8 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
714
1024
|
}
|
|
715
1025
|
|
|
716
1026
|
// Final step: go through creation/deletion candidates and delete/create
|
|
717
|
-
// subtrees if they were never visited during the execution of the above
|
|
718
|
-
// and recursions.
|
|
1027
|
+
// subtrees if they were never visited during the execution of the above
|
|
1028
|
+
// loop and recursions.
|
|
719
1029
|
for (auto it = deletionCreationCandidatePairs.begin();
|
|
720
1030
|
it != deletionCreationCandidatePairs.end();
|
|
721
1031
|
it++) {
|
|
@@ -724,42 +1034,60 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
724
1034
|
}
|
|
725
1035
|
auto &treeChildPair = *it->second;
|
|
726
1036
|
|
|
727
|
-
// If node was visited during a flattening/unflattening recursion
|
|
728
|
-
|
|
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()) {
|
|
729
1043
|
continue;
|
|
730
1044
|
}
|
|
731
1045
|
|
|
732
1046
|
if (reparentMode == ReparentMode::Flatten) {
|
|
733
|
-
|
|
1047
|
+
mutationContainer.deleteMutations.push_back(
|
|
734
1048
|
ShadowViewMutation::DeleteMutation(treeChildPair.shadowView));
|
|
735
1049
|
|
|
736
1050
|
if (!treeChildPair.flattened) {
|
|
1051
|
+
ViewNodePairScope innerScope{};
|
|
737
1052
|
calculateShadowViewMutationsV2(
|
|
738
|
-
|
|
1053
|
+
DIFF_BREADCRUMB(
|
|
1054
|
+
"Recursively delete tree child pair (flatten case): " +
|
|
1055
|
+
std::to_string(treeChildPair.shadowView.tag)),
|
|
1056
|
+
innerScope,
|
|
1057
|
+
mutationContainer.destructiveDownwardMutations,
|
|
739
1058
|
treeChildPair.shadowView,
|
|
740
|
-
|
|
1059
|
+
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1060
|
+
treeChildPair, innerScope),
|
|
741
1061
|
{});
|
|
742
1062
|
}
|
|
743
1063
|
} else {
|
|
744
|
-
|
|
1064
|
+
mutationContainer.createMutations.push_back(
|
|
745
1065
|
ShadowViewMutation::CreateMutation(treeChildPair.shadowView));
|
|
746
1066
|
|
|
747
1067
|
if (!treeChildPair.flattened) {
|
|
1068
|
+
ViewNodePairScope innerScope{};
|
|
748
1069
|
calculateShadowViewMutationsV2(
|
|
749
|
-
|
|
1070
|
+
DIFF_BREADCRUMB(
|
|
1071
|
+
"Recursively delete tree child pair (unflatten case): " +
|
|
1072
|
+
std::to_string(treeChildPair.shadowView.tag)),
|
|
1073
|
+
innerScope,
|
|
1074
|
+
mutationContainer.downwardMutations,
|
|
750
1075
|
treeChildPair.shadowView,
|
|
751
1076
|
{},
|
|
752
|
-
|
|
1077
|
+
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1078
|
+
treeChildPair, innerScope));
|
|
753
1079
|
}
|
|
754
1080
|
}
|
|
755
1081
|
}
|
|
756
1082
|
}
|
|
757
1083
|
|
|
758
1084
|
static void calculateShadowViewMutationsV2(
|
|
1085
|
+
BREADCRUMB_TYPE breadcrumb,
|
|
1086
|
+
ViewNodePairScope &scope,
|
|
759
1087
|
ShadowViewMutation::List &mutations,
|
|
760
1088
|
ShadowView const &parentShadowView,
|
|
761
|
-
ShadowViewNodePair::
|
|
762
|
-
ShadowViewNodePair::
|
|
1089
|
+
ShadowViewNodePair::NonOwningList &&oldChildPairs,
|
|
1090
|
+
ShadowViewNodePair::NonOwningList &&newChildPairs) {
|
|
763
1091
|
if (oldChildPairs.empty() && newChildPairs.empty()) {
|
|
764
1092
|
return;
|
|
765
1093
|
}
|
|
@@ -767,21 +1095,7 @@ static void calculateShadowViewMutationsV2(
|
|
|
767
1095
|
size_t index = 0;
|
|
768
1096
|
|
|
769
1097
|
// Lists of mutations
|
|
770
|
-
auto
|
|
771
|
-
auto deleteMutations = ShadowViewMutation::List{};
|
|
772
|
-
auto insertMutations = ShadowViewMutation::List{};
|
|
773
|
-
auto removeMutations = ShadowViewMutation::List{};
|
|
774
|
-
auto updateMutations = ShadowViewMutation::List{};
|
|
775
|
-
auto downwardMutations = ShadowViewMutation::List{};
|
|
776
|
-
auto destructiveDownwardMutations = ShadowViewMutation::List{};
|
|
777
|
-
auto mutationInstructionContainer = OrderedMutationInstructionContainer{
|
|
778
|
-
createMutations,
|
|
779
|
-
deleteMutations,
|
|
780
|
-
insertMutations,
|
|
781
|
-
removeMutations,
|
|
782
|
-
updateMutations,
|
|
783
|
-
downwardMutations,
|
|
784
|
-
destructiveDownwardMutations};
|
|
1098
|
+
auto mutationContainer = OrderedMutationInstructionContainer{};
|
|
785
1099
|
|
|
786
1100
|
DEBUG_LOGS({
|
|
787
1101
|
LOG(ERROR) << "Differ Entry: Child Pairs of node: [" << parentShadowView.tag
|
|
@@ -789,19 +1103,19 @@ static void calculateShadowViewMutationsV2(
|
|
|
789
1103
|
std::string strOldChildPairs;
|
|
790
1104
|
for (size_t oldIndex = 0; oldIndex < oldChildPairs.size(); oldIndex++) {
|
|
791
1105
|
strOldChildPairs.append(
|
|
792
|
-
std::to_string(oldChildPairs[oldIndex]
|
|
1106
|
+
std::to_string(oldChildPairs[oldIndex]->shadowView.tag));
|
|
793
1107
|
strOldChildPairs.append(
|
|
794
|
-
oldChildPairs[oldIndex]
|
|
795
|
-
strOldChildPairs.append(oldChildPairs[oldIndex]
|
|
1108
|
+
oldChildPairs[oldIndex]->isConcreteView ? "" : "'");
|
|
1109
|
+
strOldChildPairs.append(oldChildPairs[oldIndex]->flattened ? "*" : "");
|
|
796
1110
|
strOldChildPairs.append(", ");
|
|
797
1111
|
}
|
|
798
1112
|
std::string strNewChildPairs;
|
|
799
1113
|
for (size_t newIndex = 0; newIndex < newChildPairs.size(); newIndex++) {
|
|
800
1114
|
strNewChildPairs.append(
|
|
801
|
-
std::to_string(newChildPairs[newIndex]
|
|
1115
|
+
std::to_string(newChildPairs[newIndex]->shadowView.tag));
|
|
802
1116
|
strNewChildPairs.append(
|
|
803
|
-
newChildPairs[newIndex]
|
|
804
|
-
strNewChildPairs.append(newChildPairs[newIndex]
|
|
1117
|
+
newChildPairs[newIndex]->isConcreteView ? "" : "'");
|
|
1118
|
+
strNewChildPairs.append(newChildPairs[newIndex]->flattened ? "*" : "");
|
|
805
1119
|
strNewChildPairs.append(", ");
|
|
806
1120
|
}
|
|
807
1121
|
LOG(ERROR) << "Differ Entry: Old Child Pairs: " << strOldChildPairs;
|
|
@@ -811,8 +1125,8 @@ static void calculateShadowViewMutationsV2(
|
|
|
811
1125
|
// Stage 1: Collecting `Update` mutations
|
|
812
1126
|
for (index = 0; index < oldChildPairs.size() && index < newChildPairs.size();
|
|
813
1127
|
index++) {
|
|
814
|
-
auto &oldChildPair = oldChildPairs[index];
|
|
815
|
-
auto &newChildPair = newChildPairs[index];
|
|
1128
|
+
auto &oldChildPair = *oldChildPairs[index];
|
|
1129
|
+
auto &newChildPair = *newChildPairs[index];
|
|
816
1130
|
|
|
817
1131
|
if (oldChildPair.shadowView.tag != newChildPair.shadowView.tag) {
|
|
818
1132
|
DEBUG_LOGS({
|
|
@@ -826,8 +1140,8 @@ static void calculateShadowViewMutationsV2(
|
|
|
826
1140
|
break;
|
|
827
1141
|
}
|
|
828
1142
|
|
|
829
|
-
// If either view was flattened, and that has changed this frame, don't
|
|
830
|
-
// to update
|
|
1143
|
+
// If either view was flattened, and that has changed this frame, don't
|
|
1144
|
+
// try to update
|
|
831
1145
|
if (oldChildPair.flattened != newChildPair.flattened ||
|
|
832
1146
|
oldChildPair.isConcreteView != newChildPair.isConcreteView) {
|
|
833
1147
|
break;
|
|
@@ -846,20 +1160,27 @@ static void calculateShadowViewMutationsV2(
|
|
|
846
1160
|
|
|
847
1161
|
if (newChildPair.isConcreteView &&
|
|
848
1162
|
oldChildPair.shadowView != newChildPair.shadowView) {
|
|
849
|
-
updateMutations.push_back(
|
|
850
|
-
|
|
1163
|
+
mutationContainer.updateMutations.push_back(
|
|
1164
|
+
ShadowViewMutation::UpdateMutation(
|
|
1165
|
+
oldChildPair.shadowView, newChildPair.shadowView));
|
|
851
1166
|
}
|
|
852
1167
|
|
|
853
1168
|
// Recursively update tree if ShadowNode pointers are not equal
|
|
854
1169
|
if (!oldChildPair.flattened &&
|
|
855
1170
|
oldChildPair.shadowNode != newChildPair.shadowNode) {
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
1171
|
+
ViewNodePairScope innerScope{};
|
|
1172
|
+
auto oldGrandChildPairs = sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1173
|
+
oldChildPair, innerScope);
|
|
1174
|
+
auto newGrandChildPairs = sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1175
|
+
newChildPair, innerScope);
|
|
860
1176
|
calculateShadowViewMutationsV2(
|
|
861
|
-
|
|
862
|
-
|
|
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),
|
|
863
1184
|
oldChildPair.shadowView,
|
|
864
1185
|
std::move(oldGrandChildPairs),
|
|
865
1186
|
std::move(newGrandChildPairs));
|
|
@@ -872,7 +1193,7 @@ static void calculateShadowViewMutationsV2(
|
|
|
872
1193
|
// We've reached the end of the new children. We can delete+remove the
|
|
873
1194
|
// rest.
|
|
874
1195
|
for (; index < oldChildPairs.size(); index++) {
|
|
875
|
-
auto const &oldChildPair = oldChildPairs[index];
|
|
1196
|
+
auto const &oldChildPair = *oldChildPairs[index];
|
|
876
1197
|
|
|
877
1198
|
DEBUG_LOGS({
|
|
878
1199
|
LOG(ERROR) << "Differ Branch 2: Deleting Tag/Tree: ["
|
|
@@ -884,24 +1205,32 @@ static void calculateShadowViewMutationsV2(
|
|
|
884
1205
|
continue;
|
|
885
1206
|
}
|
|
886
1207
|
|
|
887
|
-
deleteMutations.push_back(
|
|
1208
|
+
mutationContainer.deleteMutations.push_back(
|
|
888
1209
|
ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
|
|
889
|
-
removeMutations.push_back(
|
|
890
|
-
|
|
1210
|
+
mutationContainer.removeMutations.push_back(
|
|
1211
|
+
ShadowViewMutation::RemoveMutation(
|
|
1212
|
+
parentShadowView,
|
|
1213
|
+
oldChildPair.shadowView,
|
|
1214
|
+
static_cast<int>(oldChildPair.mountIndex)));
|
|
891
1215
|
|
|
892
1216
|
// We also have to call the algorithm recursively to clean up the entire
|
|
893
1217
|
// subtree starting from the removed view.
|
|
1218
|
+
ViewNodePairScope innerScope{};
|
|
894
1219
|
calculateShadowViewMutationsV2(
|
|
895
|
-
|
|
1220
|
+
DIFF_BREADCRUMB(
|
|
1221
|
+
"Trivial delete " + std::to_string(oldChildPair.shadowView.tag)),
|
|
1222
|
+
innerScope,
|
|
1223
|
+
mutationContainer.destructiveDownwardMutations,
|
|
896
1224
|
oldChildPair.shadowView,
|
|
897
|
-
|
|
1225
|
+
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1226
|
+
oldChildPair, innerScope),
|
|
898
1227
|
{});
|
|
899
1228
|
}
|
|
900
1229
|
} else if (index == oldChildPairs.size()) {
|
|
901
1230
|
// If we don't have any more existing children we can choose a fast path
|
|
902
1231
|
// since the rest will all be create+insert.
|
|
903
1232
|
for (; index < newChildPairs.size(); index++) {
|
|
904
|
-
auto const &newChildPair = newChildPairs[index];
|
|
1233
|
+
auto const &newChildPair = *newChildPairs[index];
|
|
905
1234
|
|
|
906
1235
|
DEBUG_LOGS({
|
|
907
1236
|
LOG(ERROR) << "Differ Branch 3: Creating Tag/Tree: ["
|
|
@@ -913,16 +1242,24 @@ static void calculateShadowViewMutationsV2(
|
|
|
913
1242
|
continue;
|
|
914
1243
|
}
|
|
915
1244
|
|
|
916
|
-
insertMutations.push_back(
|
|
917
|
-
|
|
918
|
-
|
|
1245
|
+
mutationContainer.insertMutations.push_back(
|
|
1246
|
+
ShadowViewMutation::InsertMutation(
|
|
1247
|
+
parentShadowView,
|
|
1248
|
+
newChildPair.shadowView,
|
|
1249
|
+
static_cast<int>(newChildPair.mountIndex)));
|
|
1250
|
+
mutationContainer.createMutations.push_back(
|
|
919
1251
|
ShadowViewMutation::CreateMutation(newChildPair.shadowView));
|
|
920
1252
|
|
|
1253
|
+
ViewNodePairScope innerScope{};
|
|
921
1254
|
calculateShadowViewMutationsV2(
|
|
922
|
-
|
|
1255
|
+
DIFF_BREADCRUMB(
|
|
1256
|
+
"Trivial create " + std::to_string(newChildPair.shadowView.tag)),
|
|
1257
|
+
innerScope,
|
|
1258
|
+
mutationContainer.downwardMutations,
|
|
923
1259
|
newChildPair.shadowView,
|
|
924
1260
|
{},
|
|
925
|
-
|
|
1261
|
+
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1262
|
+
newChildPair, innerScope));
|
|
926
1263
|
}
|
|
927
1264
|
} else {
|
|
928
1265
|
// Collect map of tags in the new list
|
|
@@ -930,7 +1267,7 @@ static void calculateShadowViewMutationsV2(
|
|
|
930
1267
|
auto newInsertedPairs = TinyMap<Tag, ShadowViewNodePair *>{};
|
|
931
1268
|
auto deletionCandidatePairs = TinyMap<Tag, ShadowViewNodePair const *>{};
|
|
932
1269
|
for (; index < newChildPairs.size(); index++) {
|
|
933
|
-
auto &newChildPair = newChildPairs[index];
|
|
1270
|
+
auto &newChildPair = *newChildPairs[index];
|
|
934
1271
|
newRemainingPairs.insert({newChildPair.shadowView.tag, &newChildPair});
|
|
935
1272
|
}
|
|
936
1273
|
|
|
@@ -946,8 +1283,8 @@ static void calculateShadowViewMutationsV2(
|
|
|
946
1283
|
|
|
947
1284
|
// Advance both pointers if pointing to the same element
|
|
948
1285
|
if (haveNewPair && haveOldPair) {
|
|
949
|
-
auto const &oldChildPair = oldChildPairs[oldIndex];
|
|
950
|
-
auto const &newChildPair = newChildPairs[newIndex];
|
|
1286
|
+
auto const &oldChildPair = *oldChildPairs[oldIndex];
|
|
1287
|
+
auto const &newChildPair = *newChildPairs[newIndex];
|
|
951
1288
|
|
|
952
1289
|
Tag newTag = newChildPair.shadowView.tag;
|
|
953
1290
|
Tag oldTag = oldChildPair.shadowView.tag;
|
|
@@ -965,139 +1302,29 @@ static void calculateShadowViewMutationsV2(
|
|
|
965
1302
|
<< " with parent: [" << parentShadowView.tag << "]";
|
|
966
1303
|
});
|
|
967
1304
|
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
oldChildPair.
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
updateMutations.push_back(ShadowViewMutation::UpdateMutation(
|
|
992
|
-
oldChildPair.shadowView, newChildPair.shadowView));
|
|
993
|
-
}
|
|
994
|
-
|
|
995
|
-
// Remove from newRemainingPairs
|
|
996
|
-
auto newRemainingPairIt = newRemainingPairs.find(oldTag);
|
|
997
|
-
if (newRemainingPairIt != newRemainingPairs.end()) {
|
|
998
|
-
newRemainingPairs.erase(newRemainingPairIt);
|
|
999
|
-
}
|
|
1000
|
-
}
|
|
1001
|
-
|
|
1002
|
-
// Are we flattening or unflattening either one? If node was flattened
|
|
1003
|
-
// in both trees, there's no change, just continue.
|
|
1004
|
-
if (oldChildPair.flattened && newChildPair.flattened) {
|
|
1005
|
-
newIndex++;
|
|
1006
|
-
oldIndex++;
|
|
1007
|
-
continue;
|
|
1008
|
-
}
|
|
1009
|
-
// We are either flattening or unflattening this node.
|
|
1010
|
-
if (oldChildPair.flattened != newChildPair.flattened) {
|
|
1011
|
-
DEBUG_LOGS({
|
|
1012
|
-
LOG(ERROR) << "Differ: flattening or unflattening at branch 6: ["
|
|
1013
|
-
<< oldChildPair.shadowView.tag << "] ["
|
|
1014
|
-
<< newChildPair.shadowView.tag << "] "
|
|
1015
|
-
<< oldChildPair.flattened << " "
|
|
1016
|
-
<< newChildPair.flattened << " with parent: ["
|
|
1017
|
-
<< parentShadowView.tag << "]";
|
|
1018
|
-
});
|
|
1019
|
-
|
|
1020
|
-
// Flattening
|
|
1021
|
-
if (!oldChildPair.flattened) {
|
|
1022
|
-
// Flatten old tree into new list
|
|
1023
|
-
// At the end of this loop we still want to know which of these
|
|
1024
|
-
// children are visited, so we reuse the `newRemainingPairs` map.
|
|
1025
|
-
calculateShadowViewMutationsFlattener(
|
|
1026
|
-
ReparentMode::Flatten,
|
|
1027
|
-
mutationInstructionContainer,
|
|
1028
|
-
parentShadowView,
|
|
1029
|
-
newRemainingPairs,
|
|
1030
|
-
oldChildPair);
|
|
1031
|
-
}
|
|
1032
|
-
// Unflattening
|
|
1033
|
-
else {
|
|
1034
|
-
// Construct unvisited nodes map
|
|
1035
|
-
auto unvisitedOldChildPairs =
|
|
1036
|
-
TinyMap<Tag, ShadowViewNodePair *>{};
|
|
1037
|
-
// We don't know where all the children of oldChildPair are within
|
|
1038
|
-
// oldChildPairs, but we know that they're in the same relative
|
|
1039
|
-
// order. The reason for this is because of flattening + zIndex:
|
|
1040
|
-
// the children could be listed before the parent, interwoven with
|
|
1041
|
-
// children from other nodes, etc.
|
|
1042
|
-
auto oldFlattenedNodes = sliceChildShadowNodeViewPairsV2(
|
|
1043
|
-
*oldChildPair.shadowNode, true);
|
|
1044
|
-
for (size_t i = 0, j = 0;
|
|
1045
|
-
i < oldChildPairs.size() && j < oldFlattenedNodes.size();
|
|
1046
|
-
i++) {
|
|
1047
|
-
auto &oldChild = oldChildPairs[i];
|
|
1048
|
-
if (oldChild.shadowView.tag ==
|
|
1049
|
-
oldFlattenedNodes[j].shadowView.tag) {
|
|
1050
|
-
unvisitedOldChildPairs.insert(
|
|
1051
|
-
{oldChild.shadowView.tag, &oldChild});
|
|
1052
|
-
j++;
|
|
1053
|
-
}
|
|
1054
|
-
}
|
|
1055
|
-
|
|
1056
|
-
// Unflatten old list into new tree
|
|
1057
|
-
calculateShadowViewMutationsFlattener(
|
|
1058
|
-
ReparentMode::Unflatten,
|
|
1059
|
-
mutationInstructionContainer,
|
|
1060
|
-
parentShadowView,
|
|
1061
|
-
unvisitedOldChildPairs,
|
|
1062
|
-
newChildPair);
|
|
1063
|
-
|
|
1064
|
-
// If old nodes were not visited, we know that we can delete them
|
|
1065
|
-
// now. They will be removed from the hierarchy by the outermost
|
|
1066
|
-
// loop of this function.
|
|
1067
|
-
for (auto &oldFlattenedNode : oldFlattenedNodes) {
|
|
1068
|
-
auto unvisitedOldChildPairIt = unvisitedOldChildPairs.find(
|
|
1069
|
-
oldFlattenedNode.shadowView.tag);
|
|
1070
|
-
if (unvisitedOldChildPairIt == unvisitedOldChildPairs.end()) {
|
|
1071
|
-
// Node was visited - make sure to remove it from
|
|
1072
|
-
// "newRemainingPairs" map
|
|
1073
|
-
auto newRemainingIt =
|
|
1074
|
-
newRemainingPairs.find(oldFlattenedNode.shadowView.tag);
|
|
1075
|
-
if (newRemainingIt != newRemainingPairs.end()) {
|
|
1076
|
-
newRemainingPairs.erase(newRemainingIt);
|
|
1077
|
-
}
|
|
1078
|
-
}
|
|
1079
|
-
}
|
|
1080
|
-
}
|
|
1081
|
-
|
|
1082
|
-
newIndex++;
|
|
1083
|
-
oldIndex++;
|
|
1084
|
-
continue;
|
|
1085
|
-
}
|
|
1086
|
-
|
|
1087
|
-
// Update subtrees if View is not flattened, and if node addresses are
|
|
1088
|
-
// not equal
|
|
1089
|
-
if (oldChildPair.shadowNode != newChildPair.shadowNode) {
|
|
1090
|
-
auto oldGrandChildPairs =
|
|
1091
|
-
sliceChildShadowNodeViewPairsV2(*oldChildPair.shadowNode);
|
|
1092
|
-
auto newGrandChildPairs =
|
|
1093
|
-
sliceChildShadowNodeViewPairsV2(*newChildPair.shadowNode);
|
|
1094
|
-
calculateShadowViewMutationsV2(
|
|
1095
|
-
*(newGrandChildPairs.size() ? &downwardMutations
|
|
1096
|
-
: &destructiveDownwardMutations),
|
|
1097
|
-
oldChildPair.shadowView,
|
|
1098
|
-
std::move(oldGrandChildPairs),
|
|
1099
|
-
std::move(newGrandChildPairs));
|
|
1100
|
-
}
|
|
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);
|
|
1101
1328
|
|
|
1102
1329
|
newIndex++;
|
|
1103
1330
|
oldIndex++;
|
|
@@ -1108,7 +1335,7 @@ static void calculateShadowViewMutationsV2(
|
|
|
1108
1335
|
// We have an old pair, but we either don't have any remaining new pairs
|
|
1109
1336
|
// or we have one but it's not matched up with the old pair
|
|
1110
1337
|
if (haveOldPair) {
|
|
1111
|
-
auto const &oldChildPair = oldChildPairs[oldIndex];
|
|
1338
|
+
auto const &oldChildPair = *oldChildPairs[oldIndex];
|
|
1112
1339
|
|
|
1113
1340
|
Tag oldTag = oldChildPair.shadowView.tag;
|
|
1114
1341
|
|
|
@@ -1120,145 +1347,29 @@ static void calculateShadowViewMutationsV2(
|
|
|
1120
1347
|
if (insertedIt != newInsertedPairs.end()) {
|
|
1121
1348
|
auto const &newChildPair = *insertedIt->second;
|
|
1122
1349
|
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
calculateShadowViewMutationsFlattener(
|
|
1147
|
-
ReparentMode::Flatten,
|
|
1148
|
-
mutationInstructionContainer,
|
|
1149
|
-
parentShadowView,
|
|
1150
|
-
newRemainingPairs,
|
|
1151
|
-
oldChildPair);
|
|
1152
|
-
}
|
|
1153
|
-
// Unflattening
|
|
1154
|
-
else {
|
|
1155
|
-
// Construct unvisited nodes map
|
|
1156
|
-
auto unvisitedOldChildPairs =
|
|
1157
|
-
TinyMap<Tag, ShadowViewNodePair *>{};
|
|
1158
|
-
// We don't know where all the children of oldChildPair are within
|
|
1159
|
-
// oldChildPairs, but we know that they're in the same relative
|
|
1160
|
-
// order. The reason for this is because of flattening + zIndex:
|
|
1161
|
-
// the children could be listed before the parent, interwoven with
|
|
1162
|
-
// children from other nodes, etc.
|
|
1163
|
-
auto oldFlattenedNodes = sliceChildShadowNodeViewPairsV2(
|
|
1164
|
-
*oldChildPair.shadowNode, true);
|
|
1165
|
-
for (size_t i = 0, j = 0;
|
|
1166
|
-
i < oldChildPairs.size() && j < oldFlattenedNodes.size();
|
|
1167
|
-
i++) {
|
|
1168
|
-
auto &oldChild = oldChildPairs[i];
|
|
1169
|
-
if (oldChild.shadowView.tag ==
|
|
1170
|
-
oldFlattenedNodes[j].shadowView.tag) {
|
|
1171
|
-
unvisitedOldChildPairs.insert(
|
|
1172
|
-
{oldChild.shadowView.tag, &oldChild});
|
|
1173
|
-
j++;
|
|
1174
|
-
}
|
|
1175
|
-
}
|
|
1176
|
-
|
|
1177
|
-
// Unflatten old list into new tree
|
|
1178
|
-
calculateShadowViewMutationsFlattener(
|
|
1179
|
-
ReparentMode::Unflatten,
|
|
1180
|
-
mutationInstructionContainer,
|
|
1181
|
-
parentShadowView,
|
|
1182
|
-
unvisitedOldChildPairs,
|
|
1183
|
-
newChildPair);
|
|
1184
|
-
|
|
1185
|
-
// If old nodes were not visited, we know that we can delete them
|
|
1186
|
-
// now. They will be removed from the hierarchy by the outermost
|
|
1187
|
-
// loop of this function. TODO: delete recursively? create
|
|
1188
|
-
// recursively?
|
|
1189
|
-
for (auto &oldFlattenedNode : oldFlattenedNodes) {
|
|
1190
|
-
auto unvisitedOldChildPairIt = unvisitedOldChildPairs.find(
|
|
1191
|
-
oldFlattenedNode.shadowView.tag);
|
|
1192
|
-
if (unvisitedOldChildPairIt == unvisitedOldChildPairs.end()) {
|
|
1193
|
-
// Node was visited - make sure to remove it from
|
|
1194
|
-
// "newRemainingPairs" map
|
|
1195
|
-
auto newRemainingIt =
|
|
1196
|
-
newRemainingPairs.find(oldFlattenedNode.shadowView.tag);
|
|
1197
|
-
if (newRemainingIt != newRemainingPairs.end()) {
|
|
1198
|
-
newRemainingPairs.erase(newRemainingIt);
|
|
1199
|
-
}
|
|
1200
|
-
}
|
|
1201
|
-
}
|
|
1202
|
-
}
|
|
1203
|
-
}
|
|
1204
|
-
|
|
1205
|
-
// Check concrete-ness of views
|
|
1206
|
-
// Create/Delete and Insert/Remove if necessary
|
|
1207
|
-
// TODO: document: Insert should already be handled by outermost loop,
|
|
1208
|
-
// but not Remove
|
|
1209
|
-
if (oldChildPair.isConcreteView != newChildPair.isConcreteView) {
|
|
1210
|
-
if (newChildPair.isConcreteView) {
|
|
1211
|
-
createMutations.push_back(
|
|
1212
|
-
ShadowViewMutation::CreateMutation(newChildPair.shadowView));
|
|
1213
|
-
} else {
|
|
1214
|
-
removeMutations.push_back(ShadowViewMutation::RemoveMutation(
|
|
1215
|
-
parentShadowView,
|
|
1216
|
-
oldChildPair.shadowView,
|
|
1217
|
-
oldChildPair.mountIndex));
|
|
1218
|
-
deleteMutations.push_back(
|
|
1219
|
-
ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
|
|
1220
|
-
}
|
|
1221
|
-
}
|
|
1222
|
-
|
|
1223
|
-
// We handled this case above. We fall through to check concreteness
|
|
1224
|
-
// of old/new view to remove/insert create/delete above, and then bail
|
|
1225
|
-
// out here.
|
|
1226
|
-
if (oldChildPair.flattened != newChildPair.flattened) {
|
|
1227
|
-
newInsertedPairs.erase(insertedIt);
|
|
1228
|
-
oldIndex++;
|
|
1229
|
-
continue;
|
|
1230
|
-
}
|
|
1231
|
-
|
|
1232
|
-
// old and new child pairs are both either flattened or unflattened at
|
|
1233
|
-
// this point. If they're not views, we don't need to update subtrees.
|
|
1234
|
-
if (oldChildPair.isConcreteView) {
|
|
1235
|
-
// TODO: do we always want to remove here? There are cases where we
|
|
1236
|
-
// might be able to remove this to prevent unnecessary
|
|
1237
|
-
// removes/inserts in cases of (un)flattening + reorders?
|
|
1238
|
-
removeMutations.push_back(ShadowViewMutation::RemoveMutation(
|
|
1239
|
-
parentShadowView,
|
|
1240
|
-
oldChildPair.shadowView,
|
|
1241
|
-
oldChildPair.mountIndex));
|
|
1242
|
-
|
|
1243
|
-
if (oldChildPair.shadowView != newChildPair.shadowView) {
|
|
1244
|
-
updateMutations.push_back(ShadowViewMutation::UpdateMutation(
|
|
1245
|
-
oldChildPair.shadowView, newChildPair.shadowView));
|
|
1246
|
-
}
|
|
1247
|
-
}
|
|
1248
|
-
if (!oldChildPair.flattened &&
|
|
1249
|
-
oldChildPair.shadowNode != newChildPair.shadowNode) {
|
|
1250
|
-
// Update subtrees
|
|
1251
|
-
auto oldGrandChildPairs =
|
|
1252
|
-
sliceChildShadowNodeViewPairsV2(*oldChildPair.shadowNode);
|
|
1253
|
-
auto newGrandChildPairs =
|
|
1254
|
-
sliceChildShadowNodeViewPairsV2(*newChildPair.shadowNode);
|
|
1255
|
-
calculateShadowViewMutationsV2(
|
|
1256
|
-
*(newGrandChildPairs.size() ? &downwardMutations
|
|
1257
|
-
: &destructiveDownwardMutations),
|
|
1258
|
-
oldChildPair.shadowView,
|
|
1259
|
-
std::move(oldGrandChildPairs),
|
|
1260
|
-
std::move(newGrandChildPairs));
|
|
1261
|
-
}
|
|
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);
|
|
1262
1373
|
|
|
1263
1374
|
newInsertedPairs.erase(insertedIt);
|
|
1264
1375
|
oldIndex++;
|
|
@@ -1270,26 +1381,61 @@ static void calculateShadowViewMutationsV2(
|
|
|
1270
1381
|
// generate remove+delete for this node and its subtree.
|
|
1271
1382
|
auto const newIt = newRemainingPairs.find(oldTag);
|
|
1272
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
|
+
|
|
1273
1394
|
DEBUG_LOGS({
|
|
1274
1395
|
LOG(ERROR)
|
|
1275
1396
|
<< "Differ Branch 9: Removing tag that was not reinserted: "
|
|
1276
1397
|
<< oldIndex << ": [" << oldChildPair.shadowView.tag << "]"
|
|
1277
1398
|
<< (oldChildPair.flattened ? " (flattened)" : "")
|
|
1278
1399
|
<< (oldChildPair.isConcreteView ? " (concrete)" : "")
|
|
1279
|
-
<< " with parent: [" << parentShadowView.tag << "]"
|
|
1400
|
+
<< " with parent: [" << parentShadowView.tag << "] "
|
|
1401
|
+
<< "node is in other tree? "
|
|
1402
|
+
<< (oldChildPair.inOtherTree() ? "yes" : "no");
|
|
1280
1403
|
});
|
|
1281
1404
|
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
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;
|
|
1290
1428
|
}
|
|
1291
1429
|
|
|
1292
|
-
|
|
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
|
+
|
|
1293
1439
|
continue;
|
|
1294
1440
|
}
|
|
1295
1441
|
}
|
|
@@ -1297,7 +1443,7 @@ static void calculateShadowViewMutationsV2(
|
|
|
1297
1443
|
// At this point, oldTag is -1 or is in the new list, and hasn't been
|
|
1298
1444
|
// inserted or matched yet. We're not sure yet if the new node is in the
|
|
1299
1445
|
// old list - generate an insert instruction for the new node.
|
|
1300
|
-
auto &newChildPair = newChildPairs[newIndex];
|
|
1446
|
+
auto &newChildPair = *newChildPairs[newIndex];
|
|
1301
1447
|
DEBUG_LOGS({
|
|
1302
1448
|
LOG(ERROR)
|
|
1303
1449
|
<< "Differ Branch 10: Inserting tag/tree that was not (yet?) removed from hierarchy: "
|
|
@@ -1308,21 +1454,29 @@ static void calculateShadowViewMutationsV2(
|
|
|
1308
1454
|
<< " with parent: [" << parentShadowView.tag << "]";
|
|
1309
1455
|
});
|
|
1310
1456
|
if (newChildPair.isConcreteView) {
|
|
1311
|
-
insertMutations.push_back(
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1457
|
+
mutationContainer.insertMutations.push_back(
|
|
1458
|
+
ShadowViewMutation::InsertMutation(
|
|
1459
|
+
parentShadowView,
|
|
1460
|
+
newChildPair.shadowView,
|
|
1461
|
+
static_cast<int>(newChildPair.mountIndex)));
|
|
1315
1462
|
}
|
|
1316
|
-
|
|
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()) {
|
|
1317
1470
|
newInsertedPairs.insert({newChildPair.shadowView.tag, &newChildPair});
|
|
1318
1471
|
}
|
|
1472
|
+
|
|
1319
1473
|
newIndex++;
|
|
1320
1474
|
}
|
|
1321
1475
|
|
|
1322
1476
|
// Penultimate step: generate Delete instructions for entirely deleted
|
|
1323
1477
|
// subtrees/nodes. We do this here because we need to traverse the entire
|
|
1324
|
-
// list to make sure that a node was not reparented into an unflattened
|
|
1325
|
-
// 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.
|
|
1326
1480
|
for (auto it = deletionCandidatePairs.begin();
|
|
1327
1481
|
it != deletionCandidatePairs.end();
|
|
1328
1482
|
it++) {
|
|
@@ -1338,27 +1492,34 @@ static void calculateShadowViewMutationsV2(
|
|
|
1338
1492
|
<< "[" << oldChildPair.shadowView.tag << "]"
|
|
1339
1493
|
<< (oldChildPair.flattened ? "(flattened)" : "")
|
|
1340
1494
|
<< (oldChildPair.isConcreteView ? "(concrete)" : "")
|
|
1341
|
-
<< (oldChildPair.inOtherTree ? "(in other tree)" : "")
|
|
1342
|
-
<< " with parent: [" << parentShadowView.tag << "]"
|
|
1495
|
+
<< (oldChildPair.inOtherTree() ? "(in other tree)" : "")
|
|
1496
|
+
<< " with parent: [" << parentShadowView.tag << "] ##"
|
|
1497
|
+
<< std::hash<ShadowView>{}(oldChildPair.shadowView);
|
|
1343
1498
|
});
|
|
1344
1499
|
|
|
1345
1500
|
// This can happen when the parent is unflattened
|
|
1346
|
-
if (!oldChildPair.inOtherTree) {
|
|
1347
|
-
deleteMutations.push_back(
|
|
1501
|
+
if (!oldChildPair.inOtherTree() && oldChildPair.isConcreteView) {
|
|
1502
|
+
mutationContainer.deleteMutations.push_back(
|
|
1348
1503
|
ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
|
|
1349
1504
|
|
|
1350
1505
|
// We also have to call the algorithm recursively to clean up the
|
|
1351
1506
|
// entire subtree starting from the removed view.
|
|
1507
|
+
ViewNodePairScope innerScope{};
|
|
1352
1508
|
calculateShadowViewMutationsV2(
|
|
1353
|
-
|
|
1509
|
+
DIFF_BREADCRUMB(
|
|
1510
|
+
"Non-trivial delete " +
|
|
1511
|
+
std::to_string(oldChildPair.shadowView.tag)),
|
|
1512
|
+
innerScope,
|
|
1513
|
+
mutationContainer.destructiveDownwardMutations,
|
|
1354
1514
|
oldChildPair.shadowView,
|
|
1355
|
-
|
|
1515
|
+
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1516
|
+
oldChildPair, innerScope),
|
|
1356
1517
|
{});
|
|
1357
1518
|
}
|
|
1358
1519
|
}
|
|
1359
1520
|
|
|
1360
|
-
// Final step: generate Create instructions for entirely new
|
|
1361
|
-
// 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.
|
|
1362
1523
|
for (auto it = newInsertedPairs.begin(); it != newInsertedPairs.end();
|
|
1363
1524
|
it++) {
|
|
1364
1525
|
// Erased elements of a TinyMap will have a Tag/key of 0 - skip those
|
|
@@ -1377,56 +1538,62 @@ static void calculateShadowViewMutationsV2(
|
|
|
1377
1538
|
<< "[" << newChildPair.shadowView.tag << "]"
|
|
1378
1539
|
<< (newChildPair.flattened ? "(flattened)" : "")
|
|
1379
1540
|
<< (newChildPair.isConcreteView ? "(concrete)" : "")
|
|
1380
|
-
<< (newChildPair.inOtherTree ? "(in other tree)" : "")
|
|
1541
|
+
<< (newChildPair.inOtherTree() ? "(in other tree)" : "")
|
|
1381
1542
|
<< " with parent: [" << parentShadowView.tag << "]";
|
|
1382
1543
|
});
|
|
1383
1544
|
|
|
1384
1545
|
if (!newChildPair.isConcreteView) {
|
|
1385
1546
|
continue;
|
|
1386
1547
|
}
|
|
1387
|
-
if (newChildPair.inOtherTree) {
|
|
1548
|
+
if (newChildPair.inOtherTree()) {
|
|
1388
1549
|
continue;
|
|
1389
1550
|
}
|
|
1390
1551
|
|
|
1391
|
-
createMutations.push_back(
|
|
1552
|
+
mutationContainer.createMutations.push_back(
|
|
1392
1553
|
ShadowViewMutation::CreateMutation(newChildPair.shadowView));
|
|
1393
1554
|
|
|
1555
|
+
ViewNodePairScope innerScope{};
|
|
1394
1556
|
calculateShadowViewMutationsV2(
|
|
1395
|
-
|
|
1557
|
+
DIFF_BREADCRUMB(
|
|
1558
|
+
"Non-trivial create " +
|
|
1559
|
+
std::to_string(newChildPair.shadowView.tag)),
|
|
1560
|
+
innerScope,
|
|
1561
|
+
mutationContainer.downwardMutations,
|
|
1396
1562
|
newChildPair.shadowView,
|
|
1397
1563
|
{},
|
|
1398
|
-
|
|
1564
|
+
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1565
|
+
newChildPair, innerScope));
|
|
1399
1566
|
}
|
|
1400
1567
|
}
|
|
1401
1568
|
|
|
1402
1569
|
// All mutations in an optimal order:
|
|
1403
1570
|
std::move(
|
|
1404
|
-
destructiveDownwardMutations.begin(),
|
|
1405
|
-
destructiveDownwardMutations.end(),
|
|
1571
|
+
mutationContainer.destructiveDownwardMutations.begin(),
|
|
1572
|
+
mutationContainer.destructiveDownwardMutations.end(),
|
|
1406
1573
|
std::back_inserter(mutations));
|
|
1407
1574
|
std::move(
|
|
1408
|
-
updateMutations.begin(),
|
|
1409
|
-
updateMutations.end(),
|
|
1575
|
+
mutationContainer.updateMutations.begin(),
|
|
1576
|
+
mutationContainer.updateMutations.end(),
|
|
1410
1577
|
std::back_inserter(mutations));
|
|
1411
1578
|
std::move(
|
|
1412
|
-
removeMutations.rbegin(),
|
|
1413
|
-
removeMutations.rend(),
|
|
1579
|
+
mutationContainer.removeMutations.rbegin(),
|
|
1580
|
+
mutationContainer.removeMutations.rend(),
|
|
1414
1581
|
std::back_inserter(mutations));
|
|
1415
1582
|
std::move(
|
|
1416
|
-
deleteMutations.begin(),
|
|
1417
|
-
deleteMutations.end(),
|
|
1583
|
+
mutationContainer.deleteMutations.begin(),
|
|
1584
|
+
mutationContainer.deleteMutations.end(),
|
|
1418
1585
|
std::back_inserter(mutations));
|
|
1419
1586
|
std::move(
|
|
1420
|
-
createMutations.begin(),
|
|
1421
|
-
createMutations.end(),
|
|
1587
|
+
mutationContainer.createMutations.begin(),
|
|
1588
|
+
mutationContainer.createMutations.end(),
|
|
1422
1589
|
std::back_inserter(mutations));
|
|
1423
1590
|
std::move(
|
|
1424
|
-
downwardMutations.begin(),
|
|
1425
|
-
downwardMutations.end(),
|
|
1591
|
+
mutationContainer.downwardMutations.begin(),
|
|
1592
|
+
mutationContainer.downwardMutations.end(),
|
|
1426
1593
|
std::back_inserter(mutations));
|
|
1427
1594
|
std::move(
|
|
1428
|
-
insertMutations.begin(),
|
|
1429
|
-
insertMutations.end(),
|
|
1595
|
+
mutationContainer.insertMutations.begin(),
|
|
1596
|
+
mutationContainer.insertMutations.end(),
|
|
1430
1597
|
std::back_inserter(mutations));
|
|
1431
1598
|
}
|
|
1432
1599
|
|
|
@@ -1434,7 +1601,7 @@ static void calculateShadowViewMutationsV2(
|
|
|
1434
1601
|
* Only used by unit tests currently.
|
|
1435
1602
|
*/
|
|
1436
1603
|
static void sliceChildShadowNodeViewPairsRecursivelyLegacy(
|
|
1437
|
-
ShadowViewNodePair::
|
|
1604
|
+
ShadowViewNodePair::OwningList &pairList,
|
|
1438
1605
|
Point layoutOffset,
|
|
1439
1606
|
ShadowNode const &shadowNode) {
|
|
1440
1607
|
for (auto const &sharedChildShadowNode : shadowNode.getChildren()) {
|
|
@@ -1473,9 +1640,9 @@ static void sliceChildShadowNodeViewPairsRecursivelyLegacy(
|
|
|
1473
1640
|
/**
|
|
1474
1641
|
* Only used by unit tests currently.
|
|
1475
1642
|
*/
|
|
1476
|
-
ShadowViewNodePair::
|
|
1643
|
+
ShadowViewNodePair::OwningList sliceChildShadowNodeViewPairsLegacy(
|
|
1477
1644
|
ShadowNode const &shadowNode) {
|
|
1478
|
-
auto pairList = ShadowViewNodePair::
|
|
1645
|
+
auto pairList = ShadowViewNodePair::OwningList{};
|
|
1479
1646
|
|
|
1480
1647
|
if (!shadowNode.getTraits().check(
|
|
1481
1648
|
ShadowNodeTraits::Trait::FormsStackingContext) &&
|
|
@@ -1494,7 +1661,12 @@ ShadowViewMutation::List calculateShadowViewMutations(
|
|
|
1494
1661
|
SystraceSection s("calculateShadowViewMutations");
|
|
1495
1662
|
|
|
1496
1663
|
// Root shadow nodes must be belong the same family.
|
|
1497
|
-
|
|
1664
|
+
react_native_assert(
|
|
1665
|
+
ShadowNode::sameFamily(oldRootShadowNode, newRootShadowNode));
|
|
1666
|
+
|
|
1667
|
+
// See explanation of scope in Differentiator.h.
|
|
1668
|
+
ViewNodePairScope viewNodePairScope{};
|
|
1669
|
+
ViewNodePairScope innerViewNodePairScope{};
|
|
1498
1670
|
|
|
1499
1671
|
auto mutations = ShadowViewMutation::List{};
|
|
1500
1672
|
mutations.reserve(256);
|
|
@@ -1508,10 +1680,12 @@ ShadowViewMutation::List calculateShadowViewMutations(
|
|
|
1508
1680
|
}
|
|
1509
1681
|
|
|
1510
1682
|
calculateShadowViewMutationsV2(
|
|
1683
|
+
CREATE_DIFF_BREADCRUMB(oldRootShadowView.tag),
|
|
1684
|
+
innerViewNodePairScope,
|
|
1511
1685
|
mutations,
|
|
1512
1686
|
ShadowView(oldRootShadowNode),
|
|
1513
|
-
sliceChildShadowNodeViewPairsV2(oldRootShadowNode),
|
|
1514
|
-
sliceChildShadowNodeViewPairsV2(newRootShadowNode));
|
|
1687
|
+
sliceChildShadowNodeViewPairsV2(oldRootShadowNode, viewNodePairScope),
|
|
1688
|
+
sliceChildShadowNodeViewPairsV2(newRootShadowNode, viewNodePairScope));
|
|
1515
1689
|
|
|
1516
1690
|
return mutations;
|
|
1517
1691
|
}
|