Skip to content

Commit 7af6f1b

Browse files
committed
old
1 parent 9d44895 commit 7af6f1b

File tree

3 files changed

+87
-22
lines changed

3 files changed

+87
-22
lines changed

packages/react-reconciler/src/ReactFiberCommitWork.old.js

Lines changed: 41 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ import {
138138
enqueuePendingPassiveProfilerEffect,
139139
restorePendingUpdaters,
140140
addTransitionStartCallbackToPendingTransition,
141+
addTransitionProgressCallbackToPendingTransition,
141142
addTransitionCompleteCallbackToPendingTransition,
142143
addMarkerCompleteCallbackToPendingTransition,
143144
setIsRunningInsertionEffect,
@@ -1110,20 +1111,46 @@ function commitTransitionProgress(offscreenFiber: Fiber) {
11101111
// The suspense boundaries was just hidden. Add the boundary
11111112
// to the pending boundary set if it's there
11121113
if (pendingMarkers !== null) {
1113-
pendingMarkers.forEach(pendingBoundaries => {
1114-
pendingBoundaries.set(offscreenInstance, {
1115-
name,
1116-
});
1114+
pendingMarkers.forEach(markerInstance => {
1115+
const pendingBoundaries = markerInstance.pendingSuspenseBoundaries;
1116+
if (
1117+
pendingBoundaries !== null &&
1118+
!pendingBoundaries.has(offscreenInstance)
1119+
) {
1120+
pendingBoundaries.set(offscreenInstance, {
1121+
name,
1122+
});
1123+
if (markerInstance.transitions !== null) {
1124+
markerInstance.transitions.forEach(transition => {
1125+
addTransitionProgressCallbackToPendingTransition(
1126+
transition,
1127+
pendingBoundaries,
1128+
);
1129+
});
1130+
}
1131+
}
11171132
});
11181133
}
11191134
} else if (wasHidden && !isHidden) {
11201135
// The suspense boundary went from hidden to visible. Remove
11211136
// the boundary from the pending suspense boundaries set
11221137
// if it's there
11231138
if (pendingMarkers !== null) {
1124-
pendingMarkers.forEach(pendingBoundaries => {
1125-
if (pendingBoundaries.has(offscreenInstance)) {
1139+
pendingMarkers.forEach(markerInstance => {
1140+
const pendingBoundaries = markerInstance.pendingSuspenseBoundaries;
1141+
if (
1142+
pendingBoundaries !== null &&
1143+
pendingBoundaries.has(offscreenInstance)
1144+
) {
11261145
pendingBoundaries.delete(offscreenInstance);
1146+
if (markerInstance.transitions !== null) {
1147+
markerInstance.transitions.forEach(transition => {
1148+
addTransitionProgressCallbackToPendingTransition(
1149+
transition,
1150+
pendingBoundaries,
1151+
);
1152+
});
1153+
}
11271154
}
11281155
});
11291156
}
@@ -2822,17 +2849,13 @@ function commitPassiveMountOnFiber(
28222849
clearTransitionsForLanes(finishedRoot, committedLanes);
28232850
}
28242851

2825-
incompleteTransitions.forEach(
2826-
({pendingSuspenseBoundaries}, transition) => {
2827-
if (
2828-
pendingSuspenseBoundaries === null ||
2829-
pendingSuspenseBoundaries.size === 0
2830-
) {
2831-
addTransitionCompleteCallbackToPendingTransition(transition);
2832-
incompleteTransitions.delete(transition);
2833-
}
2834-
},
2835-
);
2852+
incompleteTransitions.forEach((markerInstance, transition) => {
2853+
const pendingBoundaries = markerInstance.pendingSuspenseBoundaries;
2854+
if (pendingBoundaries === null || pendingBoundaries.size === 0) {
2855+
addTransitionCompleteCallbackToPendingTransition(transition);
2856+
incompleteTransitions.delete(transition);
2857+
}
2858+
});
28362859

28372860
clearTransitionsForLanes(finishedRoot, committedLanes);
28382861
}
@@ -2909,9 +2932,7 @@ function commitPassiveMountOnFiber(
29092932
instance.pendingMarkers = new Set();
29102933
}
29112934

2912-
instance.pendingMarkers.add(
2913-
markerInstance.pendingSuspenseBoundaries,
2914-
);
2935+
instance.pendingMarkers.add(markerInstance);
29152936
}
29162937
});
29172938
}

packages/react-reconciler/src/ReactFiberTracingMarkerComponent.old.js

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export type MarkerTransition = {
2424

2525
export type PendingTransitionCallbacks = {
2626
transitionStart: Array<Transition> | null,
27+
transitionProgress: Map<Transition, PendingSuspenseBoundaries> | null,
2728
transitionComplete: Array<Transition> | null,
2829
markerComplete: Array<MarkerTransition> | null,
2930
};
@@ -76,6 +77,19 @@ export function processTransitionCallbacks(
7677
});
7778
}
7879

80+
const transitionProgress = pendingTransitions.transitionProgress;
81+
const onTransitionProgress = callbacks.onTransitionProgress;
82+
if (onTransitionProgress != null && transitionProgress !== null) {
83+
transitionProgress.forEach((pending, transition) => {
84+
onTransitionProgress(
85+
transition.name,
86+
transition.startTime,
87+
endTime,
88+
Array.from(pending.values()),
89+
);
90+
});
91+
}
92+
7993
const transitionComplete = pendingTransitions.transitionComplete;
8094
if (transitionComplete !== null) {
8195
transitionComplete.forEach(transition => {
@@ -117,10 +131,11 @@ export function pushRootMarkerInstance(workInProgress: Fiber): void {
117131
if (transitions !== null) {
118132
transitions.forEach(transition => {
119133
if (!root.incompleteTransitions.has(transition)) {
120-
root.incompleteTransitions.set(transition, {
134+
const markerInstance: TracingMarkerInstance = {
121135
transitions: new Set([transition]),
122136
pendingSuspenseBoundaries: null,
123-
});
137+
};
138+
root.incompleteTransitions.set(transition, markerInstance);
124139
}
125140
});
126141
}

packages/react-reconciler/src/ReactFiberWorkLoop.old.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import type {EventPriority} from './ReactEventPriorities.old';
1818
import type {
1919
PendingTransitionCallbacks,
2020
MarkerTransition,
21+
PendingSuspenseBoundaries,
2122
Transition,
2223
} from './ReactFiberTracingMarkerComponent.old';
2324

@@ -349,6 +350,7 @@ export function addTransitionStartCallbackToPendingTransition(
349350
if (currentPendingTransitionCallbacks === null) {
350351
currentPendingTransitionCallbacks = {
351352
transitionStart: [],
353+
transitionProgress: null,
352354
transitionComplete: null,
353355
markerComplete: null,
354356
};
@@ -369,6 +371,7 @@ export function addMarkerCompleteCallbackToPendingTransition(
369371
if (currentPendingTransitionCallbacks === null) {
370372
currentPendingTransitionCallbacks = {
371373
transitionStart: null,
374+
transitionProgress: null,
372375
transitionComplete: null,
373376
markerComplete: [],
374377
};
@@ -382,13 +385,39 @@ export function addMarkerCompleteCallbackToPendingTransition(
382385
}
383386
}
384387

388+
export function addTransitionProgressCallbackToPendingTransition(
389+
transition: Transition,
390+
boundaries: PendingSuspenseBoundaries,
391+
) {
392+
if (enableTransitionTracing) {
393+
if (currentPendingTransitionCallbacks === null) {
394+
currentPendingTransitionCallbacks = {
395+
transitionStart: null,
396+
transitionProgress: new Map(),
397+
transitionComplete: null,
398+
markerComplete: null,
399+
};
400+
}
401+
402+
if (currentPendingTransitionCallbacks.transitionProgress === null) {
403+
currentPendingTransitionCallbacks.transitionProgress = new Map();
404+
}
405+
406+
currentPendingTransitionCallbacks.transitionProgress.set(
407+
transition,
408+
boundaries,
409+
);
410+
}
411+
}
412+
385413
export function addTransitionCompleteCallbackToPendingTransition(
386414
transition: Transition,
387415
) {
388416
if (enableTransitionTracing) {
389417
if (currentPendingTransitionCallbacks === null) {
390418
currentPendingTransitionCallbacks = {
391419
transitionStart: null,
420+
transitionProgress: null,
392421
transitionComplete: [],
393422
markerComplete: null,
394423
};

0 commit comments

Comments
 (0)