import React from 'react';
import type { JSONOutput } from 'typedoc';
import { TokenPunctuation, TokenPrimitive } from './tokens';
import Indent from './Indent';
import renderType from './renderType';
import renderSignatureParams from './renderSignatureParams';
import Params from './Params';
import renderTypeParameters from './renderTypeParameters';
export default function renderFunctionSignature(
signature: JSONOutput.SignatureReflection,
params: Params
) {
if (!signature.type) {
console.warn('Did not render signature', signature);
}
const shouldBreak = signature.parameters?.length > 0;
return (
<>
{signature.typeParameter &&
renderTypeParameters(signature.typeParameter, params)}
(
{shouldBreak &&
}
{renderSignatureParams(signature, shouldBreak, params.withIndent())}
{shouldBreak &&
}
{shouldBreak && }
){' '}
{': '}{' '}
{signature.type ? (
renderType(signature.type, params)
) : (
void
)}
>
);
}