Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/react-native/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ let reactFabric = RNTarget(
"components/root/tests",
],
dependencies: [.reactNativeDependencies, .reactJsiExecutor, .rctTypesafety, .reactTurboModuleCore, .jsi, .logger, .reactDebug, .reactFeatureFlags, .reactUtils, .reactRuntimeScheduler, .reactCxxReact, .reactRendererDebug, .reactGraphics, .yoga],
sources: ["animationbackend", "animations", "attributedstring", "core", "componentregistry", "componentregistry/native", "components/root", "components/view", "components/view/platform/cxx", "components/scrollview", "components/scrollview/platform/cxx", "components/scrollview/platform/ios", "components/legacyviewmanagerinterop", "components/legacyviewmanagerinterop/platform/ios", "dom", "scheduler", "mounting", "observers/events", "observers/intersection", "telemetry", "consistency", "leakchecker", "uimanager", "uimanager/consistency"]
sources: ["animationbackend", "animations", "attributedstring", "core", "componentregistry", "componentregistry/native", "components/root", "components/view", "components/view/platform/cxx", "components/scrollview", "components/scrollview/platform/cxx", "components/scrollview/platform/ios", "components/legacyviewmanagerinterop", "components/legacyviewmanagerinterop/platform/ios", "dom", "scheduler", "mounting", "observers/events", "observers/intersection", "telemetry", "consistency", "leakchecker", "uimanager", "uimanager/consistency", "viewtransition"]
)

let reactFabricInputAccessory = RNTarget(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ add_react_common_subdir(react/renderer/componentregistry)
add_react_common_subdir(react/renderer/mounting)
add_react_common_subdir(react/renderer/scheduler)
add_react_common_subdir(react/renderer/telemetry)
add_react_common_subdir(react/renderer/viewtransition)
add_react_common_subdir(react/renderer/uimanager)
add_react_common_subdir(react/renderer/bridging)
add_react_common_subdir(react/renderer/core)
Expand Down Expand Up @@ -223,6 +224,7 @@ add_library(reactnative
$<TARGET_OBJECTS:react_renderer_textlayoutmanager>
$<TARGET_OBJECTS:react_renderer_uimanager>
$<TARGET_OBJECTS:react_renderer_uimanager_consistency>
$<TARGET_OBJECTS:react_renderer_viewtransition>
$<TARGET_OBJECTS:react_utils>
$<TARGET_OBJECTS:reactnativeblob>
$<TARGET_OBJECTS:reactnativejni>
Expand Down Expand Up @@ -318,6 +320,7 @@ target_include_directories(reactnative
$<TARGET_PROPERTY:react_renderer_textlayoutmanager,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:react_renderer_uimanager,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:react_renderer_uimanager_consistency,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:react_renderer_viewtransition,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:react_utils,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:reactnativeblob,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:reactnativejni,INTERFACE_INCLUDE_DIRECTORIES>
Expand Down
6 changes: 6 additions & 0 deletions packages/react-native/ReactCommon/React-Fabric.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ Pod::Spec.new do |s|
ss.header_dir = "react/renderer/scheduler"

ss.dependency "React-Fabric/animationbackend"
ss.dependency "React-Fabric/viewtransition"
ss.dependency "React-performancecdpmetrics"
ss.dependency "React-performancetimeline"
ss.dependency "React-Fabric/observers/events"
Expand Down Expand Up @@ -220,4 +221,9 @@ Pod::Spec.new do |s|
ss.header_dir = "react/renderer/leakchecker"
ss.pod_target_xcconfig = { "GCC_WARN_PEDANTIC" => "YES" }
end

s.subspec "viewtransition" do |ss|
ss.source_files = podspec_sources("react/renderer/viewtransition/**/*.{m,mm,cpp,h}", "react/renderer/viewtransition/**/*.h")
ss.header_dir = "react/renderer/viewtransition"
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ target_link_libraries(react_renderer_scheduler
react_renderer_observers_events
react_renderer_runtimescheduler
react_renderer_uimanager
react_renderer_viewtransition
react_utils
rrc_root
rrc_view
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,13 @@ Scheduler::Scheduler(
}
uiManager_->setAnimationDelegate(animationDelegate);

// Initialize ViewTransitionModule
if (ReactNativeFeatureFlags::viewTransitionEnabled()) {
viewTransitionModule_ = std::make_unique<ViewTransitionModule>();
viewTransitionModule_->setUIManager(uiManager_.get());
uiManager_->setViewTransitionDelegate(viewTransitionModule_.get());
}

uiManager->registerMountHook(*eventPerformanceLogger_);
}

Expand Down Expand Up @@ -186,6 +193,7 @@ Scheduler::~Scheduler() {
// The thread-safety of this operation is guaranteed by this requirement.
uiManager_->setDelegate(nullptr);
uiManager_->setAnimationDelegate(nullptr);
uiManager_->setViewTransitionDelegate(nullptr);

if (cdpMetricsReporter_) {
performanceEntryReporter_->removeEventListener(&*cdpMetricsReporter_);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include <react/renderer/uimanager/UIManagerAnimationDelegate.h>
#include <react/renderer/uimanager/UIManagerBinding.h>
#include <react/renderer/uimanager/UIManagerDelegate.h>
#include <react/renderer/viewtransition/ViewTransitionModule.h>
#include <react/utils/ContextContainer.h>

namespace facebook::react {
Expand Down Expand Up @@ -146,6 +147,8 @@ class Scheduler final : public UIManagerDelegate {

RuntimeScheduler *runtimeScheduler_{nullptr};

std::unique_ptr<ViewTransitionModule> viewTransitionModule_;

mutable std::shared_mutex onSurfaceStartCallbackMutex_;
OnSurfaceStartCallback onSurfaceStartCallback_;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -488,6 +488,10 @@ void UIManager::sendAccessibilityEvent(
}
}

UIManagerViewTransitionDelegate* UIManager::getViewTransitionDelegate() const {
return viewTransitionDelegate_;
}

void UIManager::configureNextLayoutAnimation(
jsi::Runtime& runtime,
const RawValue& config,
Expand Down Expand Up @@ -708,6 +712,13 @@ void UIManager::setNativeAnimatedDelegate(
nativeAnimatedDelegate_ = delegate;
}

void UIManager::setViewTransitionDelegate(
UIManagerViewTransitionDelegate* delegate) {
if (ReactNativeFeatureFlags::viewTransitionEnabled()) {
viewTransitionDelegate_ = delegate;
}
}

void UIManager::unstable_setAnimationBackend(
std::shared_ptr<UIManagerAnimationBackend> animationBackend) {
animationBackend_ = animationBackend;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include <react/renderer/uimanager/UIManagerAnimationDelegate.h>
#include <react/renderer/uimanager/UIManagerDelegate.h>
#include <react/renderer/uimanager/UIManagerNativeAnimatedDelegate.h>
#include <react/renderer/uimanager/UIManagerViewTransitionDelegate.h>
#include <react/renderer/uimanager/consistency/LazyShadowTreeRevisionConsistencyManager.h>
#include <react/renderer/uimanager/consistency/ShadowTreeRevisionProvider.h>
#include <react/renderer/uimanager/primitives.h>
Expand Down Expand Up @@ -74,6 +75,12 @@ class UIManager final : public ShadowTreeDelegate {

void setNativeAnimatedDelegate(std::weak_ptr<UIManagerNativeAnimatedDelegate> delegate);

/**
* Sets and gets UIManager's ViewTransition API delegate.
*/
void setViewTransitionDelegate(UIManagerViewTransitionDelegate *delegate);
UIManagerViewTransitionDelegate *getViewTransitionDelegate() const;

void animationTick() const;

void synchronouslyUpdateViewOnUIThread(Tag tag, const folly::dynamic &props);
Expand Down Expand Up @@ -242,6 +249,7 @@ class UIManager final : public ShadowTreeDelegate {
UIManagerDelegate *delegate_{};
UIManagerAnimationDelegate *animationDelegate_{nullptr};
std::weak_ptr<UIManagerNativeAnimatedDelegate> nativeAnimatedDelegate_;
UIManagerViewTransitionDelegate *viewTransitionDelegate_{nullptr};

const RuntimeExecutor runtimeExecutor_{};
ShadowTreeRegistry shadowTreeRegistry_{};
Expand Down
Loading
Loading