summaryrefslogtreecommitdiff
path: root/ui/lib/markdown.js
blob: 6caf80b121ef84881428082c9080b4d6860dd713 (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']
  });
}