2016-11-28 18:47:47 +01:00
|
|
|
import React from 'react'
|
|
|
|
|
2016-11-30 20:57:35 +01:00
|
|
|
|
2016-12-02 17:20:59 +01:00
|
|
|
//use markdown-it to render markdown
|
|
|
|
//alternately use markdown to jsx
|
|
|
|
|
|
|
|
const ShowMarkdown = (props) => {
|
2016-11-30 20:57:35 +01:00
|
|
|
return <div>
|
|
|
|
<pre style={{whiteSpace:'pre-wrap'}}>
|
|
|
|
{props.text ?
|
|
|
|
props.text:
|
|
|
|
props.diff ?
|
|
|
|
diffToPre(props.diff) :
|
|
|
|
null
|
|
|
|
}
|
2016-11-28 18:47:47 +01:00
|
|
|
</pre>
|
|
|
|
</div>
|
2016-11-30 20:57:35 +01:00
|
|
|
}
|
|
|
|
|
2016-12-02 17:20:59 +01:00
|
|
|
export default ShowMarkdown
|
2016-11-30 20:57:35 +01:00
|
|
|
|
|
|
|
function diffToPre(diff) {
|
|
|
|
return diff.map(part => (
|
|
|
|
part.added ? <span><ins>{part.value}</ins>{ifNotNewlineSpace(part.value)}</span> :
|
|
|
|
part.removed ? <span><del>{part.value}</del>{ifNotNewlineSpace(part.value)}</span> :
|
|
|
|
<span>{part.value}{ifNotNewlineSpace(part.value)}</span>
|
|
|
|
))
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2016-11-28 18:47:47 +01:00
|
|
|
|
2016-11-30 20:57:35 +01:00
|
|
|
const ifNotNewlineSpace = str => {
|
|
|
|
return !str.endsWith('\n') ? ' ' : ''
|
|
|
|
}
|