react-native 0.0.0-17be3a003 → 0.0.0-18697adec
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +14 -1
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +2 -0
- package/Libraries/Animated/AnimatedEvent.js +23 -4
- package/Libraries/Animated/AnimatedImplementation.js +0 -2
- package/Libraries/Animated/AnimatedMock.js +1 -8
- package/Libraries/Animated/NativeAnimatedHelper.js +3 -3
- 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/createAnimatedComponent.js +6 -18
- package/Libraries/Animated/createAnimatedComponentInjection.js +48 -0
- package/Libraries/Animated/createAnimatedComponent_EXPERIMENTAL.js +48 -0
- package/Libraries/Animated/nodes/AnimatedProps.js +0 -1
- package/Libraries/Animated/nodes/AnimatedValue.js +20 -1
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -0
- package/Libraries/Animated/useAnimatedProps.js +211 -0
- package/Libraries/BatchedBridge/MessageQueue.js +15 -10
- package/Libraries/BatchedBridge/NativeModules.js +5 -1
- package/Libraries/Blob/FileReader.js +1 -1
- 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 +1 -1
- package/Libraries/Blob/URL.js +2 -2
- package/Libraries/BugReporting/BugReporting.js +2 -0
- package/Libraries/BugReporting/getReactData.js +1 -1
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -6
- package/Libraries/Components/Button.js +27 -12
- package/Libraries/Components/DatePicker/DatePickerIOS.android.js +4 -5
- package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +50 -12
- package/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js +1 -0
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -7
- package/Libraries/Components/Keyboard/Keyboard.js +1 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
- package/Libraries/Components/MaskedView/MaskedViewIOS.ios.js +3 -3
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +18 -15
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js +4 -5
- package/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +2 -3
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +2 -3
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +2 -2
- package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +2 -2
- package/Libraries/Components/ScrollView/ScrollView.js +22 -5
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +3 -2
- package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +2 -0
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +3 -9
- package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +2 -0
- package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js +4 -5
- package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js +14 -6
- package/Libraries/Components/Slider/Slider.js +19 -6
- package/Libraries/Components/StatusBar/StatusBar.js +10 -19
- package/Libraries/Components/Switch/Switch.js +98 -114
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +9 -6
- package/Libraries/Components/TextInput/AndroidTextInputViewConfig.js +2 -1
- package/Libraries/Components/TextInput/InputAccessoryView.js +6 -6
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +5 -13
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +5 -13
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -2
- package/Libraries/Components/TextInput/TextInput.js +53 -19
- package/Libraries/Components/TextInput/TextInputState.js +1 -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 +20 -6
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
- package/Libraries/Components/Touchable/TouchableOpacity.js +11 -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 -1
- package/Libraries/Components/View/ViewAccessibility.js +3 -0
- package/Libraries/Core/Devtools/parseErrorStack.js +0 -10
- 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/ReactFiberErrorDialog.js +44 -34
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/Libraries/Core/Timers/JSTimers.js +37 -28
- 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/setUpGlobals.js +2 -0
- package/Libraries/Core/setUpRegeneratorRuntime.js +25 -8
- package/Libraries/Core/setUpTimers.js +65 -6
- 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 +22 -1
- package/Libraries/EventEmitter/RCTEventEmitter.js +5 -1
- package/Libraries/FBLazyVector/BUCK +5 -1
- package/Libraries/Image/Image.android.js +22 -131
- package/Libraries/Image/Image.ios.js +16 -8
- package/Libraries/Image/ImageBackground.js +10 -8
- package/Libraries/Image/ImageInjection.js +28 -0
- package/Libraries/Image/ImageProps.js +28 -0
- package/Libraries/Image/ImageSource.js +108 -65
- package/Libraries/Image/NativeImageLoaderIOS.js +2 -1
- package/Libraries/Image/RCTImageLoader.h +2 -2
- package/Libraries/Image/RCTImageLoader.mm +6 -6
- package/Libraries/Image/RCTImagePlugins.mm +4 -3
- package/Libraries/Image/React-RCTImage.podspec +1 -1
- package/Libraries/Inspector/Inspector.js +6 -0
- package/Libraries/Interaction/InteractionManager.js +3 -0
- package/Libraries/Interaction/PanResponder.js +1 -1
- package/Libraries/LinkingIOS/RCTLinkingPlugins.mm +4 -3
- package/Libraries/LinkingIOS/React-RCTLinking.podspec +1 -1
- package/Libraries/Lists/CellRenderMask.js +145 -0
- package/Libraries/Lists/FlatList.js +43 -26
- package/Libraries/Lists/VirtualizedList.js +14 -17
- package/Libraries/Lists/VirtualizedSectionList.js +159 -136
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +4 -4
- package/Libraries/LogBox/Data/LogBoxData.js +21 -19
- package/Libraries/LogBox/LogBox.js +114 -47
- 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/LogBoxInspectorSourceMapStatus.js +1 -0
- package/Libraries/Modal/Modal.js +8 -0
- package/Libraries/Modal/RCTModalHostViewNativeComponent.js +8 -2
- 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 +1 -1
- package/Libraries/Network/RCTHTTPRequestHandler.h +5 -0
- package/Libraries/Network/RCTHTTPRequestHandler.mm +19 -7
- package/Libraries/Network/RCTNetworkPlugins.mm +4 -3
- package/Libraries/Network/RCTNetworking.h +1 -1
- package/Libraries/Network/RCTNetworking.mm +3 -3
- package/Libraries/Network/React-RCTNetwork.podspec +1 -1
- package/Libraries/Network/XMLHttpRequest.js +4 -1
- package/Libraries/NewAppScreen/components/Header.js +1 -0
- package/Libraries/NewAppScreen/components/HermesBadge.js +4 -1
- package/Libraries/NewAppScreen/components/logo.png +0 -0
- package/Libraries/Performance/QuickPerformanceLogger.js +3 -1
- package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +4 -1
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +6 -0
- package/Libraries/Pressability/Pressability.js +1 -0
- package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -0
- package/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +0 -1
- package/Libraries/PushNotificationIOS/RCTPushNotificationPlugins.mm +4 -3
- package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +1 -1
- package/Libraries/RCTRequired/BUCK +4 -1
- package/Libraries/ReactNative/AppContainer.js +3 -8
- package/Libraries/ReactNative/AppRegistry.js +7 -2
- package/Libraries/ReactNative/DisplayMode.js +4 -5
- package/Libraries/ReactNative/DummyUIManager.js +7 -2
- package/Libraries/ReactNative/FabricUIManager.js +4 -3
- package/Libraries/ReactNative/I18nManager.js +12 -3
- package/Libraries/ReactNative/NativeUIManager.js +2 -1
- package/Libraries/ReactNative/PaperUIManager.js +3 -1
- package/Libraries/ReactNative/RootTag.js +2 -2
- package/Libraries/ReactNative/UIManager.js +2 -1
- package/Libraries/ReactNative/getCachedComponentWithDebugName.js +32 -0
- package/Libraries/ReactNative/renderApplication.js +12 -5
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +2 -3
- package/Libraries/Reliability/UserFlow.js +7 -0
- package/Libraries/Renderer/REVISION +1 -1
- package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +6364 -5120
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +7877 -6935
- package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +2488 -2118
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +2112 -1937
- package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +2922 -2418
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +2568 -2244
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +6086 -4942
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5736 -4864
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +1624 -1394
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +2275 -2120
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +2279 -1921
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +2565 -2259
- package/Libraries/Renderer/shims/ReactFabric.js +5 -4
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -1
- package/Libraries/Renderer/shims/ReactNative.js +3 -1
- package/Libraries/Renderer/shims/ReactNativeTypes.js +7 -4
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -1
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +3 -1
- package/Libraries/Settings/RCTSettingsPlugins.mm +4 -3
- package/Libraries/Settings/React-RCTSettings.podspec +1 -1
- package/Libraries/Settings/Settings.ios.js +4 -0
- package/Libraries/Storage/AsyncStorage.js +1 -0
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +16 -1
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +8 -1
- package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +2 -0
- package/Libraries/StyleSheet/StyleSheet.js +3 -5
- package/Libraries/StyleSheet/normalizeColor.js +2 -2
- package/Libraries/SurfaceHostingComponent/RCTSurfaceHostingComponent.mm +1 -1
- package/Libraries/Text/Text.js +17 -0
- package/Libraries/Text/TextInput/RCTBaseTextInputView.m +10 -12
- package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.m +4 -11
- package/Libraries/Text/TextProps.js +7 -7
- package/Libraries/TurboModule/RCTExport.js +1 -1
- package/Libraries/TurboModule/TurboModuleRegistry.js +1 -10
- package/Libraries/TypeSafety/RCTTypeSafety.podspec +1 -1
- package/Libraries/{Components/Picker/PickerAndroid.ios.js → Types/RootTagTypes.js} +2 -3
- package/Libraries/UTFSequence.js +1 -1
- package/Libraries/Utilities/Dimensions.js +9 -14
- package/Libraries/Utilities/FeatureDetection.js +31 -0
- package/Libraries/Utilities/HMRClient.js +15 -8
- package/Libraries/Utilities/MatrixMath.js +1 -1
- package/Libraries/Utilities/NativeDeviceInfo.js +1 -1
- package/Libraries/Utilities/PerformanceLoggerContext.js +8 -2
- package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +1 -0
- package/Libraries/Utilities/deprecatedPropType.js +2 -2
- package/Libraries/Utilities/useMergeRefs.js +44 -0
- package/Libraries/Utilities/useRefEffect.js +45 -0
- package/Libraries/Utilities/useWindowDimensions.js +7 -2
- package/Libraries/Vibration/RCTVibrationPlugins.mm +4 -3
- package/Libraries/Vibration/React-RCTVibration.podspec +1 -1
- package/Libraries/YellowBox/YellowBoxDeprecated.js +1 -0
- package/Libraries/promiseRejectionTrackingOptions.js +2 -0
- package/Libraries/vendor/emitter/_EventSubscriptionVendor.js +1 -1
- package/README.md +5 -5
- package/React/Base/RCTAssert.h +23 -13
- package/React/Base/RCTAssert.m +35 -9
- package/React/Base/RCTBridge+Private.h +8 -2
- package/React/Base/RCTBridge.h +19 -3
- package/React/Base/RCTBridge.m +33 -12
- package/React/Base/RCTBridgeModule.h +62 -12
- package/React/Base/RCTBundleManager.m +78 -0
- package/React/Base/RCTBundleURLProvider.h +36 -8
- package/React/Base/RCTBundleURLProvider.mm +91 -12
- package/React/Base/RCTCallableJSModules.m +47 -0
- package/React/Base/RCTConstants.h +6 -13
- package/React/Base/RCTConstants.m +12 -27
- 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 +12 -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 +15 -0
- package/React/Base/RCTRootView.m +15 -0
- package/React/Base/RCTTouchHandler.m +4 -9
- 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/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 +10 -23
- package/React/CoreModules/RCTDevMenu.mm +22 -25
- package/React/CoreModules/RCTDevSettings.h +2 -1
- package/React/CoreModules/RCTDevSettings.mm +76 -75
- 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 +17 -25
- package/React/CoreModules/RCTKeyboardObserver.mm +1 -1
- package/React/CoreModules/RCTLogBox.mm +14 -10
- package/React/CoreModules/RCTPerfMonitor.mm +9 -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/React-CoreModules.podspec +1 -1
- package/React/CxxBridge/RCTCxxBridge.mm +81 -12
- package/React/CxxModule/RCTNativeModule.mm +3 -1
- package/React/DevSupport/RCTPackagerConnection.h +3 -0
- package/React/DevSupport/RCTPackagerConnection.mm +19 -8
- package/React/FBReactNativeSpec/FBReactNativeSpec.podspec +12 -4
- package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +3 -0
- package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.h +3 -6
- package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +41 -26
- package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.h +0 -1
- package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.mm +0 -1
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +101 -85
- package/React/Fabric/Mounting/ComponentViews/Text/RCTAccessibilityElement.h +7 -0
- package/React/Fabric/Mounting/ComponentViews/Text/RCTAccessibilityElement.mm +5 -1
- package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentAccessibilityProvider.mm +12 -9
- package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm +1 -0
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +53 -17
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.h +6 -0
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +110 -8
- package/React/Fabric/Mounting/RCTComponentViewFactory.mm +1 -0
- package/React/Fabric/Mounting/RCTMountingManager.h +6 -1
- package/React/Fabric/Mounting/RCTMountingManager.mm +25 -4
- package/React/Fabric/Mounting/UIView+ComponentViewProtocol.h +2 -0
- package/React/Fabric/Mounting/UIView+ComponentViewProtocol.mm +12 -0
- package/React/Fabric/RCTConversions.h +3 -0
- package/React/Fabric/RCTScheduler.h +3 -1
- package/React/Fabric/RCTScheduler.mm +26 -8
- package/React/Fabric/RCTSurfacePresenter.mm +33 -33
- package/React/Fabric/RCTSurfacePresenterBridgeAdapter.h +4 -2
- package/React/Fabric/RCTSurfacePresenterBridgeAdapter.mm +1 -1
- package/React/Fabric/RCTSurfaceRegistry.h +1 -1
- package/React/Fabric/RCTSurfaceTouchHandler.mm +6 -20
- package/React/Fabric/Surface/RCTFabricSurface.mm +3 -0
- 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 +2 -0
- package/React/Profiler/RCTProfileTrampoline-arm.S +1 -1
- package/React/Profiler/RCTProfileTrampoline-arm64.S +2 -2
- package/React/React-RCTFabric.podspec +3 -3
- package/React/Tests/Text/RCTParagraphComponentViewTests.mm +63 -0
- 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/RCTModalManager.h +0 -7
- package/React/Views/RCTModalManager.m +0 -9
- package/React/Views/RCTView.h +7 -7
- package/React/Views/RCTView.m +32 -49
- package/React/Views/RCTViewManager.m +22 -4
- 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 +2 -2
- package/ReactAndroid/Android-prebuilt.mk +8 -0
- package/ReactAndroid/README.md +2 -2
- package/ReactAndroid/build.gradle +132 -20
- package/ReactAndroid/gradle.properties +7 -5
- 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/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/react/BUCK +1 -0
- 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 +124 -66
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +28 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +13 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +25 -3
- package/ReactAndroid/src/main/java/com/facebook/react/animated/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +4 -7
- 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/CatalystInstance.java +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +11 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java +37 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java +22 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +26 -6
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContextBaseJavaModule.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.java +39 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarkerConstants.java +3 -1
- 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 +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/BUCK +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/ReadableMapBuffer.java +7 -8
- 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/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/ReadableMapBuffer.cpp +23 -9
- package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/ReadableMapBuffer.h +8 -5
- package/ReactAndroid/src/main/java/com/facebook/react/config/BUCK +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +54 -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/DevServerHelper.java +9 -58
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +163 -328
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.java +3 -72
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/PackagerStatusCheck.java +100 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxHandler.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.java +10 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricComponents.java +4 -3
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java +8 -59
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +154 -74
- 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 +2 -2
- 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 +1 -2
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +171 -53
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h +21 -2
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/CoreComponentsRegistry.cpp +0 -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/mounting/MountItemDispatcher.java +53 -7
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +35 -13
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +136 -35
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.java +5 -5
- 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 +2 -2
- 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/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/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 +2 -2
- 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 +10 -6
- package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nManagerModule.java +7 -1
- 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/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/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/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/TurboModuleManager.java +4 -2
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp +39 -11
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.h +9 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.java +7 -28
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java +14 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +2 -4
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java +10 -13
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/PixelUtil.java +1 -6
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java +11 -5
- 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/TouchTargetHelper.java +162 -66
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +1 -4
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.java +28 -19
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +10 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +6 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +2 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java +16 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +53 -19
- 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 +20 -6
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java +34 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/ViewProps.java +9 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/ComponentNameResolverManager.cpp +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/ComponentNameResolverManager.h +10 -15
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerClosedEvent.java +0 -6
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerOpenedEvent.java +0 -6
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerSlideEvent.java +0 -6
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/events/DrawerStateChangedEvent.java +0 -6
- 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 +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java +6 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java +7 -11
- 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/ReactHorizontalScrollView.java +17 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +5 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +101 -8
- 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 +5 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java +9 -7
- 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 +4 -7
- package/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSlidingCompleteEvent.java +0 -5
- package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/BUCK +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchEvent.java +0 -6
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.java +3 -10
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/CustomStyleSpan.java +6 -8
- 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 +31 -3
- 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 +1 -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 +20 -51
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +39 -15
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +38 -10
- 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/ReactEditText.java +16 -6
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.java +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +117 -62
- 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/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +2 -7
- package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJTypesVanilla.h +8 -4
- package/ReactAndroid/src/main/jni/react/jni/Android.mk +5 -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/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/ReactAndroid/src/main/jni/third-party/libevent/event-config.h +340 -0
- 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 +0 -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 +4 -4
- package/ReactAndroid/src/main/third-party/java/okio/BUCK +2 -2
- 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/test/java/com/facebook/react/RootViewTest.java +2 -2
- 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/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/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 +11 -11
- package/ReactCommon/ReactCommon.podspec +3 -2
- package/ReactCommon/callinvoker/BUCK +2 -2
- package/ReactCommon/callinvoker/React-callinvoker.podspec +1 -1
- package/ReactCommon/cxxreact/Android.mk +2 -1
- package/ReactCommon/cxxreact/BUCK +1 -3
- package/ReactCommon/cxxreact/CxxNativeModule.cpp +28 -0
- package/ReactCommon/cxxreact/CxxNativeModule.h +9 -0
- package/ReactCommon/cxxreact/Instance.cpp +21 -1
- package/ReactCommon/cxxreact/NativeToJsBridge.cpp +0 -21
- package/ReactCommon/cxxreact/NativeToJsBridge.h +0 -6
- package/ReactCommon/cxxreact/React-cxxreact.podspec +4 -3
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/hermes/React-hermes.podspec +4 -4
- package/ReactCommon/hermes/executor/Android.mk +4 -4
- package/ReactCommon/hermes/inspector/Android.mk +1 -2
- package/ReactCommon/hermes/inspector/chrome/Connection.cpp +74 -0
- package/ReactCommon/hermes/inspector/chrome/MessageTypes.cpp +100 -1
- package/ReactCommon/hermes/inspector/chrome/MessageTypes.h +49 -1
- package/ReactCommon/hermes/inspector/chrome/tests/ConnectionTests.cpp +81 -0
- package/ReactCommon/hermes/inspector/tools/message_types.txt +2 -0
- package/ReactCommon/hermes/inspector/tools/msggen/package.json +8 -5
- package/ReactCommon/hermes/inspector/tools/msggen/src/Property.js +1 -0
- package/ReactCommon/hermes/inspector/tools/msggen/yarn.lock +2246 -1419
- package/ReactCommon/jsi/Android.mk +1 -1
- package/ReactCommon/jsi/BUCK +0 -2
- package/ReactCommon/jsi/JSCRuntime.cpp +7 -0
- package/ReactCommon/jsi/React-jsi.podspec +3 -3
- package/ReactCommon/jsi/jsi/decorator.h +7 -0
- package/ReactCommon/jsi/jsi/jsi.h +29 -0
- package/ReactCommon/jsi/jsi/jsilib-posix.cpp +1 -11
- package/ReactCommon/jsiexecutor/Android.mk +2 -2
- package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +2 -2
- package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +35 -2
- 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/nativemodule/core/Android.mk +2 -2
- 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/TurboModuleBinding.cpp +46 -1
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +10 -0
- package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +37 -1
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +24 -22
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.h +11 -8
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModule.h +7 -17
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModule.mm +73 -40
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.h +0 -1
- package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm +111 -107
- package/ReactCommon/react/nativemodule/samples/BUCK +2 -2
- package/ReactCommon/react/nativemodule/samples/platform/android/Android.mk +1 -1
- package/ReactCommon/react/nativemodule/samples/platform/ios/RCTSampleTurboModule.mm +0 -2
- package/ReactCommon/react/renderer/animations/BUCK +2 -0
- package/ReactCommon/react/renderer/animations/LayoutAnimationCallbackWrapper.h +34 -0
- package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +5 -27
- package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.h +8 -14
- package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +1231 -1401
- package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.h +90 -241
- 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/AttributedString.h +0 -1
- 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 +162 -11
- package/ReactCommon/react/renderer/attributedstring/primitives.h +34 -1
- 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 +12 -6
- package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.h +4 -1
- package/ReactCommon/react/renderer/componentregistry/componentNameByReactViewName.cpp +2 -1
- package/ReactCommon/react/renderer/components/image/Android.mk +1 -1
- 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/conversions.h +9 -2
- package/ReactCommon/react/renderer/components/inputaccessory/BUCK +1 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/BUCK +1 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +0 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.cpp +2 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropViewProps.h +2 -0
- package/ReactCommon/react/renderer/components/root/BUCK +1 -0
- 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 +1 -1
- package/ReactCommon/react/renderer/components/scrollview/Android.mk +1 -1
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.cpp +54 -4
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.h +10 -5
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.cpp +4 -3
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewState.h +5 -2
- package/ReactCommon/react/renderer/components/scrollview/conversions.h +5 -0
- package/ReactCommon/react/renderer/components/text/Android.mk +1 -1
- 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 +1 -16
- package/ReactCommon/react/renderer/components/text/ParagraphProps.cpp +10 -4
- package/ReactCommon/react/renderer/components/text/ParagraphProps.h +5 -1
- package/ReactCommon/react/renderer/components/text/ParagraphShadowNode.cpp +3 -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/textinput/Android.mk +1 -1
- 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/iostextinput/TextInputProps.cpp +46 -22
- package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputProps.h +6 -5
- 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 +1 -1
- package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.cpp +4 -2
- 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 +3 -2
- package/ReactCommon/react/renderer/components/view/BUCK +1 -0
- package/ReactCommon/react/renderer/components/view/Touch.h +1 -32
- 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 -10
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +5 -12
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +1 -1
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +58 -33
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h +2 -8
- 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 +78 -7
- package/ReactCommon/react/renderer/components/view/conversions.h +57 -14
- 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 +7 -2
- package/ReactCommon/react/renderer/core/Android.mk +1 -1
- package/ReactCommon/react/renderer/core/BUCK +1 -0
- 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 +5 -2
- package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +19 -21
- package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +4 -0
- 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/LayoutConstraints.h +6 -0
- package/ReactCommon/react/renderer/core/LayoutableShadowNode.cpp +1 -1
- package/ReactCommon/react/renderer/core/LayoutableShadowNode.h +0 -6
- 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 +2 -1
- package/ReactCommon/react/renderer/core/RawProps.h +3 -1
- package/ReactCommon/react/renderer/core/RawPropsKey.cpp +10 -2
- package/ReactCommon/react/renderer/core/RawPropsKeyMap.cpp +1 -1
- package/ReactCommon/react/renderer/core/RawPropsParser.cpp +1 -1
- package/ReactCommon/react/renderer/core/RawPropsParser.h +11 -2
- package/ReactCommon/react/renderer/core/ReactEventPriority.h +43 -0
- package/ReactCommon/react/renderer/core/ReactPrimitives.h +0 -2
- package/ReactCommon/react/renderer/core/ShadowNode.cpp +9 -12
- package/ReactCommon/react/renderer/core/ShadowNode.h +4 -0
- package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +1 -0
- package/ReactCommon/react/renderer/core/ShadowNodeTraits.h +17 -1
- 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/EventQueueProcessorTest.cpp +134 -0
- package/ReactCommon/react/renderer/core/tests/RawPropsTest.cpp +97 -29
- package/ReactCommon/react/renderer/core/tests/TestComponent.h +6 -2
- package/ReactCommon/react/renderer/core/tests/traitCastTest.cpp +31 -0
- package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +9 -9
- package/ReactCommon/react/renderer/graphics/Android.mk +5 -2
- package/ReactCommon/react/renderer/graphics/BUCK +12 -1
- package/ReactCommon/react/renderer/graphics/React-graphics.podspec +3 -2
- package/ReactCommon/react/renderer/graphics/Transform.cpp +2 -2
- package/ReactCommon/react/renderer/graphics/Transform.h +1 -1
- package/ReactCommon/react/renderer/graphics/conversions.h +34 -19
- 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 +8 -0
- package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.h +1 -0
- package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/PlatformColorParser.h +29 -0
- package/ReactCommon/react/renderer/graphics/platform/ios/Color.cpp +8 -0
- package/ReactCommon/react/renderer/graphics/platform/ios/Color.h +43 -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/BUCK +1 -1
- package/ReactCommon/react/renderer/imagemanager/platform/ios/RCTSyncImageManager.mm +1 -1
- package/ReactCommon/react/renderer/leakchecker/LeakChecker.cpp +6 -9
- package/ReactCommon/react/renderer/leakchecker/LeakChecker.h +1 -4
- package/ReactCommon/react/renderer/mapbuffer/BUCK +2 -2
- package/ReactCommon/react/renderer/mapbuffer/MapBuffer.cpp +34 -31
- package/ReactCommon/react/renderer/mapbuffer/MapBuffer.h +10 -9
- package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +50 -35
- package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.h +13 -13
- package/ReactCommon/react/renderer/mapbuffer/primitives.h +18 -19
- package/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp +13 -1
- package/ReactCommon/react/renderer/mounting/Android.mk +2 -1
- package/ReactCommon/react/renderer/mounting/BUCK +1 -0
- package/ReactCommon/react/renderer/mounting/Differentiator.cpp +392 -519
- package/ReactCommon/react/renderer/mounting/Differentiator.h +1 -2
- package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +1 -7
- package/ReactCommon/react/renderer/mounting/MountingCoordinator.h +0 -4
- package/ReactCommon/react/renderer/mounting/MountingOverrideDelegate.h +1 -1
- package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +7 -5
- package/ReactCommon/react/renderer/mounting/ShadowTree.h +2 -1
- package/ReactCommon/react/renderer/mounting/ShadowView.cpp +2 -0
- package/ReactCommon/react/renderer/mounting/ShadowView.h +2 -1
- package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +12 -0
- package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +10 -1
- package/ReactCommon/react/renderer/mounting/StubViewTree.cpp +10 -3
- package/ReactCommon/react/renderer/mounting/TelemetryController.cpp +1 -1
- package/ReactCommon/react/renderer/mounting/stubs.cpp +3 -3
- package/ReactCommon/react/renderer/mounting/tests/MountingTest.cpp +23 -22
- package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +49 -10
- package/ReactCommon/react/renderer/mounting/tests/StackingContextTest.cpp +2 -2
- package/ReactCommon/react/renderer/mounting/tests/StateReconciliationTest.cpp +6 -3
- package/ReactCommon/react/renderer/runtimescheduler/Android.mk +2 -1
- package/ReactCommon/react/renderer/runtimescheduler/BUCK +1 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +78 -16
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +60 -8
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +17 -7
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +8 -5
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.cpp +30 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.h +34 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerClock.h +4 -2
- package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriority.h +4 -2
- package/ReactCommon/react/renderer/runtimescheduler/Task.cpp +20 -25
- package/ReactCommon/react/renderer/runtimescheduler/Task.h +16 -15
- package/ReactCommon/react/renderer/runtimescheduler/primitives.h +4 -2
- package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +297 -11
- package/ReactCommon/react/renderer/runtimescheduler/tests/StubQueue.h +6 -0
- package/ReactCommon/react/renderer/scheduler/AsynchronousEventBeat.cpp +13 -12
- package/ReactCommon/react/renderer/scheduler/AsynchronousEventBeat.h +4 -4
- 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 +64 -40
- package/ReactCommon/react/renderer/scheduler/Scheduler.h +18 -3
- package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +9 -1
- package/ReactCommon/react/renderer/scheduler/SchedulerToolbox.h +1 -6
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +49 -35
- package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +12 -12
- package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +1 -0
- package/ReactCommon/react/renderer/scheduler/SynchronousEventBeat.cpp +11 -4
- package/ReactCommon/react/renderer/scheduler/SynchronousEventBeat.h +4 -1
- package/ReactCommon/react/renderer/telemetry/BUCK +1 -0
- package/ReactCommon/react/renderer/telemetry/tests/TransactionTelemetryTest.cpp +1 -19
- package/ReactCommon/react/renderer/templateprocessor/UITemplateProcessor.cpp +5 -5
- package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.cpp +2 -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/timeline/BUCK +6 -6
- package/ReactCommon/react/renderer/uimanager/UIManager.cpp +32 -28
- package/ReactCommon/react/renderer/uimanager/UIManager.h +3 -4
- package/ReactCommon/react/renderer/uimanager/UIManagerAnimationDelegate.h +1 -1
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +61 -17
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +13 -1
- package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +10 -2
- package/ReactCommon/react/{renderer/components/picker/iospicker → test_utils}/BUCK +12 -14
- package/ReactCommon/react/{renderer/mounting/tests → test_utils}/Entropy.h +0 -0
- package/ReactCommon/react/test_utils/MockClock.h +29 -0
- package/ReactCommon/react/{renderer/core/Constants.h → test_utils/MockSurfaceHandler.h} +9 -7
- package/ReactCommon/react/{renderer/mounting/tests → test_utils}/shadowTreeGeneration.h +18 -4
- package/ReactCommon/react/utils/Android.mk +3 -1
- package/ReactCommon/react/utils/BUCK +1 -0
- package/ReactCommon/react/utils/ContextContainer.h +0 -27
- package/ReactCommon/reactperflogger/React-perflogger.podspec +1 -1
- package/ReactCommon/runtimeexecutor/React-runtimeexecutor.podspec +1 -1
- package/ReactCommon/runtimeexecutor/ReactCommon/RuntimeExecutor.h +12 -0
- package/ReactCommon/yoga/yoga/Yoga.cpp +2 -6
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar +0 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.md5 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.aar.sha512 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module +272 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.md5 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.module.sha512 +1 -0
- package/android/com/facebook/react/react-native/{0.0.0-17be3a003/react-native-0.0.0-17be3a003.pom → 0.0.0-18697adec/react-native-0.0.0-18697adec.pom} +22 -11
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.md5 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.sha1 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.pom.sha256 +1 -0
- package/android/com/facebook/react/react-native/0.0.0-18697adec/react-native-0.0.0-18697adec.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 +67 -42
- package/jest/preprocessor.js +75 -7
- package/jest/renderer.js +3 -7
- package/jest/setup.js +3 -2
- package/package.json +59 -20
- package/react.gradle +22 -22
- package/scripts/find-node.sh +6 -0
- package/scripts/generate-specs-cli.js +20 -2
- package/scripts/ios-configure-glog.sh +4 -0
- package/scripts/react-native-xcode.sh +5 -1
- package/scripts/react_native_pods.rb +213 -43
- 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 +5 -6
- 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 +3 -4
- package/third-party-podspecs/RCT-Folly.podspec +31 -11
- package/third-party-podspecs/boost.podspec +23 -0
- package/Libraries/BUCK +0 -24
- package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +0 -87
- package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js +0 -30
- package/Libraries/Components/DatePickerAndroid/DatePickerAndroidTypes.js +0 -30
- package/Libraries/Components/Picker/AndroidDialogPickerNativeComponent.js +0 -83
- package/Libraries/Components/Picker/AndroidDropdownPickerNativeComponent.js +0 -82
- package/Libraries/Components/Picker/Picker.js +0 -169
- package/Libraries/Components/Picker/PickerAndroid.android.js +0 -143
- package/Libraries/Components/Picker/PickerIOS.android.js +0 -14
- package/Libraries/Components/Picker/PickerIOS.ios.js +0 -162
- package/Libraries/Components/Picker/RCTPickerNativeComponent.js +0 -86
- package/Libraries/Components/ScrollView/ScrollViewStickyHeaderInjection.js +0 -17
- package/Libraries/Components/StaticContainer.react.js +0 -51
- package/Libraries/Components/StatusBar/StatusBarIOS.js +0 -38
- package/Libraries/Components/Switch/SwitchInjection.js +0 -17
- package/Libraries/Components/Touchable/ensurePositiveDelayProps.js +0 -26
- package/Libraries/Interaction/InteractionMixin.js +0 -53
- package/Libraries/Lists/VirtualizedListInjection.js +0 -15
- package/Libraries/Lists/VirtualizedSectionListInjection.js +0 -17
- package/Libraries/ReactNative/queryLayoutByID.js +0 -58
- package/Libraries/StyleSheet/StyleSheetValidation.js +0 -100
- package/Libraries/Text/TextInjection.js +0 -15
- package/Libraries/Utilities/registerGeneratedViewConfig.js +0 -34
- package/React/Base/RCTBundleHolderModule.h +0 -16
- 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 -59
- 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/DatePickerMode.java +0 -15
- 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 -99
- package/ReactAndroid/src/main/java/com/facebook/react/views/picker/events/PickerItemSelectEvent.java +0 -42
- package/ReactCommon/react/renderer/components/picker/Android.mk +0 -37
- package/ReactCommon/react/renderer/components/picker/BUCK +0 -98
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerEventEmitter.cpp +0 -23
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerEventEmitter.h +0 -27
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerProps.cpp +0 -28
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerProps.h +0 -77
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDialogPickerShadowNode.h +0 -29
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerComponentDescriptor.h +0 -21
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerEventEmitter.cpp +0 -23
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerEventEmitter.h +0 -27
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerProps.cpp +0 -28
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerProps.h +0 -77
- package/ReactCommon/react/renderer/components/picker/androidpicker/react/renderer/components/androidpicker/AndroidDropdownPickerShadowNode.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/PickerEventEmitter.h +0 -28
- package/ReactCommon/react/renderer/components/picker/iospicker/PickerProps.cpp +0 -46
- package/ReactCommon/react/renderer/components/picker/iospicker/PickerProps.h +0 -36
- package/ReactCommon/react/renderer/components/picker/iospicker/PickerShadowNode.cpp +0 -16
- package/ReactCommon/react/renderer/components/picker/iospicker/PickerShadowNode.h +0 -33
- package/ReactCommon/react/renderer/components/picker/iospicker/PickerState.h +0 -19
- package/ReactCommon/react/renderer/components/picker/iospicker/conversions.h +0 -48
- package/ReactCommon/react/renderer/core/Constants.cpp +0 -24
- package/ReactCommon/react/renderer/mounting/DifferentiatorFlatteningClassic.cpp +0 -1564
- package/ReactCommon/react/renderer/mounting/DifferentiatorFlatteningClassic.h +0 -45
- package/android/com/facebook/react/react-native/0.0.0-17be3a003/react-native-0.0.0-17be3a003.aar +0 -0
- package/android/com/facebook/react/react-native/0.0.0-17be3a003/react-native-0.0.0-17be3a003.aar.md5 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-17be3a003/react-native-0.0.0-17be3a003.aar.sha1 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-17be3a003/react-native-0.0.0-17be3a003.pom.md5 +0 -1
- package/android/com/facebook/react/react-native/0.0.0-17be3a003/react-native-0.0.0-17be3a003.pom.sha1 +0 -1
- package/scripts/generate-specs.sh +0 -100
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
#include "Differentiator.h"
|
|
9
|
-
#include "DifferentiatorFlatteningClassic.h"
|
|
10
9
|
|
|
11
10
|
#include <better/map.h>
|
|
12
11
|
#include <better/small_vector.h>
|
|
@@ -170,8 +169,8 @@ class TinyMap final {
|
|
|
170
169
|
}
|
|
171
170
|
|
|
172
171
|
better::small_vector<Pair, DefaultSize> vector_;
|
|
173
|
-
|
|
174
|
-
|
|
172
|
+
size_t numErased_{0};
|
|
173
|
+
size_t erasedAtFront_{0};
|
|
175
174
|
};
|
|
176
175
|
|
|
177
176
|
/*
|
|
@@ -336,7 +335,6 @@ static_assert(
|
|
|
336
335
|
std::is_move_assignable<ShadowViewNodePair::NonOwningList>::value,
|
|
337
336
|
"`ShadowViewNodePair::NonOwningList` must be `move assignable`.");
|
|
338
337
|
|
|
339
|
-
// Forward declaration
|
|
340
338
|
static void calculateShadowViewMutationsV2(
|
|
341
339
|
BREADCRUMB_TYPE breadcrumb,
|
|
342
340
|
ViewNodePairScope &scope,
|
|
@@ -346,20 +344,40 @@ static void calculateShadowViewMutationsV2(
|
|
|
346
344
|
ShadowViewNodePair::NonOwningList &&newChildPairs);
|
|
347
345
|
|
|
348
346
|
struct OrderedMutationInstructionContainer {
|
|
349
|
-
ShadowViewMutation::List
|
|
350
|
-
ShadowViewMutation::List
|
|
351
|
-
ShadowViewMutation::List
|
|
352
|
-
ShadowViewMutation::List
|
|
353
|
-
ShadowViewMutation::List
|
|
354
|
-
ShadowViewMutation::List
|
|
355
|
-
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{};
|
|
356
354
|
};
|
|
357
355
|
|
|
356
|
+
static void updateMatchedPairSubtrees(
|
|
357
|
+
BREADCRUMB_TYPE breadcrumb,
|
|
358
|
+
ViewNodePairScope &scope,
|
|
359
|
+
OrderedMutationInstructionContainer &mutationContainer,
|
|
360
|
+
TinyMap<Tag, ShadowViewNodePair *> &newRemainingPairs,
|
|
361
|
+
ShadowViewNodePair::NonOwningList &oldChildPairs,
|
|
362
|
+
ShadowViewNodePair::NonOwningList &newChildPairs,
|
|
363
|
+
ShadowView const &parentShadowView,
|
|
364
|
+
ShadowViewNodePair const &oldPair,
|
|
365
|
+
ShadowViewNodePair const &newPair);
|
|
366
|
+
|
|
367
|
+
static void updateMatchedPair(
|
|
368
|
+
BREADCRUMB_TYPE breadcrumb,
|
|
369
|
+
OrderedMutationInstructionContainer &mutationContainer,
|
|
370
|
+
bool oldNodeFoundInOrder,
|
|
371
|
+
bool newNodeFoundInOrder,
|
|
372
|
+
ShadowView const &parentShadowView,
|
|
373
|
+
ShadowViewNodePair const &oldPair,
|
|
374
|
+
ShadowViewNodePair const &newPair);
|
|
375
|
+
|
|
358
376
|
static void calculateShadowViewMutationsFlattener(
|
|
359
377
|
BREADCRUMB_TYPE breadcrumb,
|
|
360
378
|
ViewNodePairScope &scope,
|
|
361
379
|
ReparentMode reparentMode,
|
|
362
|
-
OrderedMutationInstructionContainer &
|
|
380
|
+
OrderedMutationInstructionContainer &mutationContainer,
|
|
363
381
|
ShadowView const &parentShadowView,
|
|
364
382
|
TinyMap<Tag, ShadowViewNodePair *> &unvisitedFlattenedNodes,
|
|
365
383
|
ShadowViewNodePair const &node,
|
|
@@ -367,6 +385,199 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
367
385
|
TinyMap<Tag, ShadowViewNodePair *> *parentSubVisitedOtherOldNodes =
|
|
368
386
|
nullptr);
|
|
369
387
|
|
|
388
|
+
/**
|
|
389
|
+
* Updates the subtrees of any matched ShadowViewNodePair. This handles
|
|
390
|
+
* all cases of flattening/unflattening.
|
|
391
|
+
*
|
|
392
|
+
* This may modify data-structures passed to it and owned by the caller,
|
|
393
|
+
* specifically `newRemainingPairs`, and so the caller must also own
|
|
394
|
+
* the ViewNodePairScope used within.
|
|
395
|
+
*/
|
|
396
|
+
static void updateMatchedPairSubtrees(
|
|
397
|
+
BREADCRUMB_TYPE breadcrumb,
|
|
398
|
+
ViewNodePairScope &scope,
|
|
399
|
+
OrderedMutationInstructionContainer &mutationContainer,
|
|
400
|
+
TinyMap<Tag, ShadowViewNodePair *> &newRemainingPairs,
|
|
401
|
+
ShadowViewNodePair::NonOwningList &oldChildPairs,
|
|
402
|
+
ShadowViewNodePair::NonOwningList &newChildPairs,
|
|
403
|
+
ShadowView const &parentShadowView,
|
|
404
|
+
ShadowViewNodePair const &oldPair,
|
|
405
|
+
ShadowViewNodePair const &newPair) {
|
|
406
|
+
// Are we flattening or unflattening either one? If node was
|
|
407
|
+
// flattened in both trees, there's no change, just continue.
|
|
408
|
+
if (oldPair.flattened && newPair.flattened) {
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
// We are either flattening or unflattening this node.
|
|
413
|
+
if (oldPair.flattened != newPair.flattened) {
|
|
414
|
+
DEBUG_LOGS({
|
|
415
|
+
LOG(ERROR)
|
|
416
|
+
<< "Differ: flattening or unflattening in updateMatchedPairSubtrees: ["
|
|
417
|
+
<< oldPair.shadowView.tag << "] [" << newPair.shadowView.tag << "] "
|
|
418
|
+
<< oldPair.flattened << " " << newPair.flattened << " with parent: ["
|
|
419
|
+
<< parentShadowView.tag << "]";
|
|
420
|
+
});
|
|
421
|
+
|
|
422
|
+
// Flattening
|
|
423
|
+
if (!oldPair.flattened) {
|
|
424
|
+
// Flatten old tree into new list
|
|
425
|
+
// At the end of this loop we still want to know which of these
|
|
426
|
+
// children are visited, so we reuse the `newRemainingPairs`
|
|
427
|
+
// map.
|
|
428
|
+
calculateShadowViewMutationsFlattener(
|
|
429
|
+
DIFF_BREADCRUMB(
|
|
430
|
+
"Flatten tree " + std::to_string(parentShadowView.tag) +
|
|
431
|
+
" into list " + std::to_string(oldPair.shadowView.tag)),
|
|
432
|
+
scope,
|
|
433
|
+
ReparentMode::Flatten,
|
|
434
|
+
mutationContainer,
|
|
435
|
+
parentShadowView,
|
|
436
|
+
newRemainingPairs,
|
|
437
|
+
oldPair);
|
|
438
|
+
}
|
|
439
|
+
// Unflattening
|
|
440
|
+
else {
|
|
441
|
+
// Construct unvisited nodes map
|
|
442
|
+
auto unvisitedOldChildPairs = TinyMap<Tag, ShadowViewNodePair *>{};
|
|
443
|
+
// We don't know where all the children of oldChildPair are
|
|
444
|
+
// within oldChildPairs, but we know that they're in the same
|
|
445
|
+
// relative order. The reason for this is because of flattening
|
|
446
|
+
// + zIndex: the children could be listed before the parent,
|
|
447
|
+
// interwoven with children from other nodes, etc.
|
|
448
|
+
auto oldFlattenedNodes =
|
|
449
|
+
sliceChildShadowNodeViewPairsFromViewNodePair(oldPair, scope, true);
|
|
450
|
+
for (size_t i = 0, j = 0;
|
|
451
|
+
i < oldChildPairs.size() && j < oldFlattenedNodes.size();
|
|
452
|
+
i++) {
|
|
453
|
+
auto &oldChild = *oldChildPairs[i];
|
|
454
|
+
if (oldChild.shadowView.tag == oldFlattenedNodes[j]->shadowView.tag) {
|
|
455
|
+
unvisitedOldChildPairs.insert({oldChild.shadowView.tag, &oldChild});
|
|
456
|
+
j++;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
// Unflatten old list into new tree
|
|
461
|
+
calculateShadowViewMutationsFlattener(
|
|
462
|
+
DIFF_BREADCRUMB(
|
|
463
|
+
"Unflatten old list " + std::to_string(parentShadowView.tag) +
|
|
464
|
+
" into new tree " + std::to_string(newPair.shadowView.tag)),
|
|
465
|
+
scope,
|
|
466
|
+
ReparentMode::Unflatten,
|
|
467
|
+
mutationContainer,
|
|
468
|
+
parentShadowView,
|
|
469
|
+
unvisitedOldChildPairs,
|
|
470
|
+
newPair);
|
|
471
|
+
|
|
472
|
+
// If old nodes were not visited, we know that we can delete
|
|
473
|
+
// them now. They will be removed from the hierarchy by the
|
|
474
|
+
// outermost loop of this function.
|
|
475
|
+
// TODO: is this necessary anymore?
|
|
476
|
+
for (auto &oldFlattenedNodePtr : oldFlattenedNodes) {
|
|
477
|
+
auto &oldFlattenedNode = *oldFlattenedNodePtr;
|
|
478
|
+
auto unvisitedOldChildPairIt =
|
|
479
|
+
unvisitedOldChildPairs.find(oldFlattenedNode.shadowView.tag);
|
|
480
|
+
if (unvisitedOldChildPairIt == unvisitedOldChildPairs.end()) {
|
|
481
|
+
// Node was visited - make sure to remove it from
|
|
482
|
+
// "newRemainingPairs" map
|
|
483
|
+
auto newRemainingIt =
|
|
484
|
+
newRemainingPairs.find(oldFlattenedNode.shadowView.tag);
|
|
485
|
+
if (newRemainingIt != newRemainingPairs.end()) {
|
|
486
|
+
newRemainingPairs.erase(newRemainingIt);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
return;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
// Update subtrees if View is not flattened, and if node addresses
|
|
496
|
+
// are not equal
|
|
497
|
+
if (oldPair.shadowNode != newPair.shadowNode) {
|
|
498
|
+
ViewNodePairScope innerScope{};
|
|
499
|
+
auto oldGrandChildPairs =
|
|
500
|
+
sliceChildShadowNodeViewPairsFromViewNodePair(oldPair, innerScope);
|
|
501
|
+
auto newGrandChildPairs =
|
|
502
|
+
sliceChildShadowNodeViewPairsFromViewNodePair(newPair, innerScope);
|
|
503
|
+
calculateShadowViewMutationsV2(
|
|
504
|
+
DIFF_BREADCRUMB(
|
|
505
|
+
"Non-trivial update " + std::to_string(oldPair.shadowView.tag)),
|
|
506
|
+
innerScope,
|
|
507
|
+
*(newGrandChildPairs.size()
|
|
508
|
+
? &mutationContainer.downwardMutations
|
|
509
|
+
: &mutationContainer.destructiveDownwardMutations),
|
|
510
|
+
oldPair.shadowView,
|
|
511
|
+
std::move(oldGrandChildPairs),
|
|
512
|
+
std::move(newGrandChildPairs));
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
/**
|
|
517
|
+
* Handle updates to a matched node pair, but NOT to their subtrees.
|
|
518
|
+
*
|
|
519
|
+
* Here we have (and need) knowledge of whether a node was found during
|
|
520
|
+
* in-order traversal, or out-of-order via a map lookup. Nodes are only REMOVEd
|
|
521
|
+
* or INSERTed when they are encountered via in-order-traversal, to ensure
|
|
522
|
+
* correct ordering of INSERT and REMOVE mutations.
|
|
523
|
+
*/
|
|
524
|
+
static void updateMatchedPair(
|
|
525
|
+
BREADCRUMB_TYPE breadcrumb,
|
|
526
|
+
OrderedMutationInstructionContainer &mutationContainer,
|
|
527
|
+
bool oldNodeFoundInOrder,
|
|
528
|
+
bool newNodeFoundInOrder,
|
|
529
|
+
ShadowView const &parentShadowView,
|
|
530
|
+
ShadowViewNodePair const &oldPair,
|
|
531
|
+
ShadowViewNodePair const &newPair) {
|
|
532
|
+
oldPair.otherTreePair = &newPair;
|
|
533
|
+
newPair.otherTreePair = &oldPair;
|
|
534
|
+
|
|
535
|
+
// Check concrete-ness of views
|
|
536
|
+
// Create/Delete and Insert/Remove if necessary
|
|
537
|
+
if (oldPair.isConcreteView != newPair.isConcreteView) {
|
|
538
|
+
if (newPair.isConcreteView) {
|
|
539
|
+
if (newNodeFoundInOrder) {
|
|
540
|
+
mutationContainer.insertMutations.push_back(
|
|
541
|
+
ShadowViewMutation::InsertMutation(
|
|
542
|
+
parentShadowView,
|
|
543
|
+
newPair.shadowView,
|
|
544
|
+
static_cast<int>(newPair.mountIndex)));
|
|
545
|
+
}
|
|
546
|
+
mutationContainer.createMutations.push_back(
|
|
547
|
+
ShadowViewMutation::CreateMutation(newPair.shadowView));
|
|
548
|
+
} else {
|
|
549
|
+
if (oldNodeFoundInOrder) {
|
|
550
|
+
mutationContainer.removeMutations.push_back(
|
|
551
|
+
ShadowViewMutation::RemoveMutation(
|
|
552
|
+
parentShadowView,
|
|
553
|
+
oldPair.shadowView,
|
|
554
|
+
static_cast<int>(oldPair.mountIndex)));
|
|
555
|
+
}
|
|
556
|
+
mutationContainer.deleteMutations.push_back(
|
|
557
|
+
ShadowViewMutation::DeleteMutation(oldPair.shadowView));
|
|
558
|
+
}
|
|
559
|
+
} else if (oldPair.isConcreteView && newPair.isConcreteView) {
|
|
560
|
+
// If we found the old node by traversing, but not the new node,
|
|
561
|
+
// it means that there's some reordering requiring a REMOVE mutation.
|
|
562
|
+
if (oldNodeFoundInOrder && !newNodeFoundInOrder) {
|
|
563
|
+
mutationContainer.removeMutations.push_back(
|
|
564
|
+
ShadowViewMutation::RemoveMutation(
|
|
565
|
+
parentShadowView,
|
|
566
|
+
newPair.shadowView,
|
|
567
|
+
static_cast<int>(oldPair.mountIndex)));
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
// Even if node's children are flattened, it might still be a
|
|
571
|
+
// concrete view. The case where they're different is handled
|
|
572
|
+
// above.
|
|
573
|
+
if (oldPair.shadowView != newPair.shadowView) {
|
|
574
|
+
mutationContainer.updateMutations.push_back(
|
|
575
|
+
ShadowViewMutation::UpdateMutation(
|
|
576
|
+
oldPair.shadowView, newPair.shadowView));
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
|
|
370
581
|
/**
|
|
371
582
|
* Here we flatten or unflatten a subtree, given an unflattened node in either
|
|
372
583
|
* the old or new tree, and a list of flattened nodes in the other tree.
|
|
@@ -409,7 +620,7 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
409
620
|
BREADCRUMB_TYPE breadcrumb,
|
|
410
621
|
ViewNodePairScope &scope,
|
|
411
622
|
ReparentMode reparentMode,
|
|
412
|
-
OrderedMutationInstructionContainer &
|
|
623
|
+
OrderedMutationInstructionContainer &mutationContainer,
|
|
413
624
|
ShadowView const &parentShadowView,
|
|
414
625
|
TinyMap<Tag, ShadowViewNodePair *> &unvisitedOtherNodes,
|
|
415
626
|
ShadowViewNodePair const &node,
|
|
@@ -558,13 +769,13 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
558
769
|
react_native_assert(existsInOtherTree == treeChildPair.inOtherTree());
|
|
559
770
|
if (treeChildPair.inOtherTree() &&
|
|
560
771
|
treeChildPair.otherTreePair->isConcreteView) {
|
|
561
|
-
|
|
772
|
+
mutationContainer.removeMutations.push_back(
|
|
562
773
|
ShadowViewMutation::RemoveMutation(
|
|
563
774
|
node.shadowView,
|
|
564
775
|
treeChildPair.otherTreePair->shadowView,
|
|
565
776
|
static_cast<int>(treeChildPair.mountIndex)));
|
|
566
777
|
} else {
|
|
567
|
-
|
|
778
|
+
mutationContainer.removeMutations.push_back(
|
|
568
779
|
ShadowViewMutation::RemoveMutation(
|
|
569
780
|
node.shadowView,
|
|
570
781
|
treeChildPair.shadowView,
|
|
@@ -572,8 +783,8 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
572
783
|
}
|
|
573
784
|
} else {
|
|
574
785
|
// treeChildParent represents the "new" version of the node, so
|
|
575
|
-
// we can safely insert it
|
|
576
|
-
|
|
786
|
+
// we can safely insert it without checking in the other tree
|
|
787
|
+
mutationContainer.insertMutations.push_back(
|
|
577
788
|
ShadowViewMutation::InsertMutation(
|
|
578
789
|
node.shadowView,
|
|
579
790
|
treeChildPair.shadowView,
|
|
@@ -615,9 +826,13 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
615
826
|
continue;
|
|
616
827
|
}
|
|
617
828
|
|
|
829
|
+
// TODO: compare ShadowNode pointer instead of ShadowView here?
|
|
830
|
+
// Or ShadowNode ptr comparison before comparing ShadowView, to allow for
|
|
831
|
+
// short-circuiting? ShadowView comparison is relatively expensive vs
|
|
832
|
+
// ShadowNode.
|
|
618
833
|
if (newTreeNodePair.shadowView != oldTreeNodePair.shadowView &&
|
|
619
834
|
newTreeNodePair.isConcreteView && oldTreeNodePair.isConcreteView) {
|
|
620
|
-
|
|
835
|
+
mutationContainer.updateMutations.push_back(
|
|
621
836
|
ShadowViewMutation::UpdateMutation(
|
|
622
837
|
oldTreeNodePair.shadowView, newTreeNodePair.shadowView));
|
|
623
838
|
}
|
|
@@ -631,7 +846,7 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
631
846
|
"(Un)Flattener trivial update of " +
|
|
632
847
|
std::to_string(newTreeNodePair.shadowView.tag)),
|
|
633
848
|
innerScope,
|
|
634
|
-
|
|
849
|
+
mutationContainer.downwardMutations,
|
|
635
850
|
newTreeNodePair.shadowView,
|
|
636
851
|
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
637
852
|
oldTreeNodePair, innerScope),
|
|
@@ -662,7 +877,7 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
662
877
|
" old:" + std::to_string(treeChildPair.shadowView.tag)),
|
|
663
878
|
scope,
|
|
664
879
|
childReparentMode,
|
|
665
|
-
|
|
880
|
+
mutationContainer,
|
|
666
881
|
(reparentMode == ReparentMode::Flatten
|
|
667
882
|
? parentShadowView
|
|
668
883
|
: newTreeNodePair.shadowView),
|
|
@@ -671,30 +886,32 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
671
886
|
subVisitedNewMap,
|
|
672
887
|
subVisitedOldMap);
|
|
673
888
|
} else {
|
|
674
|
-
//
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
}
|
|
889
|
+
// Get flattened nodes from either new or old tree
|
|
890
|
+
auto flattenedNodes = sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
891
|
+
(childReparentMode == ReparentMode::Flatten ? newTreeNodePair
|
|
892
|
+
: oldTreeNodePair),
|
|
893
|
+
scope,
|
|
894
|
+
true);
|
|
895
|
+
// Construct unvisited nodes map
|
|
896
|
+
auto unvisitedRecursiveChildPairs =
|
|
897
|
+
TinyMap<Tag, ShadowViewNodePair *>{};
|
|
898
|
+
for (size_t i = 0; i < flattenedNodes.size(); i++) {
|
|
899
|
+
auto &newChild = *flattenedNodes[i];
|
|
900
|
+
|
|
901
|
+
auto unvisitedOtherNodesIt =
|
|
902
|
+
unvisitedOtherNodes.find(newChild.shadowView.tag);
|
|
903
|
+
if (unvisitedOtherNodesIt != unvisitedOtherNodes.end()) {
|
|
904
|
+
auto unvisitedItPair = *unvisitedOtherNodesIt->second;
|
|
905
|
+
unvisitedRecursiveChildPairs.insert(
|
|
906
|
+
{unvisitedItPair.shadowView.tag, &unvisitedItPair});
|
|
907
|
+
} else {
|
|
908
|
+
unvisitedRecursiveChildPairs.insert(
|
|
909
|
+
{newChild.shadowView.tag, &newChild});
|
|
696
910
|
}
|
|
911
|
+
}
|
|
697
912
|
|
|
913
|
+
// Unflatten parent, flatten child
|
|
914
|
+
if (childReparentMode == ReparentMode::Flatten) {
|
|
698
915
|
// Flatten old tree into new list
|
|
699
916
|
// At the end of this loop we still want to know which of these
|
|
700
917
|
// children are visited, so we reuse the `newRemainingPairs` map.
|
|
@@ -708,54 +925,17 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
708
925
|
" old:" + std::to_string(oldTreeNodePair.shadowView.tag)),
|
|
709
926
|
scope,
|
|
710
927
|
ReparentMode::Flatten,
|
|
711
|
-
|
|
928
|
+
mutationContainer,
|
|
712
929
|
(reparentMode == ReparentMode::Flatten
|
|
713
930
|
? parentShadowView
|
|
714
931
|
: newTreeNodePair.shadowView),
|
|
715
|
-
|
|
932
|
+
unvisitedRecursiveChildPairs,
|
|
716
933
|
oldTreeNodePair,
|
|
717
934
|
subVisitedNewMap,
|
|
718
935
|
subVisitedOldMap);
|
|
719
|
-
|
|
720
|
-
for (auto newFlattenedNode : newFlattenedNodes) {
|
|
721
|
-
auto unvisitedOldChildPairIt =
|
|
722
|
-
unvisitedNewChildPairs.find(newFlattenedNode->shadowView.tag);
|
|
723
|
-
|
|
724
|
-
if (unvisitedOldChildPairIt == unvisitedNewChildPairs.end()) {
|
|
725
|
-
// Node was visited.
|
|
726
|
-
|
|
727
|
-
auto deleteCreateIt = deletionCreationCandidatePairs.find(
|
|
728
|
-
newFlattenedNode->shadowView.tag);
|
|
729
|
-
if (deleteCreateIt != deletionCreationCandidatePairs.end()) {
|
|
730
|
-
deletionCreationCandidatePairs.erase(deleteCreateIt);
|
|
731
|
-
}
|
|
732
|
-
}
|
|
733
|
-
}
|
|
734
936
|
}
|
|
735
937
|
// Flatten parent, unflatten child
|
|
736
938
|
else {
|
|
737
|
-
// Construct unvisited nodes map
|
|
738
|
-
auto unvisitedOldChildPairs = TinyMap<Tag, ShadowViewNodePair *>{};
|
|
739
|
-
// Memory note: these oldFlattenedNodes all disappear at the end
|
|
740
|
-
// of this "else" block, including any annotations we put on them.
|
|
741
|
-
auto oldFlattenedNodes =
|
|
742
|
-
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
743
|
-
oldTreeNodePair, scope, true);
|
|
744
|
-
for (size_t i = 0; i < oldFlattenedNodes.size(); i++) {
|
|
745
|
-
auto &oldChild = *oldFlattenedNodes[i];
|
|
746
|
-
|
|
747
|
-
auto unvisitedOtherNodesIt =
|
|
748
|
-
unvisitedOtherNodes.find(oldChild.shadowView.tag);
|
|
749
|
-
if (unvisitedOtherNodesIt != unvisitedOtherNodes.end()) {
|
|
750
|
-
auto &unvisitedItPair = *unvisitedOtherNodesIt->second;
|
|
751
|
-
unvisitedOldChildPairs.insert(
|
|
752
|
-
{unvisitedItPair.shadowView.tag, &unvisitedItPair});
|
|
753
|
-
} else {
|
|
754
|
-
unvisitedOldChildPairs.insert(
|
|
755
|
-
{oldChild.shadowView.tag, &oldChild});
|
|
756
|
-
}
|
|
757
|
-
}
|
|
758
|
-
|
|
759
939
|
// Unflatten old list into new tree
|
|
760
940
|
calculateShadowViewMutationsFlattener(
|
|
761
941
|
DIFF_BREADCRUMB(
|
|
@@ -767,11 +947,11 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
767
947
|
" new:" + std::to_string(newTreeNodePair.shadowView.tag)),
|
|
768
948
|
scope,
|
|
769
949
|
ReparentMode::Unflatten,
|
|
770
|
-
|
|
950
|
+
mutationContainer,
|
|
771
951
|
(reparentMode == ReparentMode::Flatten
|
|
772
952
|
? parentShadowView
|
|
773
953
|
: newTreeNodePair.shadowView),
|
|
774
|
-
|
|
954
|
+
unvisitedRecursiveChildPairs,
|
|
775
955
|
newTreeNodePair,
|
|
776
956
|
subVisitedNewMap,
|
|
777
957
|
subVisitedOldMap);
|
|
@@ -779,69 +959,33 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
779
959
|
// If old nodes were not visited, we know that we can delete them
|
|
780
960
|
// now. They will be removed from the hierarchy by the outermost
|
|
781
961
|
// loop of this function.
|
|
782
|
-
for (auto
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
deletionCreationCandidatePairs.insert(
|
|
801
|
-
{tag, *oldRemainingChildInListIt});
|
|
802
|
-
}
|
|
803
|
-
} else {
|
|
804
|
-
// TODO: we might want to remove this block. It seems
|
|
805
|
-
// impossible to hit this logically (and empirically,
|
|
806
|
-
// after testing on lots of randomized and pathologically
|
|
807
|
-
// constructed trees) but I'm leaving this here out of an
|
|
808
|
-
// abundance of caution.
|
|
809
|
-
// In theory, this path should never be hit. If we don't
|
|
810
|
-
// see this in dev after a few months, let's delete this
|
|
811
|
-
// path.
|
|
812
|
-
react_native_assert(false);
|
|
813
|
-
mutationInstructionContainer.deleteMutations.push_back(
|
|
814
|
-
ShadowViewMutation::DeleteMutation(
|
|
815
|
-
oldFlattenedNode->shadowView));
|
|
816
|
-
|
|
817
|
-
calculateShadowViewMutationsV2(
|
|
818
|
-
DIFF_BREADCRUMB(
|
|
819
|
-
"Destroy " +
|
|
820
|
-
std::to_string(oldFlattenedNode->shadowView.tag)),
|
|
821
|
-
scope,
|
|
822
|
-
mutationInstructionContainer
|
|
823
|
-
.destructiveDownwardMutations,
|
|
824
|
-
oldFlattenedNode->shadowView,
|
|
825
|
-
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
826
|
-
*oldFlattenedNode, scope),
|
|
827
|
-
{});
|
|
828
|
-
}
|
|
962
|
+
for (auto unvisitedOldChildPairIt =
|
|
963
|
+
unvisitedRecursiveChildPairs.begin();
|
|
964
|
+
unvisitedOldChildPairIt != unvisitedRecursiveChildPairs.end();
|
|
965
|
+
unvisitedOldChildPairIt++) {
|
|
966
|
+
if (unvisitedOldChildPairIt->first == 0) {
|
|
967
|
+
continue;
|
|
968
|
+
}
|
|
969
|
+
auto &oldFlattenedNode = *unvisitedOldChildPairIt->second;
|
|
970
|
+
|
|
971
|
+
// Node unvisited - mark the entire subtree for deletion
|
|
972
|
+
if (oldFlattenedNode.isConcreteView &&
|
|
973
|
+
!oldFlattenedNode.inOtherTree()) {
|
|
974
|
+
Tag tag = oldFlattenedNode.shadowView.tag;
|
|
975
|
+
auto deleteCreateIt = deletionCreationCandidatePairs.find(
|
|
976
|
+
oldFlattenedNode.shadowView.tag);
|
|
977
|
+
if (deleteCreateIt == deletionCreationCandidatePairs.end()) {
|
|
978
|
+
deletionCreationCandidatePairs.insert(
|
|
979
|
+
{tag, &oldFlattenedNode});
|
|
829
980
|
}
|
|
830
981
|
} else {
|
|
831
982
|
// Node was visited - make sure to remove it from
|
|
832
983
|
// "newRemainingPairs" map
|
|
833
984
|
auto newRemainingIt =
|
|
834
|
-
unvisitedOtherNodes.find(oldFlattenedNode
|
|
985
|
+
unvisitedOtherNodes.find(oldFlattenedNode.shadowView.tag);
|
|
835
986
|
if (newRemainingIt != unvisitedOtherNodes.end()) {
|
|
836
987
|
unvisitedOtherNodes.erase(newRemainingIt);
|
|
837
988
|
}
|
|
838
|
-
|
|
839
|
-
// We also remove it from delete/creation candidates
|
|
840
|
-
auto deleteCreateIt = deletionCreationCandidatePairs.find(
|
|
841
|
-
oldFlattenedNode->shadowView.tag);
|
|
842
|
-
if (deleteCreateIt != deletionCreationCandidatePairs.end()) {
|
|
843
|
-
deletionCreationCandidatePairs.erase(deleteCreateIt);
|
|
844
|
-
}
|
|
845
989
|
}
|
|
846
990
|
}
|
|
847
991
|
}
|
|
@@ -854,10 +998,10 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
854
998
|
// delete/create if the Concreteness of the node has changed.
|
|
855
999
|
if (newTreeNodePair.isConcreteView != oldTreeNodePair.isConcreteView) {
|
|
856
1000
|
if (newTreeNodePair.isConcreteView) {
|
|
857
|
-
|
|
1001
|
+
mutationContainer.createMutations.push_back(
|
|
858
1002
|
ShadowViewMutation::CreateMutation(newTreeNodePair.shadowView));
|
|
859
1003
|
} else {
|
|
860
|
-
|
|
1004
|
+
mutationContainer.deleteMutations.push_back(
|
|
861
1005
|
ShadowViewMutation::DeleteMutation(oldTreeNodePair.shadowView));
|
|
862
1006
|
}
|
|
863
1007
|
}
|
|
@@ -866,10 +1010,6 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
866
1010
|
{newTreeNodePair.shadowView.tag, &newTreeNodePair});
|
|
867
1011
|
subVisitedOldMap->insert(
|
|
868
1012
|
{oldTreeNodePair.shadowView.tag, &oldTreeNodePair});
|
|
869
|
-
|
|
870
|
-
if (unvisitedIt != unvisitedOtherNodes.end()) {
|
|
871
|
-
unvisitedOtherNodes.erase(unvisitedIt);
|
|
872
|
-
}
|
|
873
1013
|
} else {
|
|
874
1014
|
// Node does not in exist in other tree.
|
|
875
1015
|
if (treeChildPair.isConcreteView && !treeChildPair.inOtherTree()) {
|
|
@@ -894,13 +1034,17 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
894
1034
|
}
|
|
895
1035
|
auto &treeChildPair = *it->second;
|
|
896
1036
|
|
|
897
|
-
// If node was visited during a flattening/unflattening recursion
|
|
1037
|
+
// If node was visited during a flattening/unflattening recursion,
|
|
1038
|
+
// and the node in the other tree is concrete, that means it was
|
|
1039
|
+
// already created/deleted and we don't need to do that here.
|
|
1040
|
+
// It is always the responsibility of the matcher to update subtrees when
|
|
1041
|
+
// nodes are matched.
|
|
898
1042
|
if (treeChildPair.inOtherTree()) {
|
|
899
1043
|
continue;
|
|
900
1044
|
}
|
|
901
1045
|
|
|
902
1046
|
if (reparentMode == ReparentMode::Flatten) {
|
|
903
|
-
|
|
1047
|
+
mutationContainer.deleteMutations.push_back(
|
|
904
1048
|
ShadowViewMutation::DeleteMutation(treeChildPair.shadowView));
|
|
905
1049
|
|
|
906
1050
|
if (!treeChildPair.flattened) {
|
|
@@ -910,14 +1054,14 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
910
1054
|
"Recursively delete tree child pair (flatten case): " +
|
|
911
1055
|
std::to_string(treeChildPair.shadowView.tag)),
|
|
912
1056
|
innerScope,
|
|
913
|
-
|
|
1057
|
+
mutationContainer.destructiveDownwardMutations,
|
|
914
1058
|
treeChildPair.shadowView,
|
|
915
1059
|
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
916
1060
|
treeChildPair, innerScope),
|
|
917
1061
|
{});
|
|
918
1062
|
}
|
|
919
1063
|
} else {
|
|
920
|
-
|
|
1064
|
+
mutationContainer.createMutations.push_back(
|
|
921
1065
|
ShadowViewMutation::CreateMutation(treeChildPair.shadowView));
|
|
922
1066
|
|
|
923
1067
|
if (!treeChildPair.flattened) {
|
|
@@ -927,7 +1071,7 @@ static void calculateShadowViewMutationsFlattener(
|
|
|
927
1071
|
"Recursively delete tree child pair (unflatten case): " +
|
|
928
1072
|
std::to_string(treeChildPair.shadowView.tag)),
|
|
929
1073
|
innerScope,
|
|
930
|
-
|
|
1074
|
+
mutationContainer.downwardMutations,
|
|
931
1075
|
treeChildPair.shadowView,
|
|
932
1076
|
{},
|
|
933
1077
|
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
@@ -951,21 +1095,7 @@ static void calculateShadowViewMutationsV2(
|
|
|
951
1095
|
size_t index = 0;
|
|
952
1096
|
|
|
953
1097
|
// Lists of mutations
|
|
954
|
-
auto
|
|
955
|
-
auto deleteMutations = ShadowViewMutation::List{};
|
|
956
|
-
auto insertMutations = ShadowViewMutation::List{};
|
|
957
|
-
auto removeMutations = ShadowViewMutation::List{};
|
|
958
|
-
auto updateMutations = ShadowViewMutation::List{};
|
|
959
|
-
auto downwardMutations = ShadowViewMutation::List{};
|
|
960
|
-
auto destructiveDownwardMutations = ShadowViewMutation::List{};
|
|
961
|
-
auto mutationInstructionContainer = OrderedMutationInstructionContainer{
|
|
962
|
-
createMutations,
|
|
963
|
-
deleteMutations,
|
|
964
|
-
insertMutations,
|
|
965
|
-
removeMutations,
|
|
966
|
-
updateMutations,
|
|
967
|
-
downwardMutations,
|
|
968
|
-
destructiveDownwardMutations};
|
|
1098
|
+
auto mutationContainer = OrderedMutationInstructionContainer{};
|
|
969
1099
|
|
|
970
1100
|
DEBUG_LOGS({
|
|
971
1101
|
LOG(ERROR) << "Differ Entry: Child Pairs of node: [" << parentShadowView.tag
|
|
@@ -1030,8 +1160,9 @@ static void calculateShadowViewMutationsV2(
|
|
|
1030
1160
|
|
|
1031
1161
|
if (newChildPair.isConcreteView &&
|
|
1032
1162
|
oldChildPair.shadowView != newChildPair.shadowView) {
|
|
1033
|
-
updateMutations.push_back(
|
|
1034
|
-
|
|
1163
|
+
mutationContainer.updateMutations.push_back(
|
|
1164
|
+
ShadowViewMutation::UpdateMutation(
|
|
1165
|
+
oldChildPair.shadowView, newChildPair.shadowView));
|
|
1035
1166
|
}
|
|
1036
1167
|
|
|
1037
1168
|
// Recursively update tree if ShadowNode pointers are not equal
|
|
@@ -1047,8 +1178,9 @@ static void calculateShadowViewMutationsV2(
|
|
|
1047
1178
|
"Stage 1: Recurse on " +
|
|
1048
1179
|
std::to_string(oldChildPair.shadowView.tag)),
|
|
1049
1180
|
innerScope,
|
|
1050
|
-
*(newGrandChildPairs.size()
|
|
1051
|
-
|
|
1181
|
+
*(newGrandChildPairs.size()
|
|
1182
|
+
? &mutationContainer.downwardMutations
|
|
1183
|
+
: &mutationContainer.destructiveDownwardMutations),
|
|
1052
1184
|
oldChildPair.shadowView,
|
|
1053
1185
|
std::move(oldGrandChildPairs),
|
|
1054
1186
|
std::move(newGrandChildPairs));
|
|
@@ -1073,12 +1205,13 @@ static void calculateShadowViewMutationsV2(
|
|
|
1073
1205
|
continue;
|
|
1074
1206
|
}
|
|
1075
1207
|
|
|
1076
|
-
deleteMutations.push_back(
|
|
1208
|
+
mutationContainer.deleteMutations.push_back(
|
|
1077
1209
|
ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
|
|
1078
|
-
removeMutations.push_back(
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1210
|
+
mutationContainer.removeMutations.push_back(
|
|
1211
|
+
ShadowViewMutation::RemoveMutation(
|
|
1212
|
+
parentShadowView,
|
|
1213
|
+
oldChildPair.shadowView,
|
|
1214
|
+
static_cast<int>(oldChildPair.mountIndex)));
|
|
1082
1215
|
|
|
1083
1216
|
// We also have to call the algorithm recursively to clean up the entire
|
|
1084
1217
|
// subtree starting from the removed view.
|
|
@@ -1087,7 +1220,7 @@ static void calculateShadowViewMutationsV2(
|
|
|
1087
1220
|
DIFF_BREADCRUMB(
|
|
1088
1221
|
"Trivial delete " + std::to_string(oldChildPair.shadowView.tag)),
|
|
1089
1222
|
innerScope,
|
|
1090
|
-
destructiveDownwardMutations,
|
|
1223
|
+
mutationContainer.destructiveDownwardMutations,
|
|
1091
1224
|
oldChildPair.shadowView,
|
|
1092
1225
|
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1093
1226
|
oldChildPair, innerScope),
|
|
@@ -1109,11 +1242,12 @@ static void calculateShadowViewMutationsV2(
|
|
|
1109
1242
|
continue;
|
|
1110
1243
|
}
|
|
1111
1244
|
|
|
1112
|
-
insertMutations.push_back(
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1245
|
+
mutationContainer.insertMutations.push_back(
|
|
1246
|
+
ShadowViewMutation::InsertMutation(
|
|
1247
|
+
parentShadowView,
|
|
1248
|
+
newChildPair.shadowView,
|
|
1249
|
+
static_cast<int>(newChildPair.mountIndex)));
|
|
1250
|
+
mutationContainer.createMutations.push_back(
|
|
1117
1251
|
ShadowViewMutation::CreateMutation(newChildPair.shadowView));
|
|
1118
1252
|
|
|
1119
1253
|
ViewNodePairScope innerScope{};
|
|
@@ -1121,7 +1255,7 @@ static void calculateShadowViewMutationsV2(
|
|
|
1121
1255
|
DIFF_BREADCRUMB(
|
|
1122
1256
|
"Trivial create " + std::to_string(newChildPair.shadowView.tag)),
|
|
1123
1257
|
innerScope,
|
|
1124
|
-
downwardMutations,
|
|
1258
|
+
mutationContainer.downwardMutations,
|
|
1125
1259
|
newChildPair.shadowView,
|
|
1126
1260
|
{},
|
|
1127
1261
|
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
@@ -1168,160 +1302,29 @@ static void calculateShadowViewMutationsV2(
|
|
|
1168
1302
|
<< " with parent: [" << parentShadowView.tag << "]";
|
|
1169
1303
|
});
|
|
1170
1304
|
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
} else {
|
|
1182
|
-
removeMutations.push_back(ShadowViewMutation::RemoveMutation(
|
|
1183
|
-
parentShadowView,
|
|
1184
|
-
oldChildPair.shadowView,
|
|
1185
|
-
static_cast<int>(oldChildPair.mountIndex)));
|
|
1186
|
-
deleteMutations.push_back(
|
|
1187
|
-
ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
|
|
1188
|
-
}
|
|
1189
|
-
} else if (
|
|
1190
|
-
oldChildPair.isConcreteView && newChildPair.isConcreteView) {
|
|
1191
|
-
// Even if node's children are flattened, it might still be a
|
|
1192
|
-
// concrete view. The case where they're different is handled
|
|
1193
|
-
// above.
|
|
1194
|
-
if (oldChildPair.shadowView != newChildPair.shadowView) {
|
|
1195
|
-
updateMutations.push_back(ShadowViewMutation::UpdateMutation(
|
|
1196
|
-
oldChildPair.shadowView, newChildPair.shadowView));
|
|
1197
|
-
}
|
|
1198
|
-
|
|
1199
|
-
// Remove from newRemainingPairs
|
|
1200
|
-
auto newRemainingPairIt = newRemainingPairs.find(oldTag);
|
|
1201
|
-
if (newRemainingPairIt != newRemainingPairs.end()) {
|
|
1202
|
-
newRemainingPairs.erase(newRemainingPairIt);
|
|
1203
|
-
}
|
|
1204
|
-
}
|
|
1205
|
-
|
|
1206
|
-
// Are we flattening or unflattening either one? If node was
|
|
1207
|
-
// flattened in both trees, there's no change, just continue.
|
|
1208
|
-
if (oldChildPair.flattened && newChildPair.flattened) {
|
|
1209
|
-
newIndex++;
|
|
1210
|
-
oldIndex++;
|
|
1211
|
-
continue;
|
|
1212
|
-
}
|
|
1213
|
-
// We are either flattening or unflattening this node.
|
|
1214
|
-
if (oldChildPair.flattened != newChildPair.flattened) {
|
|
1215
|
-
DEBUG_LOGS({
|
|
1216
|
-
LOG(ERROR) << "Differ: flattening or unflattening at branch 6: ["
|
|
1217
|
-
<< oldChildPair.shadowView.tag << "] ["
|
|
1218
|
-
<< newChildPair.shadowView.tag << "] "
|
|
1219
|
-
<< oldChildPair.flattened << " "
|
|
1220
|
-
<< newChildPair.flattened << " with parent: ["
|
|
1221
|
-
<< parentShadowView.tag << "]";
|
|
1222
|
-
});
|
|
1223
|
-
|
|
1224
|
-
// Flattening
|
|
1225
|
-
if (!oldChildPair.flattened) {
|
|
1226
|
-
// Flatten old tree into new list
|
|
1227
|
-
// At the end of this loop we still want to know which of these
|
|
1228
|
-
// children are visited, so we reuse the `newRemainingPairs`
|
|
1229
|
-
// map.
|
|
1230
|
-
calculateShadowViewMutationsFlattener(
|
|
1231
|
-
DIFF_BREADCRUMB(
|
|
1232
|
-
"Flatten tree " + std::to_string(parentShadowView.tag) +
|
|
1233
|
-
" into list " +
|
|
1234
|
-
std::to_string(oldChildPair.shadowView.tag)),
|
|
1235
|
-
scope,
|
|
1236
|
-
ReparentMode::Flatten,
|
|
1237
|
-
mutationInstructionContainer,
|
|
1238
|
-
parentShadowView,
|
|
1239
|
-
newRemainingPairs,
|
|
1240
|
-
oldChildPair);
|
|
1241
|
-
}
|
|
1242
|
-
// Unflattening
|
|
1243
|
-
else {
|
|
1244
|
-
// Construct unvisited nodes map
|
|
1245
|
-
auto unvisitedOldChildPairs =
|
|
1246
|
-
TinyMap<Tag, ShadowViewNodePair *>{};
|
|
1247
|
-
// We don't know where all the children of oldChildPair are
|
|
1248
|
-
// within oldChildPairs, but we know that they're in the same
|
|
1249
|
-
// relative order. The reason for this is because of flattening
|
|
1250
|
-
// + zIndex: the children could be listed before the parent,
|
|
1251
|
-
// interwoven with children from other nodes, etc.
|
|
1252
|
-
auto oldFlattenedNodes =
|
|
1253
|
-
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1254
|
-
oldChildPair, scope, true);
|
|
1255
|
-
for (size_t i = 0, j = 0;
|
|
1256
|
-
i < oldChildPairs.size() && j < oldFlattenedNodes.size();
|
|
1257
|
-
i++) {
|
|
1258
|
-
auto &oldChild = *oldChildPairs[i];
|
|
1259
|
-
if (oldChild.shadowView.tag ==
|
|
1260
|
-
oldFlattenedNodes[j]->shadowView.tag) {
|
|
1261
|
-
unvisitedOldChildPairs.insert(
|
|
1262
|
-
{oldChild.shadowView.tag, &oldChild});
|
|
1263
|
-
j++;
|
|
1264
|
-
}
|
|
1265
|
-
}
|
|
1266
|
-
|
|
1267
|
-
// Unflatten old list into new tree
|
|
1268
|
-
calculateShadowViewMutationsFlattener(
|
|
1269
|
-
DIFF_BREADCRUMB(
|
|
1270
|
-
"Unflatten old list " +
|
|
1271
|
-
std::to_string(parentShadowView.tag) + " into new tree " +
|
|
1272
|
-
std::to_string(newChildPair.shadowView.tag)),
|
|
1273
|
-
scope,
|
|
1274
|
-
ReparentMode::Unflatten,
|
|
1275
|
-
mutationInstructionContainer,
|
|
1276
|
-
parentShadowView,
|
|
1277
|
-
unvisitedOldChildPairs,
|
|
1278
|
-
newChildPair);
|
|
1279
|
-
|
|
1280
|
-
// If old nodes were not visited, we know that we can delete
|
|
1281
|
-
// them now. They will be removed from the hierarchy by the
|
|
1282
|
-
// outermost loop of this function.
|
|
1283
|
-
for (auto &oldFlattenedNodePtr : oldFlattenedNodes) {
|
|
1284
|
-
auto &oldFlattenedNode = *oldFlattenedNodePtr;
|
|
1285
|
-
auto unvisitedOldChildPairIt = unvisitedOldChildPairs.find(
|
|
1286
|
-
oldFlattenedNode.shadowView.tag);
|
|
1287
|
-
if (unvisitedOldChildPairIt == unvisitedOldChildPairs.end()) {
|
|
1288
|
-
// Node was visited - make sure to remove it from
|
|
1289
|
-
// "newRemainingPairs" map
|
|
1290
|
-
auto newRemainingIt =
|
|
1291
|
-
newRemainingPairs.find(oldFlattenedNode.shadowView.tag);
|
|
1292
|
-
if (newRemainingIt != newRemainingPairs.end()) {
|
|
1293
|
-
newRemainingPairs.erase(newRemainingIt);
|
|
1294
|
-
}
|
|
1295
|
-
}
|
|
1296
|
-
}
|
|
1297
|
-
}
|
|
1298
|
-
|
|
1299
|
-
newIndex++;
|
|
1300
|
-
oldIndex++;
|
|
1301
|
-
continue;
|
|
1302
|
-
}
|
|
1305
|
+
updateMatchedPair(
|
|
1306
|
+
DIFF_BREADCRUMB(
|
|
1307
|
+
"Update Matched Pairs (1): " +
|
|
1308
|
+
std::to_string(oldChildPair.shadowView.tag)),
|
|
1309
|
+
mutationContainer,
|
|
1310
|
+
true,
|
|
1311
|
+
true,
|
|
1312
|
+
parentShadowView,
|
|
1313
|
+
oldChildPair,
|
|
1314
|
+
newChildPair);
|
|
1303
1315
|
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
"Non-trivial update " +
|
|
1317
|
-
std::to_string(oldChildPair.shadowView.tag)),
|
|
1318
|
-
innerScope,
|
|
1319
|
-
*(newGrandChildPairs.size() ? &downwardMutations
|
|
1320
|
-
: &destructiveDownwardMutations),
|
|
1321
|
-
oldChildPair.shadowView,
|
|
1322
|
-
std::move(oldGrandChildPairs),
|
|
1323
|
-
std::move(newGrandChildPairs));
|
|
1324
|
-
}
|
|
1316
|
+
updateMatchedPairSubtrees(
|
|
1317
|
+
DIFF_BREADCRUMB(
|
|
1318
|
+
"Update Matched Pair Subtrees (1): " +
|
|
1319
|
+
std::to_string(oldChildPair.shadowView.tag)),
|
|
1320
|
+
scope,
|
|
1321
|
+
mutationContainer,
|
|
1322
|
+
newRemainingPairs,
|
|
1323
|
+
oldChildPairs,
|
|
1324
|
+
newChildPairs,
|
|
1325
|
+
parentShadowView,
|
|
1326
|
+
oldChildPair,
|
|
1327
|
+
newChildPair);
|
|
1325
1328
|
|
|
1326
1329
|
newIndex++;
|
|
1327
1330
|
oldIndex++;
|
|
@@ -1344,156 +1347,29 @@ static void calculateShadowViewMutationsV2(
|
|
|
1344
1347
|
if (insertedIt != newInsertedPairs.end()) {
|
|
1345
1348
|
auto const &newChildPair = *insertedIt->second;
|
|
1346
1349
|
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
});
|
|
1358
|
-
|
|
1359
|
-
// Unflattening.
|
|
1360
|
-
// The node in question was already inserted and we are
|
|
1361
|
-
// *unflattening* it, so we just need to update the subtree nodes
|
|
1362
|
-
// and remove them from the view hierarchy. Any of the unvisited
|
|
1363
|
-
// nodes in the old tree will be deleted.
|
|
1364
|
-
// TODO: can we consolidate this code? It's identical to the first
|
|
1365
|
-
// block above.
|
|
1366
|
-
if (!oldChildPair.flattened) {
|
|
1367
|
-
// Flatten old tree into new list
|
|
1368
|
-
// At the end of this loop we still want to know which of these
|
|
1369
|
-
// children are visited, so we reuse the `newRemainingPairs`
|
|
1370
|
-
// map.
|
|
1371
|
-
calculateShadowViewMutationsFlattener(
|
|
1372
|
-
DIFF_BREADCRUMB(
|
|
1373
|
-
"Flatten2 " + std::to_string(parentShadowView.tag)),
|
|
1374
|
-
scope,
|
|
1375
|
-
ReparentMode::Flatten,
|
|
1376
|
-
mutationInstructionContainer,
|
|
1377
|
-
parentShadowView,
|
|
1378
|
-
newRemainingPairs,
|
|
1379
|
-
oldChildPair);
|
|
1380
|
-
}
|
|
1381
|
-
// Unflattening
|
|
1382
|
-
else {
|
|
1383
|
-
// Construct unvisited nodes map
|
|
1384
|
-
auto unvisitedOldChildPairs =
|
|
1385
|
-
TinyMap<Tag, ShadowViewNodePair *>{};
|
|
1386
|
-
// We don't know where all the children of oldChildPair are
|
|
1387
|
-
// within oldChildPairs, but we know that they're in the same
|
|
1388
|
-
// relative order. The reason for this is because of flattening
|
|
1389
|
-
// + zIndex: the children could be listed before the parent,
|
|
1390
|
-
// interwoven with children from other nodes, etc.
|
|
1391
|
-
auto oldFlattenedNodes =
|
|
1392
|
-
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1393
|
-
oldChildPair, scope, true);
|
|
1394
|
-
for (size_t i = 0, j = 0;
|
|
1395
|
-
i < oldChildPairs.size() && j < oldFlattenedNodes.size();
|
|
1396
|
-
i++) {
|
|
1397
|
-
auto &oldChild = *oldChildPairs[i];
|
|
1398
|
-
if (oldChild.shadowView.tag ==
|
|
1399
|
-
oldFlattenedNodes[j]->shadowView.tag) {
|
|
1400
|
-
unvisitedOldChildPairs.insert(
|
|
1401
|
-
{oldChild.shadowView.tag, &oldChild});
|
|
1402
|
-
j++;
|
|
1403
|
-
}
|
|
1404
|
-
}
|
|
1405
|
-
|
|
1406
|
-
// Unflatten old list into new tree
|
|
1407
|
-
calculateShadowViewMutationsFlattener(
|
|
1408
|
-
DIFF_BREADCRUMB(
|
|
1409
|
-
"Unflatten2 " + std::to_string(parentShadowView.tag)),
|
|
1410
|
-
scope,
|
|
1411
|
-
ReparentMode::Unflatten,
|
|
1412
|
-
mutationInstructionContainer,
|
|
1413
|
-
parentShadowView,
|
|
1414
|
-
unvisitedOldChildPairs,
|
|
1415
|
-
newChildPair);
|
|
1416
|
-
|
|
1417
|
-
// If old nodes were not visited, we know that we can delete
|
|
1418
|
-
// them now. They will be removed from the hierarchy by the
|
|
1419
|
-
// outermost loop of this function. TODO: delete recursively?
|
|
1420
|
-
// create recursively?
|
|
1421
|
-
for (auto &oldFlattenedNodePtr : oldFlattenedNodes) {
|
|
1422
|
-
auto &oldFlattenedNode = *oldFlattenedNodePtr;
|
|
1423
|
-
auto unvisitedOldChildPairIt = unvisitedOldChildPairs.find(
|
|
1424
|
-
oldFlattenedNode.shadowView.tag);
|
|
1425
|
-
if (unvisitedOldChildPairIt == unvisitedOldChildPairs.end()) {
|
|
1426
|
-
// Node was visited - make sure to remove it from
|
|
1427
|
-
// "newRemainingPairs" map
|
|
1428
|
-
auto newRemainingIt =
|
|
1429
|
-
newRemainingPairs.find(oldFlattenedNode.shadowView.tag);
|
|
1430
|
-
if (newRemainingIt != newRemainingPairs.end()) {
|
|
1431
|
-
newRemainingPairs.erase(newRemainingIt);
|
|
1432
|
-
}
|
|
1433
|
-
}
|
|
1434
|
-
}
|
|
1435
|
-
}
|
|
1436
|
-
}
|
|
1437
|
-
|
|
1438
|
-
// Check concrete-ness of views
|
|
1439
|
-
// Create/Delete and Insert/Remove if necessary
|
|
1440
|
-
// TODO: document: Insert should already be handled by outermost
|
|
1441
|
-
// loop, but not Remove
|
|
1442
|
-
if (oldChildPair.isConcreteView != newChildPair.isConcreteView) {
|
|
1443
|
-
if (newChildPair.isConcreteView) {
|
|
1444
|
-
createMutations.push_back(
|
|
1445
|
-
ShadowViewMutation::CreateMutation(newChildPair.shadowView));
|
|
1446
|
-
} else {
|
|
1447
|
-
removeMutations.push_back(ShadowViewMutation::RemoveMutation(
|
|
1448
|
-
parentShadowView,
|
|
1449
|
-
oldChildPair.shadowView,
|
|
1450
|
-
static_cast<int>(oldChildPair.mountIndex)));
|
|
1451
|
-
deleteMutations.push_back(
|
|
1452
|
-
ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
|
|
1453
|
-
}
|
|
1454
|
-
}
|
|
1455
|
-
|
|
1456
|
-
// old and new child pairs are both either flattened or unflattened
|
|
1457
|
-
// at this point. If they're not views, we don't need to update
|
|
1458
|
-
// subtrees.
|
|
1459
|
-
if (oldChildPair.isConcreteView && newChildPair.isConcreteView) {
|
|
1460
|
-
// TODO: do we always want to remove here? There are cases where
|
|
1461
|
-
// we might be able to remove this to prevent unnecessary
|
|
1462
|
-
// removes/inserts in cases of (un)flattening + reorders?
|
|
1463
|
-
// If removing here, we must remove the newest version of the View
|
|
1464
|
-
// - which will always be in the "new" tree.
|
|
1465
|
-
removeMutations.push_back(ShadowViewMutation::RemoveMutation(
|
|
1466
|
-
parentShadowView,
|
|
1467
|
-
newChildPair.shadowView,
|
|
1468
|
-
static_cast<int>(oldChildPair.mountIndex)));
|
|
1469
|
-
|
|
1470
|
-
if (oldChildPair.shadowView != newChildPair.shadowView) {
|
|
1471
|
-
updateMutations.push_back(ShadowViewMutation::UpdateMutation(
|
|
1472
|
-
oldChildPair.shadowView, newChildPair.shadowView));
|
|
1473
|
-
}
|
|
1474
|
-
}
|
|
1350
|
+
updateMatchedPair(
|
|
1351
|
+
DIFF_BREADCRUMB(
|
|
1352
|
+
"Update Matched Pairs (2): " +
|
|
1353
|
+
std::to_string(oldChildPair.shadowView.tag)),
|
|
1354
|
+
mutationContainer,
|
|
1355
|
+
true,
|
|
1356
|
+
false,
|
|
1357
|
+
parentShadowView,
|
|
1358
|
+
oldChildPair,
|
|
1359
|
+
newChildPair);
|
|
1475
1360
|
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
"Non-trivial update3 " +
|
|
1489
|
-
std::to_string(oldChildPair.shadowView.tag)),
|
|
1490
|
-
innerScope,
|
|
1491
|
-
*(newGrandChildPairs.size() ? &downwardMutations
|
|
1492
|
-
: &destructiveDownwardMutations),
|
|
1493
|
-
oldChildPair.shadowView,
|
|
1494
|
-
std::move(oldGrandChildPairs),
|
|
1495
|
-
std::move(newGrandChildPairs));
|
|
1496
|
-
}
|
|
1361
|
+
updateMatchedPairSubtrees(
|
|
1362
|
+
DIFF_BREADCRUMB(
|
|
1363
|
+
"Update Matched Pair Subtrees (2): " +
|
|
1364
|
+
std::to_string(oldChildPair.shadowView.tag)),
|
|
1365
|
+
scope,
|
|
1366
|
+
mutationContainer,
|
|
1367
|
+
newRemainingPairs,
|
|
1368
|
+
oldChildPairs,
|
|
1369
|
+
newChildPairs,
|
|
1370
|
+
parentShadowView,
|
|
1371
|
+
oldChildPair,
|
|
1372
|
+
newChildPair);
|
|
1497
1373
|
|
|
1498
1374
|
newInsertedPairs.erase(insertedIt);
|
|
1499
1375
|
oldIndex++;
|
|
@@ -1543,17 +1419,19 @@ static void calculateShadowViewMutationsV2(
|
|
|
1543
1419
|
// Here we do *not" need to generate a potential DELETE mutation
|
|
1544
1420
|
// because we know the view is concrete, and still in the new
|
|
1545
1421
|
// hierarchy.
|
|
1546
|
-
removeMutations.push_back(
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1422
|
+
mutationContainer.removeMutations.push_back(
|
|
1423
|
+
ShadowViewMutation::RemoveMutation(
|
|
1424
|
+
parentShadowView,
|
|
1425
|
+
otherTreeView,
|
|
1426
|
+
static_cast<int>(oldChildPair.mountIndex)));
|
|
1550
1427
|
continue;
|
|
1551
1428
|
}
|
|
1552
1429
|
|
|
1553
|
-
removeMutations.push_back(
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1430
|
+
mutationContainer.removeMutations.push_back(
|
|
1431
|
+
ShadowViewMutation::RemoveMutation(
|
|
1432
|
+
parentShadowView,
|
|
1433
|
+
oldChildPair.shadowView,
|
|
1434
|
+
static_cast<int>(oldChildPair.mountIndex)));
|
|
1557
1435
|
|
|
1558
1436
|
deletionCandidatePairs.insert(
|
|
1559
1437
|
{oldChildPair.shadowView.tag, &oldChildPair});
|
|
@@ -1576,10 +1454,11 @@ static void calculateShadowViewMutationsV2(
|
|
|
1576
1454
|
<< " with parent: [" << parentShadowView.tag << "]";
|
|
1577
1455
|
});
|
|
1578
1456
|
if (newChildPair.isConcreteView) {
|
|
1579
|
-
insertMutations.push_back(
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1457
|
+
mutationContainer.insertMutations.push_back(
|
|
1458
|
+
ShadowViewMutation::InsertMutation(
|
|
1459
|
+
parentShadowView,
|
|
1460
|
+
newChildPair.shadowView,
|
|
1461
|
+
static_cast<int>(newChildPair.mountIndex)));
|
|
1583
1462
|
}
|
|
1584
1463
|
|
|
1585
1464
|
// `inOtherTree` is only set to true during flattening/unflattening of
|
|
@@ -1620,7 +1499,7 @@ static void calculateShadowViewMutationsV2(
|
|
|
1620
1499
|
|
|
1621
1500
|
// This can happen when the parent is unflattened
|
|
1622
1501
|
if (!oldChildPair.inOtherTree() && oldChildPair.isConcreteView) {
|
|
1623
|
-
deleteMutations.push_back(
|
|
1502
|
+
mutationContainer.deleteMutations.push_back(
|
|
1624
1503
|
ShadowViewMutation::DeleteMutation(oldChildPair.shadowView));
|
|
1625
1504
|
|
|
1626
1505
|
// We also have to call the algorithm recursively to clean up the
|
|
@@ -1631,7 +1510,7 @@ static void calculateShadowViewMutationsV2(
|
|
|
1631
1510
|
"Non-trivial delete " +
|
|
1632
1511
|
std::to_string(oldChildPair.shadowView.tag)),
|
|
1633
1512
|
innerScope,
|
|
1634
|
-
destructiveDownwardMutations,
|
|
1513
|
+
mutationContainer.destructiveDownwardMutations,
|
|
1635
1514
|
oldChildPair.shadowView,
|
|
1636
1515
|
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
1637
1516
|
oldChildPair, innerScope),
|
|
@@ -1670,7 +1549,7 @@ static void calculateShadowViewMutationsV2(
|
|
|
1670
1549
|
continue;
|
|
1671
1550
|
}
|
|
1672
1551
|
|
|
1673
|
-
createMutations.push_back(
|
|
1552
|
+
mutationContainer.createMutations.push_back(
|
|
1674
1553
|
ShadowViewMutation::CreateMutation(newChildPair.shadowView));
|
|
1675
1554
|
|
|
1676
1555
|
ViewNodePairScope innerScope{};
|
|
@@ -1679,7 +1558,7 @@ static void calculateShadowViewMutationsV2(
|
|
|
1679
1558
|
"Non-trivial create " +
|
|
1680
1559
|
std::to_string(newChildPair.shadowView.tag)),
|
|
1681
1560
|
innerScope,
|
|
1682
|
-
downwardMutations,
|
|
1561
|
+
mutationContainer.downwardMutations,
|
|
1683
1562
|
newChildPair.shadowView,
|
|
1684
1563
|
{},
|
|
1685
1564
|
sliceChildShadowNodeViewPairsFromViewNodePair(
|
|
@@ -1689,32 +1568,32 @@ static void calculateShadowViewMutationsV2(
|
|
|
1689
1568
|
|
|
1690
1569
|
// All mutations in an optimal order:
|
|
1691
1570
|
std::move(
|
|
1692
|
-
destructiveDownwardMutations.begin(),
|
|
1693
|
-
destructiveDownwardMutations.end(),
|
|
1571
|
+
mutationContainer.destructiveDownwardMutations.begin(),
|
|
1572
|
+
mutationContainer.destructiveDownwardMutations.end(),
|
|
1694
1573
|
std::back_inserter(mutations));
|
|
1695
1574
|
std::move(
|
|
1696
|
-
updateMutations.begin(),
|
|
1697
|
-
updateMutations.end(),
|
|
1575
|
+
mutationContainer.updateMutations.begin(),
|
|
1576
|
+
mutationContainer.updateMutations.end(),
|
|
1698
1577
|
std::back_inserter(mutations));
|
|
1699
1578
|
std::move(
|
|
1700
|
-
removeMutations.rbegin(),
|
|
1701
|
-
removeMutations.rend(),
|
|
1579
|
+
mutationContainer.removeMutations.rbegin(),
|
|
1580
|
+
mutationContainer.removeMutations.rend(),
|
|
1702
1581
|
std::back_inserter(mutations));
|
|
1703
1582
|
std::move(
|
|
1704
|
-
deleteMutations.begin(),
|
|
1705
|
-
deleteMutations.end(),
|
|
1583
|
+
mutationContainer.deleteMutations.begin(),
|
|
1584
|
+
mutationContainer.deleteMutations.end(),
|
|
1706
1585
|
std::back_inserter(mutations));
|
|
1707
1586
|
std::move(
|
|
1708
|
-
createMutations.begin(),
|
|
1709
|
-
createMutations.end(),
|
|
1587
|
+
mutationContainer.createMutations.begin(),
|
|
1588
|
+
mutationContainer.createMutations.end(),
|
|
1710
1589
|
std::back_inserter(mutations));
|
|
1711
1590
|
std::move(
|
|
1712
|
-
downwardMutations.begin(),
|
|
1713
|
-
downwardMutations.end(),
|
|
1591
|
+
mutationContainer.downwardMutations.begin(),
|
|
1592
|
+
mutationContainer.downwardMutations.end(),
|
|
1714
1593
|
std::back_inserter(mutations));
|
|
1715
1594
|
std::move(
|
|
1716
|
-
insertMutations.begin(),
|
|
1717
|
-
insertMutations.end(),
|
|
1595
|
+
mutationContainer.insertMutations.begin(),
|
|
1596
|
+
mutationContainer.insertMutations.end(),
|
|
1718
1597
|
std::back_inserter(mutations));
|
|
1719
1598
|
}
|
|
1720
1599
|
|
|
@@ -1778,13 +1657,7 @@ ShadowViewNodePair::OwningList sliceChildShadowNodeViewPairsLegacy(
|
|
|
1778
1657
|
|
|
1779
1658
|
ShadowViewMutation::List calculateShadowViewMutations(
|
|
1780
1659
|
ShadowNode const &oldRootShadowNode,
|
|
1781
|
-
ShadowNode const &newRootShadowNode
|
|
1782
|
-
bool useNewDiffer) {
|
|
1783
|
-
if (!useNewDiffer) {
|
|
1784
|
-
return DifferOld::calculateShadowViewMutations(
|
|
1785
|
-
oldRootShadowNode, newRootShadowNode);
|
|
1786
|
-
}
|
|
1787
|
-
|
|
1660
|
+
ShadowNode const &newRootShadowNode) {
|
|
1788
1661
|
SystraceSection s("calculateShadowViewMutations");
|
|
1789
1662
|
|
|
1790
1663
|
// Root shadow nodes must be belong the same family.
|