import * as _ from 'lodash'; import * as React from 'react'; import { CustomType, TypeDefinitionByName } from '@0x/types'; import { DocsInfo } from '../docs_info'; import { Signature } from './signature'; import { Type } from './type'; const defaultProps = {}; export interface InterfaceProps { type: CustomType; sectionName: string; docsInfo: DocsInfo; typeDefinitionByName: TypeDefinitionByName; isInPopover: boolean; } export const Interface: React.SFC = (props: InterfaceProps): any => { const type = props.type; const properties = _.map(type.children, (property, i) => { 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}
{`}`}
); }; Interface.defaultProps = defaultProps;