diff options
Diffstat (limited to 'ui/lib/markdown.js')
| -rw-r--r-- | ui/lib/markdown.js | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/ui/lib/markdown.js b/ui/lib/markdown.js index 2e73309..c4f2803 100644 --- a/ui/lib/markdown.js +++ b/ui/lib/markdown.js @@ -1,6 +1,26 @@ import { marked } from 'marked'; import DOMPurify from 'dompurify'; +const extension = { + useNewRenderer: true, + renderer: { + link({ title, href, tokens }) { + const titleAttr = title ? ` title="${title}"` : ``; + const text = this.parser.parseInline(tokens); + return `<a + target="_blank" + rel="noreferrer" + ${titleAttr} + href="${href}">${text}</a>`; + } + } +}; + +marked.use(extension); + export function render(body) { - return DOMPurify.sanitize(marked.parse(body, { breaks: true })); + const rendered = marked.parse(body, { breaks: true }); + return DOMPurify.sanitize(rendered, { + ADD_ATTR: ['target'] + }); } |
