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'; 7*d8d79196SBartosz Kaszubowskiimport { 8*d8d79196SBartosz Kaszubowski MethodDefinitionData, 9*d8d79196SBartosz Kaszubowski MethodSignatureData, 10*d8d79196SBartosz Kaszubowski PropData, 11*d8d79196SBartosz Kaszubowski} from '~/components/plugins/api/APIDataTypes'; 12299f02f2SBartosz Kaszubowskiimport { 13299f02f2SBartosz Kaszubowski CommentTextBlock, 14abded2bbSBartosz Kaszubowski listParams, 15dc379e46SBartosz Kaszubowski mdComponents, 16299f02f2SBartosz Kaszubowski renderParam, 17299f02f2SBartosz Kaszubowski resolveTypeName, 18299f02f2SBartosz Kaszubowski} from '~/components/plugins/api/APISectionUtils'; 19299f02f2SBartosz Kaszubowski 20299f02f2SBartosz Kaszubowskiexport type APISectionMethodsProps = { 21299f02f2SBartosz Kaszubowski data: MethodDefinitionData[]; 22299f02f2SBartosz Kaszubowski apiName?: string; 231b3dce65SBartosz Kaszubowski header?: string; 24299f02f2SBartosz Kaszubowski}; 25299f02f2SBartosz Kaszubowski 26*d8d79196SBartosz Kaszubowskiexport const renderMethod = ( 27*d8d79196SBartosz Kaszubowski { signatures = [] }: MethodDefinitionData | PropData, 28*d8d79196SBartosz Kaszubowski index?: number, 29299f02f2SBartosz Kaszubowski dataLength?: number, 30f128dd42SBartosz Kaszubowski apiName?: string, 31f128dd42SBartosz Kaszubowski header?: string 32299f02f2SBartosz Kaszubowski): JSX.Element[] => 33299f02f2SBartosz Kaszubowski signatures.map(({ name, parameters, comment, type }: MethodSignatureData) => ( 34299f02f2SBartosz Kaszubowski <div key={`method-signature-${name}-${parameters?.length || 0}`}> 35299f02f2SBartosz Kaszubowski <H3Code> 36299f02f2SBartosz Kaszubowski <InlineCode> 37c8c9d6e8SBartosz Kaszubowski {apiName && `${apiName}.`} 38abded2bbSBartosz Kaszubowski {header !== 'Hooks' ? `${name}(${listParams(parameters)})` : name} 39299f02f2SBartosz Kaszubowski </InlineCode> 40299f02f2SBartosz Kaszubowski </H3Code> 41ffc1cfa8SBartosz Kaszubowski <CommentTextBlock 42ffc1cfa8SBartosz Kaszubowski comment={comment} 43ffc1cfa8SBartosz Kaszubowski beforeContent={ 44c8c9d6e8SBartosz Kaszubowski parameters && ( 45ffc1cfa8SBartosz Kaszubowski <> 46ffc1cfa8SBartosz Kaszubowski <H4>Arguments</H4> 47ffc1cfa8SBartosz Kaszubowski <UL>{parameters?.map(renderParam)}</UL> 48ffc1cfa8SBartosz Kaszubowski </> 49c8c9d6e8SBartosz Kaszubowski ) 50ffc1cfa8SBartosz Kaszubowski } 51ffc1cfa8SBartosz Kaszubowski /> 52299f02f2SBartosz Kaszubowski {resolveTypeName(type) !== 'undefined' ? ( 53299f02f2SBartosz Kaszubowski <div> 54299f02f2SBartosz Kaszubowski <H4>Returns</H4> 55299f02f2SBartosz Kaszubowski <UL> 56299f02f2SBartosz Kaszubowski <LI returnType> 57299f02f2SBartosz Kaszubowski <InlineCode>{resolveTypeName(type)}</InlineCode> 58299f02f2SBartosz Kaszubowski </LI> 59299f02f2SBartosz Kaszubowski </UL> 60c8c9d6e8SBartosz Kaszubowski {comment?.returns && ( 61dc379e46SBartosz Kaszubowski <ReactMarkdown components={mdComponents}>{comment.returns}</ReactMarkdown> 62c8c9d6e8SBartosz Kaszubowski )} 63299f02f2SBartosz Kaszubowski </div> 64299f02f2SBartosz Kaszubowski ) : null} 65*d8d79196SBartosz Kaszubowski {index !== undefined ? index + 1 !== dataLength && <hr /> : null} 66299f02f2SBartosz Kaszubowski </div> 67299f02f2SBartosz Kaszubowski )); 68299f02f2SBartosz Kaszubowski 69558a63feSBartosz Kaszubowskiconst APISectionMethods = ({ data, apiName, header = 'Methods' }: APISectionMethodsProps) => 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