summaryrefslogtreecommitdiff
path: root/ui/lib/markdown.js
blob: c4f280369c35622988dc1e4f8e69e081a6568776 (plain)
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
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) {
  const rendered = marked.parse(body, { breaks: true });
  return DOMPurify.sanitize(rendered, {
    ADD_ATTR: ['target']
  });
}