react-native-tvos 0.75.4-0 → 0.76.0-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Libraries/Alert/Alert.js +3 -0
- package/Libraries/Animated/AnimatedEvent.js +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +7 -7
- package/Libraries/Animated/NativeAnimatedAllowlist.js +111 -0
- package/Libraries/Animated/animations/Animation.js +11 -1
- package/Libraries/Animated/animations/DecayAnimation.js +1 -1
- package/Libraries/Animated/animations/SpringAnimation.js +1 -1
- package/Libraries/Animated/animations/TimingAnimation.js +2 -1
- package/Libraries/Animated/components/AnimatedScrollView.js +3 -2
- package/Libraries/Animated/createAnimatedComponent.js +10 -9
- package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +3 -2
- package/Libraries/Animated/nodes/AnimatedNode.js +42 -33
- package/Libraries/Animated/nodes/AnimatedObject.js +56 -50
- package/Libraries/Animated/nodes/AnimatedProps.js +77 -40
- package/Libraries/Animated/nodes/AnimatedStyle.js +103 -59
- package/Libraries/Animated/nodes/AnimatedTracking.js +1 -1
- package/Libraries/Animated/nodes/AnimatedTransform.js +102 -67
- package/Libraries/Animated/nodes/AnimatedValue.js +2 -1
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +21 -22
- package/Libraries/Animated/useAnimatedProps.js +142 -7
- package/Libraries/AppDelegate/RCTAppDelegate.h +10 -5
- package/Libraries/AppDelegate/RCTAppDelegate.mm +24 -50
- package/Libraries/AppDelegate/RCTRootViewFactory.h +5 -23
- package/Libraries/AppDelegate/RCTRootViewFactory.mm +21 -26
- package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +2 -3
- package/Libraries/BatchedBridge/NativeModules.js +2 -0
- package/Libraries/Blob/FileReader.js +1 -1
- package/Libraries/Blob/URL.js +2 -62
- package/Libraries/Blob/URLSearchParams.js +71 -0
- package/Libraries/Blob/URLSearchParams.js.flow +23 -0
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +17 -0
- package/Libraries/Components/Pressable/Pressable.js +3 -36
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +1 -1
- package/Libraries/Components/ScrollView/ScrollView.js +132 -171
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +3 -0
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
- package/Libraries/Components/StatusBar/StatusBar.js +3 -1
- package/Libraries/Components/TV/TVTextScrollView.js +1 -1
- package/Libraries/Components/TV/TVViewPropTypes.js +1 -0
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +10 -0
- package/Libraries/Components/TextInput/TextInput.d.ts +32 -2
- package/Libraries/Components/TextInput/TextInput.js +230 -94
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +23 -1
- package/Libraries/Components/View/ReactNativeViewAttributes.js +2 -0
- package/Libraries/Components/View/ViewAccessibility.d.ts +15 -0
- package/Libraries/Components/View/ViewNativeComponent.js +5 -1
- package/Libraries/Components/View/ViewPropTypes.js +14 -0
- package/Libraries/Core/ExceptionsManager.js +2 -0
- package/Libraries/Core/InitializeCore.js +3 -1
- package/Libraries/Core/ReactFiberErrorDialog.js +3 -0
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/setUpDeveloperTools.js +5 -1
- package/Libraries/Core/setUpErrorHandling.js +7 -1
- package/Libraries/Core/setUpGlobals.js +1 -0
- package/Libraries/Core/setUpReactRefresh.js +0 -4
- package/Libraries/Image/AssetSourceResolver.js +28 -1
- package/Libraries/Image/Image.android.js +9 -14
- package/Libraries/Image/Image.ios.js +11 -22
- package/Libraries/Image/ImageBackground.js +1 -8
- package/Libraries/Image/ImageUtils.js +9 -9
- package/Libraries/Image/ImageViewNativeComponent.js +1 -0
- package/Libraries/Image/RCTImageLoader.mm +19 -10
- package/Libraries/Image/RCTImageView.mm +2 -2
- package/Libraries/Image/RCTResizeMode.h +28 -0
- package/Libraries/Image/React-RCTImage.podspec +1 -1
- package/Libraries/Inspector/Inspector.js +3 -2
- package/Libraries/Inspector/InspectorPanel.js +16 -10
- package/Libraries/Inspector/NetworkOverlay.js +1 -1
- package/Libraries/Interaction/TaskQueue.js +1 -0
- package/Libraries/LinkingIOS/React-RCTLinking.podspec +1 -0
- package/Libraries/Lists/FlatList.js +1 -1
- package/Libraries/Lists/SectionList.js +2 -2
- package/Libraries/Lists/SectionListModern.js +3 -3
- package/Libraries/LogBox/Data/LogBoxData.js +24 -3
- package/Libraries/LogBox/LogBoxNotificationContainer.js +3 -2
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +9 -8
- package/Libraries/Modal/Modal.js +0 -1
- package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +3 -1
- package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.h +2 -0
- package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.mm +27 -0
- package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +17 -1
- package/Libraries/NativeAnimation/React-RCTAnimation.podspec +1 -0
- package/Libraries/NativeComponent/BaseViewConfig.android.js +9 -1
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +17 -1
- package/Libraries/NativeComponent/NativeComponentRegistry.js +22 -22
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -21
- package/Libraries/NativeComponent/TVViewConfig.js +4 -0
- package/Libraries/Network/RCTNetworkTask.h +1 -1
- package/Libraries/Network/RCTNetworkTask.mm +13 -9
- package/Libraries/Network/RCTNetworking.mm +6 -0
- package/Libraries/Network/XMLHttpRequest.js +4 -2
- package/Libraries/Pressability/Pressability.js +37 -0
- package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +1 -1
- package/Libraries/ReactNative/AppContainer-dev.js +1 -5
- package/Libraries/ReactNative/AppContainer-prod.js +1 -5
- package/Libraries/ReactNative/AppContainer.js +0 -1
- package/Libraries/ReactNative/AppRegistry.js +0 -6
- package/Libraries/ReactNative/BridgelessUIManager.js +1 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +5 -5
- package/Libraries/ReactNative/RendererImplementation.js +26 -4
- package/Libraries/ReactNative/getNativeComponentAttributes.js +12 -0
- package/Libraries/ReactNative/renderApplication.js +0 -2
- package/Libraries/Renderer/shims/ReactNativeTypes.js +11 -4
- package/Libraries/StyleSheet/StyleSheet.js +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +152 -2
- package/Libraries/StyleSheet/StyleSheetTypes.js +60 -5
- package/Libraries/StyleSheet/processBackgroundImage.js +384 -0
- package/Libraries/StyleSheet/processBoxShadow.js +209 -0
- package/Libraries/StyleSheet/processFilter.js +231 -42
- package/Libraries/Text/BaseText/RCTBaseTextViewManager.mm +1 -0
- package/Libraries/Text/RCTTextAttributes.h +1 -0
- package/Libraries/Text/RCTTextAttributes.mm +8 -0
- package/Libraries/Text/Text/RCTTextShadowView.mm +46 -0
- package/Libraries/Text/Text.js +394 -196
- package/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm +3 -1
- package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +20 -9
- package/Libraries/Text/TextNativeComponent.js +2 -1
- package/Libraries/TurboModule/TurboModuleRegistry.js +13 -50
- package/Libraries/Types/CodegenTypes.js +3 -1
- package/Libraries/Utilities/Appearance.js +108 -84
- package/Libraries/Utilities/DevLoadingView.js +2 -4
- package/Libraries/Utilities/HMRClient.js +8 -6
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
- package/Libraries/Utilities/createPerformanceLogger.js +0 -9
- package/Libraries/Utilities/stringifyViewConfig.js +22 -0
- package/Libraries/Utilities/useColorScheme.js +3 -3
- package/Libraries/WebSocket/WebSocket.js +1 -1
- package/Libraries/promiseRejectionTrackingOptions.js +1 -1
- package/Libraries/vendor/emitter/EventEmitter.js +6 -5
- package/README.md +38 -26
- package/React/Base/RCTBridge.mm +20 -2
- package/React/Base/RCTBundleURLProvider.h +19 -0
- package/React/Base/RCTBundleURLProvider.mm +62 -8
- package/React/Base/RCTConvert.h +0 -3
- package/React/Base/RCTConvert.mm +0 -13
- package/React/Base/RCTKeyCommands.m +1 -2
- package/React/Base/RCTVersion.m +2 -2
- package/React/CoreModules/RCTAppearance.mm +5 -0
- package/React/CoreModules/RCTDevLoadingView.mm +5 -0
- package/React/CoreModules/RCTDevMenu.mm +1 -1
- package/React/CoreModules/RCTDeviceInfo.mm +15 -8
- package/React/CoreModules/RCTPerfMonitor.mm +7 -13
- package/React/CoreModules/RCTRedBox.mm +4 -0
- package/React/CoreModules/RCTStatusBarManager.mm +5 -1
- package/React/CoreModules/React-CoreModules.podspec +3 -1
- package/React/CxxBridge/NSDataBigString.mm +2 -25
- package/React/CxxBridge/RCTCxxBridge.mm +27 -5
- package/React/DevSupport/RCTInspectorDevServerHelper.mm +6 -0
- package/React/DevSupport/RCTInspectorNetworkHelper.h +29 -0
- package/React/DevSupport/RCTInspectorNetworkHelper.mm +115 -0
- package/React/DevSupport/RCTInspectorUtils.h +26 -0
- package/React/DevSupport/RCTInspectorUtils.mm +50 -0
- package/React/Fabric/Mounting/ComponentViews/Image/RCTImageComponentView.mm +4 -1
- package/React/Fabric/Mounting/ComponentViews/Modal/RCTFabricModalHostViewController.mm +2 -2
- package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +23 -1
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.mm +24 -2
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.h +9 -0
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +160 -10
- package/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm +74 -35
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +61 -12
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm +8 -0
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +356 -59
- package/React/Fabric/Mounting/RCTMountingManager.mm +0 -5
- package/React/Fabric/RCTScheduler.mm +2 -1
- package/React/Fabric/RCTSurfacePresenter.mm +0 -31
- package/React/Fabric/Utils/RCTBoxShadow.h +21 -0
- package/React/Fabric/Utils/RCTBoxShadow.mm +301 -0
- package/React/Modules/RCTRedBoxExtraDataViewController.m +105 -85
- package/React/Views/RCTBorderDrawing.h +9 -5
- package/React/Views/RCTBorderDrawing.m +29 -17
- package/React/Views/RCTModalHostView.m +1 -1
- package/React/Views/RCTModalHostViewController.m +1 -1
- package/React/Views/RCTModalHostViewManager.m +23 -3
- package/React/Views/RCTView.m +9 -5
- package/React/Views/RCTViewManager.h +3 -0
- package/React/Views/RCTViewManager.m +64 -8
- package/React/Views/RefreshControl/RCTRefreshControl.m +18 -0
- package/React/Views/ScrollView/RCTScrollView.m +20 -0
- package/React-Core.podspec +4 -1
- package/ReactAndroid/api/ReactAndroid.api +623 -268
- package/ReactAndroid/build.gradle.kts +109 -278
- package/ReactAndroid/cmake-utils/ReactNative-application.cmake +10 -55
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/hermes-engine/build.gradle.kts +1 -2
- package/ReactAndroid/publish.gradle +1 -1
- package/ReactAndroid/src/main/AndroidManifest.xml +1 -1
- package/ReactAndroid/src/main/java/com/facebook/annotationprocessors/common/ProcessorBase.kt +23 -0
- package/ReactAndroid/src/main/java/com/facebook/react/CompositeReactPackage.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java +6 -1
- package/ReactAndroid/src/main/java/com/facebook/react/DebugCorePackage.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/HeadlessJsTaskService.java +56 -12
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +6 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +7 -1
- package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java +10 -3
- package/ReactAndroid/src/main/java/com/facebook/react/ReactFragment.java +37 -4
- package/ReactAndroid/src/main/java/com/facebook/react/ReactHost.kt +26 -3
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +117 -41
- package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +13 -6
- package/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.java +2 -17
- package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +6 -2
- package/ReactAndroid/src/main/java/com/facebook/react/animated/AdditionAnimatedNode.kt +52 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/AnimatedNode.kt +74 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/AnimatedNodeValueListener.kt +13 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/{AnimatedNodeWithUpdateableConfig.java → AnimatedNodeWithUpdateableConfig.kt} +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/animated/{AnimationDriver.java → AnimationDriver.kt} +13 -14
- package/ReactAndroid/src/main/java/com/facebook/react/animated/ColorAnimatedNode.kt +111 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/DecayAnimation.kt +73 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/DiffClampAnimatedNode.kt +51 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/DivisionAnimatedNode.kt +55 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +100 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/FrameBasedAnimationDriver.kt +104 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/InterpolationAnimatedNode.kt +278 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/ModulusAnimatedNode.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/animated/MultiplicationAnimatedNode.kt +50 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +40 -1
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java +81 -52
- package/ReactAndroid/src/main/java/com/facebook/react/animated/ObjectAnimatedNode.kt +120 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.kt +120 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/SpringAnimation.kt +187 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/StyleAnimatedNode.kt +61 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/SubtractionAnimatedNode.kt +52 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/TrackingAnimatedNode.kt +36 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/TransformAnimatedNode.kt +87 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/ValueAnimatedNode.kt +50 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ActivityEventListener.java +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java +8 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ColorPropConverter.java +5 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromMap.java +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromObject.java +4 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicNative.kt +51 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoaderDelegate.kt +52 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/{JavaJSExecutor.java → JavaJSExecutor.kt} +13 -18
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/{JavaScriptExecutorFactory.java → JavaScriptExecutorFactory.kt} +5 -5
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaScriptModule.kt +24 -0
- package/ReactAndroid/src/main/java/com/facebook/react/{animated/AnimatedNodeValueListener.java → bridge/PerformanceCounter.kt} +4 -4
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/{Promise.java → Promise.kt} +19 -29
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +13 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactInstanceManagerInspectorTarget.java +10 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactMarkerConstants.java +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNoCrashSoftException.java +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManager.kt +179 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/interop/InteropModuleRegistry.java +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThread.java +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadImpl.java +28 -47
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/ReactQueueConfigurationImpl.java +5 -19
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/ReactQueueConfigurationSpec.java +4 -6
- package/ReactAndroid/src/main/java/com/facebook/react/common/ClearableSynchronizedPool.kt +51 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/DebugServerException.kt +107 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/JavascriptException.kt +2 -10
- package/ReactAndroid/src/main/java/com/facebook/react/common/MapBuilder.java +6 -1
- package/ReactAndroid/src/main/java/com/facebook/react/common/ShakeDetector.kt +124 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/assets/ReactFontManager.kt +197 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/build/{ReactBuildConfig.java → ReactBuildConfig.kt} +9 -6
- package/ReactAndroid/src/main/java/com/facebook/react/common/futures/SimpleSettableFuture.kt +111 -0
- package/ReactAndroid/src/main/java/com/facebook/react/common/network/OkHttpCallUtil.kt +38 -0
- package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +16 -62
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultComponentsRegistry.kt +5 -20
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultNewArchitectureEntryPoint.kt +7 -55
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHost.kt +16 -16
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHostDelegate.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java +0 -73
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/CxxInspectorPackagerConnection.java +29 -10
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevLoadingViewImplementation.kt +120 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.kt +3 -7
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +10 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +12 -5
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialog.kt +29 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialogSurfaceDelegate.kt +2 -3
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxModule.kt +10 -12
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/PausedInDebuggerOverlayDialogManager.java +19 -5
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/PerftestDevSupportManager.kt +38 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxDialogSurfaceDelegate.java +31 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/ReleaseDevSupportManager.kt +168 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkHelper.java +94 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkRequestListener.java +34 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.kt +4 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/BindingImpl.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricComponents.kt +45 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +75 -38
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventBeatManager.kt +43 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +64 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/LayoutMetricsConversions.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.java +23 -25
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +110 -360
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +16 -22
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/MountItemFactory.kt +1 -4
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.java +1 -5
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SendAccessibilityEvent.kt +40 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SendAccessibilityEventMountItem.kt +40 -0
- package/ReactAndroid/src/main/java/com/facebook/react/flipper/ReactNativeFlipper.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/internal/SystraceSection.kt +23 -0
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +157 -13
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +266 -26
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +54 -6
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +55 -7
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +294 -30
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +54 -6
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlagsDefaults.kt +43 -0
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleInteropUtils.java +2 -5
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.java +19 -57
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.java +2 -15
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +14 -14
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/FileReaderModule.java +6 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ChoreographerCompat.kt +16 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/{DefaultHardwareBackBtnHandler.java → DefaultHardwareBackBtnHandler.kt} +4 -6
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/DeviceEventManagerModule.kt +65 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.kt +79 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/HeadlessJsTaskSupportModule.kt +51 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JSTimers.kt +21 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/{JavaScriptTimerExecutor.java → JavaScriptTimerExecutor.kt} +7 -8
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JavaTimerManager.kt +363 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/PermissionAwareActivity.kt +30 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/{PermissionListener.java → PermissionListener.kt} +9 -9
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/RCTNativeAppEventEmitter.kt +17 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.kt +144 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.kt +83 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DevMenuModule.kt +46 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DidJSUpdateUiDuringFrameDetector.kt +36 -48
- package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/interfaces/DeveloperSettings.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/AlertFragment.java +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.kt +163 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/ReactNetworkImageRequest.kt +31 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/ReactOkHttpNetworkFetcher.kt +56 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/SystraceRequestListener.kt +152 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nManagerModule.kt +2 -6
- package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nUtil.kt +4 -3
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/OkHttpCompat.java +35 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/RequestBodyUtil.java +1 -7
- package/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/PermissionsModule.kt +189 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.kt +4 -28
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoHelpers.java +48 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/PackagerConnectionSettings.kt +55 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.java +7 -2
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostDelegate.kt +0 -18
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +222 -184
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.java +47 -45
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.kt +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/hermes/HermesInstance.kt +11 -4
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/Executors.kt +44 -0
- package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +5 -2
- package/ReactAndroid/src/main/java/com/facebook/react/soloader/OpenSourceMergedSoMapping.kt +119 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +263 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +64 -32
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerDelegate.kt +109 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerInterface.kt +85 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt +44 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FilterHelper.kt +89 -17
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/IViewGroupManager.kt +35 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/{IViewManagerWithChildren.java → IViewManagerWithChildren.kt} +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java +58 -11
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutDirectionUtil.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LengthPercentage.kt +8 -7
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +23 -7
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java +4 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/PixelUtil.kt +21 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +14 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +16 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstantsHelper.java +9 -7
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +33 -5
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +20 -10
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerDelegate.kt +41 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.kt +4 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BoxShadowBorderRadius.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/CSSBackgroundDrawable.java +151 -83
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/CompositeBackgroundDrawable.kt +85 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/InsetBoxShadowDrawable.kt +191 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/OutsetBoxShadowDrawable.kt +159 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/BlackHoleEventDispatcher.kt +57 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ContentSizeChangeEvent.kt +37 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.java +55 -29
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/SimpleSpringInterpolator.kt +48 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BackgroundImageLayer.kt +28 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderInsets.kt +105 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt +27 -12
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderStyle.kt +26 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BoxShadow.kt +50 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/ComputedBorderRadius.kt +30 -6
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/CornerRadii.kt +19 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/Gradient.kt +76 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/LogicalEdge.kt +79 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/Overflow.kt +26 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/debuggingoverlay/DebuggingOverlayManager.kt +3 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayout.kt +125 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.kt +259 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/MultiPostprocessor.kt +61 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageDownloadListener.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.kt +307 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.kt +725 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/ImageSource.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/ResourceDrawableIdHelper.kt +35 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostHelper.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ModalHostShadowNode.kt +1 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.kt +13 -30
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +80 -99
- package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ProgressBarContainerView.kt +70 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ReactProgressBarViewManager.kt +165 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/safeareaview/ReactSafeAreaView.kt +65 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/safeareaview/ReactSafeAreaViewManager.kt +51 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/safeareaview/ReactSafeAreaViewShadowNode.kt +12 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/OnScrollDispatchHelper.kt +50 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +80 -11
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +64 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +79 -11
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +22 -33
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +65 -19
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VelocityHelper.kt +51 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/ReactSwipeRefreshLayout.java +11 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitch.kt +110 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactRawTextManager.java +8 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +73 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +143 -77
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java +36 -32
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +11 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +79 -104
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/ReactOpacitySpan.kt +33 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +81 -9
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +66 -30
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/CanvasUtil.kt +95 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java +6 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +257 -96
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +87 -26
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/WindowUtil.kt +63 -0
- package/ReactAndroid/src/main/java/com/facebook/systrace/Systrace.kt +23 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNative.java +1 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.java +2 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +4 -0
- package/ReactAndroid/src/main/jni/CMakeLists.txt +182 -3
- package/ReactAndroid/src/main/jni/first-party/fbgloginit/CMakeLists.txt +1 -1
- package/ReactAndroid/src/main/jni/first-party/jni-lib-merge/CMakeLists.txt +24 -0
- package/ReactAndroid/src/main/jni/first-party/jni-lib-merge/SoMerging-utils.cmake +23 -0
- package/ReactAndroid/src/main/jni/first-party/jni-lib-merge/jni_lib_merge.c +158 -0
- package/ReactAndroid/src/main/jni/first-party/jni-lib-merge/jni_lib_merge.h +108 -0
- package/ReactAndroid/src/main/jni/first-party/yogajni/CMakeLists.txt +5 -1
- package/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNIVanilla.cpp +12 -1
- package/ReactAndroid/src/main/jni/react/devsupport/CMakeLists.txt +5 -1
- package/ReactAndroid/src/main/jni/react/fabric/Binding.cpp +35 -19
- package/ReactAndroid/src/main/jni/react/fabric/Binding.h +3 -0
- package/ReactAndroid/src/main/jni/react/fabric/CMakeLists.txt +9 -1
- package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +6 -43
- package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.h +4 -27
- package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +76 -40
- package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +25 -1
- package/ReactAndroid/src/main/jni/react/fabric/MountItem.cpp +0 -7
- package/ReactAndroid/src/main/jni/react/fabric/MountItem.h +1 -7
- package/ReactAndroid/src/main/jni/react/fabric/OnLoad.cpp +0 -2
- package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.cpp +49 -13
- package/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.h +3 -2
- package/ReactAndroid/src/main/jni/react/featureflags/CMakeLists.txt +5 -1
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +369 -33
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +79 -7
- package/ReactAndroid/src/main/jni/react/hermes/instrumentation/CMakeLists.txt +7 -6
- package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/CMakeLists.txt +5 -6
- package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/OnLoad.cpp +0 -1
- package/ReactAndroid/src/main/jni/react/hermes/tooling/CMakeLists.txt +41 -0
- package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +3 -1
- package/ReactAndroid/src/main/jni/react/jni/InspectorNetworkRequestListener.cpp +76 -0
- package/ReactAndroid/src/main/jni/react/jni/InspectorNetworkRequestListener.h +44 -0
- package/ReactAndroid/src/main/jni/react/jni/JDynamicNative.cpp +46 -0
- package/ReactAndroid/src/main/jni/react/jni/JDynamicNative.h +56 -0
- package/ReactAndroid/src/main/jni/react/jni/JReactMarker.cpp +1 -0
- package/ReactAndroid/src/main/jni/react/jni/JWeakRefUtils.h +23 -0
- package/ReactAndroid/src/main/jni/react/jni/MethodInvoker.cpp +3 -1
- package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +4 -0
- package/ReactAndroid/src/main/jni/react/jni/ReactInstanceManagerInspectorTarget.cpp +71 -18
- package/ReactAndroid/src/main/jni/react/jni/ReactInstanceManagerInspectorTarget.h +17 -6
- package/ReactAndroid/src/main/jni/react/jscexecutor/CMakeLists.txt +6 -7
- package/ReactAndroid/src/main/jni/react/jsctooling/CMakeLists.txt +34 -0
- package/ReactAndroid/src/main/jni/react/mapbuffer/CMakeLists.txt +5 -1
- package/ReactAndroid/src/main/jni/react/newarchdefaults/CMakeLists.txt +10 -2
- package/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.cpp +16 -33
- package/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.h +2 -11
- package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +4 -1
- package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/CMakeLists.txt +8 -4
- package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.cpp +4 -3
- package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.h +8 -3
- package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +4 -1
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +64 -22
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +35 -6
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +1 -0
- package/ReactAndroid/src/main/jni/react/runtime/jsc/jni/CMakeLists.txt +7 -5
- package/ReactAndroid/src/main/jni/react/turbomodule/CMakeLists.txt +7 -2
- package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.cpp +156 -166
- package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.h +23 -17
- package/ReactAndroid/src/main/jni/react/uimanager/CMakeLists.txt +17 -5
- package/ReactAndroid/src/main/jni/third-party/folly/CMakeLists.txt +1 -1
- package/ReactAndroid/src/main/jni/third-party/glog/CMakeLists.txt +1 -1
- package/ReactAndroid/src/main/res/devsupport/drawable/paused_in_debugger_background.xml +1 -1
- package/ReactAndroid/src/main/res/devsupport/drawable/paused_in_debugger_dialog_background.xml +7 -0
- package/ReactAndroid/src/main/res/devsupport/drawable-hdpi/ic_resume.png +0 -0
- package/ReactAndroid/src/main/res/devsupport/drawable-mdpi/ic_resume.png +0 -0
- package/ReactAndroid/src/main/res/devsupport/drawable-xhdpi/ic_resume.png +0 -0
- package/ReactAndroid/src/main/res/devsupport/drawable-xxhdpi/ic_resume.png +0 -0
- package/ReactAndroid/src/main/res/devsupport/drawable-xxxhdpi/ic_resume.png +0 -0
- package/ReactAndroid/src/main/res/devsupport/layout/paused_in_debugger_view.xml +19 -18
- package/ReactAndroid/src/main/res/devsupport/values/strings.xml +2 -2
- package/ReactAndroid/src/main/res/devsupport/values/styles.xml +4 -0
- package/ReactAndroid/src/main/res/devsupport/xml/rn_dev_preferences.xml +0 -6
- package/ReactAndroid/src/main/res/views/uimanager/values/ids.xml +3 -0
- package/ReactCommon/cxxreact/CMakeLists.txt +2 -1
- package/ReactCommon/cxxreact/CxxModule.h +0 -2
- package/ReactCommon/cxxreact/JSExecutor.cpp +2 -7
- package/ReactCommon/cxxreact/React-cxxreact.podspec +1 -0
- package/ReactCommon/cxxreact/ReactMarker.cpp +10 -2
- package/ReactCommon/cxxreact/ReactMarker.h +5 -1
- package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
- package/ReactCommon/cxxreact/SystraceSection.h +15 -10
- package/ReactCommon/cxxreact/tests/jsarg_helpers.cpp +1 -1
- package/ReactCommon/hermes/executor/CMakeLists.txt +3 -3
- package/ReactCommon/hermes/inspector-modern/CMakeLists.txt +2 -5
- package/ReactCommon/jsc/CMakeLists.txt +5 -3
- package/ReactCommon/jserrorhandler/CMakeLists.txt +1 -1
- package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +40 -1
- package/ReactCommon/jserrorhandler/JsErrorHandler.h +12 -1
- package/ReactCommon/jserrorhandler/React-jserrorhandler.podspec +6 -0
- package/ReactCommon/jsi/jsi/decorator.h +57 -4
- package/ReactCommon/jsi/jsi/instrumentation.h +15 -3
- package/ReactCommon/jsi/jsi/jsi.cpp +6 -2
- package/ReactCommon/jsiexecutor/CMakeLists.txt +1 -1
- package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +10 -4
- package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +5 -1
- package/ReactCommon/jsinspector-modern/Base64.h +98 -0
- package/ReactCommon/jsinspector-modern/CMakeLists.txt +6 -1
- package/ReactCommon/jsinspector-modern/CdpJson.h +1 -1
- package/ReactCommon/jsinspector-modern/ExecutionContext.cpp +3 -4
- package/ReactCommon/jsinspector-modern/FallbackRuntimeAgentDelegate.h +5 -5
- package/ReactCommon/jsinspector-modern/HostAgent.cpp +45 -22
- package/ReactCommon/jsinspector-modern/HostAgent.h +7 -1
- package/ReactCommon/jsinspector-modern/HostTarget.cpp +36 -7
- package/ReactCommon/jsinspector-modern/HostTarget.h +25 -5
- package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +14 -3
- package/ReactCommon/jsinspector-modern/InspectorFlags.h +1 -1
- package/ReactCommon/jsinspector-modern/InspectorInterfaces.cpp +5 -1
- package/ReactCommon/jsinspector-modern/InspectorInterfaces.h +18 -1
- package/ReactCommon/jsinspector-modern/InspectorPackagerConnection.h +4 -5
- package/ReactCommon/jsinspector-modern/NetworkIOAgent.cpp +440 -0
- package/ReactCommon/jsinspector-modern/NetworkIOAgent.h +266 -0
- package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +1 -0
- package/ReactCommon/jsinspector-modern/RuntimeAgent.cpp +22 -0
- package/ReactCommon/jsinspector-modern/RuntimeTarget.cpp +46 -0
- package/ReactCommon/jsinspector-modern/RuntimeTarget.h +31 -0
- package/ReactCommon/jsinspector-modern/RuntimeTargetConsole.cpp +2 -2
- package/ReactCommon/jsinspector-modern/RuntimeTargetDebuggerSessionObserver.cpp +112 -0
- package/ReactCommon/jsinspector-modern/Utf8.h +56 -0
- package/ReactCommon/jsinspector-modern/WebSocketInterfaces.h +6 -0
- package/ReactCommon/jsinspector-modern/tests/ConsoleApiTest.cpp +54 -0
- package/ReactCommon/jsinspector-modern/tests/HostTargetTest.cpp +801 -0
- package/ReactCommon/jsinspector-modern/tests/InspectorMocks.h +6 -0
- package/ReactCommon/jsinspector-modern/tests/InspectorPackagerConnectionTest.cpp +29 -12
- package/ReactCommon/jsinspector-modern/tests/JsiIntegrationTest.cpp +38 -0
- package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.cpp +2 -1
- package/ReactCommon/jsinspector-modern/tests/RuntimeTargetDebuggerSessionObserverTest.cpp +214 -0
- package/ReactCommon/jsinspector-modern/tests/Utf8.cpp +58 -0
- package/ReactCommon/logger/CMakeLists.txt +1 -1
- package/ReactCommon/react/bridging/Bool.h +1 -1
- package/ReactCommon/react/bridging/CMakeLists.txt +1 -1
- package/ReactCommon/react/config/CMakeLists.txt +1 -1
- package/ReactCommon/react/config/ReactNativeConfig.cpp +0 -3
- package/ReactCommon/react/debug/CMakeLists.txt +1 -1
- package/ReactCommon/react/featureflags/CMakeLists.txt +1 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +107 -11
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +132 -12
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +479 -47
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +58 -10
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +106 -10
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +29 -5
- package/ReactCommon/react/nativemodule/core/CMakeLists.txt +2 -1
- package/ReactCommon/react/nativemodule/core/ReactCommon/CxxTurboModuleUtils.h +6 -38
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +68 -66
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.h +2 -2
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.h +21 -2
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +13 -0
- package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +1 -1
- package/ReactCommon/react/nativemodule/dom/CMakeLists.txt +5 -1
- package/ReactCommon/react/nativemodule/featureflags/CMakeLists.txt +1 -1
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +132 -12
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +54 -6
- package/ReactCommon/react/nativemodule/idlecallbacks/CMakeLists.txt +1 -1
- package/ReactCommon/react/nativemodule/microtasks/CMakeLists.txt +1 -1
- package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +0 -11
- package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +2 -0
- package/ReactCommon/react/nativemodule/samples/platform/android/CMakeLists.txt +2 -2
- package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +16 -0
- package/ReactCommon/react/nativemodule/samples/platform/android/ReactCommon/SampleTurboModuleSpec.cpp +9 -0
- package/ReactCommon/react/nativemodule/samples/platform/android/SampleTurboModule.java +20 -1
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.h +11 -0
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.mm +34 -0
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.h +1 -1
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.mm +4 -0
- package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +28 -16
- package/ReactCommon/react/nativemodule/webperformance/NativePerformanceObserver.cpp +8 -1
- package/ReactCommon/react/performance/timeline/CMakeLists.txt +2 -1
- package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp +12 -2
- package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.h +8 -4
- package/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +1 -0
- package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +1 -22
- package/ReactCommon/react/renderer/animations/utils.h +45 -0
- package/ReactCommon/react/renderer/attributedstring/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +4 -0
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +2 -0
- package/ReactCommon/react/renderer/attributedstring/conversions.h +55 -2
- package/ReactCommon/react/renderer/attributedstring/primitives.h +9 -0
- package/ReactCommon/react/renderer/componentregistry/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/componentregistry/native/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/components/image/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/components/image/conversions.h +9 -0
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mm +2 -3
- package/ReactCommon/react/renderer/components/modal/ModalHostViewState.h +10 -1
- package/{ReactAndroid/src/main/java/com/facebook/react/bridge/PerformanceCounter.java → ReactCommon/react/renderer/components/modal/ModalHostViewUtils.h} +5 -6
- package/ReactCommon/react/renderer/components/modal/ModalHostViewUtils.mm +20 -0
- package/ReactCommon/react/renderer/components/progressbar/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/components/root/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/components/safeareaview/CMakeLists.txt +46 -0
- package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewState.cpp +10 -1
- package/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewState.h +20 -0
- package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.cpp +99 -0
- package/ReactCommon/react/renderer/components/scrollview/ScrollEvent.h +44 -0
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.cpp +16 -72
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +12 -18
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.cpp +9 -0
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.h +1 -0
- package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +8 -0
- package/ReactCommon/react/renderer/components/text/CMakeLists.txt +1 -2
- package/ReactCommon/react/renderer/components/text/ParagraphShadowNode.cpp +35 -17
- package/ReactCommon/react/renderer/components/text/ParagraphShadowNode.h +3 -0
- package/ReactCommon/react/renderer/components/textinput/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp +27 -0
- package/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.h +3 -0
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputEventEmitter.cpp +1 -1
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.cpp +29 -0
- package/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputShadowNode.h +3 -0
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +20 -0
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +2 -0
- package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +115 -75
- package/ReactCommon/react/renderer/components/view/BaseViewProps.h +18 -1
- package/ReactCommon/react/renderer/components/view/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +4 -1
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +21 -0
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h +4 -0
- package/ReactCommon/react/renderer/components/view/conversions.h +307 -23
- package/ReactCommon/react/renderer/components/view/primitives.h +8 -1
- package/ReactCommon/react/renderer/consistency/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/core/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +21 -12
- package/ReactCommon/react/renderer/core/EventDispatcher.cpp +5 -3
- package/ReactCommon/react/renderer/core/EventDispatcher.h +1 -1
- package/ReactCommon/react/renderer/core/EventEmitter.cpp +1 -1
- package/ReactCommon/react/renderer/core/EventEmitter.h +2 -0
- package/ReactCommon/react/renderer/core/EventListener.cpp +6 -3
- package/ReactCommon/react/renderer/core/EventListener.h +1 -1
- package/ReactCommon/react/renderer/core/EventLogger.h +4 -1
- package/ReactCommon/react/renderer/core/EventPayloadType.h +1 -1
- package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +35 -11
- package/ReactCommon/react/renderer/core/EventTarget.cpp +8 -1
- package/ReactCommon/react/renderer/core/EventTarget.h +6 -1
- package/ReactCommon/react/renderer/core/LayoutableShadowNode.cpp +26 -6
- package/ReactCommon/react/renderer/core/LayoutableShadowNode.h +2 -3
- package/ReactCommon/react/renderer/core/Props.h +5 -0
- package/ReactCommon/react/renderer/core/PropsMacros.h +15 -11
- package/ReactCommon/react/renderer/core/RawProps.cpp +1 -6
- package/ReactCommon/react/renderer/core/RawProps.h +0 -8
- package/ReactCommon/react/renderer/core/RawPropsKeyMap.cpp +1 -1
- package/ReactCommon/react/renderer/core/RawPropsParser.cpp +19 -73
- package/ReactCommon/react/renderer/core/RawPropsParser.h +0 -9
- package/ReactCommon/react/renderer/core/RawValue.h +6 -7
- package/ReactCommon/react/renderer/core/ShadowNode.cpp +5 -4
- package/ReactCommon/react/renderer/core/ShadowNode.h +5 -5
- package/ReactCommon/react/renderer/core/ShadowNodeTraits.h +3 -0
- package/ReactCommon/react/renderer/core/tests/EventQueueProcessorTest.cpp +3 -1
- package/ReactCommon/react/renderer/core/tests/EventTargetTests.cpp +3 -1
- package/ReactCommon/react/renderer/core/tests/FindNodeAtPointTest.cpp +49 -0
- package/ReactCommon/react/renderer/core/tests/ShadowNodeTest.cpp +1 -1
- package/ReactCommon/react/renderer/debug/CMakeLists.txt +2 -2
- package/ReactCommon/react/renderer/dom/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/element/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/graphics/BackgroundImage.h +46 -0
- package/ReactCommon/react/renderer/graphics/BlendMode.h +72 -0
- package/ReactCommon/react/renderer/graphics/BoxShadow.h +25 -0
- package/ReactCommon/react/renderer/graphics/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/graphics/Color.cpp +27 -0
- package/ReactCommon/react/renderer/graphics/Color.h +6 -0
- package/ReactCommon/react/renderer/graphics/Filter.h +19 -5
- package/ReactCommon/react/renderer/graphics/Isolation.h +31 -0
- package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -0
- package/ReactCommon/react/renderer/graphics/Transform.cpp +3 -2
- package/ReactCommon/react/renderer/graphics/Transform.h +11 -0
- package/ReactCommon/react/renderer/graphics/ValueUnit.h +3 -2
- package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/HostPlatformColor.h +21 -0
- package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/PlatformColorParser.h +48 -20
- package/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/HostPlatformColor.h +31 -8
- package/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/HostPlatformColor.h +31 -0
- package/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/HostPlatformColor.mm +9 -0
- package/ReactCommon/react/renderer/graphics/tests/ColorTest.cpp +38 -0
- package/ReactCommon/react/renderer/imagemanager/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h +7 -0
- package/ReactCommon/react/renderer/imagemanager/primitives.h +1 -0
- package/ReactCommon/react/renderer/mapbuffer/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/mounting/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/mounting/Differentiator.cpp +15 -52
- package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +10 -3
- package/ReactCommon/react/renderer/mounting/MountingCoordinator.h +22 -1
- package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +4 -32
- package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +2 -28
- package/ReactCommon/react/renderer/mounting/stubs/StubViewTree.cpp +0 -5
- package/ReactCommon/react/renderer/observers/events/CMakeLists.txt +4 -1
- package/ReactCommon/react/renderer/observers/events/EventPerformanceLogger.cpp +75 -18
- package/ReactCommon/react/renderer/observers/events/EventPerformanceLogger.h +19 -2
- package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.cpp +14 -10
- package/ReactCommon/react/renderer/observers/intersection/IntersectionObserver.h +6 -3
- package/ReactCommon/react/renderer/observers/intersection/IntersectionObserverManager.cpp +24 -8
- package/ReactCommon/react/renderer/observers/intersection/IntersectionObserverManager.h +6 -3
- package/ReactCommon/react/renderer/runtimescheduler/CMakeLists.txt +2 -0
- package/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec +2 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +30 -7
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +25 -3
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerEventTimingDelegate.h +25 -0
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.cpp +19 -6
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h +12 -2
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp +116 -53
- package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.h +36 -12
- package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +149 -2
- package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +29 -22
- package/ReactCommon/react/renderer/scheduler/Scheduler.h +1 -7
- package/ReactCommon/react/renderer/scheduler/SchedulerToolbox.h +0 -10
- package/ReactCommon/react/renderer/telemetry/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/textlayoutmanager/CMakeLists.txt +1 -2
- package/ReactCommon/react/renderer/textlayoutmanager/TextMeasureCache.h +44 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +70 -40
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.h +17 -7
- package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.cpp +14 -7
- package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/TextLayoutManager.h +16 -7
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.h +2 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm +6 -2
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm +3 -2
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +83 -13
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextPrimitivesConversions.h +18 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.h +17 -7
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/TextLayoutManager.mm +34 -10
- package/ReactCommon/react/renderer/uimanager/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/uimanager/UIManager.cpp +9 -11
- package/ReactCommon/react/renderer/uimanager/UIManager.h +0 -6
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +16 -72
- package/ReactCommon/react/renderer/uimanager/UIManagerMountHook.h +6 -0
- package/ReactCommon/react/renderer/uimanager/consistency/CMakeLists.txt +1 -1
- package/ReactCommon/react/renderer/uimanager/primitives.h +8 -3
- package/ReactCommon/react/renderer/uimanager/tests/PointerEventsProcessorTest.cpp +1 -4
- package/ReactCommon/react/runtime/BufferedRuntimeExecutor.h +1 -1
- package/ReactCommon/react/runtime/CMakeLists.txt +2 -6
- package/ReactCommon/react/runtime/JSRuntimeFactory.h +8 -0
- package/ReactCommon/react/runtime/React-RuntimeCore.podspec +1 -0
- package/ReactCommon/react/runtime/ReactInstance.cpp +117 -50
- package/ReactCommon/react/runtime/TimerManager.cpp +156 -75
- package/ReactCommon/react/runtime/TimerManager.h +16 -4
- package/ReactCommon/react/runtime/hermes/CMakeLists.txt +3 -5
- package/ReactCommon/react/runtime/hermes/HermesInstance.cpp +24 -15
- package/ReactCommon/react/runtime/hermes/HermesInstance.h +3 -2
- package/ReactCommon/react/runtime/nativeviewconfig/CMakeLists.txt +1 -1
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.h +9 -4
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.mm +18 -7
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.h +5 -0
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +33 -52
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.h +6 -3
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +10 -10
- package/ReactCommon/react/runtime/tests/cxx/ReactInstanceTest.cpp +22 -16
- package/ReactCommon/react/test_utils/ios/Shims/ShimRCTInstance.mm +4 -5
- package/ReactCommon/react/timing/CMakeLists.txt +18 -0
- package/ReactCommon/react/timing/React-timing.podspec +44 -0
- package/ReactCommon/react/timing/primitives.h +31 -0
- package/ReactCommon/react/timing/tests/PrimitivesTest.cpp +47 -0
- package/ReactCommon/react/utils/CMakeLists.txt +1 -1
- package/ReactCommon/react/utils/CoreFeatures.cpp +0 -1
- package/ReactCommon/react/utils/CoreFeatures.h +0 -4
- package/ReactCommon/reactperflogger/CMakeLists.txt +7 -2
- package/ReactCommon/reactperflogger/React-perflogger.podspec +15 -2
- package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.cpp +117 -0
- package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.h +53 -0
- package/ReactCommon/reactperflogger/fusebox/tests/FuseboxTracerTest.cpp +90 -0
- package/ReactCommon/reactperflogger/reactperflogger/HermesPerfettoDataSource.cpp +19 -4
- package/ReactCommon/reactperflogger/reactperflogger/HermesPerfettoDataSource.h +9 -1
- package/ReactCommon/reactperflogger/reactperflogger/ReactPerfetto.cpp +42 -6
- package/ReactCommon/reactperflogger/reactperflogger/ReactPerfetto.h +6 -1
- package/ReactCommon/runtimeexecutor/CMakeLists.txt +1 -1
- package/ReactCommon/yoga/yoga/YGNodeStyle.cpp +5 -0
- package/ReactCommon/yoga/yoga/YGNodeStyle.h +3 -1
- package/ReactCommon/yoga/yoga/algorithm/AbsoluteLayout.cpp +48 -19
- package/ReactCommon/yoga/yoga/algorithm/AbsoluteLayout.h +2 -1
- package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +28 -2
- package/ReactCommon/yoga/yoga/config/Config.cpp +24 -5
- package/ReactCommon/yoga/yoga/config/Config.h +3 -0
- package/ReactCommon/yoga/yoga/node/LayoutResults.cpp +1 -0
- package/ReactCommon/yoga/yoga/node/LayoutResults.h +1 -0
- package/ReactCommon/yoga/yoga/node/Node.cpp +7 -1
- package/ReactCommon/yoga/yoga/style/Style.h +18 -0
- package/cli.js +23 -5
- package/flow/jest.js +2 -2
- package/gradle/libs.versions.toml +5 -5
- package/index.js +3 -1
- package/jest/mockComponent.js +4 -1
- package/jest/mockModal.js +1 -3
- package/jest/mockScrollView.js +1 -1
- package/jest/renderer.js +2 -2
- package/jest/setup.js +16 -13
- package/package.json +15 -16
- package/react-native.config.js +26 -5
- package/scripts/bundle.js +5 -2
- package/scripts/cocoapods/helpers.rb +73 -6
- package/scripts/cocoapods/new_architecture.rb +17 -3
- package/scripts/cocoapods/privacy_manifest_utils.rb +23 -8
- package/scripts/cocoapods/utils.rb +30 -18
- package/scripts/ios-configure-glog.sh +2 -0
- package/scripts/react_native_pods.rb +73 -2
- package/sdks/.hermesversion +1 -1
- package/sdks/hermes-engine/hermes-engine.podspec +9 -3
- package/sdks/hermes-engine/utils/build-apple-framework.sh +13 -16
- package/sdks/hermes-engine/utils/build-ios-framework.sh +20 -5
- package/sdks/hermesc/linux64-bin/hermesc +0 -0
- package/sdks/hermesc/osx-bin/hermes +0 -0
- package/sdks/hermesc/osx-bin/hermesc +0 -0
- package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
- package/sdks/hermesc/win64-bin/msvcp140.dll +0 -0
- package/sdks/hermesc/win64-bin/vcruntime140.dll +0 -0
- package/sdks/hermesc/win64-bin/vcruntime140_1.dll +0 -0
- package/src/private/animated/NativeAnimatedHelper.js +438 -0
- package/src/private/animated/NativeAnimatedValidation.js +64 -0
- package/src/private/components/HScrollViewNativeComponents.js +56 -0
- package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +29 -0
- package/src/private/components/VScrollViewNativeComponents.js +48 -0
- package/src/private/components/useSyncOnScroll.js +48 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +166 -16
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +29 -5
- package/src/private/fusebox/FuseboxSessionObserver.js +42 -0
- package/{Libraries/Core → src/private/renderer/errorhandling}/ErrorHandlers.js +14 -4
- package/src/private/setup/setUpDOM.js +28 -0
- package/src/private/setup/setUpIntersectionObserver.js +27 -0
- package/src/private/setup/setUpMutationObserver.js +26 -0
- package/src/private/setup/setUpPerformanceObserver.js +64 -0
- package/src/private/specs/modules/NativeAppearance.js +3 -3
- package/src/private/specs/modules/NativeLinkingManager.js +1 -1
- package/src/private/specs/modules/NativeSampleTurboModule.js +14 -1
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +6 -4
- package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver}/IntersectionObserver.js +5 -3
- package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver}/IntersectionObserverEntry.js +3 -3
- package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver}/IntersectionObserverManager.js +14 -17
- package/src/private/{specs/modules → webapis/intersectionobserver/specs}/NativeIntersectionObserver.js +2 -2
- package/{Libraries/IntersectionObserver → src/private/webapis/intersectionobserver/specs}/__mocks__/NativeIntersectionObserver.js +4 -4
- package/{Libraries/MutationObserver → src/private/webapis/mutationobserver}/MutationObserver.js +5 -3
- package/{Libraries/MutationObserver → src/private/webapis/mutationobserver}/MutationObserverManager.js +24 -15
- package/{Libraries/MutationObserver → src/private/webapis/mutationobserver}/MutationRecord.js +4 -6
- package/src/private/{specs/modules → webapis/mutationobserver/specs}/NativeMutationObserver.js +2 -2
- package/{Libraries/MutationObserver → src/private/webapis/mutationobserver/specs}/__mocks__/NativeMutationObserver.js +5 -5
- package/src/private/webapis/performance/{EventCounts.js → EventTiming.js} +65 -3
- package/src/private/webapis/performance/LongTasks.js +39 -0
- package/src/private/webapis/performance/Performance.js +22 -9
- package/src/private/webapis/performance/PerformanceEntry.js +36 -18
- package/src/private/webapis/performance/PerformanceObserver.js +29 -43
- package/src/private/webapis/performance/RawPerformanceEntry.js +24 -1
- package/src/private/webapis/performance/UserTiming.js +17 -12
- package/src/private/webapis/performance/specs/NativePerformanceObserver.js +1 -1
- package/third-party-podspecs/DoubleConversion.podspec +4 -1
- package/third-party-podspecs/RCT-Folly.podspec +3 -1
- package/third-party-podspecs/boost.podspec +4 -1
- package/third-party-podspecs/fmt.podspec +4 -1
- package/third-party-podspecs/glog.podspec +4 -1
- package/types/experimental.d.ts +12 -98
- package/Libraries/Animated/NativeAnimatedHelper.js +0 -615
- package/Libraries/Core/setUpIntersectionObserver.js +0 -16
- package/Libraries/Core/setUpMutationObserver.js +0 -16
- package/Libraries/Core/setUpPerformanceObserver.js +0 -18
- package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +0 -13
- package/Libraries/MutationObserver/NativeMutationObserver.js +0 -13
- package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +0 -135
- package/ReactAndroid/src/main/java/com/facebook/annotationprocessors/common/ProcessorBase.java +0 -24
- package/ReactAndroid/src/main/java/com/facebook/react/animated/AdditionAnimatedNode.java +0 -56
- package/ReactAndroid/src/main/java/com/facebook/react/animated/AnimatedNode.java +0 -78
- package/ReactAndroid/src/main/java/com/facebook/react/animated/ColorAnimatedNode.java +0 -131
- package/ReactAndroid/src/main/java/com/facebook/react/animated/DecayAnimation.java +0 -79
- package/ReactAndroid/src/main/java/com/facebook/react/animated/DiffClampAnimatedNode.java +0 -66
- package/ReactAndroid/src/main/java/com/facebook/react/animated/DivisionAnimatedNode.java +0 -64
- package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.java +0 -116
- package/ReactAndroid/src/main/java/com/facebook/react/animated/FrameBasedAnimationDriver.java +0 -109
- package/ReactAndroid/src/main/java/com/facebook/react/animated/InterpolationAnimatedNode.java +0 -311
- package/ReactAndroid/src/main/java/com/facebook/react/animated/MultiplicationAnimatedNode.java +0 -56
- package/ReactAndroid/src/main/java/com/facebook/react/animated/ObjectAnimatedNode.java +0 -161
- package/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.java +0 -145
- package/ReactAndroid/src/main/java/com/facebook/react/animated/SpringAnimation.java +0 -207
- package/ReactAndroid/src/main/java/com/facebook/react/animated/StyleAnimatedNode.java +0 -70
- package/ReactAndroid/src/main/java/com/facebook/react/animated/SubtractionAnimatedNode.java +0 -60
- package/ReactAndroid/src/main/java/com/facebook/react/animated/TrackingAnimatedNode.java +0 -50
- package/ReactAndroid/src/main/java/com/facebook/react/animated/TransformAnimatedNode.java +0 -93
- package/ReactAndroid/src/main/java/com/facebook/react/animated/ValueAnimatedNode.java +0 -66
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/BackgroundExecutor.java +0 -64
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoaderDelegate.java +0 -51
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaScriptModule.java +0 -25
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/UIManager.java +0 -162
- package/ReactAndroid/src/main/java/com/facebook/react/common/ClearableSynchronizedPool.java +0 -53
- package/ReactAndroid/src/main/java/com/facebook/react/common/DebugServerException.java +0 -104
- package/ReactAndroid/src/main/java/com/facebook/react/common/HasJavascriptExceptionMetadata.java +0 -17
- package/ReactAndroid/src/main/java/com/facebook/react/common/LongArray.java +0 -75
- package/ReactAndroid/src/main/java/com/facebook/react/common/ShakeDetector.java +0 -144
- package/ReactAndroid/src/main/java/com/facebook/react/common/assets/ReactFontManager.java +0 -239
- package/ReactAndroid/src/main/java/com/facebook/react/common/futures/SimpleSettableFuture.java +0 -121
- package/ReactAndroid/src/main/java/com/facebook/react/common/network/OkHttpCallUtil.java +0 -36
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevLoadingViewImplementation.java +0 -156
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/PerftestDevSupportManager.java +0 -50
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/ReleaseDevSupportManager.java +0 -214
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/CoreComponentsRegistry.kt +0 -30
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricComponents.java +0 -54
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventBeatManager.java +0 -48
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.java +0 -74
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SendAccessibilityEvent.java +0 -56
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/SendAccessibilityEventMountItem.java +0 -57
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ChoreographerCompat.java +0 -18
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/DeviceEventManagerModule.java +0 -76
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.java +0 -91
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/HeadlessJsTaskSupportModule.java +0 -61
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JSTimers.java +0 -21
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JavaTimerManager.java +0 -428
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/PermissionAwareActivity.java +0 -29
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/RCTNativeAppEventEmitter.java +0 -18
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.java +0 -172
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java +0 -104
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.java +0 -225
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/ReactNetworkImageRequest.java +0 -33
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/ReactOkHttpNetworkFetcher.java +0 -80
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/SystraceRequestListener.java +0 -160
- package/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/PermissionsModule.java +0 -204
- package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/PackagerConnectionSettings.java +0 -65
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/internal/bolts/Executors.java +0 -53
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerDelegate.java +0 -141
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerInterface.java +0 -84
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/IViewGroupManager.java +0 -42
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewHierarchyDumper.java +0 -45
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerDelegate.java +0 -25
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BoxShadowDrawable.kt +0 -102
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/BlackHoleEventDispatcher.java +0 -62
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ContentSizeChangeEvent.java +0 -52
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/SimpleSpringInterpolator.java +0 -50
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayout.java +0 -123
- package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.java +0 -302
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/MultiPostprocessor.java +0 -76
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.java +0 -289
- package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.java +0 -638
- package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ProgressBarContainerView.java +0 -99
- package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/ReactProgressBarViewManager.java +0 -203
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/OnScrollDispatchHelper.java +0 -58
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VelocityHelper.java +0 -64
- package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitch.java +0 -124
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/CanvasUtil.java +0 -87
- package/ReactAndroid/src/main/jni/react/fabric/JBackgroundExecutor.cpp +0 -28
- package/ReactAndroid/src/main/jni/react/fabric/JBackgroundExecutor.h +0 -23
- package/src/private/core/setUpDOM.js +0 -18
- package/src/private/webapis/performance/PerformanceEventTiming.js +0 -55
- /package/src/private/{core → styles}/composeStyles.js +0 -0
package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java
CHANGED
|
@@ -21,7 +21,6 @@ import androidx.collection.SparseArrayCompat;
|
|
|
21
21
|
import com.facebook.common.logging.FLog;
|
|
22
22
|
import com.facebook.infer.annotation.Assertions;
|
|
23
23
|
import com.facebook.infer.annotation.ThreadConfined;
|
|
24
|
-
import com.facebook.react.bridge.ReactContext;
|
|
25
24
|
import com.facebook.react.bridge.ReactSoftExceptionLogger;
|
|
26
25
|
import com.facebook.react.bridge.ReadableArray;
|
|
27
26
|
import com.facebook.react.bridge.ReadableMap;
|
|
@@ -30,13 +29,10 @@ import com.facebook.react.bridge.SoftAssertions;
|
|
|
30
29
|
import com.facebook.react.bridge.UiThreadUtil;
|
|
31
30
|
import com.facebook.react.bridge.WritableMap;
|
|
32
31
|
import com.facebook.react.common.build.ReactBuildConfig;
|
|
33
|
-
import com.facebook.react.config.ReactFeatureFlags;
|
|
34
|
-
import com.facebook.react.fabric.GuardedFrameCallback;
|
|
35
32
|
import com.facebook.react.fabric.events.EventEmitterWrapper;
|
|
36
33
|
import com.facebook.react.fabric.mounting.MountingManager.MountItemExecutor;
|
|
37
34
|
import com.facebook.react.fabric.mounting.mountitems.MountItem;
|
|
38
35
|
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags;
|
|
39
|
-
import com.facebook.react.modules.core.ReactChoreographer;
|
|
40
36
|
import com.facebook.react.touch.JSResponderHandler;
|
|
41
37
|
import com.facebook.react.uimanager.IViewGroupManager;
|
|
42
38
|
import com.facebook.react.uimanager.IllegalViewOperationException;
|
|
@@ -50,13 +46,13 @@ import com.facebook.react.uimanager.ThemedReactContext;
|
|
|
50
46
|
import com.facebook.react.uimanager.ViewManager;
|
|
51
47
|
import com.facebook.react.uimanager.ViewManagerRegistry;
|
|
52
48
|
import com.facebook.react.uimanager.events.EventCategoryDef;
|
|
49
|
+
import com.facebook.systrace.Systrace;
|
|
53
50
|
import java.util.ArrayDeque;
|
|
54
51
|
import java.util.HashSet;
|
|
55
52
|
import java.util.LinkedList;
|
|
56
53
|
import java.util.Map;
|
|
57
54
|
import java.util.Queue;
|
|
58
55
|
import java.util.Set;
|
|
59
|
-
import java.util.Stack;
|
|
60
56
|
import java.util.concurrent.ConcurrentHashMap;
|
|
61
57
|
|
|
62
58
|
public class SurfaceMountingManager {
|
|
@@ -78,17 +74,19 @@ public class SurfaceMountingManager {
|
|
|
78
74
|
private RootViewManager mRootViewManager;
|
|
79
75
|
private MountItemExecutor mMountItemExecutor;
|
|
80
76
|
|
|
81
|
-
// Stack of deferred-removal tags for Views that can be
|
|
82
|
-
// removed asynchronously. Guaranteed to be disconnected
|
|
83
|
-
// from the viewport and these tags will not be reused in the future.
|
|
84
77
|
@ThreadConfined(UI)
|
|
85
|
-
private final
|
|
78
|
+
private final Set<Integer> mErroneouslyReaddedReactTags = new HashSet<>();
|
|
86
79
|
|
|
80
|
+
// This set is used to keep track of views that are currently being interacted with (i.e.
|
|
81
|
+
// views that saw a ACTION_DOWN but not a ACTION_UP event yet). This is used to prevent
|
|
82
|
+
// views from being removed while they are being interacted with as their event emitter will
|
|
83
|
+
// also be removed, and `Pressables` will look "stuck".
|
|
87
84
|
@ThreadConfined(UI)
|
|
88
|
-
private final Set<Integer>
|
|
85
|
+
private final Set<Integer> mViewsWithActiveTouches = new HashSet<>();
|
|
89
86
|
|
|
87
|
+
// This set contains the views that are scheduled to be removed after their touch finishes.
|
|
90
88
|
@ThreadConfined(UI)
|
|
91
|
-
private
|
|
89
|
+
private final Set<Integer> mViewsToDeleteAfterTouchFinishes = new HashSet<>();
|
|
92
90
|
|
|
93
91
|
// This is null *until* StopSurface is called.
|
|
94
92
|
private SparseArrayCompat<Object> mTagSetForStoppedSurface;
|
|
@@ -211,11 +209,22 @@ public class SurfaceMountingManager {
|
|
|
211
209
|
+ " tag: [%d]",
|
|
212
210
|
rootView.getId(),
|
|
213
211
|
mSurfaceId);
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
212
|
+
// This behavior can not be guaranteed in hybrid apps that have a native android layer
|
|
213
|
+
// over
|
|
214
|
+
// which reactRootViews are added and the native views need to have ids on them in order
|
|
215
|
+
// to
|
|
216
|
+
// work.
|
|
217
|
+
// Hence this can cause unnecessary crashes at runtime for hybrid apps.
|
|
218
|
+
// So converting this to a soft exception such that pure react-native devs can still see
|
|
219
|
+
// the
|
|
220
|
+
// warning while hybrid apps continue to run without crashes
|
|
221
|
+
ReactSoftExceptionLogger.logSoftException(
|
|
222
|
+
TAG,
|
|
223
|
+
new IllegalViewOperationException(
|
|
224
|
+
"Trying to add a root view with an explicit id already set. React Native uses"
|
|
225
|
+
+ " the id field to track react tags and will overwrite this field. If that"
|
|
226
|
+
+ " is fine, explicitly overwrite the id field to View.NO_ID before calling"
|
|
227
|
+
+ " addRootView."));
|
|
219
228
|
}
|
|
220
229
|
rootView.setId(mSurfaceId);
|
|
221
230
|
|
|
@@ -296,6 +305,9 @@ public class SurfaceMountingManager {
|
|
|
296
305
|
|
|
297
306
|
Runnable runnable =
|
|
298
307
|
() -> {
|
|
308
|
+
if (ReactNativeFeatureFlags.enableViewRecycling()) {
|
|
309
|
+
mViewManagerRegistry.onSurfaceStopped(mSurfaceId);
|
|
310
|
+
}
|
|
299
311
|
mTagSetForStoppedSurface = new SparseArrayCompat<>();
|
|
300
312
|
for (Map.Entry<Integer, ViewState> entry : mTagToViewState.entrySet()) {
|
|
301
313
|
// Using this as a placeholder value in the map. We're using SparseArrayCompat
|
|
@@ -313,14 +325,8 @@ public class SurfaceMountingManager {
|
|
|
313
325
|
mRootViewManager = null;
|
|
314
326
|
mMountItemExecutor = null;
|
|
315
327
|
mThemedReactContext = null;
|
|
316
|
-
if (ReactNativeFeatureFlags.fixStoppedSurfaceRemoveDeleteTreeUIFrameCallbackLeak()) {
|
|
317
|
-
mRemoveDeleteTreeUIFrameCallback = null;
|
|
318
|
-
}
|
|
319
328
|
mOnViewAttachMountItems.clear();
|
|
320
329
|
|
|
321
|
-
if (ReactFeatureFlags.enableViewRecycling) {
|
|
322
|
-
mViewManagerRegistry.onSurfaceStopped(mSurfaceId);
|
|
323
|
-
}
|
|
324
330
|
FLog.e(TAG, "Surface [" + mSurfaceId + "] was stopped on SurfaceMountingManager.");
|
|
325
331
|
};
|
|
326
332
|
|
|
@@ -608,182 +614,6 @@ public class SurfaceMountingManager {
|
|
|
608
614
|
}
|
|
609
615
|
}
|
|
610
616
|
|
|
611
|
-
@UiThread
|
|
612
|
-
public void removeDeleteTreeAt(final int tag, final int parentTag, int index) {
|
|
613
|
-
if (isStopped()) {
|
|
614
|
-
return;
|
|
615
|
-
}
|
|
616
|
-
|
|
617
|
-
UiThreadUtil.assertOnUiThread();
|
|
618
|
-
ViewState parentViewState = getNullableViewState(parentTag);
|
|
619
|
-
|
|
620
|
-
// TODO: throw exception here?
|
|
621
|
-
if (parentViewState == null) {
|
|
622
|
-
ReactSoftExceptionLogger.logSoftException(
|
|
623
|
-
MountingManager.TAG,
|
|
624
|
-
new IllegalStateException(
|
|
625
|
-
"Unable to find viewState for tag: [" + parentTag + "] for removeDeleteTreeAt"));
|
|
626
|
-
return;
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
if (!(parentViewState.mView instanceof ViewGroup)) {
|
|
630
|
-
String message =
|
|
631
|
-
"Unable to remove+delete a view from a view that is not a ViewGroup. ParentTag: "
|
|
632
|
-
+ parentTag
|
|
633
|
-
+ " - Tag: "
|
|
634
|
-
+ tag
|
|
635
|
-
+ " - Index: "
|
|
636
|
-
+ index;
|
|
637
|
-
FLog.e(TAG, message);
|
|
638
|
-
throw new IllegalStateException(message);
|
|
639
|
-
}
|
|
640
|
-
|
|
641
|
-
final ViewGroup parentView = (ViewGroup) parentViewState.mView;
|
|
642
|
-
|
|
643
|
-
if (parentView == null) {
|
|
644
|
-
throw new IllegalStateException("Unable to find view for tag [" + parentTag + "]");
|
|
645
|
-
}
|
|
646
|
-
|
|
647
|
-
if (SHOW_CHANGED_VIEW_HIERARCHIES) {
|
|
648
|
-
// Display children before deleting any
|
|
649
|
-
FLog.e(
|
|
650
|
-
TAG,
|
|
651
|
-
"removeDeleteTreeAt: [" + tag + "] -> [" + parentTag + "] idx: " + index + " BEFORE");
|
|
652
|
-
logViewHierarchy(parentView, false);
|
|
653
|
-
}
|
|
654
|
-
|
|
655
|
-
IViewGroupManager<ViewGroup> viewGroupManager = getViewGroupManager(parentViewState);
|
|
656
|
-
|
|
657
|
-
// Verify that the view we're about to remove has the same tag we expect
|
|
658
|
-
View view = viewGroupManager.getChildAt(parentView, index);
|
|
659
|
-
int actualTag = (view != null ? view.getId() : -1);
|
|
660
|
-
if (actualTag != tag) {
|
|
661
|
-
int tagActualIndex = -1;
|
|
662
|
-
int parentChildrenCount = parentView.getChildCount();
|
|
663
|
-
for (int i = 0; i < parentChildrenCount; i++) {
|
|
664
|
-
if (parentView.getChildAt(i).getId() == tag) {
|
|
665
|
-
tagActualIndex = i;
|
|
666
|
-
break;
|
|
667
|
-
}
|
|
668
|
-
}
|
|
669
|
-
|
|
670
|
-
// TODO T74425739: previously, we did not do this check and `removeViewAt` would be executed
|
|
671
|
-
// below, sometimes crashing there. *However*, interestingly enough, `removeViewAt` would not
|
|
672
|
-
// complain if you removed views from an already-empty parent. This seems necessary currently
|
|
673
|
-
// for certain ViewManagers that remove their own children - like BottomSheet?
|
|
674
|
-
// This workaround seems not-great, but for now, we just return here for
|
|
675
|
-
// backwards-compatibility. Essentially, if a view has already been removed from the
|
|
676
|
-
// hierarchy, we treat it as a noop.
|
|
677
|
-
if (tagActualIndex == -1) {
|
|
678
|
-
FLog.e(
|
|
679
|
-
TAG,
|
|
680
|
-
"removeDeleteTreeAt: ["
|
|
681
|
-
+ tag
|
|
682
|
-
+ "] -> ["
|
|
683
|
-
+ parentTag
|
|
684
|
-
+ "] @"
|
|
685
|
-
+ index
|
|
686
|
-
+ ": view already removed from parent! Children in parent: "
|
|
687
|
-
+ parentChildrenCount);
|
|
688
|
-
return;
|
|
689
|
-
}
|
|
690
|
-
|
|
691
|
-
// Here we are guaranteed that the view is still in the View hierarchy, just
|
|
692
|
-
// at a different index. In debug mode we'll crash here; in production, we'll remove
|
|
693
|
-
// the child from the parent and move on.
|
|
694
|
-
// This is an issue that is safely recoverable 95% of the time. If this allows corruption
|
|
695
|
-
// of the view hierarchy and causes bugs or a crash after this point, there will be logs
|
|
696
|
-
// indicating that this happened.
|
|
697
|
-
// This is likely *only* necessary because of Fabric's LayoutAnimations implementation.
|
|
698
|
-
// If we can fix the bug there, or remove the need for LayoutAnimation index adjustment
|
|
699
|
-
// entirely, we can just throw this exception without regression user experience.
|
|
700
|
-
logViewHierarchy(parentView, true);
|
|
701
|
-
ReactSoftExceptionLogger.logSoftException(
|
|
702
|
-
TAG,
|
|
703
|
-
new IllegalStateException(
|
|
704
|
-
"Tried to remove+delete view ["
|
|
705
|
-
+ tag
|
|
706
|
-
+ "] of parent ["
|
|
707
|
-
+ parentTag
|
|
708
|
-
+ "] at index "
|
|
709
|
-
+ index
|
|
710
|
-
+ ", but got view tag "
|
|
711
|
-
+ actualTag
|
|
712
|
-
+ " - actual index of view: "
|
|
713
|
-
+ tagActualIndex));
|
|
714
|
-
index = tagActualIndex;
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
try {
|
|
718
|
-
viewGroupManager.removeViewAt(parentView, index);
|
|
719
|
-
} catch (RuntimeException e) {
|
|
720
|
-
// Note: `getChildCount` may not always be accurate!
|
|
721
|
-
// We don't currently have a good explanation other than, in situations where you
|
|
722
|
-
// would empirically expect to see childCount > 0, the childCount is reported as 0.
|
|
723
|
-
// This is likely due to a ViewManager overriding getChildCount or some other methods
|
|
724
|
-
// in a way that is strictly incorrect, but potentially only visible here.
|
|
725
|
-
// The failure mode is actually that in `removeViewAt`, a NullPointerException is
|
|
726
|
-
// thrown when we try to perform an operation on a View that doesn't exist, and
|
|
727
|
-
// is therefore null.
|
|
728
|
-
// We try to add some extra diagnostics here, but we always try to remove the View
|
|
729
|
-
// from the hierarchy first because detecting by looking at childCount will not work.
|
|
730
|
-
//
|
|
731
|
-
// Note that the lesson here is that `getChildCount` is not /required/ to adhere to
|
|
732
|
-
// any invariants. If you add 9 children to a parent, the `getChildCount` of the parent
|
|
733
|
-
// may not be equal to 9. This apparently causes no issues with Android and is common
|
|
734
|
-
// enough that we shouldn't try to change this invariant, without a lot of thought.
|
|
735
|
-
int childCount = viewGroupManager.getChildCount(parentView);
|
|
736
|
-
|
|
737
|
-
logViewHierarchy(parentView, true);
|
|
738
|
-
|
|
739
|
-
throw new IllegalStateException(
|
|
740
|
-
"Cannot remove child at index "
|
|
741
|
-
+ index
|
|
742
|
-
+ " from parent ViewGroup ["
|
|
743
|
-
+ parentView.getId()
|
|
744
|
-
+ "], only "
|
|
745
|
-
+ childCount
|
|
746
|
-
+ " children in parent. Warning: childCount may be incorrect!",
|
|
747
|
-
e);
|
|
748
|
-
}
|
|
749
|
-
|
|
750
|
-
// Display children after deleting any
|
|
751
|
-
if (SHOW_CHANGED_VIEW_HIERARCHIES) {
|
|
752
|
-
final int finalIndex = index;
|
|
753
|
-
UiThreadUtil.runOnUiThread(
|
|
754
|
-
new Runnable() {
|
|
755
|
-
@Override
|
|
756
|
-
public void run() {
|
|
757
|
-
FLog.e(
|
|
758
|
-
TAG,
|
|
759
|
-
"removeViewAt: ["
|
|
760
|
-
+ tag
|
|
761
|
-
+ "] -> ["
|
|
762
|
-
+ parentTag
|
|
763
|
-
+ "] idx: "
|
|
764
|
-
+ finalIndex
|
|
765
|
-
+ " AFTER");
|
|
766
|
-
logViewHierarchy(parentView, false);
|
|
767
|
-
}
|
|
768
|
-
});
|
|
769
|
-
}
|
|
770
|
-
|
|
771
|
-
// The View has been removed from the View hierarchy; now it
|
|
772
|
-
// and all of its children, if any, need to be deleted, recursively.
|
|
773
|
-
// Schedule the Runnable first, to detect if we need to schedule a Runnable at all.
|
|
774
|
-
// Since this current function and the Runnable both run on the UI thread, there is
|
|
775
|
-
// no race condition here.
|
|
776
|
-
if (mReactTagsToRemove.empty()) {
|
|
777
|
-
if (mRemoveDeleteTreeUIFrameCallback == null) {
|
|
778
|
-
mRemoveDeleteTreeUIFrameCallback = new RemoveDeleteTreeUIFrameCallback(mThemedReactContext);
|
|
779
|
-
}
|
|
780
|
-
ReactChoreographer.getInstance()
|
|
781
|
-
.postFrameCallback(
|
|
782
|
-
ReactChoreographer.CallbackType.IDLE_EVENT, mRemoveDeleteTreeUIFrameCallback);
|
|
783
|
-
}
|
|
784
|
-
mReactTagsToRemove.push(tag);
|
|
785
|
-
}
|
|
786
|
-
|
|
787
617
|
@UiThread
|
|
788
618
|
public void createView(
|
|
789
619
|
@NonNull String componentName,
|
|
@@ -830,25 +660,29 @@ public class SurfaceMountingManager {
|
|
|
830
660
|
@Nullable StateWrapper stateWrapper,
|
|
831
661
|
@Nullable EventEmitterWrapper eventEmitterWrapper,
|
|
832
662
|
boolean isLayoutable) {
|
|
833
|
-
|
|
834
|
-
|
|
663
|
+
Systrace.beginSection(
|
|
664
|
+
Systrace.TRACE_TAG_REACT_JAVA_BRIDGE,
|
|
665
|
+
"SurfaceMountingManager::createViewUnsafe(" + componentName + ")");
|
|
666
|
+
try {
|
|
667
|
+
ReactStylesDiffMap propMap = new ReactStylesDiffMap(props);
|
|
835
668
|
|
|
836
|
-
|
|
669
|
+
ViewState viewState = new ViewState(reactTag);
|
|
670
|
+
viewState.mCurrentProps = propMap;
|
|
671
|
+
viewState.mStateWrapper = stateWrapper;
|
|
672
|
+
viewState.mEventEmitter = eventEmitterWrapper;
|
|
673
|
+
mTagToViewState.put(reactTag, viewState);
|
|
837
674
|
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
675
|
+
if (isLayoutable) {
|
|
676
|
+
ViewManager viewManager = mViewManagerRegistry.get(componentName);
|
|
677
|
+
// View Managers are responsible for dealing with inital state and props.
|
|
678
|
+
viewState.mView =
|
|
679
|
+
viewManager.createView(
|
|
680
|
+
reactTag, mThemedReactContext, propMap, stateWrapper, mJSResponderHandler);
|
|
681
|
+
viewState.mViewManager = viewManager;
|
|
682
|
+
}
|
|
683
|
+
} finally {
|
|
684
|
+
Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE);
|
|
844
685
|
}
|
|
845
|
-
|
|
846
|
-
ViewState viewState = new ViewState(reactTag, view, viewManager);
|
|
847
|
-
viewState.mCurrentProps = propMap;
|
|
848
|
-
viewState.mStateWrapper = stateWrapper;
|
|
849
|
-
viewState.mEventEmitter = eventEmitterWrapper;
|
|
850
|
-
|
|
851
|
-
mTagToViewState.put(reactTag, viewState);
|
|
852
686
|
}
|
|
853
687
|
|
|
854
688
|
public void updateProps(int reactTag, ReadableMap props) {
|
|
@@ -979,10 +813,28 @@ public class SurfaceMountingManager {
|
|
|
979
813
|
: layoutDirection == 2 ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_INHERIT);
|
|
980
814
|
}
|
|
981
815
|
|
|
816
|
+
// Even though we have exact dimensions, we still call measure because some platform views (e.g.
|
|
817
|
+
// Switch) assume that method will always be called before onLayout and onDraw. They use it to
|
|
818
|
+
// calculate and cache information used in the draw pass. For most views, onMeasure can be
|
|
819
|
+
// stubbed out to only call setMeasuredDimensions. For ViewGroups, onLayout should be stubbed
|
|
820
|
+
// out to not recursively call layout on its children: React Native already handles doing
|
|
821
|
+
// that.
|
|
822
|
+
//
|
|
823
|
+
// Also, note measure and layout need to be called *after* all View properties have been updated
|
|
824
|
+
// because of caching and calculation that may occur in onMeasure and onLayout. Layout
|
|
825
|
+
// operations should also follow the native view hierarchy and go top to bottom for
|
|
826
|
+
// consistency with standard layout passes (some views may depend on this).
|
|
982
827
|
viewToUpdate.measure(
|
|
983
828
|
View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY),
|
|
984
829
|
View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY));
|
|
985
830
|
|
|
831
|
+
// We update the layout of the RootView when there is a change in the layout of its child. This
|
|
832
|
+
// is required to re-measure the size of the native View container (usually a FrameLayout) that
|
|
833
|
+
// is configured with layout_height = WRAP_CONTENT or layout_width = WRAP_CONTENT
|
|
834
|
+
//
|
|
835
|
+
// This code is going to be executed ONLY when there is a change in the size of the root view
|
|
836
|
+
// defined in the JS side. Changes in the layout of inner views will not trigger an update on
|
|
837
|
+
// the layout of the root view.
|
|
986
838
|
ViewParent parent = viewToUpdate.getParent();
|
|
987
839
|
if (parent instanceof RootView) {
|
|
988
840
|
parent.requestLayout();
|
|
@@ -1102,7 +954,7 @@ public class SurfaceMountingManager {
|
|
|
1102
954
|
if (viewState == null) {
|
|
1103
955
|
// TODO T62717437 - Use a flag to determine that these event emitters belong to virtual nodes
|
|
1104
956
|
// only.
|
|
1105
|
-
viewState = new ViewState(reactTag
|
|
957
|
+
viewState = new ViewState(reactTag);
|
|
1106
958
|
mTagToViewState.put(reactTag, viewState);
|
|
1107
959
|
}
|
|
1108
960
|
EventEmitterWrapper previousEventEmitterWrapper = viewState.mEventEmitter;
|
|
@@ -1195,12 +1047,22 @@ public class SurfaceMountingManager {
|
|
|
1195
1047
|
return;
|
|
1196
1048
|
}
|
|
1197
1049
|
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1050
|
+
if (ReactNativeFeatureFlags.enableEventEmitterRetentionDuringGesturesOnAndroid()
|
|
1051
|
+
&& mViewsWithActiveTouches.contains(reactTag)) {
|
|
1052
|
+
// If the view that went offscreen is still being touched, we can't delete it yet.
|
|
1053
|
+
// We have to delay the deletion till the touch is completed.
|
|
1054
|
+
// This is causing bugs like those otherwise:
|
|
1055
|
+
// - https://github.com/facebook/react-native/issues/44610
|
|
1056
|
+
// - https://github.com/facebook/react-native/issues/45126
|
|
1057
|
+
mViewsToDeleteAfterTouchFinishes.add(reactTag);
|
|
1058
|
+
} else {
|
|
1059
|
+
// To delete we simply remove the tag from the registry.
|
|
1060
|
+
// We want to rely on the correct set of MountInstructions being sent to the platform,
|
|
1061
|
+
// or StopSurface being called, so we do not handle deleting descendants of the View.
|
|
1062
|
+
mTagToViewState.remove(reactTag);
|
|
1202
1063
|
|
|
1203
|
-
|
|
1064
|
+
onViewStateDeleted(viewState);
|
|
1065
|
+
}
|
|
1204
1066
|
}
|
|
1205
1067
|
|
|
1206
1068
|
@UiThread
|
|
@@ -1209,7 +1071,6 @@ public class SurfaceMountingManager {
|
|
|
1209
1071
|
int reactTag,
|
|
1210
1072
|
@Nullable ReadableMap props,
|
|
1211
1073
|
@Nullable StateWrapper stateWrapper,
|
|
1212
|
-
@Nullable EventEmitterWrapper eventEmitterWrapper,
|
|
1213
1074
|
boolean isLayoutable) {
|
|
1214
1075
|
UiThreadUtil.assertOnUiThread();
|
|
1215
1076
|
|
|
@@ -1222,8 +1083,7 @@ public class SurfaceMountingManager {
|
|
|
1222
1083
|
return;
|
|
1223
1084
|
}
|
|
1224
1085
|
|
|
1225
|
-
createViewUnsafe(
|
|
1226
|
-
componentName, reactTag, props, stateWrapper, eventEmitterWrapper, isLayoutable);
|
|
1086
|
+
createViewUnsafe(componentName, reactTag, props, stateWrapper, null, isLayoutable);
|
|
1227
1087
|
}
|
|
1228
1088
|
|
|
1229
1089
|
@AnyThread
|
|
@@ -1326,26 +1186,44 @@ public class SurfaceMountingManager {
|
|
|
1326
1186
|
});
|
|
1327
1187
|
}
|
|
1328
1188
|
|
|
1189
|
+
public void markActiveTouchForTag(int reactTag) {
|
|
1190
|
+
if (!ReactNativeFeatureFlags.enableEventEmitterRetentionDuringGesturesOnAndroid()) {
|
|
1191
|
+
return;
|
|
1192
|
+
}
|
|
1193
|
+
mViewsWithActiveTouches.add(reactTag);
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
public void sweepActiveTouchForTag(int reactTag) {
|
|
1197
|
+
if (!ReactNativeFeatureFlags.enableEventEmitterRetentionDuringGesturesOnAndroid()) {
|
|
1198
|
+
return;
|
|
1199
|
+
}
|
|
1200
|
+
mViewsWithActiveTouches.remove(reactTag);
|
|
1201
|
+
if (mViewsToDeleteAfterTouchFinishes.contains(reactTag)) {
|
|
1202
|
+
mViewsToDeleteAfterTouchFinishes.remove(reactTag);
|
|
1203
|
+
deleteView(reactTag);
|
|
1204
|
+
}
|
|
1205
|
+
}
|
|
1206
|
+
|
|
1329
1207
|
/**
|
|
1330
1208
|
* This class holds view state for react tags. Objects of this class are stored into the {@link
|
|
1331
1209
|
* #mTagToViewState}, and they should be updated in the same thread.
|
|
1332
1210
|
*/
|
|
1333
1211
|
private static class ViewState {
|
|
1334
|
-
@Nullable
|
|
1212
|
+
@Nullable View mView = null;
|
|
1335
1213
|
final int mReactTag;
|
|
1336
1214
|
final boolean mIsRoot;
|
|
1337
|
-
@Nullable
|
|
1338
|
-
@Nullable
|
|
1339
|
-
@Nullable
|
|
1340
|
-
@Nullable
|
|
1341
|
-
@Nullable
|
|
1215
|
+
@Nullable ViewManager mViewManager = null;
|
|
1216
|
+
@Nullable ReactStylesDiffMap mCurrentProps = null;
|
|
1217
|
+
@Nullable ReadableMap mCurrentLocalData = null;
|
|
1218
|
+
@Nullable StateWrapper mStateWrapper = null;
|
|
1219
|
+
@Nullable EventEmitterWrapper mEventEmitter = null;
|
|
1342
1220
|
|
|
1343
1221
|
@ThreadConfined(UI)
|
|
1344
1222
|
@Nullable
|
|
1345
|
-
|
|
1223
|
+
Queue<PendingViewEvent> mPendingEventQueue = null;
|
|
1346
1224
|
|
|
1347
|
-
private ViewState(int reactTag
|
|
1348
|
-
this(reactTag,
|
|
1225
|
+
private ViewState(int reactTag) {
|
|
1226
|
+
this(reactTag, null, null, false);
|
|
1349
1227
|
}
|
|
1350
1228
|
|
|
1351
1229
|
private ViewState(
|
|
@@ -1400,132 +1278,4 @@ public class SurfaceMountingManager {
|
|
|
1400
1278
|
}
|
|
1401
1279
|
}
|
|
1402
1280
|
}
|
|
1403
|
-
|
|
1404
|
-
private class RemoveDeleteTreeUIFrameCallback extends GuardedFrameCallback {
|
|
1405
|
-
private static final long FRAME_TIME_MS = 16;
|
|
1406
|
-
private static final long MAX_TIME_IN_FRAME = 9;
|
|
1407
|
-
|
|
1408
|
-
private RemoveDeleteTreeUIFrameCallback(@NonNull ReactContext reactContext) {
|
|
1409
|
-
super(reactContext);
|
|
1410
|
-
}
|
|
1411
|
-
|
|
1412
|
-
/**
|
|
1413
|
-
* Detect if we still have processing time left in this frame. Technically, it should be fine
|
|
1414
|
-
* for this to take up to 15ms since it executes after all other important UI work.
|
|
1415
|
-
*/
|
|
1416
|
-
private boolean haveExceededNonBatchedFrameTime(long frameTimeNanos) {
|
|
1417
|
-
long timeLeftInFrame = FRAME_TIME_MS - ((System.nanoTime() - frameTimeNanos) / 1000000);
|
|
1418
|
-
return timeLeftInFrame < MAX_TIME_IN_FRAME;
|
|
1419
|
-
}
|
|
1420
|
-
|
|
1421
|
-
@Override
|
|
1422
|
-
@UiThread
|
|
1423
|
-
@ThreadConfined(UI)
|
|
1424
|
-
public void doFrameGuarded(long frameTimeNanos) {
|
|
1425
|
-
int deletedViews = 0;
|
|
1426
|
-
Stack<Integer> localChildren = new Stack<>();
|
|
1427
|
-
try {
|
|
1428
|
-
while (!mReactTagsToRemove.empty()) {
|
|
1429
|
-
int reactTag = mReactTagsToRemove.pop();
|
|
1430
|
-
deletedViews++;
|
|
1431
|
-
|
|
1432
|
-
// This is "impossible". See comments above.
|
|
1433
|
-
if (mErroneouslyReaddedReactTags.contains(reactTag)) {
|
|
1434
|
-
ReactSoftExceptionLogger.logSoftException(
|
|
1435
|
-
TAG,
|
|
1436
|
-
new IllegalViewOperationException(
|
|
1437
|
-
"RemoveDeleteTree recursively tried to remove a React View that was actually"
|
|
1438
|
-
+ " reused. This indicates a bug in the Differ. ["
|
|
1439
|
-
+ reactTag
|
|
1440
|
-
+ "]"));
|
|
1441
|
-
continue;
|
|
1442
|
-
}
|
|
1443
|
-
|
|
1444
|
-
localChildren.clear();
|
|
1445
|
-
|
|
1446
|
-
ViewState thisViewState = getNullableViewState(reactTag);
|
|
1447
|
-
if (thisViewState != null) {
|
|
1448
|
-
View thisView = thisViewState.mView;
|
|
1449
|
-
ViewManager thisViewManager = thisViewState.mViewManager;
|
|
1450
|
-
if (thisViewManager instanceof IViewGroupManager) {
|
|
1451
|
-
IViewGroupManager viewManager = (IViewGroupManager) thisViewManager;
|
|
1452
|
-
|
|
1453
|
-
// Children are managed by React Native if both of the following are true:
|
|
1454
|
-
// 1) There are 1 or more children of this View, which must be a ViewGroup
|
|
1455
|
-
// 2) Those children are managed by RN (this is not the case for certain native
|
|
1456
|
-
// components, like embedded Litho hierarchies)
|
|
1457
|
-
boolean childrenAreManaged = false;
|
|
1458
|
-
|
|
1459
|
-
// For reasons documented elsewhere in this class, getChildCount is not
|
|
1460
|
-
// necessarily reliable, and so we rely instead on requesting children directly.
|
|
1461
|
-
View nextChild = null;
|
|
1462
|
-
int numChildren = 0;
|
|
1463
|
-
while ((nextChild = viewManager.getChildAt(thisView, numChildren)) != null) {
|
|
1464
|
-
int childId = nextChild.getId();
|
|
1465
|
-
childrenAreManaged = childrenAreManaged || getNullableViewState(childId) != null;
|
|
1466
|
-
localChildren.push(nextChild.getId());
|
|
1467
|
-
numChildren++;
|
|
1468
|
-
}
|
|
1469
|
-
// Removing all at once is more efficient than removing one-by-one
|
|
1470
|
-
// If the children are not managed by RN, we simply drop the entire
|
|
1471
|
-
// subtree instead of recursing further.
|
|
1472
|
-
if (childrenAreManaged) {
|
|
1473
|
-
try {
|
|
1474
|
-
// This can happen if the removeAllViews method is overridden to throw,
|
|
1475
|
-
// which it is explicitly in some cases (for example embedded Litho views,
|
|
1476
|
-
// but there could be other cases). In those cases, we want to fail silently
|
|
1477
|
-
// and then assume the subtree is /not/ managed by React Native.
|
|
1478
|
-
// In this case short-lived memory-leaks could occur if we aren't clearing
|
|
1479
|
-
// out the ViewState map properly; but the risk should be small.
|
|
1480
|
-
// In debug mode, the SoftException will cause a crash. In production it
|
|
1481
|
-
// will not. This should give good visibility into whether or not this is
|
|
1482
|
-
// a problem without causing user-facing errors.
|
|
1483
|
-
viewManager.removeAllViews(thisView);
|
|
1484
|
-
} catch (RuntimeException e) {
|
|
1485
|
-
childrenAreManaged = false;
|
|
1486
|
-
ReactSoftExceptionLogger.logSoftException(TAG, e);
|
|
1487
|
-
}
|
|
1488
|
-
}
|
|
1489
|
-
|
|
1490
|
-
if (childrenAreManaged) {
|
|
1491
|
-
// Push tags onto the stack so we process all children
|
|
1492
|
-
mReactTagsToRemove.addAll(localChildren);
|
|
1493
|
-
}
|
|
1494
|
-
}
|
|
1495
|
-
|
|
1496
|
-
// Immediately remove tag and notify listeners.
|
|
1497
|
-
// Note that this causes RemoveDeleteTree to call onViewStateDeleted
|
|
1498
|
-
// in a top-down matter (parents first) vs a bottom-up matter (leaf nodes first).
|
|
1499
|
-
// Hopefully this doesn't matter but you should ensure that any custom
|
|
1500
|
-
// onViewStateDeleted logic is resilient to both semantics.
|
|
1501
|
-
// In the initial version of RemoveDeleteTree we attempted to maintain
|
|
1502
|
-
// the bottom-up event listener behavior but this causes additional
|
|
1503
|
-
// memory pressure as well as complexity.
|
|
1504
|
-
mTagToViewState.remove(reactTag);
|
|
1505
|
-
onViewStateDeleted(thisViewState);
|
|
1506
|
-
|
|
1507
|
-
// Circuit breaker: after processing every N tags, check that we haven't
|
|
1508
|
-
// exceeded the max allowed time. Since we don't know what other work needs
|
|
1509
|
-
// to happen on the UI thread during this frame, and since this works tends to be
|
|
1510
|
-
// low-priority, we only give this function a fraction of a frame to run.
|
|
1511
|
-
if (deletedViews % 20 == 0 && haveExceededNonBatchedFrameTime(frameTimeNanos)) {
|
|
1512
|
-
break;
|
|
1513
|
-
}
|
|
1514
|
-
}
|
|
1515
|
-
}
|
|
1516
|
-
} finally {
|
|
1517
|
-
if (!mReactTagsToRemove.empty()) {
|
|
1518
|
-
ReactChoreographer.getInstance()
|
|
1519
|
-
.postFrameCallback(ReactChoreographer.CallbackType.IDLE_EVENT, this);
|
|
1520
|
-
} else {
|
|
1521
|
-
// If there are no more tags to process, then clear the "reused"
|
|
1522
|
-
// tag set. Since the RemoveDeleteTree runner executes /after/ all
|
|
1523
|
-
// other mounting instructions have been executed, all in-band Remove
|
|
1524
|
-
// instructions have already had a chance to execute here.
|
|
1525
|
-
mErroneouslyReaddedReactTags.clear();
|
|
1526
|
-
mReactTagsToRemove.clear();
|
|
1527
|
-
}
|
|
1528
|
-
}
|
|
1529
|
-
}
|
|
1530
|
-
}
|
|
1531
1281
|
}
|