diff --git a/website/layout/AutodocsLayout.js b/website/layout/AutodocsLayout.js index 2d1208648..39a66eca2 100644 --- a/website/layout/AutodocsLayout.js +++ b/website/layout/AutodocsLayout.js @@ -34,7 +34,15 @@ function renderEnumValue(value) { } function renderType(type) { - return {(type.nullable ? '?' : '') + renderBaseType(type)}; + const baseType = renderBaseType(type); + return type.nullable ? ?{baseType} : baseType; +} + +function spanJoinMapper(elements, callback, separator) { + return {elements.map((rawElement, ii) => { + const el = callback(rawElement); + return (ii + 1 < elements.length) ? {el}{separator} : el; + })}; } function renderBaseType(type) { @@ -53,14 +61,18 @@ function renderBaseType(type) { } if (type.name === 'shape') { - return '{' + Object.keys(type.value).map((key => key + ': ' + renderType(type.value[key]))).join(', ') + '}'; + return {'{'}{spanJoinMapper( + Object.keys(type.value), + (key) => {key + ': '}{renderType(type.value[key])}, + ', ' + )}{'}'}; } if (type.name === 'union') { if (type.value) { - return type.value.map(renderType).join(', '); + return spanJoinMapper(type.value, renderType, ', '); } - return type.elements.map(renderType).join(' | '); + return spanJoinMapper(type.elements, renderType, ' | '); } if (type.name === 'arrayOf') {