Skip to content

Commit db2eee7

Browse files
committed
create supportsViewTransition and ReactFiberConfigWithNoViewTransition out of ReactFiberConfigWithNoMutation
1 parent b932350 commit db2eee7

10 files changed

Lines changed: 58 additions & 26 deletions

File tree

packages/react-art/src/ReactFiberConfigART.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,7 @@ export const isPrimaryRenderer = false;
413413
export const warnsIfNotActing = false;
414414

415415
export const supportsMutation = true;
416+
export const supportsViewTransition = false;
416417

417418
export function appendChild(parentInstance, child) {
418419
if (child.parentNode === parentInstance) {

packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -832,6 +832,7 @@ function handleErrorInNextTick(error: any) {
832832
// -------------------
833833

834834
export const supportsMutation = true;
835+
export const supportsViewTransition = true;
835836

836837
export function commitMount(
837838
domElement: Instance,

packages/react-native-renderer/src/ReactFiberConfigNative.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,7 @@ export function shouldAttemptEagerTransition(): boolean {
375375
// -------------------
376376

377377
export const supportsMutation = true;
378+
export const supportsViewTransition = false;
378379

379380
export function appendChild(
380381
parentInstance: Instance,

packages/react-reconciler/src/ReactFiberCommitViewTransitions.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import {
2525
ViewTransitionNamedStatic,
2626
} from './ReactFiberFlags';
2727
import {
28-
supportsMutation,
28+
supportsViewTransition,
2929
applyViewTransitionName,
3030
restoreViewTransitionName,
3131
measureInstance,
@@ -139,7 +139,7 @@ function applyViewTransitionToHostInstancesRecursive(
139139
collectMeasurements: null | Array<InstanceMeasurement>,
140140
stopAtNestedViewTransitions: boolean,
141141
): boolean {
142-
if (!supportsMutation) {
142+
if (!supportsViewTransition) {
143143
return false;
144144
}
145145
let inViewport = false;
@@ -201,7 +201,7 @@ function restoreViewTransitionOnHostInstances(
201201
child: null | Fiber,
202202
stopAtNestedViewTransitions: boolean,
203203
): void {
204-
if (!supportsMutation) {
204+
if (!supportsViewTransition) {
205205
return;
206206
}
207207
while (child !== null) {
@@ -648,7 +648,7 @@ function measureViewTransitionHostInstancesRecursive(
648648
previousMeasurements: null | Array<InstanceMeasurement>,
649649
stopAtNestedViewTransitions: boolean,
650650
): boolean {
651-
if (!supportsMutation) {
651+
if (!supportsViewTransition) {
652652
return true;
653653
}
654654
let inViewport = false;

packages/react-reconciler/src/ReactFiberCommitWork.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ import {
158158
supportsHydration,
159159
supportsResources,
160160
supportsSingletons,
161+
supportsViewTransition,
161162
clearSuspenseBoundary,
162163
clearSuspenseBoundaryFromContainer,
163164
createContainerChildSet,
@@ -3709,7 +3710,10 @@ function commitPassiveMountOnFiber(
37093710
}
37103711

37113712
if (isViewTransitionEligible) {
3712-
if (supportsMutation && rootViewTransitionNameCanceled) {
3713+
if (
3714+
supportsViewTransition &&
3715+
rootViewTransitionNameCanceled
3716+
) {
37133717
restoreRootViewTransitionName(finishedRoot.containerInfo);
37143718
}
37153719
}

packages/react-reconciler/src/ReactFiberConfigWithNoMutation.js

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -37,25 +37,5 @@ export const hideTextInstance = shim;
3737
export const unhideInstance = shim;
3838
export const unhideTextInstance = shim;
3939
export const clearContainer = shim;
40-
export const applyViewTransitionName = shim;
41-
export const restoreViewTransitionName = shim;
42-
export const cancelViewTransitionName = shim;
43-
export const cancelRootViewTransitionName = shim;
44-
export const restoreRootViewTransitionName = shim;
45-
export const cloneRootViewTransitionContainer = shim;
46-
export const removeRootViewTransitionClone = shim;
47-
export type InstanceMeasurement = null;
48-
export const measureInstance = shim;
49-
export const measureClonedInstance = shim;
50-
export const wasInstanceInViewport = shim;
51-
export const hasInstanceChanged = shim;
52-
export const hasInstanceAffectedParent = shim;
53-
export const startViewTransition = shim;
54-
export type RunningViewTransition = null;
55-
export const startGestureTransition = shim;
56-
export const stopViewTransition = shim;
57-
export const addViewTransitionFinishedListener = shim;
58-
export type ViewTransitionInstance = null | {name: string, ...};
59-
export const createViewTransitionInstance = shim;
6040
export type GestureTimeline = any;
6141
export const getCurrentGestureOffset = shim;
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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+
* @flow
8+
*/
9+
10+
// Renderers that don't support view transitions
11+
// can re-export everything from this module.
12+
13+
function shim(...args: any): empty {
14+
throw new Error(
15+
'The current renderer does not support view transitions. ' +
16+
'This error is likely caused by a bug in React. ' +
17+
'Please file an issue.',
18+
);
19+
}
20+
21+
// View Transitions (when unsupported)
22+
export const supportsViewTransition = false;
23+
export const applyViewTransitionName = shim;
24+
export const restoreViewTransitionName = shim;
25+
export const cancelViewTransitionName = shim;
26+
export const cancelRootViewTransitionName = shim;
27+
export const restoreRootViewTransitionName = shim;
28+
export const cloneRootViewTransitionContainer = shim;
29+
export const removeRootViewTransitionClone = shim;
30+
export type InstanceMeasurement = null;
31+
export const measureInstance = shim;
32+
export const measureClonedInstance = shim;
33+
export const wasInstanceInViewport = shim;
34+
export const hasInstanceChanged = shim;
35+
export const hasInstanceAffectedParent = shim;
36+
export const startViewTransition = shim;
37+
export type RunningViewTransition = null;
38+
export const startGestureTransition = shim;
39+
export const stopViewTransition = shim;
40+
export const addViewTransitionFinishedListener = shim;
41+
export type ViewTransitionInstance = null | {name: string, ...};
42+
export const createViewTransitionInstance = shim;

packages/react-reconciler/src/forks/ReactFiberConfig.custom.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ export const warnsIfNotActing = $$$config.warnsIfNotActing;
7373
export const supportsMutation = $$$config.supportsMutation;
7474
export const supportsPersistence = $$$config.supportsPersistence;
7575
export const supportsHydration = $$$config.supportsHydration;
76+
export const supportsViewTransition = $$$config.supportsViewTransition;
7677
export const getInstanceFromNode = $$$config.getInstanceFromNode;
7778
export const beforeActiveInstanceBlur = $$$config.beforeActiveInstanceBlur;
7879
export const afterActiveInstanceBlur = $$$config.afterActiveInstanceBlur;

packages/react-test-renderer/src/ReactFiberConfigTestHost.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ export const noTimeout: -1 = -1;
276276
// -------------------
277277

278278
export const supportsMutation = true;
279+
export const supportsViewTransition = false;
279280

280281
export function commitUpdate(
281282
instance: Instance,

scripts/error-codes/codes.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -566,5 +566,6 @@
566566
"578": "Already initialized Iterator.",
567567
"579": "Invalid data for bytes stream.",
568568
"580": "Server Function has too many bound arguments. Received %s but the limit is %s.",
569-
"581": "BigInt is too large. Received %s digits but the limit is %s."
569+
"581": "BigInt is too large. Received %s digits but the limit is %s.",
570+
"582": "The current renderer does not support view transitions. This error is likely caused by a bug in React. Please file an issue."
570571
}

0 commit comments

Comments
 (0)