import * as _ from 'lodash';
import * as React from 'react';
import { DocsInfo } from '../docs_info';
import { CustomType, TypeDefinitionByName } from '../types';
import { Signature } from './signature';
import { Type } from './type';
export interface InterfaceProps {
type: CustomType;
sectionName: string;
docsInfo: DocsInfo;
typeDefinitionByName: TypeDefinitionByName;
}
export const Interface = (props: InterfaceProps) => {
const type = props.type;
const properties = _.map(type.children, property => {
return (
{property.name}:{' '}
{property.type && !_.isUndefined(property.type.method) ? (
) : (
)},
);
});
const hasIndexSignature = !_.isUndefined(type.indexSignature);
if (hasIndexSignature) {
const is = type.indexSignature;
const param = (
{is.keyName}:{' '}
);
properties.push(
[{param}]: {is.valueName},
,
);
}
const propertyList = _.reduce(properties, (prev: React.ReactNode, curr: React.ReactNode) => {
return [prev, '\n\t', curr];
});
return (
{`{`}
{'\t'}
{propertyList}
{`}`}
);
};