-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCodeBlock.tsx
29 lines (24 loc) · 900 Bytes
/
CodeBlock.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import Highlight, {defaultProps, Language} from 'prism-react-renderer'
type Props = {
className: string,
children: string
};
const CodeBlock: React.FC<Props> = ({ className, children }: Props) => {
const language: Language = className ? className.replace(/language-/, '') as Language : 'javascript';
return (
<Highlight {...defaultProps} code={children} language={language}>
{({className, style, tokens, getLineProps, getTokenProps}) => (
<code className={className} style={{...style}}>
{tokens.map((line, i) => (
<div key={i} {...getLineProps({line, key: i})}>
{line.map((token, key) => (
<span key={key} {...getTokenProps({token, key})} />
))}
</div>
))}
</code>
)}
</Highlight>
)
};
export default CodeBlock;