react-native-tvos 0.85.3-1 → 0.86.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/Animated/AnimatedImplementation.js +6 -6
- package/Libraries/Animated/NativeAnimatedAllowlist.js +21 -0
- package/Libraries/Animated/components/AnimatedImage.js +3 -3
- package/Libraries/Animated/components/AnimatedText.js +3 -3
- package/Libraries/Animated/createAnimatedComponent.js +7 -7
- package/Libraries/Animated/nodes/AnimatedAddition.js +1 -1
- package/Libraries/Animated/nodes/AnimatedColor.js +7 -7
- package/Libraries/Animated/nodes/AnimatedDiffClamp.js +1 -1
- package/Libraries/Animated/nodes/AnimatedDivision.js +1 -1
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +22 -24
- package/Libraries/Animated/nodes/AnimatedModulo.js +1 -1
- package/Libraries/Animated/nodes/AnimatedMultiplication.js +1 -1
- package/Libraries/Animated/nodes/AnimatedStyle.js +2 -2
- package/Libraries/Animated/nodes/AnimatedSubtraction.js +1 -1
- package/Libraries/Animated/nodes/AnimatedTracking.js +1 -1
- package/Libraries/Animated/nodes/AnimatedValue.js +2 -2
- package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +4 -0
- package/Libraries/AppDelegate/RCTRootViewFactory.h +5 -5
- package/Libraries/AppDelegate/RCTRootViewFactory.mm +2 -2
- package/Libraries/AppState/AppState.js +1 -1
- package/Libraries/BatchedBridge/NativeModules.js +1 -1
- package/Libraries/Blob/RCTBlobCollector.h +1 -1
- package/Libraries/Blob/RCTBlobCollector.mm +14 -26
- package/Libraries/Blob/RCTBlobManager.mm +11 -3
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +29 -23
- package/Libraries/Components/Keyboard/Keyboard.js +4 -2
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
- package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -27
- package/Libraries/Components/Pressable/Pressable.d.ts +1 -0
- package/Libraries/Components/Pressable/Pressable.js +2 -2
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +7 -8
- package/Libraries/Components/ScrollView/ScrollView.js +3 -3
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +2 -2
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +2 -2
- package/Libraries/Components/Switch/Switch.js +1 -1
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +25 -1
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +1 -1
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +2 -2
- package/Libraries/Components/TextInput/TextInput.d.ts +24 -0
- package/Libraries/Components/TextInput/TextInput.flow.js +24 -0
- package/Libraries/Components/TextInput/TextInput.js +5 -5
- package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +5 -5
- package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +5 -5
- package/Libraries/Components/Touchable/PooledClass.js +4 -4
- package/Libraries/Components/Touchable/Touchable.js +1 -1
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -10
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +10 -2
- package/Libraries/Components/View/View.js +100 -95
- package/Libraries/Components/View/ViewPropTypes.js +3 -1
- package/Libraries/Core/Devtools/loadBundleFromServer.js +8 -0
- package/Libraries/Core/ExceptionsManager.js +2 -8
- package/Libraries/Core/InitializeCore.js +0 -13
- package/Libraries/Core/ReactFiberErrorDialog.js +3 -3
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/ReactNativeVersionCheck.js +1 -1
- package/Libraries/Core/Timers/JSTimers.js +2 -2
- package/Libraries/Core/Timers/immediateShim.js +1 -1
- package/Libraries/Core/setUpBatchedBridge.js +1 -1
- package/Libraries/Core/setUpSegmentFetcher.js +1 -1
- package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
- package/Libraries/EventEmitter/NativeEventEmitter.js +9 -5
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -2
- package/Libraries/Image/Image.android.js +15 -35
- package/Libraries/Image/RCTImageLoader.mm +4 -2
- package/Libraries/Image/RelativeImageStub.js +2 -2
- package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -12
- package/Libraries/Linking/Linking.js +1 -1
- package/Libraries/Lists/FlatList.js +1 -1
- package/Libraries/LogBox/LogBox.js +2 -2
- package/Libraries/LogBox/LogBoxInspectorContainer.js +24 -2
- package/Libraries/LogBox/LogBoxNotificationContainer.js +27 -4
- package/Libraries/LogBox/UI/LogBoxButton.js +47 -33
- package/Libraries/LogBox/UI/LogBoxInspector.js +61 -1
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -0
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +3 -1
- package/Libraries/LogBox/UI/LogBoxNotification.js +2 -0
- package/Libraries/Modal/Modal.js +12 -7
- package/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.mm +0 -2
- package/Libraries/NativeComponent/BaseViewConfig.android.js +15 -0
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +17 -0
- package/Libraries/NativeComponent/NativeComponentRegistry.js +2 -2
- package/Libraries/NativeComponent/ViewConfigIgnore.js +4 -2
- package/Libraries/Network/RCTNetworking.android.js +1 -1
- package/Libraries/Network/RCTNetworking.ios.js +1 -1
- package/Libraries/Network/RCTNetworking.js.flow +1 -1
- package/Libraries/Network/RCTNetworking.mm +1 -2
- package/Libraries/Network/XMLHttpRequest.js +29 -12
- package/Libraries/Pressability/Pressability.js +2 -2
- package/Libraries/ReactNative/AppContainer-dev.js +2 -3
- package/Libraries/ReactNative/AppContainer-prod.js +1 -2
- package/Libraries/ReactNative/AppContainer.js +0 -1
- package/Libraries/ReactNative/AppRegistry.d.ts +1 -1
- package/Libraries/ReactNative/AppRegistry.flow.js +1 -2
- package/Libraries/ReactNative/AppRegistryImpl.js +16 -16
- package/Libraries/ReactNative/DeprecatedPerformanceLoggerStub.js +83 -0
- package/Libraries/ReactNative/FabricUIManager.js +6 -0
- package/Libraries/{Utilities → ReactNative}/IPerformanceLogger.d.ts +8 -5
- package/Libraries/{Utilities/IPerformanceLogger.js → ReactNative/IPerformanceLogger.flow.js} +12 -9
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +14 -14
- package/Libraries/ReactNative/RendererImplementation.js +26 -143
- package/Libraries/ReactNative/RendererProxy.js +4 -15
- package/Libraries/ReactNative/renderApplication.js +33 -59
- package/Libraries/ReactNative/requireNativeComponent.js +3 -3
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +5 -0
- package/Libraries/Renderer/shims/ReactNativeTypes.js +2 -32
- package/Libraries/Settings/Settings.ios.js +1 -1
- package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +2 -2
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +3 -3
- package/Libraries/StyleSheet/StyleSheet.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.js.flow +2 -2
- package/Libraries/StyleSheet/StyleSheetExports.js +1 -1
- package/Libraries/StyleSheet/StyleSheetExports.js.flow +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +6 -8
- package/Libraries/StyleSheet/StyleSheetTypes.js +11 -11
- package/Libraries/StyleSheet/flattenStyle.js +1 -1
- package/Libraries/StyleSheet/private/_TransformStyle.js +1 -1
- package/Libraries/StyleSheet/processBackgroundImage.js +19 -9
- package/Libraries/StyleSheet/processBackgroundSize.js +7 -12
- package/Libraries/StyleSheet/processBoxShadow.js +9 -47
- package/Libraries/StyleSheet/processFilter.js +16 -8
- package/Libraries/StyleSheet/processTransformOrigin.js +10 -3
- package/Libraries/Text/Text.js +4 -4
- package/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm +16 -2
- package/Libraries/Text/TextNativeComponent.js +4 -4
- package/Libraries/TurboModule/RCTExport.js +1 -1
- package/Libraries/TurboModule/TurboModuleRegistry.js +3 -3
- package/Libraries/Types/CodegenTypes.js +7 -4
- package/Libraries/Types/ReactDevToolsTypes.js +1 -1
- package/Libraries/Utilities/BackHandler.android.js +11 -3
- package/Libraries/Utilities/BackHandler.d.ts +11 -1
- package/Libraries/Utilities/BackHandler.ios.js +3 -1
- package/Libraries/Utilities/BackHandler.js.flow +6 -1
- package/Libraries/Utilities/HardwareBackPressEvent.js +22 -0
- package/Libraries/Utilities/ReactNativeTestTools.js +4 -4
- package/Libraries/Utilities/binaryToBase64.js +1 -1
- package/Libraries/Utilities/codegenNativeCommands.js +2 -2
- package/Libraries/Utilities/codegenNativeComponent.js +4 -4
- package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +2 -2
- package/Libraries/Utilities/stringifySafe.js +1 -1
- package/Libraries/promiseRejectionTrackingOptions.js +1 -1
- package/Libraries/vendor/core/ErrorUtils.js +4 -4
- package/Libraries/vendor/emitter/EventEmitter.js +27 -13
- package/React/Base/RCTBundleURLProvider.h +19 -1
- package/React/Base/RCTBundleURLProvider.mm +82 -0
- package/React/Base/RCTDefines.h +1 -1
- package/React/Base/RCTMultipartDataTask.h +1 -1
- package/React/Base/RCTMultipartDataTask.m +0 -3
- package/React/Base/RCTRootView.h +4 -0
- package/React/Base/RCTRootViewDelegate.h +5 -2
- package/React/Base/RCTVersion.m +3 -3
- package/React/Base/Surface/RCTSurface.h +3 -0
- package/React/Base/Surface/RCTSurfaceDelegate.h +7 -3
- package/React/Base/Surface/RCTSurfaceRootView.mm +1 -1
- package/React/Base/Surface/RCTSurfaceView.mm +2 -1
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +2 -0
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.h +0 -3
- package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm +3 -1
- package/React/CoreModules/RCTDevMenuConfigurationDecorator.h +2 -2
- package/React/CoreModules/RCTRedBox2AnsiParser.mm +1 -1
- package/React/CoreModules/RCTWebSocketModule.mm +45 -6
- package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +0 -1
- package/React/DevSupport/RCTInspectorDevServerHelper.mm +4 -0
- package/React/DevSupport/RCTPackagerConnection.mm +13 -11
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +108 -43
- package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.h +1 -0
- package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.mm +1 -0
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.h +1 -1
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +2 -2
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +70 -8
- package/React/Fabric/RCTConversions.h +14 -0
- package/React/Fabric/RCTScheduler.mm +18 -0
- package/React/Fabric/RCTSurfacePointerHandler.mm +8 -2
- package/React/Fabric/RCTSurfaceTouchHandler.mm +1 -0
- package/React/Fabric/Surface/RCTFabricSurface.mm +3 -0
- package/React/I18n/strings/pt.lproj/fbt_language_pack.bin +0 -0
- package/React/Modules/RCTUIManager.mm +1 -1
- package/React/Profiler/RCTProfile.h +5 -0
- package/React/Profiler/RCTProfile.m +2 -1
- package/React/Profiler/RCTProfileTrampoline-arm.S +1 -1
- package/React/Profiler/RCTProfileTrampoline-arm64.S +1 -1
- package/React/Profiler/RCTProfileTrampoline-i386.S +1 -1
- package/React/Profiler/RCTProfileTrampoline-x86_64.S +1 -1
- package/React/Tests/Mounting/RCTViewComponentViewTests.mm +186 -0
- package/React/Tests/Text/RCTAttributedTextUtilsTest.mm +5 -5
- package/React/Views/RCTLayout.m +4 -3
- package/React/Views/ScrollView/RCTScrollView.h +6 -2
- package/ReactAndroid/api/ReactAndroid.api +37 -27
- package/ReactAndroid/build.gradle.kts +28 -21
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/HermesSamplingProfiler.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +1 -3
- package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +40 -110
- package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +32 -87
- package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.kt +9 -99
- package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.kt +7 -28
- package/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.kt +2 -19
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.kt +15 -23
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +36 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJNISoLoader.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJniCommonSoLoader.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultSoLoader.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/FpsView.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialogSurfaceDelegate.kt +15 -2
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxDialogSurfaceDelegate.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/DevSupportHttpClient.kt +9 -34
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingsObserver.kt +9 -10
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkRequestListener.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt +10 -10
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/AnimationBackendChoreographer.kt +15 -13
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.kt +4 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +139 -43
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/ViewTransitionSnapshotManager.kt +223 -0
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.kt +25 -8
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +34 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.kt +104 -65
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.kt +9 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt +172 -36
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/interfaces/ExtraWindowEventListener.kt +29 -0
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +41 -29
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +71 -51
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +15 -11
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +16 -12
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +79 -57
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +1 -4
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +15 -11
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlagsDefaults.kt +5 -9
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/rewrite_feature_flag_defaults.py +76 -0
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/tests/test_rewrite_feature_flag_defaults.py +63 -0
- package/ReactAndroid/src/main/java/com/facebook/react/internal/tracing/PerformanceTracer.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt +10 -5
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.kt +1 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/ClipboardModule.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/DeviceEventManagerModule.kt +2 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.kt +21 -20
- package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.kt +63 -3
- package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.kt +59 -62
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +8 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.kt +45 -36
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +5 -2
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +18 -5
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImplDevHelper.kt +8 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.kt +21 -19
- package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/soloader/OpenSourceMergedSoMapping.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +77 -72
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +7 -16
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FilterHelper.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +25 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactRootViewTagGenerator.kt +3 -2
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewUtil.kt +17 -7
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.kt +18 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.kt +20 -12
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +18 -24
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIConstantsProviderBinding.kt +2 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.kt +11 -71
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +10 -17
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/ViewUtil.kt +29 -30
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundImageDrawable.kt +5 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/InsetBoxShadowDrawable.kt +12 -13
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.kt +30 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/SynchronousEventReceiver.kt +28 -0
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.kt +9 -9
- package/ReactAndroid/src/main/java/com/facebook/react/util/AndroidVersion.kt +27 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +4 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt +1 -14
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerViewManager.kt +1 -22
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +18 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.java +20 -21
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +19 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +14 -5
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/FontMetricsUtil.kt +2 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +5 -162
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +71 -97
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomStyleSpan.kt +1 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/DrawCommandSpan.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +7 -13
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +40 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.kt +59 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +84 -20
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +41 -65
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/WindowUtil.kt +85 -13
- package/ReactAndroid/src/main/java/com/facebook/soloader/annotation/SoLoaderLibrary.kt +17 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaAlign.java +5 -1
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.kt +30 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDisplay.java +3 -1
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.java +3 -1
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGridTrackType.java +39 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaJustify.java +20 -12
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +101 -0
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.kt +33 -0
- package/ReactAndroid/src/main/jni/CMakeLists.txt +10 -1
- package/ReactAndroid/src/main/jni/react/fabric/ComponentFactory.cpp +0 -1
- package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +0 -2
- package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.cpp +26 -6
- package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.h +3 -3
- package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +47 -0
- package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +20 -6
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +24 -1
- package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +6 -0
- package/ReactAndroid/src/main/jni/react/fabric/FocusOrderingHelper.cpp +0 -1
- package/ReactAndroid/src/main/jni/react/fabric/SurfaceHandlerBinding.cpp +1 -0
- package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.cpp +85 -0
- package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.h +46 -0
- package/ReactAndroid/src/main/jni/react/fabric/test_helper/OnLoad.cpp +16 -0
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +97 -69
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +21 -15
- package/ReactAndroid/src/main/jni/react/hermes/instrumentation/HermesSamplingProfiler.cpp +1 -1
- package/ReactAndroid/src/main/jni/react/jni/OnLoad-common.cpp +0 -2
- package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +2 -1
- package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.cpp +37 -30
- package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.h +11 -8
- package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +2 -1
- package/ReactAndroid/src/main/jni/react/reactnativeblob/OnLoad.cpp +1 -1
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +10 -0
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +7 -0
- package/ReactAndroid/src/main/jni/react/tracing/CMakeLists.txt +28 -0
- package/ReactCommon/React-Fabric.podspec +7 -0
- package/ReactCommon/React-FabricComponents.podspec +1 -1
- package/ReactCommon/cxxreact/ReactNativeVersion.h +5 -5
- package/ReactCommon/jsc/JSCRuntime.cpp +9 -0
- package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +1 -0
- package/ReactCommon/jserrorhandler/JsErrorHandler.h +1 -1
- package/ReactCommon/jsi/jsi/JSIDynamic.cpp +1 -0
- package/ReactCommon/jsi/jsi/decorator.h +93 -0
- package/ReactCommon/jsi/jsi/jsi-inl.h +97 -68
- package/ReactCommon/jsi/jsi/jsi.cpp +208 -27
- package/ReactCommon/jsi/jsi/jsi.h +553 -224
- package/ReactCommon/jsi/jsi/test/testlib.cpp +453 -0
- package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +1 -1
- package/ReactCommon/jsinspector-modern/EmulationAgent.cpp +108 -0
- package/ReactCommon/jsinspector-modern/EmulationAgent.h +47 -0
- package/ReactCommon/jsinspector-modern/HostAgent.cpp +10 -1
- package/ReactCommon/jsinspector-modern/HostTarget.h +25 -0
- package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +6 -2
- package/ReactCommon/jsinspector-modern/InspectorFlags.h +5 -2
- package/ReactCommon/jsinspector-modern/InspectorPackagerConnection.cpp +19 -2
- package/ReactCommon/jsinspector-modern/InspectorPackagerConnectionImpl.h +3 -0
- package/ReactCommon/jsinspector-modern/TracingAgent.cpp +10 -0
- package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +0 -1
- package/ReactCommon/logger/react_native_log.cpp +0 -1
- package/ReactCommon/react/bridging/Array.h +1 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +29 -21
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +35 -25
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +168 -132
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +18 -14
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +28 -20
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +61 -43
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +3 -3
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +9 -7
- package/ReactCommon/react/featureflags/rewrite_feature_flag_defaults.py +111 -0
- package/ReactCommon/react/featureflags/tests/test_rewrite_feature_flag_defaults.py +60 -0
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +3 -9
- package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +0 -1
- package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +1 -0
- package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +7 -0
- package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +1 -0
- package/ReactCommon/react/nativemodule/fantomtestspecificmethods/NativeFantomTestSpecificMethods.cpp +2 -2
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +35 -25
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +15 -11
- package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +3 -2
- package/ReactCommon/react/nativemodule/viewtransition/CMakeLists.txt +24 -0
- package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.cpp +92 -0
- package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.h +37 -0
- package/ReactCommon/react/nativemodule/viewtransition/React-viewtransitionnativemodule.podspec +58 -0
- package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +10 -1
- package/ReactCommon/react/networking/NetworkReporter.h +0 -1
- package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.h +0 -1
- package/ReactCommon/react/performance/timeline/PerformanceEntry.h +1 -1
- package/ReactCommon/react/performance/timeline/tests/PerformanceEntryTest.cpp +62 -0
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +24 -12
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +1 -1
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +3 -0
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +10 -3
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +1 -0
- package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +4 -0
- package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +1 -1
- package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.h +0 -1
- package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +8 -3
- package/ReactCommon/react/renderer/animations/tests/MutationComparatorTest.cpp +273 -0
- package/ReactCommon/react/renderer/animations/utils.h +12 -1
- package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +1 -1
- package/ReactCommon/react/renderer/attributedstring/conversions.h +104 -3
- package/ReactCommon/react/renderer/components/image/conversions.h +2 -3
- package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +0 -1
- package/ReactCommon/react/renderer/components/scrollview/conversions.h +0 -1
- package/ReactCommon/react/renderer/components/text/stateConversions.h +0 -1
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +531 -21
- package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +9 -0
- package/ReactCommon/react/renderer/components/view/BaseTouch.cpp +3 -2
- package/ReactCommon/react/renderer/components/view/BaseTouch.h +7 -0
- package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +8 -0
- package/ReactCommon/react/renderer/components/view/PointerEvent.cpp +2 -0
- package/ReactCommon/react/renderer/components/view/PointerEvent.h +5 -0
- package/ReactCommon/react/renderer/components/view/TouchEvent.h +0 -2
- package/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +23 -5
- package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +1 -0
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +5 -0
- package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +33 -28
- package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +0 -1
- package/ReactCommon/react/renderer/components/view/conversions.h +44 -28
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +53 -5
- package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/NativeDrawable.h +47 -16
- package/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +2 -2
- package/ReactCommon/react/renderer/{graphics/DoubleConversions.h → components/view/platform/tvos/react/renderer/components/view/HostPlatformTouch.h} +2 -4
- package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewEventEmitter.h +14 -0
- package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.cpp +38 -0
- package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.h +29 -0
- package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +30 -0
- package/ReactCommon/react/renderer/components/view/propsConversions.h +8 -2
- package/ReactCommon/react/renderer/components/view/tests/ConversionsTest.cpp +86 -0
- package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +34 -0
- package/ReactCommon/react/renderer/core/EventEmitter.cpp +67 -2
- package/ReactCommon/react/renderer/core/EventEmitter.h +25 -0
- package/ReactCommon/react/renderer/core/EventPipe.h +3 -1
- package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +18 -10
- package/ReactCommon/react/renderer/core/EventTarget.cpp +8 -5
- package/ReactCommon/react/renderer/core/LayoutContext.h +9 -2
- package/ReactCommon/react/renderer/core/LayoutMetrics.cpp +5 -3
- package/ReactCommon/react/renderer/core/LayoutPrimitives.h +1 -0
- package/ReactCommon/react/renderer/core/Props.cpp +20 -0
- package/ReactCommon/react/renderer/core/RawEvent.cpp +4 -2
- package/ReactCommon/react/renderer/core/RawEvent.h +6 -6
- package/ReactCommon/react/renderer/core/ShadowNode.h +2 -2
- package/ReactCommon/react/renderer/core/conversions.h +4 -0
- package/ReactCommon/react/renderer/core/graphicsConversions.h +4 -4
- package/ReactCommon/react/renderer/core/propsConversions.h +1 -1
- package/ReactCommon/react/renderer/core/tests/EventQueueProcessorTest.cpp +52 -3
- package/ReactCommon/react/renderer/core/tests/EventTargetTests.cpp +26 -0
- package/ReactCommon/react/renderer/css/tests/CSSValueParserTest.cpp +1 -1
- package/ReactCommon/react/renderer/debug/DebugStringConvertible.cpp +42 -26
- package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +4 -2
- package/ReactCommon/react/renderer/debug/tests/DebugStringConvertibleTest.cpp +34 -3
- package/ReactCommon/react/renderer/graphics/BlendMode.h +5 -0
- package/ReactCommon/react/renderer/graphics/CMakeLists.txt +1 -0
- package/ReactCommon/react/renderer/graphics/ColorStop.h +3 -0
- package/ReactCommon/react/renderer/graphics/LinearGradient.h +3 -0
- package/ReactCommon/react/renderer/graphics/RadialGradient.h +4 -0
- package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -0
- package/ReactCommon/react/renderer/graphics/ValueUnit.cpp +1 -1
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +0 -5
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +2 -2
- package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h +0 -4
- package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +5 -1
- package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +12 -4
- package/ReactCommon/react/renderer/mounting/CMakeLists.txt +1 -0
- package/ReactCommon/react/renderer/mounting/Differentiator.cpp +307 -4
- package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +27 -2
- package/ReactCommon/react/renderer/mounting/internal/LongestIncreasingSubsequence.h +95 -0
- package/ReactCommon/react/renderer/mounting/tests/DifferentiatorUnflattenTest.cpp +212 -0
- package/ReactCommon/react/renderer/mounting/tests/LongestIncreasingSubsequenceTest.cpp +154 -0
- package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +314 -18
- package/ReactCommon/react/renderer/mounting/updateMountedFlag.cpp +38 -20
- package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +20 -22
- package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +1 -0
- package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +76 -3
- package/ReactCommon/react/renderer/scheduler/Scheduler.h +12 -0
- package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +5 -0
- package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +0 -7
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +2 -1
- package/ReactCommon/react/renderer/uimanager/UIManager.cpp +16 -1
- package/ReactCommon/react/renderer/uimanager/UIManager.h +8 -0
- package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +1 -0
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +347 -5
- package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +5 -3
- package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +5 -0
- package/ReactCommon/react/renderer/uimanager/UIManagerViewTransitionDelegate.h +82 -0
- package/ReactCommon/react/renderer/viewtransition/CMakeLists.txt +22 -0
- package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp +520 -0
- package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.h +161 -0
- package/ReactCommon/react/runtime/TimerManager.cpp +4 -2
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +37 -0
- package/ReactCommon/react/timing/PrivacyInfo.xcprivacy +21 -0
- package/ReactCommon/react/timing/React-timing.podspec +2 -0
- package/ReactCommon/react/timing/primitives.h +33 -1
- package/ReactCommon/yoga/yoga/YGEnums.cpp +32 -0
- package/ReactCommon/yoga/yoga/YGEnums.h +20 -4
- package/ReactCommon/yoga/yoga/YGMacros.h +2 -0
- package/ReactCommon/yoga/yoga/YGNode.h +1 -1
- package/ReactCommon/yoga/yoga/YGNodeStyle.cpp +269 -0
- package/ReactCommon/yoga/yoga/YGNodeStyle.h +93 -1
- package/ReactCommon/yoga/yoga/algorithm/AbsoluteLayout.cpp +40 -9
- package/ReactCommon/yoga/yoga/algorithm/Align.h +12 -1
- package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +106 -14
- package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.h +22 -0
- package/ReactCommon/yoga/yoga/enums/Align.h +3 -1
- package/ReactCommon/yoga/yoga/enums/Display.h +2 -1
- package/ReactCommon/yoga/yoga/enums/ExperimentalFeature.h +2 -1
- package/ReactCommon/yoga/yoga/enums/GridTrackType.h +43 -0
- package/ReactCommon/yoga/yoga/enums/Justify.h +5 -1
- package/ReactCommon/yoga/yoga/event/event.cpp +2 -0
- package/ReactCommon/yoga/yoga/event/event.h +1 -0
- package/ReactCommon/yoga/yoga/node/Node.cpp +6 -1
- package/ReactCommon/yoga/yoga/node/Node.h +4 -4
- package/ReactCommon/yoga/yoga/style/GridLine.h +53 -0
- package/ReactCommon/yoga/yoga/style/GridTrack.h +63 -0
- package/ReactCommon/yoga/yoga/style/Style.h +261 -71
- package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +7 -1
- package/ReactCommon/yoga/yoga/style/StyleValueHandle.h +8 -0
- package/ReactCommon/yoga/yoga/style/StyleValuePool.h +10 -0
- package/cli.js +1 -1
- package/flow/HermesInternalType.js +1 -1
- package/flow/bom.js.flow +95 -3
- package/flow/dom.js.flow +89 -89
- package/gradle/libs.versions.toml +3 -1
- package/index.js +30 -3
- package/index.js.flow +23 -1
- package/package.json +11 -11
- package/react-native.config.js +3 -3
- package/scripts/cocoapods/rncore.rb +65 -11
- package/scripts/cocoapods/rndependencies.rb +65 -11
- package/scripts/cocoapods/utils.rb +52 -0
- package/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js +1 -1
- package/scripts/codegen/generate-artifacts-executor/generateNativeCode.js +13 -4
- package/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js +1 -1
- package/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +1 -1
- package/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js +17 -6
- package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +1 -1
- package/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js +1 -1
- package/scripts/codegen/generate-artifacts-executor/index.js +2 -0
- package/scripts/codegen/generate-artifacts-executor/utils.js +1 -1
- package/scripts/codegen/generate-specs-cli-executor.js +1 -1
- package/scripts/generate-codegen-artifacts.js +20 -2
- package/scripts/generate-provider-cli.js +1 -1
- package/scripts/react_native_pods.rb +25 -2
- package/scripts/react_native_pods_utils/script_phases.rb +9 -3
- package/scripts/replace-rncore-version.js +20 -0
- package/scripts/xcode/with-environment.sh +7 -1
- package/sdks/.hermesv1version +1 -1
- package/sdks/.hermesversion +1 -1
- package/sdks/hermes-engine/hermes-utils.rb +92 -5
- package/sdks/hermes-engine/version.properties +2 -2
- package/src/private/animated/NativeAnimatedValidation.js +1 -1
- package/src/private/animated/createAnimatedPropsHook.js +2 -2
- package/src/private/components/virtualcollection/FlingConstants.js +21 -0
- package/src/private/components/virtualcollection/Virtual.js +62 -0
- package/src/private/components/virtualcollection/VirtualCollectionView.js +238 -0
- package/src/private/components/virtualcollection/column/VirtualColumn.js +43 -0
- package/src/private/components/virtualcollection/column/VirtualColumnGenerator.js +72 -0
- package/src/private/components/virtualcollection/debug/FlingItemOverlay.js +13 -0
- package/src/private/components/virtualcollection/dom/getScrollParent.js +43 -0
- package/src/private/components/virtualcollection/dom/isScrollableNode.js +22 -0
- package/src/private/components/virtualcollection/row/VirtualRow.js +43 -0
- package/src/private/components/virtualcollection/row/VirtualRowGenerator.js +72 -0
- package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +2 -2
- package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +1 -1
- package/src/private/devsupport/devmenu/specs/NativeDevMenu.js +1 -1
- package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
- package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsSettingsManager.js +2 -2
- package/src/private/featureflags/ReactNativeFeatureFlags.js +41 -37
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +3 -3
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +9 -7
- package/src/private/renderer/errorhandling/ErrorHandlers.js +3 -3
- package/src/private/renderer/events/LegacySyntheticEvent.js +90 -0
- package/src/private/renderer/events/ReactNativeEventTypeMapping.js +103 -0
- package/src/private/renderer/events/ReactNativeResponder.js +687 -0
- package/src/private/renderer/events/ResponderEvent.js +40 -0
- package/src/private/renderer/events/ResponderTouchHistoryStore.js +258 -0
- package/src/private/renderer/events/dispatchNativeEvent.js +83 -0
- package/src/private/setup/setUpDOM.js +20 -0
- package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeActionSheetManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAlertManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAppState.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeAppearance.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeBlobModule.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeClipboard.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeDevSettings.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeDeviceEventManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeFileReaderModule.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeI18nManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeImageEditor.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeImageStoreAndroid.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeImageStoreIOS.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeIntentAndroid.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeJSCHeapCapture.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeKeyboardObserver.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeLinkingManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeLogBox.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeModalManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsIOS.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeRedBox.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeSegmentFetcher.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeSettingsManager.js +2 -2
- package/src/private/specs_DEPRECATED/modules/NativeShareModule.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeSoundManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeTiming.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeToastAndroid.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeVibration.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeWebSocketModule.js +2 -2
- package/src/private/styles/composeStyles.js +1 -1
- package/src/private/types/HostComponent.js +1 -1
- package/src/private/utilities/toExtendedError.js +1 -1
- package/src/private/viewtransition/specs/NativeViewTransition.js +33 -0
- package/src/private/webapis/dom/events/Event.js +10 -1
- package/src/private/webapis/dom/events/EventTarget.js +60 -18
- package/src/private/webapis/dom/events/internals/EventInternals.js +18 -1
- package/src/private/webapis/dom/events/internals/EventTargetInternals.js +12 -0
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +24 -0
- package/src/private/webapis/dom/nodes/ReadOnlyElement.js +4 -6
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +70 -1
- package/src/private/webapis/dom/nodes/internals/NodeInternals.js +10 -0
- package/src/private/webapis/dom/nodes/specs/NativeDOM.js +1 -1
- package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +2 -2
- package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +5 -9
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +2 -2
- package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +2 -2
- package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +2 -2
- package/src/private/webapis/performance/internals/RawPerformanceEntry.js +1 -1
- package/src/private/webapis/performance/specs/NativePerformance.js +1 -1
- package/src/private/webapis/structuredClone/structuredClone.js +1 -1
- package/src/private/webapis/webidl/PlatformObjects.js +4 -4
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +0 -19669
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +0 -11129
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +0 -12930
- package/Libraries/Renderer/shims/ReactNative.js +0 -27
- package/Libraries/Utilities/GlobalPerformanceLogger.js +0 -24
- package/Libraries/Utilities/PerformanceLoggerContext.js +0 -33
- package/Libraries/Utilities/createPerformanceLogger.js +0 -329
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.kt +0 -442
- package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobCollector.kt +0 -31
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerLegacyView.kt +0 -47
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.java +0 -31
- package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.java +0 -35
- package/ReactCommon/react/renderer/graphics/DoubleConversions.cpp +0 -38
package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingsObserver.kt
CHANGED
|
@@ -97,16 +97,15 @@ internal class FrameTimingsObserver(
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
private val frameMetricsListener =
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
100
|
+
private val frameMetricsListener = Window.OnFrameMetricsAvailableListener { _, frameMetrics, _ ->
|
|
101
|
+
// Guard against calls after stop()
|
|
102
|
+
if (!isTracing) {
|
|
103
|
+
return@OnFrameMetricsAvailableListener
|
|
104
|
+
}
|
|
105
|
+
val beginTimestamp = frameMetrics.getMetric(FrameMetrics.VSYNC_TIMESTAMP)
|
|
106
|
+
val endTimestamp = beginTimestamp + frameMetrics.getMetric(FrameMetrics.TOTAL_DURATION)
|
|
107
|
+
emitFrameTiming(beginTimestamp, endTimestamp)
|
|
108
|
+
}
|
|
110
109
|
|
|
111
110
|
private fun emitFrameTiming(beginTimestamp: Long, endTimestamp: Long) {
|
|
112
111
|
val frameId = frameCounter++
|
|
@@ -11,11 +11,13 @@ import com.facebook.jni.HybridData
|
|
|
11
11
|
import com.facebook.proguard.annotations.DoNotStrip
|
|
12
12
|
import com.facebook.proguard.annotations.DoNotStripAny
|
|
13
13
|
import com.facebook.soloader.SoLoader
|
|
14
|
+
import com.facebook.soloader.annotation.SoLoaderLibrary
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* JNI wrapper for `jsinspectormodern::NetworkRequestListener`. Handles the `ScopedExecutor`
|
|
17
18
|
* callback use on the C++ side.
|
|
18
19
|
*/
|
|
20
|
+
@SoLoaderLibrary("reactnativejni")
|
|
19
21
|
@DoNotStripAny
|
|
20
22
|
internal class InspectorNetworkRequestListener(
|
|
21
23
|
@field:DoNotStrip private val mHybridData: HybridData
|
|
@@ -142,8 +142,9 @@ internal class PerfMonitorOverlayView(
|
|
|
142
142
|
val dialog =
|
|
143
143
|
createAnchoredDialog(dpToPx(12f), dpToPx(12f)).apply { setContentView(containerLayout) }
|
|
144
144
|
dialog.window?.apply {
|
|
145
|
-
attributes =
|
|
146
|
-
|
|
145
|
+
attributes = attributes?.apply {
|
|
146
|
+
flags = flags or WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
|
|
147
|
+
}
|
|
147
148
|
}
|
|
148
149
|
|
|
149
150
|
return dialog
|
|
@@ -158,14 +159,13 @@ internal class PerfMonitorOverlayView(
|
|
|
158
159
|
setCancelable(false)
|
|
159
160
|
}
|
|
160
161
|
dialog.window?.apply {
|
|
161
|
-
attributes =
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
162
|
+
attributes = attributes?.apply {
|
|
163
|
+
width = WindowManager.LayoutParams.WRAP_CONTENT
|
|
164
|
+
height = WindowManager.LayoutParams.WRAP_CONTENT
|
|
165
|
+
gravity = Gravity.TOP or Gravity.END
|
|
166
|
+
x = offsetX.toInt()
|
|
167
|
+
y = offsetY.toInt()
|
|
168
|
+
}
|
|
169
169
|
}
|
|
170
170
|
dialog.window?.decorView?.let { decorView ->
|
|
171
171
|
ViewCompat.setOnApplyWindowInsetsListener(decorView) { view, windowInsets ->
|
package/ReactAndroid/src/main/java/com/facebook/react/fabric/AnimationBackendChoreographer.kt
CHANGED
|
@@ -46,24 +46,26 @@ internal class AnimationBackendChoreographer(
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
fun pause() {
|
|
49
|
+
val shouldRemove: Boolean
|
|
49
50
|
synchronized(paused) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
shouldRemove = !paused.getAndSet(true) && callbackPosted.getAndSet(false)
|
|
52
|
+
}
|
|
53
|
+
if (shouldRemove) {
|
|
54
|
+
reactChoreographer.removeFrameCallback(
|
|
55
|
+
ReactChoreographer.CallbackType.NATIVE_ANIMATED_MODULE,
|
|
56
|
+
choreographerCallback,
|
|
57
|
+
)
|
|
56
58
|
}
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
private fun scheduleCallback() {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
val shouldPost: Boolean
|
|
63
|
+
synchronized(paused) { shouldPost = !paused.get() && !callbackPosted.getAndSet(true) }
|
|
64
|
+
if (shouldPost) {
|
|
65
|
+
reactChoreographer.postFrameCallback(
|
|
66
|
+
ReactChoreographer.CallbackType.NATIVE_ANIMATED_MODULE,
|
|
67
|
+
choreographerCallback,
|
|
68
|
+
)
|
|
67
69
|
}
|
|
68
70
|
}
|
|
69
71
|
|
|
@@ -134,7 +134,10 @@ public class DevToolsReactPerfLogger : FabricMarkerListener {
|
|
|
134
134
|
}
|
|
135
135
|
commitPoint.addPoint(name, FabricCommitPointData(timestamp, counter))
|
|
136
136
|
|
|
137
|
-
if (
|
|
137
|
+
if (
|
|
138
|
+
(name == ReactMarkerConstants.FABRIC_BATCH_EXECUTION_END ||
|
|
139
|
+
name == ReactMarkerConstants.FABRIC_UPDATE_UI_MAIN_THREAD_END) && timestamp > 0
|
|
140
|
+
) {
|
|
138
141
|
onFabricCommitEnd(commitPoint)
|
|
139
142
|
fabricCommitMarkers.remove(instanceKey)
|
|
140
143
|
}
|
|
@@ -27,7 +27,6 @@ import android.view.accessibility.AccessibilityEvent;
|
|
|
27
27
|
import androidx.annotation.AnyThread;
|
|
28
28
|
import androidx.annotation.Nullable;
|
|
29
29
|
import androidx.annotation.UiThread;
|
|
30
|
-
import androidx.core.util.Preconditions;
|
|
31
30
|
import androidx.core.view.ViewCompat.FocusDirection;
|
|
32
31
|
import com.facebook.common.logging.FLog;
|
|
33
32
|
import com.facebook.infer.annotation.Assertions;
|
|
@@ -102,6 +101,7 @@ import java.util.List;
|
|
|
102
101
|
import java.util.Map;
|
|
103
102
|
import java.util.Queue;
|
|
104
103
|
import java.util.Set;
|
|
104
|
+
import java.util.concurrent.ConcurrentLinkedQueue;
|
|
105
105
|
import java.util.concurrent.CopyOnWriteArrayList;
|
|
106
106
|
|
|
107
107
|
/**
|
|
@@ -193,6 +193,13 @@ public class FabricUIManager
|
|
|
193
193
|
@ThreadConfined(UI)
|
|
194
194
|
private final Set<SynchronousEvent> mSynchronousEvents = new HashSet<>();
|
|
195
195
|
|
|
196
|
+
/**
|
|
197
|
+
* Queue of surface IDs that need their React revision merged. Drained during doFrame so that
|
|
198
|
+
* synchronous events dispatched by the merge are processed in the same frame.
|
|
199
|
+
*/
|
|
200
|
+
private final ConcurrentLinkedQueue<Integer> mPendingReactRevisionMerges =
|
|
201
|
+
new ConcurrentLinkedQueue<>();
|
|
202
|
+
|
|
196
203
|
/**
|
|
197
204
|
* This is used to keep track of whether or not the FabricUIManager has been destroyed. Once the
|
|
198
205
|
* Catalyst instance is being destroyed, we should cease all operation here.
|
|
@@ -201,6 +208,8 @@ public class FabricUIManager
|
|
|
201
208
|
|
|
202
209
|
private boolean mDriveCxxAnimations = false;
|
|
203
210
|
|
|
211
|
+
private @Nullable ViewTransitionSnapshotManager mViewTransitionSnapshotManager;
|
|
212
|
+
|
|
204
213
|
private long mDispatchViewUpdatesTime = 0l;
|
|
205
214
|
private long mCommitStartTime = 0l;
|
|
206
215
|
private long mLayoutTime = 0l;
|
|
@@ -537,7 +546,7 @@ public class FabricUIManager
|
|
|
537
546
|
|
|
538
547
|
return (NativeArray)
|
|
539
548
|
TextLayoutManager.measureLines(
|
|
540
|
-
mReactApplicationContext,
|
|
549
|
+
mReactApplicationContext.getAssets(),
|
|
541
550
|
attributedString,
|
|
542
551
|
paragraphAttributes,
|
|
543
552
|
PixelUtil.toPixelFromDIP(width),
|
|
@@ -611,7 +620,6 @@ public class FabricUIManager
|
|
|
611
620
|
@ThreadConfined(ANY)
|
|
612
621
|
@UnstableReactNativeAPI
|
|
613
622
|
public long measureText(
|
|
614
|
-
int surfaceId,
|
|
615
623
|
ReadableMapBuffer attributedString,
|
|
616
624
|
ReadableMapBuffer paragraphAttributes,
|
|
617
625
|
float minWidth,
|
|
@@ -620,24 +628,10 @@ public class FabricUIManager
|
|
|
620
628
|
float maxHeight,
|
|
621
629
|
@Nullable float[] attachmentsPositions) {
|
|
622
630
|
|
|
623
|
-
ReactContext context;
|
|
624
|
-
if (surfaceId > 0) {
|
|
625
|
-
SurfaceMountingManager surfaceMountingManager =
|
|
626
|
-
mMountingManager.getSurfaceManagerEnforced(surfaceId, "measureText");
|
|
627
|
-
if (surfaceMountingManager.isStopped()) {
|
|
628
|
-
return 0;
|
|
629
|
-
}
|
|
630
|
-
context = surfaceMountingManager.getContext();
|
|
631
|
-
Assertions.assertNotNull(
|
|
632
|
-
context, "Context in SurfaceMountingManager is null. surfaceId: " + surfaceId);
|
|
633
|
-
} else {
|
|
634
|
-
context = mReactApplicationContext;
|
|
635
|
-
}
|
|
636
|
-
|
|
637
631
|
ViewManager textViewManager = mViewManagerRegistry.get(ReactTextViewManager.REACT_CLASS);
|
|
638
632
|
|
|
639
633
|
return TextLayoutManager.measureText(
|
|
640
|
-
|
|
634
|
+
mReactApplicationContext.getAssets(),
|
|
641
635
|
attributedString,
|
|
642
636
|
paragraphAttributes,
|
|
643
637
|
getYogaSize(minWidth, maxWidth),
|
|
@@ -654,19 +648,16 @@ public class FabricUIManager
|
|
|
654
648
|
@ThreadConfined(ANY)
|
|
655
649
|
@UnstableReactNativeAPI
|
|
656
650
|
public PreparedLayout prepareTextLayout(
|
|
657
|
-
int surfaceId,
|
|
658
651
|
ReadableMapBuffer attributedString,
|
|
659
652
|
ReadableMapBuffer paragraphAttributes,
|
|
660
653
|
float minWidth,
|
|
661
654
|
float maxWidth,
|
|
662
655
|
float minHeight,
|
|
663
656
|
float maxHeight) {
|
|
664
|
-
SurfaceMountingManager surfaceMountingManager =
|
|
665
|
-
mMountingManager.getSurfaceManagerEnforced(surfaceId, "prepareTextLayout");
|
|
666
657
|
ViewManager textViewManager = mViewManagerRegistry.get(ReactTextViewManager.REACT_CLASS);
|
|
667
658
|
|
|
668
659
|
return TextLayoutManager.createPreparedLayout(
|
|
669
|
-
|
|
660
|
+
mReactApplicationContext.getAssets(),
|
|
670
661
|
attributedString,
|
|
671
662
|
paragraphAttributes,
|
|
672
663
|
getYogaSize(minWidth, maxWidth),
|
|
@@ -822,6 +813,40 @@ public class FabricUIManager
|
|
|
822
813
|
ReactMarkerConstants.FABRIC_UPDATE_UI_MAIN_THREAD_END, null, commitNumber);
|
|
823
814
|
}
|
|
824
815
|
|
|
816
|
+
/** Called from C++ via JNI. */
|
|
817
|
+
@SuppressLint("NotInvokedPrivateMethod")
|
|
818
|
+
@SuppressWarnings("unused")
|
|
819
|
+
@AnyThread
|
|
820
|
+
@ThreadConfined(ANY)
|
|
821
|
+
private void captureViewSnapshot(final int reactTag, final int surfaceId) {
|
|
822
|
+
getViewTransitionSnapshotManager().captureViewSnapshot(reactTag, surfaceId);
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
/** Called from C++ via JNI. */
|
|
826
|
+
@SuppressLint("NotInvokedPrivateMethod")
|
|
827
|
+
@SuppressWarnings("unused")
|
|
828
|
+
@AnyThread
|
|
829
|
+
@ThreadConfined(ANY)
|
|
830
|
+
private void setViewSnapshot(final int sourceTag, final int targetTag, final int surfaceId) {
|
|
831
|
+
getViewTransitionSnapshotManager().setViewSnapshot(sourceTag, targetTag);
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
/** Called from C++ via JNI. */
|
|
835
|
+
@SuppressLint("NotInvokedPrivateMethod")
|
|
836
|
+
@SuppressWarnings("unused")
|
|
837
|
+
@AnyThread
|
|
838
|
+
@ThreadConfined(ANY)
|
|
839
|
+
private void clearPendingSnapshots() {
|
|
840
|
+
getViewTransitionSnapshotManager().clearPendingSnapshots();
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
private synchronized ViewTransitionSnapshotManager getViewTransitionSnapshotManager() {
|
|
844
|
+
if (mViewTransitionSnapshotManager == null) {
|
|
845
|
+
mViewTransitionSnapshotManager = new ViewTransitionSnapshotManager(this, mMountingManager);
|
|
846
|
+
}
|
|
847
|
+
return mViewTransitionSnapshotManager;
|
|
848
|
+
}
|
|
849
|
+
|
|
825
850
|
@SuppressLint("NotInvokedPrivateMethod")
|
|
826
851
|
@SuppressWarnings("unused")
|
|
827
852
|
@AnyThread
|
|
@@ -975,13 +1000,7 @@ public class FabricUIManager
|
|
|
975
1000
|
mBinding.mergeReactRevision(surfaceId);
|
|
976
1001
|
}
|
|
977
1002
|
} else {
|
|
978
|
-
|
|
979
|
-
() -> {
|
|
980
|
-
FabricUIManagerBinding binding = mBinding;
|
|
981
|
-
if (binding != null) {
|
|
982
|
-
binding.mergeReactRevision(surfaceId);
|
|
983
|
-
}
|
|
984
|
-
});
|
|
1003
|
+
mPendingReactRevisionMerges.add(surfaceId);
|
|
985
1004
|
}
|
|
986
1005
|
}
|
|
987
1006
|
|
|
@@ -992,15 +1011,8 @@ public class FabricUIManager
|
|
|
992
1011
|
@UnstableReactNativeAPI
|
|
993
1012
|
public void experimental_prefetchResources(
|
|
994
1013
|
int surfaceId, String componentName, ReadableMapBuffer params) {
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
new PrefetchResourcesMountItem(surfaceId, componentName, params));
|
|
998
|
-
} else {
|
|
999
|
-
SurfaceMountingManager surfaceMountingManager = mMountingManager.getSurfaceManager(surfaceId);
|
|
1000
|
-
if (surfaceMountingManager != null) {
|
|
1001
|
-
surfaceMountingManager.experimental_prefetchResources(surfaceId, componentName, params);
|
|
1002
|
-
}
|
|
1003
|
-
}
|
|
1014
|
+
mMountItemDispatcher.addMountItem(
|
|
1015
|
+
new PrefetchResourcesMountItem(surfaceId, componentName, params));
|
|
1004
1016
|
}
|
|
1005
1017
|
|
|
1006
1018
|
void setBinding(FabricUIManagerBinding binding) {
|
|
@@ -1067,11 +1079,13 @@ public class FabricUIManager
|
|
|
1067
1079
|
return surfaceManager.getView(reactTag);
|
|
1068
1080
|
}
|
|
1069
1081
|
|
|
1082
|
+
@Deprecated
|
|
1070
1083
|
@Override
|
|
1071
1084
|
public void receiveEvent(int reactTag, String eventName, @Nullable WritableMap params) {
|
|
1072
1085
|
receiveEvent(View.NO_ID, reactTag, eventName, false, params, EventCategoryDef.UNSPECIFIED);
|
|
1073
1086
|
}
|
|
1074
1087
|
|
|
1088
|
+
@Deprecated
|
|
1075
1089
|
@Override
|
|
1076
1090
|
public void receiveEvent(
|
|
1077
1091
|
int surfaceId, int reactTag, String eventName, @Nullable WritableMap params) {
|
|
@@ -1091,7 +1105,9 @@ public class FabricUIManager
|
|
|
1091
1105
|
* @param canCoalesceEvent
|
|
1092
1106
|
* @param params
|
|
1093
1107
|
* @param eventCategory
|
|
1108
|
+
* @deprecated Use the overload with eventTimestamp parameter instead.
|
|
1094
1109
|
*/
|
|
1110
|
+
@Deprecated
|
|
1095
1111
|
public void receiveEvent(
|
|
1096
1112
|
int surfaceId,
|
|
1097
1113
|
int reactTag,
|
|
@@ -1099,9 +1115,34 @@ public class FabricUIManager
|
|
|
1099
1115
|
boolean canCoalesceEvent,
|
|
1100
1116
|
@Nullable WritableMap params,
|
|
1101
1117
|
@EventCategoryDef int eventCategory) {
|
|
1102
|
-
receiveEvent(
|
|
1118
|
+
receiveEvent(
|
|
1119
|
+
surfaceId,
|
|
1120
|
+
reactTag,
|
|
1121
|
+
eventName,
|
|
1122
|
+
canCoalesceEvent,
|
|
1123
|
+
params,
|
|
1124
|
+
eventCategory,
|
|
1125
|
+
false,
|
|
1126
|
+
SystemClock.uptimeMillis());
|
|
1103
1127
|
}
|
|
1104
1128
|
|
|
1129
|
+
/**
|
|
1130
|
+
* receiveEvent API that emits an event to C++. If {@code canCoalesceEvent} is true, that signals
|
|
1131
|
+
* that C++ may coalesce the event optionally. Otherwise, coalescing can happen in Java before
|
|
1132
|
+
* emitting.
|
|
1133
|
+
*
|
|
1134
|
+
* <p>{@code customCoalesceKey} is currently unused.
|
|
1135
|
+
*
|
|
1136
|
+
* @param surfaceId
|
|
1137
|
+
* @param reactTag
|
|
1138
|
+
* @param eventName
|
|
1139
|
+
* @param canCoalesceEvent
|
|
1140
|
+
* @param params
|
|
1141
|
+
* @param eventCategory
|
|
1142
|
+
* @param experimentalIsSynchronous
|
|
1143
|
+
* @deprecated Use the overload with eventTimestamp parameter instead.
|
|
1144
|
+
*/
|
|
1145
|
+
@Deprecated
|
|
1105
1146
|
@Override
|
|
1106
1147
|
public void receiveEvent(
|
|
1107
1148
|
int surfaceId,
|
|
@@ -1111,6 +1152,43 @@ public class FabricUIManager
|
|
|
1111
1152
|
@Nullable WritableMap params,
|
|
1112
1153
|
@EventCategoryDef int eventCategory,
|
|
1113
1154
|
boolean experimentalIsSynchronous) {
|
|
1155
|
+
receiveEvent(
|
|
1156
|
+
surfaceId,
|
|
1157
|
+
reactTag,
|
|
1158
|
+
eventName,
|
|
1159
|
+
canCoalesceEvent,
|
|
1160
|
+
params,
|
|
1161
|
+
eventCategory,
|
|
1162
|
+
experimentalIsSynchronous,
|
|
1163
|
+
SystemClock.uptimeMillis());
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
/**
|
|
1167
|
+
* receiveEvent API that emits an event to C++. If {@code canCoalesceEvent} is true, that signals
|
|
1168
|
+
* that C++ may coalesce the event optionally. Otherwise, coalescing can happen in Java before
|
|
1169
|
+
* emitting.
|
|
1170
|
+
*
|
|
1171
|
+
* <p>{@code customCoalesceKey} is currently unused.
|
|
1172
|
+
*
|
|
1173
|
+
* @param surfaceId
|
|
1174
|
+
* @param reactTag
|
|
1175
|
+
* @param eventName
|
|
1176
|
+
* @param canCoalesceEvent
|
|
1177
|
+
* @param params
|
|
1178
|
+
* @param eventCategory
|
|
1179
|
+
* @param experimentalIsSynchronous
|
|
1180
|
+
* @param eventTimestamp
|
|
1181
|
+
*/
|
|
1182
|
+
@Override
|
|
1183
|
+
public void receiveEvent(
|
|
1184
|
+
int surfaceId,
|
|
1185
|
+
int reactTag,
|
|
1186
|
+
String eventName,
|
|
1187
|
+
boolean canCoalesceEvent,
|
|
1188
|
+
@Nullable WritableMap params,
|
|
1189
|
+
@EventCategoryDef int eventCategory,
|
|
1190
|
+
boolean experimentalIsSynchronous,
|
|
1191
|
+
long eventTimestamp) {
|
|
1114
1192
|
|
|
1115
1193
|
if (ReactBuildConfig.DEBUG && surfaceId == View.NO_ID) {
|
|
1116
1194
|
FLog.d(TAG, "Emitted event without surfaceId: [%d] %s", reactTag, eventName);
|
|
@@ -1128,7 +1206,13 @@ public class FabricUIManager
|
|
|
1128
1206
|
// access to the event emitter later when the view is mounted. For now just save the event
|
|
1129
1207
|
// in the view state and trigger it later.
|
|
1130
1208
|
mMountingManager.enqueuePendingEvent(
|
|
1131
|
-
surfaceId,
|
|
1209
|
+
surfaceId,
|
|
1210
|
+
reactTag,
|
|
1211
|
+
eventName,
|
|
1212
|
+
canCoalesceEvent,
|
|
1213
|
+
params,
|
|
1214
|
+
eventCategory,
|
|
1215
|
+
eventTimestamp);
|
|
1132
1216
|
} else {
|
|
1133
1217
|
// This can happen if the view has disappeared from the screen (because of async events)
|
|
1134
1218
|
FLog.i(TAG, "Unable to invoke event: " + eventName + " for reactTag: " + reactTag);
|
|
@@ -1142,13 +1226,13 @@ public class FabricUIManager
|
|
|
1142
1226
|
boolean firstEventForFrame =
|
|
1143
1227
|
mSynchronousEvents.add(new SynchronousEvent(surfaceId, reactTag, eventName));
|
|
1144
1228
|
if (firstEventForFrame) {
|
|
1145
|
-
eventEmitter.dispatchEventSynchronously(eventName, params);
|
|
1229
|
+
eventEmitter.dispatchEventSynchronously(eventName, params, eventTimestamp);
|
|
1146
1230
|
}
|
|
1147
1231
|
} else {
|
|
1148
1232
|
if (canCoalesceEvent) {
|
|
1149
|
-
eventEmitter.dispatchUnique(eventName, params);
|
|
1233
|
+
eventEmitter.dispatchUnique(eventName, params, eventTimestamp);
|
|
1150
1234
|
} else {
|
|
1151
|
-
eventEmitter.dispatch(eventName, params, eventCategory);
|
|
1235
|
+
eventEmitter.dispatch(eventName, params, eventCategory, eventTimestamp);
|
|
1152
1236
|
}
|
|
1153
1237
|
}
|
|
1154
1238
|
}
|
|
@@ -1505,6 +1589,18 @@ public class FabricUIManager
|
|
|
1505
1589
|
return;
|
|
1506
1590
|
}
|
|
1507
1591
|
|
|
1592
|
+
// Drain pending React revision merges first so that animations,
|
|
1593
|
+
// preallocation, and mount items operate against the latest revision.
|
|
1594
|
+
if (ReactNativeFeatureFlags.enableFabricCommitBranching()) {
|
|
1595
|
+
FabricUIManagerBinding binding = mBinding;
|
|
1596
|
+
if (binding != null) {
|
|
1597
|
+
Integer mergeSurfaceId;
|
|
1598
|
+
while ((mergeSurfaceId = mPendingReactRevisionMerges.poll()) != null) {
|
|
1599
|
+
binding.mergeReactRevision(mergeSurfaceId);
|
|
1600
|
+
}
|
|
1601
|
+
}
|
|
1602
|
+
}
|
|
1603
|
+
|
|
1508
1604
|
// Drive any animations from C++.
|
|
1509
1605
|
// There is a race condition here between getting/setting
|
|
1510
1606
|
// `mDriveCxxAnimations` which shouldn't matter; it's safe to call
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
package com.facebook.react.fabric
|
|
9
|
+
|
|
10
|
+
import android.graphics.Bitmap
|
|
11
|
+
import android.graphics.Canvas
|
|
12
|
+
import android.graphics.Rect
|
|
13
|
+
import android.os.Build
|
|
14
|
+
import android.os.Handler
|
|
15
|
+
import android.os.Looper
|
|
16
|
+
import android.view.PixelCopy
|
|
17
|
+
import android.view.View
|
|
18
|
+
import android.view.Window
|
|
19
|
+
import androidx.annotation.RequiresApi
|
|
20
|
+
import androidx.annotation.UiThread
|
|
21
|
+
import androidx.core.graphics.createBitmap
|
|
22
|
+
import com.facebook.infer.annotation.ThreadConfined
|
|
23
|
+
import com.facebook.react.bridge.UIManager
|
|
24
|
+
import com.facebook.react.bridge.UIManagerListener
|
|
25
|
+
import com.facebook.react.bridge.UiThreadUtil
|
|
26
|
+
import com.facebook.react.common.annotations.UnstableReactNativeAPI
|
|
27
|
+
import com.facebook.react.fabric.mounting.MountingManager
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Manages bitmap snapshots of views during view transitions. Captures bitmaps from old views and
|
|
31
|
+
* applies them to pseudo-element shadow nodes, re-applying after each mount cycle since views may
|
|
32
|
+
* be recreated. Cleans up entries whose views have been deleted.
|
|
33
|
+
*/
|
|
34
|
+
@OptIn(UnstableReactNativeAPI::class)
|
|
35
|
+
internal class ViewTransitionSnapshotManager(
|
|
36
|
+
private val uiManager: FabricUIManager,
|
|
37
|
+
private val mountingManager: MountingManager,
|
|
38
|
+
) : UIManagerListener {
|
|
39
|
+
|
|
40
|
+
companion object {
|
|
41
|
+
private fun captureSoftwareBitmap(view: View): Bitmap? {
|
|
42
|
+
if (view.width > 0 && view.height > 0) {
|
|
43
|
+
val bitmap = createBitmap(view.width, view.height)
|
|
44
|
+
view.draw(Canvas(bitmap))
|
|
45
|
+
return bitmap
|
|
46
|
+
}
|
|
47
|
+
return null
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Captured bitmaps keyed by source tag. Populated by onBitmapCaptured.
|
|
52
|
+
@ThreadConfined(ThreadConfined.UI) private val viewSnapshots = LinkedHashMap<Int, Bitmap>()
|
|
53
|
+
|
|
54
|
+
// Source→target tag mapping. Populated by setViewSnapshot.
|
|
55
|
+
// A snapshot is resolved when both maps contain an entry for the same source tag.
|
|
56
|
+
@ThreadConfined(ThreadConfined.UI) private val pendingTargets = LinkedHashMap<Int, Int>()
|
|
57
|
+
|
|
58
|
+
@ThreadConfined(ThreadConfined.UI) private var listenerRegistered = false
|
|
59
|
+
|
|
60
|
+
private val mainHandler = Handler(Looper.getMainLooper())
|
|
61
|
+
|
|
62
|
+
@UiThread
|
|
63
|
+
private fun onBitmapCaptured(reactTag: Int, bitmap: Bitmap) {
|
|
64
|
+
viewSnapshots[reactTag] = bitmap
|
|
65
|
+
if (reactTag in pendingTargets) {
|
|
66
|
+
ensureListenerRegistered()
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@UiThread
|
|
71
|
+
private fun ensureListenerRegistered() {
|
|
72
|
+
if (!listenerRegistered) {
|
|
73
|
+
listenerRegistered = true
|
|
74
|
+
uiManager.addUIManagerEventListener(this)
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Captures a bitmap snapshot of the view identified by the given tag. On API 26+, uses PixelCopy
|
|
80
|
+
* to capture directly from the GPU-composited surface (faster for complex views, captures
|
|
81
|
+
* hardware-accelerated content). Falls back to View.draw() on older APIs.
|
|
82
|
+
*/
|
|
83
|
+
fun captureViewSnapshot(reactTag: Int, surfaceId: Int) {
|
|
84
|
+
UiThreadUtil.runOnUiThread {
|
|
85
|
+
val smm = mountingManager.getSurfaceManager(surfaceId) ?: return@runOnUiThread
|
|
86
|
+
if (!smm.getViewExists(reactTag)) return@runOnUiThread
|
|
87
|
+
val view = smm.getView(reactTag)
|
|
88
|
+
if (view.width <= 0 || view.height <= 0) return@runOnUiThread
|
|
89
|
+
|
|
90
|
+
val window =
|
|
91
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
92
|
+
(view.context as? com.facebook.react.bridge.ReactContext)?.getCurrentActivity()?.window
|
|
93
|
+
} else {
|
|
94
|
+
null
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (window != null) {
|
|
98
|
+
captureHardwareBitmap(view, reactTag, window)
|
|
99
|
+
} else {
|
|
100
|
+
// Software fallback runs synchronously, so onBitmapCaptured always
|
|
101
|
+
// completes before setViewSnapshot is called.
|
|
102
|
+
captureSoftwareBitmap(view)?.let { onBitmapCaptured(reactTag, it) }
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@RequiresApi(Build.VERSION_CODES.O)
|
|
108
|
+
private fun captureHardwareBitmap(view: View, reactTag: Int, window: Window) {
|
|
109
|
+
val location = IntArray(2)
|
|
110
|
+
view.getLocationInWindow(location)
|
|
111
|
+
|
|
112
|
+
val viewWidth = view.width
|
|
113
|
+
val viewHeight = view.height
|
|
114
|
+
|
|
115
|
+
if (viewWidth <= 0 || viewHeight <= 0) {
|
|
116
|
+
// Nothing to capture.
|
|
117
|
+
return
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// The view's rect in window coordinates.
|
|
121
|
+
val viewRect = Rect(location[0], location[1], location[0] + viewWidth, location[1] + viewHeight)
|
|
122
|
+
|
|
123
|
+
// Clamp to window bounds — PixelCopy only captures what's visible on the
|
|
124
|
+
// window surface. Without clamping, off-screen portions are black/empty
|
|
125
|
+
// and the partial result gets stretched to fill the pseudo-element.
|
|
126
|
+
val windowWidth = window.decorView.width
|
|
127
|
+
val windowHeight = window.decorView.height
|
|
128
|
+
val clampedRect =
|
|
129
|
+
Rect(
|
|
130
|
+
viewRect.left.coerceAtLeast(0),
|
|
131
|
+
viewRect.top.coerceAtLeast(0),
|
|
132
|
+
viewRect.right.coerceAtMost(windowWidth),
|
|
133
|
+
viewRect.bottom.coerceAtMost(windowHeight),
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
if (clampedRect.isEmpty) {
|
|
137
|
+
// Entirely off-screen — nothing to capture.
|
|
138
|
+
return
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
val clampedBitmap = createBitmap(clampedRect.width(), clampedRect.height())
|
|
142
|
+
// Offset of the clamped region within the full view.
|
|
143
|
+
val offsetX = clampedRect.left - viewRect.left
|
|
144
|
+
val offsetY = clampedRect.top - viewRect.top
|
|
145
|
+
|
|
146
|
+
// PixelCopy callback is posted to mainHandler, so onBitmapCaptured may run after
|
|
147
|
+
// setViewSnapshot has already recorded the target tag for this source tag.
|
|
148
|
+
try {
|
|
149
|
+
PixelCopy.request(
|
|
150
|
+
window,
|
|
151
|
+
clampedRect,
|
|
152
|
+
clampedBitmap,
|
|
153
|
+
{ copyResult ->
|
|
154
|
+
if (copyResult == PixelCopy.SUCCESS) {
|
|
155
|
+
// Compose the clamped capture into a full-size bitmap at the
|
|
156
|
+
// correct offset so it aligns with the pseudo-element's bounds.
|
|
157
|
+
val fullBitmap = createBitmap(viewWidth, viewHeight)
|
|
158
|
+
Canvas(fullBitmap)
|
|
159
|
+
.drawBitmap(clampedBitmap, offsetX.toFloat(), offsetY.toFloat(), null)
|
|
160
|
+
clampedBitmap.recycle()
|
|
161
|
+
onBitmapCaptured(reactTag, fullBitmap)
|
|
162
|
+
} else {
|
|
163
|
+
// Fall back to software rendering if the view is still valid.
|
|
164
|
+
clampedBitmap.recycle()
|
|
165
|
+
captureSoftwareBitmap(view)?.let { onBitmapCaptured(reactTag, it) }
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
mainHandler,
|
|
169
|
+
)
|
|
170
|
+
} catch (e: IllegalArgumentException) {
|
|
171
|
+
// Window surface may have been destroyed (e.g., device idle/sleep).
|
|
172
|
+
// Fall back to software rendering if the view is still valid.
|
|
173
|
+
clampedBitmap.recycle()
|
|
174
|
+
captureSoftwareBitmap(view)?.let { onBitmapCaptured(reactTag, it) }
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Maps a previously captured bitmap from a source view to a target pseudo-element view. If the
|
|
180
|
+
* bitmap is already available, the snapshot becomes resolved and will be re-applied after mount
|
|
181
|
+
* cycles.
|
|
182
|
+
*/
|
|
183
|
+
fun setViewSnapshot(sourceTag: Int, targetTag: Int) {
|
|
184
|
+
UiThreadUtil.runOnUiThread {
|
|
185
|
+
pendingTargets[sourceTag] = targetTag
|
|
186
|
+
if (sourceTag in viewSnapshots) {
|
|
187
|
+
ensureListenerRegistered()
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Clears all snapshots. Called when a view transition ends to release bitmaps and unregister the
|
|
194
|
+
* mount listener.
|
|
195
|
+
*/
|
|
196
|
+
fun clearPendingSnapshots() {
|
|
197
|
+
UiThreadUtil.runOnUiThread {
|
|
198
|
+
viewSnapshots.clear()
|
|
199
|
+
pendingTargets.clear()
|
|
200
|
+
if (listenerRegistered) {
|
|
201
|
+
listenerRegistered = false
|
|
202
|
+
uiManager.removeUIManagerEventListener(this)
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
override fun willDispatchViewUpdates(uiManager: UIManager) {}
|
|
208
|
+
|
|
209
|
+
override fun willMountItems(uiManager: UIManager) {}
|
|
210
|
+
|
|
211
|
+
@UiThread
|
|
212
|
+
override fun didMountItems(uiManager: UIManager) {
|
|
213
|
+
for ((sourceTag, targetTag) in pendingTargets) {
|
|
214
|
+
val smm = mountingManager.getSurfaceManagerForView(targetTag) ?: continue
|
|
215
|
+
val bitmap = viewSnapshots[sourceTag] ?: continue
|
|
216
|
+
smm.applyViewSnapshot(targetTag, bitmap)
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
override fun didDispatchMountItems(uiManager: UIManager) {}
|
|
221
|
+
|
|
222
|
+
override fun didScheduleMountItems(uiManager: UIManager) {}
|
|
223
|
+
}
|