import { CodeBlock } from '~/components/base/code'; import { TypeDefinitionData } from '~/components/plugins/api/APIDataTypes'; import { resolveTypeName } from '~/components/plugins/api/APISectionUtils'; import { CODE } from '~/ui/components/Text'; const typeDefinitionContainsObject = (typDef: TypeDefinitionData) => typDef.type === 'reflection' && typDef.declaration?.children; type APIDataTypeProps = { typeDefinition: TypeDefinitionData; inline?: boolean }; export const APIDataType = ({ typeDefinition, inline = true }: APIDataTypeProps) => { const { type, declaration, types, elementType, typeArguments } = typeDefinition; const isObjectDefinition = type === 'reflection' && declaration?.children?.length; const isIntersectionWithObject = type === 'intersection' && types?.filter(typeDefinitionContainsObject).length; const isUnionWithObject = (type === 'union' || (elementType && elementType.type === 'union')) && types?.filter(typeDefinitionContainsObject).length; const isObjectWrapped = type === 'reference' && typeArguments && typeArguments?.filter(typeDefinitionContainsObject).length; return isObjectDefinition || isIntersectionWithObject || isUnionWithObject || isObjectWrapped ? ( {resolveTypeName(typeDefinition)} ) : ( {resolveTypeName(typeDefinition)} ); };