1299f02f2SBartosz Kaszubowskiimport React from 'react'; 2299f02f2SBartosz Kaszubowskiimport ReactMarkdown from 'react-markdown'; 3299f02f2SBartosz Kaszubowski 4299f02f2SBartosz Kaszubowskiimport { InlineCode } from '~/components/base/code'; 5299f02f2SBartosz Kaszubowskiimport { LI, UL } from '~/components/base/list'; 6299f02f2SBartosz Kaszubowskiimport { H2, H3Code, H4 } from '~/components/plugins/Headings'; 7299f02f2SBartosz Kaszubowskiimport { MethodDefinitionData, MethodSignatureData } from '~/components/plugins/api/APIDataTypes'; 8299f02f2SBartosz Kaszubowskiimport { 9299f02f2SBartosz Kaszubowski CommentTextBlock, 1084745a05SBartosz Kaszubowski mdRenderers, 11299f02f2SBartosz Kaszubowski renderParam, 12299f02f2SBartosz Kaszubowski resolveTypeName, 13299f02f2SBartosz Kaszubowski} from '~/components/plugins/api/APISectionUtils'; 14299f02f2SBartosz Kaszubowski 15299f02f2SBartosz Kaszubowskiexport type APISectionMethodsProps = { 16299f02f2SBartosz Kaszubowski data: MethodDefinitionData[]; 17299f02f2SBartosz Kaszubowski apiName?: string; 181b3dce65SBartosz Kaszubowski header?: string; 19299f02f2SBartosz Kaszubowski}; 20299f02f2SBartosz Kaszubowski 21299f02f2SBartosz Kaszubowskiconst renderMethod = ( 22299f02f2SBartosz Kaszubowski { signatures }: MethodDefinitionData, 23299f02f2SBartosz Kaszubowski index: number, 24299f02f2SBartosz Kaszubowski dataLength?: number, 25299f02f2SBartosz Kaszubowski apiName?: string 26299f02f2SBartosz Kaszubowski): JSX.Element[] => 27299f02f2SBartosz Kaszubowski signatures.map(({ name, parameters, comment, type }: MethodSignatureData) => ( 28299f02f2SBartosz Kaszubowski <div key={`method-signature-${name}-${parameters?.length || 0}`}> 29299f02f2SBartosz Kaszubowski <H3Code> 30299f02f2SBartosz Kaszubowski <InlineCode> 31299f02f2SBartosz Kaszubowski {apiName ? `${apiName}.` : ''} 32299f02f2SBartosz Kaszubowski {name}({parameters?.map(param => param.name).join(', ')}) 33299f02f2SBartosz Kaszubowski </InlineCode> 34299f02f2SBartosz Kaszubowski </H3Code> 35*ffc1cfa8SBartosz Kaszubowski <CommentTextBlock 36*ffc1cfa8SBartosz Kaszubowski comment={comment} 37*ffc1cfa8SBartosz Kaszubowski beforeContent={ 38*ffc1cfa8SBartosz Kaszubowski parameters ? ( 39*ffc1cfa8SBartosz Kaszubowski <> 40*ffc1cfa8SBartosz Kaszubowski <H4>Arguments</H4> 41*ffc1cfa8SBartosz Kaszubowski <UL>{parameters?.map(renderParam)}</UL> 42*ffc1cfa8SBartosz Kaszubowski </> 43*ffc1cfa8SBartosz Kaszubowski ) : undefined 44*ffc1cfa8SBartosz Kaszubowski } 45*ffc1cfa8SBartosz Kaszubowski /> 46299f02f2SBartosz Kaszubowski {resolveTypeName(type) !== 'undefined' ? ( 47299f02f2SBartosz Kaszubowski <div> 48299f02f2SBartosz Kaszubowski <H4>Returns</H4> 49299f02f2SBartosz Kaszubowski <UL> 50299f02f2SBartosz Kaszubowski <LI returnType> 51299f02f2SBartosz Kaszubowski <InlineCode>{resolveTypeName(type)}</InlineCode> 52299f02f2SBartosz Kaszubowski </LI> 53299f02f2SBartosz Kaszubowski </UL> 54299f02f2SBartosz Kaszubowski {comment?.returns ? ( 5584745a05SBartosz Kaszubowski <ReactMarkdown renderers={mdRenderers}>{comment.returns}</ReactMarkdown> 56299f02f2SBartosz Kaszubowski ) : null} 57299f02f2SBartosz Kaszubowski </div> 58299f02f2SBartosz Kaszubowski ) : null} 59299f02f2SBartosz Kaszubowski {index + 1 !== dataLength ? <hr /> : null} 60299f02f2SBartosz Kaszubowski </div> 61299f02f2SBartosz Kaszubowski )); 62299f02f2SBartosz Kaszubowski 631b3dce65SBartosz Kaszubowskiconst APISectionMethods: React.FC<APISectionMethodsProps> = ({ 641b3dce65SBartosz Kaszubowski data, 651b3dce65SBartosz Kaszubowski apiName, 661b3dce65SBartosz Kaszubowski header = 'Methods', 671b3dce65SBartosz Kaszubowski}) => 68299f02f2SBartosz Kaszubowski data?.length ? ( 69299f02f2SBartosz Kaszubowski <> 701b3dce65SBartosz Kaszubowski <H2 key="methods-header">{header}</H2> 71299f02f2SBartosz Kaszubowski {data.map((method, index) => renderMethod(method, index, data.length, apiName))} 72299f02f2SBartosz Kaszubowski </> 73299f02f2SBartosz Kaszubowski ) : null; 74299f02f2SBartosz Kaszubowski 75299f02f2SBartosz Kaszubowskiexport default APISectionMethods; 76