Skip to content

Commit 6d2b648

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

10 files changed

Lines changed: 58 additions & 406 deletions

File tree

packages/react-art/src/ReactFiberConfigART.js

Lines changed: 1 addition & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ function applyTextProps(instance, props, prevProps = {}) {
249249
}
250250
}
251251

252+
export * from 'react-reconciler/src/ReactFiberConfigWithNoViewTransition';
252253
export * from 'react-reconciler/src/ReactFiberConfigWithNoPersistence';
253254
export * from 'react-reconciler/src/ReactFiberConfigWithNoHydration';
254255
export * from 'react-reconciler/src/ReactFiberConfigWithNoScopes';
@@ -484,92 +485,6 @@ export function unhideTextInstance(textInstance, text): void {
484485
// Noop
485486
}
486487

487-
export function applyViewTransitionName(instance, name, className) {
488-
// Noop
489-
}
490-
491-
export function restoreViewTransitionName(instance, props) {
492-
// Noop
493-
}
494-
495-
export function cancelViewTransitionName(instance, name, props) {
496-
// Noop
497-
}
498-
499-
export function cancelRootViewTransitionName(rootContainer) {
500-
// Noop
501-
}
502-
503-
export function restoreRootViewTransitionName(rootContainer) {
504-
// Noop
505-
}
506-
507-
export function cloneRootViewTransitionContainer(rootContainer) {
508-
throw new Error('Not implemented.');
509-
}
510-
511-
export function removeRootViewTransitionClone(rootContainer, clone) {
512-
throw new Error('Not implemented.');
513-
}
514-
515-
export type InstanceMeasurement = null;
516-
517-
export function measureInstance(instance) {
518-
return null;
519-
}
520-
521-
export function measureClonedInstance(instance) {
522-
return null;
523-
}
524-
525-
export function wasInstanceInViewport(measurement): boolean {
526-
return true;
527-
}
528-
529-
export function hasInstanceChanged(oldMeasurement, newMeasurement): boolean {
530-
return false;
531-
}
532-
533-
export function hasInstanceAffectedParent(
534-
oldMeasurement,
535-
newMeasurement,
536-
): boolean {
537-
return false;
538-
}
539-
540-
export function startViewTransition() {
541-
return null;
542-
}
543-
544-
export type RunningViewTransition = null;
545-
546-
export function startGestureTransition() {
547-
return null;
548-
}
549-
550-
export function stopViewTransition(transition: RunningViewTransition) {}
551-
552-
export function addViewTransitionFinishedListener(
553-
transition: RunningViewTransition,
554-
callback: () => void,
555-
) {
556-
callback();
557-
}
558-
559-
export type ViewTransitionInstance = null | {name: string, ...};
560-
561-
export function createViewTransitionInstance(
562-
name: string,
563-
): ViewTransitionInstance {
564-
return null;
565-
}
566-
567-
export type GestureTimeline = null;
568-
569-
export function getCurrentGestureOffset(provider: GestureTimeline): number {
570-
throw new Error('startGestureTransition is not yet supported in react-art.');
571-
}
572-
573488
export function clearContainer(container) {
574489
// TODO Implement this
575490
}

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 & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
*/
99

1010
import type {InspectorData, TouchedViewDataAtPoint} from './ReactNativeTypes';
11-
import type {TransitionTypes} from 'react/src/ReactTransitionType';
1211

1312
// Modules provided by RN:
1413
import {
@@ -35,8 +34,6 @@ import {
3534
} from 'react-reconciler/src/ReactEventPriorities';
3635
import type {Fiber} from 'react-reconciler/src/ReactInternalTypes';
3736

38-
import {enableProfilerTimer} from 'shared/ReactFeatureFlags';
39-
4037
import {REACT_CONTEXT_TYPE} from 'shared/ReactSymbols';
4138
import type {ReactContext} from 'shared/ReactTypes';
4239

@@ -112,6 +109,7 @@ function recursivelyUncacheFiberNode(node: Instance | TextInstance) {
112109
}
113110
}
114111

112+
export * from 'react-reconciler/src/ReactFiberConfigWithNoViewTransition';
115113
export * from 'react-reconciler/src/ReactFiberConfigWithNoPersistence';
116114
export * from 'react-reconciler/src/ReactFiberConfigWithNoHydration';
117115
export * from 'react-reconciler/src/ReactFiberConfigWithNoScopes';
@@ -590,152 +588,6 @@ export function unhideInstance(instance: Instance, props: Props): void {
590588
);
591589
}
592590

593-
export function applyViewTransitionName(
594-
instance: Instance,
595-
name: string,
596-
className: ?string,
597-
): void {
598-
// Not yet implemented
599-
}
600-
601-
export function restoreViewTransitionName(
602-
instance: Instance,
603-
props: Props,
604-
): void {
605-
// Not yet implemented
606-
}
607-
608-
export function cancelViewTransitionName(
609-
instance: Instance,
610-
name: string,
611-
props: Props,
612-
): void {
613-
// Not yet implemented
614-
}
615-
616-
export function cancelRootViewTransitionName(rootContainer: Container): void {
617-
// Not yet implemented
618-
}
619-
620-
export function restoreRootViewTransitionName(rootContainer: Container): void {
621-
// Not yet implemented
622-
}
623-
624-
export function cloneRootViewTransitionContainer(
625-
rootContainer: Container,
626-
): Instance {
627-
throw new Error('Not implemented.');
628-
}
629-
630-
export function removeRootViewTransitionClone(
631-
rootContainer: Container,
632-
clone: Instance,
633-
): void {
634-
throw new Error('Not implemented.');
635-
}
636-
637-
export type InstanceMeasurement = null;
638-
639-
export function measureInstance(instance: Instance): InstanceMeasurement {
640-
// This heuristic is better implemented at the native layer.
641-
return null;
642-
}
643-
644-
export function measureClonedInstance(instance: Instance): InstanceMeasurement {
645-
return null;
646-
}
647-
648-
export function wasInstanceInViewport(
649-
measurement: InstanceMeasurement,
650-
): boolean {
651-
return true;
652-
}
653-
654-
export function hasInstanceChanged(
655-
oldMeasurement: InstanceMeasurement,
656-
newMeasurement: InstanceMeasurement,
657-
): boolean {
658-
return false;
659-
}
660-
661-
export function hasInstanceAffectedParent(
662-
oldMeasurement: InstanceMeasurement,
663-
newMeasurement: InstanceMeasurement,
664-
): boolean {
665-
return false;
666-
}
667-
668-
export function startViewTransition(
669-
suspendedState: null | SuspendedState,
670-
rootContainer: Container,
671-
transitionTypes: null | TransitionTypes,
672-
mutationCallback: () => void,
673-
layoutCallback: () => void,
674-
afterMutationCallback: () => void,
675-
spawnedWorkCallback: () => void,
676-
passiveCallback: () => mixed,
677-
errorCallback: mixed => void,
678-
blockedCallback: string => void, // Profiling-only
679-
finishedAnimation: () => void, // Profiling-only
680-
): null | RunningViewTransition {
681-
mutationCallback();
682-
layoutCallback();
683-
// Skip afterMutationCallback(). We don't need it since we're not animating.
684-
spawnedWorkCallback();
685-
if (enableProfilerTimer) {
686-
finishedAnimation();
687-
}
688-
// Skip passiveCallback(). Spawned work will schedule a task.
689-
return null;
690-
}
691-
692-
export type RunningViewTransition = null;
693-
694-
export function startGestureTransition(
695-
suspendedState: null | SuspendedState,
696-
rootContainer: Container,
697-
timeline: GestureTimeline,
698-
rangeStart: number,
699-
rangeEnd: number,
700-
transitionTypes: null | TransitionTypes,
701-
mutationCallback: () => void,
702-
animateCallback: () => void,
703-
errorCallback: mixed => void,
704-
finishedAnimation: () => void, // Profiling-only
705-
): null | RunningViewTransition {
706-
mutationCallback();
707-
animateCallback();
708-
if (enableProfilerTimer) {
709-
finishedAnimation();
710-
}
711-
return null;
712-
}
713-
714-
export function stopViewTransition(transition: RunningViewTransition) {}
715-
716-
export function addViewTransitionFinishedListener(
717-
transition: RunningViewTransition,
718-
callback: () => void,
719-
) {
720-
callback();
721-
}
722-
723-
export type ViewTransitionInstance = null | {name: string, ...};
724-
725-
export function createViewTransitionInstance(
726-
name: string,
727-
): ViewTransitionInstance {
728-
return null;
729-
}
730-
731-
export type GestureTimeline = null;
732-
733-
export function getCurrentGestureOffset(provider: GestureTimeline): number {
734-
throw new Error(
735-
'startGestureTransition is not yet supported in React Native.',
736-
);
737-
}
738-
739591
export function clearContainer(container: Container): void {
740592
// TODO Implement this for React Native
741593
// UIManager does not expose a "remove all" type method.

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;

0 commit comments

Comments
 (0)