import {REACT_PORTAL_TYPE, REACT_OPTIMISTIC_KEY} from 'shared/ReactSymbols';
import {checkKeyStringCoercion} from 'shared/CheckStringCoercion';
import type {
ReactNodeList,
ReactPortal,
ReactOptimisticKey,
} from 'shared/ReactTypes';
export function createPortal(
children: ReactNodeList,
containerInfo: any,
implementation: any,
key: ?string | ReactOptimisticKey = null,
): ReactPortal {
let resolvedKey;
if (key == null) {
resolvedKey = null;
} else if (key === REACT_OPTIMISTIC_KEY) {
resolvedKey = REACT_OPTIMISTIC_KEY;
} else {
if (__DEV__) {
checkKeyStringCoercion(key);
}
resolvedKey = '' + key;
}
return {
$$typeof: REACT_PORTAL_TYPE,
key: resolvedKey,
children,
containerInfo,
implementation,
};
}