๐Ÿ“ฆ toeverything / AFFiNE

๐Ÿ“„ markdown.js ยท 26 lines
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
26import { jsxslack } from 'jsx-slack';
import { marked, Renderer } from 'marked';

export const render = markdown => {
  const rendered = marked(markdown, {
    renderer: new (class CustomRenderer extends Renderer {
      heading({ tokens }) {
        return `
          <Fragment>
            <Section><b>${tokens[0].text}</b></Section>
            <Divider />
          </Fragment>`;
      }

      list(token) {
        return `<Section>${super.list(token)}</Section>`;
      }

      hr() {
        return `<Divider />`;
      }
    })(),
  });
  return jsxslack([`<Blocks>${rendered}</Blocks>`]);
};