|
17 | 17 |
|
18 | 18 | namespace facebook::react { |
19 | 19 |
|
| 20 | +namespace { |
| 21 | + |
| 22 | +RawProps makePseudoElementRawProps( |
| 23 | + const ViewTransitionModule::AnimationKeyFrameViewLayoutMetrics& metrics) { |
| 24 | + return RawProps( |
| 25 | + folly::dynamic::object("position", "absolute")( |
| 26 | + "left", metrics.originFromRoot.x)("top", metrics.originFromRoot.y)( |
| 27 | + "width", metrics.size.width)("height", metrics.size.height)( |
| 28 | + "pointerEvents", "none")("opacity", 0)("collapsable", false)); |
| 29 | +} |
| 30 | + |
| 31 | +} // namespace |
| 32 | + |
20 | 33 | ViewTransitionModule::~ViewTransitionModule() { |
21 | 34 | if (uiManager_ != nullptr) { |
22 | 35 | if (uiManager_->getViewTransitionDelegate() == this) { |
@@ -109,13 +122,7 @@ void ViewTransitionModule::applyViewTransitionName( |
109 | 122 | keyframeMetrics.originFromRoot.y || |
110 | 123 | cachedMetrics.size.width != keyframeMetrics.size.width || |
111 | 124 | cachedMetrics.size.height != keyframeMetrics.size.height) { |
112 | | - auto updatedRawProps = RawProps( |
113 | | - folly::dynamic::object("left", keyframeMetrics.originFromRoot.x)( |
114 | | - "top", keyframeMetrics.originFromRoot.y)( |
115 | | - "width", keyframeMetrics.size.width)( |
116 | | - "height", keyframeMetrics.size.height)( |
117 | | - "pointerEvents", "none")("opacity", 0)("collapsable", false)( |
118 | | - "position", "absolute")); |
| 125 | + auto updatedRawProps = makePseudoElementRawProps(keyframeMetrics); |
119 | 126 |
|
120 | 127 | auto updatedNode = uiManager_->cloneNode( |
121 | 128 | *innerIt->second.node, |
@@ -171,31 +178,17 @@ void ViewTransitionModule::createViewTransitionInstance( |
171 | 178 |
|
172 | 179 | // Build props: absolute position matching old element, non-interactive |
173 | 180 | if (pseudoElementTag > 0 && view.tag > 0) { |
174 | | - // Create a base node with layout props via createNode |
175 | 181 | // TODO: T262559684 created dedicated shadow node type for old pseudo |
176 | 182 | // element |
177 | | - auto rawProps = RawProps( |
178 | | - folly::dynamic::object("position", "absolute")( |
179 | | - "left", view.layoutMetrics.originFromRoot.x)( |
180 | | - "top", view.layoutMetrics.originFromRoot.y)( |
181 | | - "width", view.layoutMetrics.size.width)( |
182 | | - "height", view.layoutMetrics.size.height)("pointerEvents", "none")( |
183 | | - "opacity", 0)("collapsable", false)); |
184 | | - |
185 | | - auto baseNode = uiManager_->createNode( |
| 183 | + auto rawProps = makePseudoElementRawProps(view.layoutMetrics); |
| 184 | + |
| 185 | + auto pseudoElementNode = uiManager_->createNode( |
186 | 186 | pseudoElementTag, |
187 | 187 | "View", |
188 | 188 | view.surfaceId, |
189 | 189 | std::move(rawProps), |
190 | 190 | nullptr /* instanceHandle */); |
191 | 191 |
|
192 | | - if (baseNode == nullptr) { |
193 | | - return; |
194 | | - } |
195 | | - |
196 | | - // Clone the shadow node — bitmap will be set by platform |
197 | | - auto pseudoElementNode = baseNode->clone({}); |
198 | | - |
199 | 192 | if (pseudoElementNode != nullptr) { |
200 | 193 | if (!forNextTransition) { |
201 | 194 | oldPseudoElementNodes_[name] = pseudoElementNode; |
|
0 commit comments