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, 10*abded2bbSBartosz Kaszubowski listParams, 1184745a05SBartosz Kaszubowski mdRenderers, 12299f02f2SBartosz Kaszubowski renderParam, 13299f02f2SBartosz Kaszubowski resolveTypeName, 14299f02f2SBartosz Kaszubowski} from '~/components/plugins/api/APISectionUtils'; 15299f02f2SBartosz Kaszubowski 16299f02f2SBartosz Kaszubowskiexport type APISectionMethodsProps = { 17299f02f2SBartosz Kaszubowski data: MethodDefinitionData[]; 18299f02f2SBartosz Kaszubowski apiName?: string; 191b3dce65SBartosz Kaszubowski header?: string; 20299f02f2SBartosz Kaszubowski}; 21299f02f2SBartosz Kaszubowski 22299f02f2SBartosz Kaszubowskiconst renderMethod = ( 23299f02f2SBartosz Kaszubowski { signatures }: MethodDefinitionData, 24299f02f2SBartosz Kaszubowski index: number, 25299f02f2SBartosz Kaszubowski dataLength?: number, 26f128dd42SBartosz Kaszubowski apiName?: string, 27f128dd42SBartosz Kaszubowski header?: string 28299f02f2SBartosz Kaszubowski): JSX.Element[] => 29299f02f2SBartosz Kaszubowski signatures.map(({ name, parameters, comment, type }: MethodSignatureData) => ( 30299f02f2SBartosz Kaszubowski <div key={`method-signature-${name}-${parameters?.length || 0}`}> 31299f02f2SBartosz Kaszubowski <H3Code> 32299f02f2SBartosz Kaszubowski <InlineCode> 33299f02f2SBartosz Kaszubowski {apiName ? `${apiName}.` : ''} 34*abded2bbSBartosz Kaszubowski {header !== 'Hooks' ? `${name}(${listParams(parameters)})` : name} 35299f02f2SBartosz Kaszubowski </InlineCode> 36299f02f2SBartosz Kaszubowski </H3Code> 37ffc1cfa8SBartosz Kaszubowski <CommentTextBlock 38ffc1cfa8SBartosz Kaszubowski comment={comment} 39ffc1cfa8SBartosz Kaszubowski beforeContent={ 40ffc1cfa8SBartosz Kaszubowski parameters ? ( 41ffc1cfa8SBartosz Kaszubowski <> 42ffc1cfa8SBartosz Kaszubowski <H4>Arguments</H4> 43ffc1cfa8SBartosz Kaszubowski <UL>{parameters?.map(renderParam)}</UL> 44ffc1cfa8SBartosz Kaszubowski </> 45ffc1cfa8SBartosz Kaszubowski ) : undefined 46ffc1cfa8SBartosz Kaszubowski } 47ffc1cfa8SBartosz Kaszubowski /> 48299f02f2SBartosz Kaszubowski {resolveTypeName(type) !== 'undefined' ? ( 49299f02f2SBartosz Kaszubowski <div> 50299f02f2SBartosz Kaszubowski <H4>Returns</H4> 51299f02f2SBartosz Kaszubowski <UL> 52299f02f2SBartosz Kaszubowski <LI returnType> 53299f02f2SBartosz Kaszubowski <InlineCode>{resolveTypeName(type)}</InlineCode> 54299f02f2SBartosz Kaszubowski </LI> 55299f02f2SBartosz Kaszubowski </UL> 56299f02f2SBartosz Kaszubowski {comment?.returns ? ( 5784745a05SBartosz Kaszubowski <ReactMarkdown renderers={mdRenderers}>{comment.returns}</ReactMarkdown> 58299f02f2SBartosz Kaszubowski ) : null} 59299f02f2SBartosz Kaszubowski </div> 60299f02f2SBartosz Kaszubowski ) : null} 61299f02f2SBartosz Kaszubowski {index + 1 !== dataLength ? <hr /> : null} 62299f02f2SBartosz Kaszubowski </div> 63299f02f2SBartosz Kaszubowski )); 64299f02f2SBartosz Kaszubowski 651b3dce65SBartosz Kaszubowskiconst APISectionMethods: React.FC<APISectionMethodsProps> = ({ 661b3dce65SBartosz Kaszubowski data, 671b3dce65SBartosz Kaszubowski apiName, 681b3dce65SBartosz Kaszubowski header = 'Methods', 691b3dce65SBartosz Kaszubowski}) => 70299f02f2SBartosz Kaszubowski data?.length ? ( 71299f02f2SBartosz Kaszubowski <> 721b3dce65SBartosz Kaszubowski <H2 key="methods-header">{header}</H2> 73f128dd42SBartosz Kaszubowski {data.map((method, index) => renderMethod(method, index, data.length, apiName, header))} 74299f02f2SBartosz Kaszubowski </> 75299f02f2SBartosz Kaszubowski ) : null; 76299f02f2SBartosz Kaszubowski 77299f02f2SBartosz Kaszubowskiexport default APISectionMethods; 78