import { Badge, Group, Stack, Title } from '@mantine/core'; import { HyperlinkedText } from './HyperlinkedText'; import { ParameterTable } from './ParameterTable'; import { TSDoc } from './tsdoc/TSDoc'; import type { DocMethod } from '~/DocModel/DocMethod'; import type { DocMethodSignature } from '~/DocModel/DocMethodSignature'; import { Visibility } from '~/DocModel/Visibility'; type MethodResolvable = ReturnType | ReturnType; function getShorthandName(data: MethodResolvable) { return `${data.name}${data.optional ? '?' : ''}(${data.parameters.reduce((prev, cur, index) => { if (index === 0) { return `${prev}${cur.isOptional ? `[${cur.name}]` : cur.name}`; } return `${prev}, ${cur.isOptional ? `[${cur.name}]` : cur.name}`; }, '')})`; } export function MethodItem({ data }: { data: MethodResolvable }) { const method = data as ReturnType; return ( 1 ? `:${data.overloadIndex}` : ''}`} className="scroll-mt-30" spacing="xs" > {data.deprecated ? ( Deprecated ) : null} {data.kind === 'Method' && method.visibility === Visibility.Protected ? ( Protected ) : null} {data.kind === 'Method' && method.static ? Static : null} {`${getShorthandName(data)}`} : <HyperlinkedText tokens={data.returnTypeTokens} /> {data.deprecated ? : null} {data.summary ? : null} {data.remarks ? : null} {data.comment ? : null} {data.parameters.length ? : null} ); }