import type {FiberRoot} from './ReactInternalTypes';
import type {TransitionTypes} from 'react/src/ReactTransitionType';
import {enableViewTransition} from 'shared/ReactFeatureFlags';
import {includesTransitionLane} from './ReactFiberLane';
export function queueTransitionTypes(
root: FiberRoot,
transitionTypes: TransitionTypes,
): void {
if (enableViewTransition) {
if (includesTransitionLane(root.pendingLanes)) {
let queued = root.transitionTypes;
if (queued === null) {
queued = root.transitionTypes = [];
}
for (let i = 0; i < transitionTypes.length; i++) {
const transitionType = transitionTypes[i];
if (queued.indexOf(transitionType) === -1) {
queued.push(transitionType);
}
}
}
}
}
export let entangledTransitionTypes: null | TransitionTypes = null;
export function entangleAsyncTransitionTypes(
transitionTypes: TransitionTypes,
): void {
if (enableViewTransition) {
let queued = entangledTransitionTypes;
if (queued === null) {
queued = entangledTransitionTypes = [];
}
for (let i = 0; i < transitionTypes.length; i++) {
const transitionType = transitionTypes[i];
if (queued.indexOf(transitionType) === -1) {
queued.push(transitionType);
}
}
}
}
export function clearEntangledAsyncTransitionTypes() {
entangledTransitionTypes = null;
}
export function claimQueuedTransitionTypes(
root: FiberRoot,
): null | TransitionTypes {
const claimed = root.transitionTypes;
root.transitionTypes = null;
return claimed;
}