import * as _ from 'lodash';
import * as React from 'react';
import {DocsInfo} from 'ts/pages/documentation/docs_info';
import {MethodSignature} from 'ts/pages/documentation/method_signature';
import {Type} from 'ts/pages/documentation/type';
import {CustomType, TypeDocTypes} from 'ts/types';
interface InterfaceProps {
type: CustomType;
sectionName: string;
docsInfo: DocsInfo;
}
export function Interface(props: InterfaceProps) {
const type = props.type;
const properties = _.map(type.children, property => {
return (
{property.name}:{' '}
{property.type.typeDocType !== TypeDocTypes.Reflection ?
:
},
);
});
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}
{`}`}
);
}