import {APIMember, APIMethod} from '@sanity/tsdoc' import {Box, Card, Code, Flex, Label, Stack} from '@sanity/ui' import {useMemo} from 'react' import {CommentBox, CommentReturnType, CommentSummary} from '../../comment' import {PortableText} from '../../comment/PortableText' import {TSDocCode} from '../TSDocCode' import {APIMemberWithInheritance} from './_types' import {MemberInheritedFrom} from './MemberInheritedFrom' import {TSMemberReleaseTag} from './TSMemberReleaseTag' export function TSMethodMember(props: { data: APIMemberWithInheritance member: APIMember }): React.ReactNode { const {data, member} = props const {comment, releaseTag} = data const title = useMemo(() => { let t = data.isStatic ? `${member.name}.` : '' t += `${data.name}(` t += data.parameters?.map((p) => p.name).join(', ') || '' t += `)` return t }, [data, member]) return ( {title} {comment?.summary && ( )} {data.inheritedFrom && ( )} {/* Parameters */} {data.parameters && data.parameters.length > 0 && ( {data.parameters.map((param, idx) => { const paramComment = comment?.parameters?.[idx]?.content return ( {paramComment && ( )} ) })} )} {/* Return type */} {data.returnType && data.returnType.length > 0 && ( {comment && ( )} )} ) }