From 1b6e3dd985c0cfaa4f15fae6fda26f7b57bd25da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Markb=C3=A5ge?= Date: Fri, 14 Mar 2025 13:16:20 -0400 Subject: [PATCH] Merge restoreEnterViewTransitions and restoreExitViewTransitions (#32585) This is the exact same code in both cases. It's just general clean up. By unifying them it becomes less confusing to reuse these helpers in the Apply Gesture path where the naming is reversed. --- .../src/ReactFiberCommitViewTransitions.js | 35 +++++-------------- .../src/ReactFiberCommitWork.js | 9 +++-- 2 files changed, 13 insertions(+), 31 deletions(-) diff --git a/packages/react-reconciler/src/ReactFiberCommitViewTransitions.js b/packages/react-reconciler/src/ReactFiberCommitViewTransitions.js index 22b9d11ac6..5dcf1498ed 100644 --- a/packages/react-reconciler/src/ReactFiberCommitViewTransitions.js +++ b/packages/react-reconciler/src/ReactFiberCommitViewTransitions.js @@ -514,37 +514,20 @@ function restorePairedViewTransitions(parent: Fiber): void { } } -export function restoreEnterViewTransitions(placement: Fiber): void { - if (placement.tag === ViewTransitionComponent) { - const instance: ViewTransitionState = placement.stateNode; +export function restoreEnterOrExitViewTransitions(fiber: Fiber): void { + if (fiber.tag === ViewTransitionComponent) { + const instance: ViewTransitionState = fiber.stateNode; instance.paired = null; - restoreViewTransitionOnHostInstances(placement.child, false); - restorePairedViewTransitions(placement); - } else if ((placement.subtreeFlags & ViewTransitionStatic) !== NoFlags) { - let child = placement.child; + restoreViewTransitionOnHostInstances(fiber.child, false); + restorePairedViewTransitions(fiber); + } else if ((fiber.subtreeFlags & ViewTransitionStatic) !== NoFlags) { + let child = fiber.child; while (child !== null) { - restoreEnterViewTransitions(child); + restoreEnterOrExitViewTransitions(child); child = child.sibling; } } else { - restorePairedViewTransitions(placement); - } -} - -export function restoreExitViewTransitions(deletion: Fiber): void { - if (deletion.tag === ViewTransitionComponent) { - const instance: ViewTransitionState = deletion.stateNode; - instance.paired = null; - restoreViewTransitionOnHostInstances(deletion.child, false); - restorePairedViewTransitions(deletion); - } else if ((deletion.subtreeFlags & ViewTransitionStatic) !== NoFlags) { - let child = deletion.child; - while (child !== null) { - restoreExitViewTransitions(child); - child = child.sibling; - } - } else { - restorePairedViewTransitions(deletion); + restorePairedViewTransitions(fiber); } } diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.js b/packages/react-reconciler/src/ReactFiberCommitWork.js index 8b82e6a7e7..bcf7fc188e 100644 --- a/packages/react-reconciler/src/ReactFiberCommitWork.js +++ b/packages/react-reconciler/src/ReactFiberCommitWork.js @@ -246,8 +246,7 @@ import { commitExitViewTransitions, commitBeforeUpdateViewTransition, commitNestedViewTransitions, - restoreEnterViewTransitions, - restoreExitViewTransitions, + restoreEnterOrExitViewTransitions, restoreUpdateViewTransition, restoreNestedViewTransitions, measureUpdateViewTransition, @@ -3228,7 +3227,7 @@ function commitPassiveMountOnFiber( // This was a new mount. This means we could've triggered an enter animation on // the content. Restore the view transitions if there were any assigned in the // snapshot phase. - restoreEnterViewTransitions(finishedWork); + restoreEnterOrExitViewTransitions(finishedWork); } // When updating this function, also update reconnectPassiveEffects, which does @@ -3529,7 +3528,7 @@ function commitPassiveMountOnFiber( // Content is now hidden but wasn't before. This means we could've // triggered an exit animation on the content. Restore the view // transitions if there were any assigned in the snapshot phase. - restoreExitViewTransitions(current); + restoreEnterOrExitViewTransitions(current); } if (instance._visibility & OffscreenPassiveEffectsConnected) { // The effects are currently connected. Update them. @@ -3576,7 +3575,7 @@ function commitPassiveMountOnFiber( // Content is now visible but wasn't before. This means we could've // triggered an enter animation on the content. Restore the view // transitions if there were any assigned in the snapshot phase. - restoreEnterViewTransitions(finishedWork); + restoreEnterOrExitViewTransitions(finishedWork); } if (instance._visibility & OffscreenPassiveEffectsConnected) { // The effects are currently connected. Update them.