forked from styleguidist/react-styleguidist
/
CodeRenderer.js
31 lines (27 loc) · 867 Bytes
/
CodeRenderer.js
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
30
31
import React from 'react';
import PropTypes from 'prop-types';
import cx from 'classnames';
import Styled from 'rsg-components/Styled';
const styles = ({ fontFamily }) => ({
code: {
fontFamily: fontFamily.monospace,
fontSize: 'inherit',
color: 'inherit',
background: 'transparent',
whiteSpace: 'inherit',
},
});
export function CodeRenderer({ classes, className, children }) {
const classNames = cx(className, classes.code);
const isHighlighted = className && className.indexOf('lang-') !== -1;
if (isHighlighted) {
return <code className={classNames} dangerouslySetInnerHTML={{ __html: children }} />;
}
return <code className={classNames}>{children}</code>;
}
CodeRenderer.propTypes = {
classes: PropTypes.object.isRequired,
className: PropTypes.string,
children: PropTypes.node.isRequired,
};
export default Styled(styles)(CodeRenderer);