diff options
author | Michael Muré <batolettre@gmail.com> | 2020-02-23 14:49:09 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-23 14:49:09 +0100 |
commit | f87d63b3c656f6efba3c62c121f66e513ca3efea (patch) | |
tree | 368886eb57bab83c76f73b3b7b0238b483733a30 /webui/src/components/Content | |
parent | 4559af5e71a2d6d1c53329e565d101c3eadacf6e (diff) | |
parent | f96484391ae817a18f503b5c31cd3bd2211553df (diff) | |
download | git-bug-f87d63b3c656f6efba3c62c121f66e513ca3efea.tar.gz |
Merge pull request #331 from MichaelMure/webui/mutations
Webui: add comments
Diffstat (limited to 'webui/src/components/Content')
-rw-r--r-- | webui/src/components/Content/ImageTag.tsx | 23 | ||||
-rw-r--r-- | webui/src/components/Content/PreTag.tsx | 17 | ||||
-rw-r--r-- | webui/src/components/Content/index.tsx | 26 |
3 files changed, 66 insertions, 0 deletions
diff --git a/webui/src/components/Content/ImageTag.tsx b/webui/src/components/Content/ImageTag.tsx new file mode 100644 index 00000000..70ee1bc0 --- /dev/null +++ b/webui/src/components/Content/ImageTag.tsx @@ -0,0 +1,23 @@ +import React from 'react'; + +import { makeStyles } from '@material-ui/styles'; + +const useStyles = makeStyles({ + tag: { + maxWidth: '100%', + }, +}); + +const ImageTag = ({ + alt, + ...props +}: React.ImgHTMLAttributes<HTMLImageElement>) => { + const classes = useStyles(); + return ( + <a href={props.src} target="_blank" rel="noopener noreferrer nofollow"> + <img className={classes.tag} alt={alt} {...props} /> + </a> + ); +}; + +export default ImageTag; diff --git a/webui/src/components/Content/PreTag.tsx b/webui/src/components/Content/PreTag.tsx new file mode 100644 index 00000000..5256ab12 --- /dev/null +++ b/webui/src/components/Content/PreTag.tsx @@ -0,0 +1,17 @@ +import React from 'react'; + +import { makeStyles } from '@material-ui/styles'; + +const useStyles = makeStyles({ + tag: { + maxWidth: '100%', + overflowX: 'auto', + }, +}); + +const PreTag = (props: React.HTMLProps<HTMLPreElement>) => { + const classes = useStyles(); + return <pre className={classes.tag} {...props}></pre>; +}; + +export default PreTag; diff --git a/webui/src/components/Content/index.tsx b/webui/src/components/Content/index.tsx new file mode 100644 index 00000000..56e52e1e --- /dev/null +++ b/webui/src/components/Content/index.tsx @@ -0,0 +1,26 @@ +import React from 'react'; +import html from 'remark-html'; +import parse from 'remark-parse'; +import remark2react from 'remark-react'; +import unified from 'unified'; + +import ImageTag from './ImageTag'; +import PreTag from './PreTag'; + +type Props = { markdown: string }; +const Content: React.FC<Props> = ({ markdown }: Props) => { + const processor = unified() + .use(parse) + .use(html) + .use(remark2react, { + remarkReactComponents: { + img: ImageTag, + pre: PreTag, + }, + }); + + const contents: React.ReactNode = processor.processSync(markdown).contents; + return <>{contents}</>; +}; + +export default Content; |