in www/src/templates/component.js [137:195]
renderType(prop) {
let type = prop.type || {};
let name = getDisplayTypeName(type.name);
let doclets = prop.doclets || {};
switch (name) {
case 'node':
return 'any';
case 'function':
return 'Function';
case 'elementType':
return 'ReactClass<any>';
case 'dateFormat':
return 'string | (date: Date, culture: ?string, localizer: Localizer) => string';
case 'dateRangeFormat':
return '(range: { start: Date, end: Date }, culture: ?string, localizer: Localizer) => string';
case 'object':
case 'Object':
if (type.value)
return (
<pre className="shape-prop">
{displayObj(renderObject(type.value))}
</pre>
);
return name;
case 'union':
return type.value.reduce((current, val, i, list) => {
val = typeof val === 'string' ? { name: val } : val;
let item = this.renderType({ type: val });
if (React.isValidElement(item)) {
item = React.cloneElement(item, { key: i });
}
current = current.concat(item);
return i === list.length - 1 ? current : current.concat(' | ');
}, []);
case 'array':
case 'Array': {
let child = this.renderType({ type: type.value });
return (
<span>
{'Array<'}
{child}
{'>'}
</span>
);
}
case 'enum':
return this.renderEnum(type);
case 'custom':
return cleanDocletValue(doclets.type || name);
default:
return name;
}
}