diff --git a/packages/dev/docs/src/types.js b/packages/dev/docs/src/types.js index 51819c6e353..2474fca7368 100644 --- a/packages/dev/docs/src/types.js +++ b/packages/dev/docs/src/types.js @@ -132,6 +132,8 @@ export function Type({type}) { return ; case 'keyof': return ; + case 'template': + return ; default: console.log('no render component for TYPE', type); return null; @@ -602,3 +604,25 @@ function ConditionalType({checkType, extendsType, trueType, falseType}) { ); } + +function TemplateLiteral({elements}) { + return ( + <> + {'`'} + {elements.map((element, i) => { + if (element.type === 'string' && element.value) { + return {element.value}; + } + + return ( + + {'${'} + + {'}'} + + ); + })} + {'`'} + + ); +} diff --git a/packages/dev/parcel-transformer-docs/DocsTransformer.js b/packages/dev/parcel-transformer-docs/DocsTransformer.js index 4633297788f..3893f2d66ec 100644 --- a/packages/dev/parcel-transformer-docs/DocsTransformer.js +++ b/packages/dev/parcel-transformer-docs/DocsTransformer.js @@ -483,6 +483,29 @@ module.exports = new Transformer({ } if (path.isTSLiteralType()) { + if (t.isTemplateLiteral(path.node.literal)) { + let expressions = path.get('literal.expressions').map(e => processExport(e)); + let elements = []; + let i = 0; + for (let q of path.node.literal.quasis) { + if (q.value.raw) { + elements.push({ + type: 'string', + value: q.value.raw + }); + } + + if (!q.tail) { + elements.push(expressions[i++]); + } + } + + return Object.assign(node, { + type: 'template', + elements + }); + } + return Object.assign(node, { type: typeof path.node.literal.value, value: path.node.literal.value