(node: any)
| 87 | const tree = transform(parse(input)); |
| 88 | |
| 89 | function render(node: any): React.ReactNode { |
| 90 | switch (node.type) { |
| 91 | case 'root': |
| 92 | return (node as RootNode).children.map(render); |
| 93 | case 'bold': |
| 94 | return ( |
| 95 | <strong key={node.cid}> |
| 96 | {(node as BoldNode).children.map(render)} |
| 97 | </strong> |
| 98 | ); |
| 99 | case 'italic': |
| 100 | return ( |
| 101 | <em className={styles.italic} key={node.cid}> |
| 102 | {(node as ItalicNode).children.map(render)} |
| 103 | </em> |
| 104 | ); |
| 105 | case 'strike': |
| 106 | return ( |
| 107 | <del key={node.cid}>{(node as StrikeNode).children.map(render)}</del> |
| 108 | ); |
| 109 | case 'quote': |
| 110 | return ( |
| 111 | <Quote key={node.cid}> |
| 112 | {(node as QuoteNode).children.map(render)} |
| 113 | </Quote> |
| 114 | ); |
| 115 | case 'header': |
| 116 | return ( |
| 117 | <Header depth={node.depth} key={node.cid}> |
| 118 | {(node as HeaderNode).children.map(render)} |
| 119 | </Header> |
| 120 | ); |
| 121 | case 'text': |
| 122 | return <Text key={node.cid} value={(node as TextNode).value} />; |
| 123 | case 'user': |
| 124 | return ( |
| 125 | <Mention |
| 126 | tag="@" |
| 127 | key={node.cid} |
| 128 | value={(node as UserNode).id} |
| 129 | mentions={mentions} |
| 130 | /> |
| 131 | ); |
| 132 | case 'list': |
| 133 | return ( |
| 134 | <List key={node.cid} ordered={node.ordered}> |
| 135 | {node.children.map(render)} |
| 136 | </List> |
| 137 | ); |
| 138 | case 'item': |
| 139 | return <li key={node.cid}>{node.children.map(render)}</li>; |
| 140 | case 'signal': |
| 141 | return ( |
| 142 | <Mention |
| 143 | tag="!" |
| 144 | key={node.cid} |
| 145 | value={(node as UserNode).id} |
| 146 | mentions={mentions} |
no test coverage detected