2020-03-21 03:20:59 +00:00
|
|
|
// From https://github.com/ProseMirror/prosemirror-markdown/blob/master/src/from_markdown.js
|
2020-03-21 15:46:48 +00:00
|
|
|
import { MarkdownParser } from 'prosemirror-markdown'
|
|
|
|
import markdownit from 'markdown-it'
|
|
|
|
import markdownitMark from 'markdown-it-mark'
|
2020-03-21 03:20:59 +00:00
|
|
|
|
|
|
|
import schema from './schema.js'
|
|
|
|
|
|
|
|
export default new MarkdownParser(
|
|
|
|
schema,
|
2020-03-21 15:46:48 +00:00
|
|
|
markdownit('commonmark', { html: false })
|
|
|
|
.use(markdownitMark)
|
|
|
|
.enable('strikethrough'),
|
2020-03-21 03:20:59 +00:00
|
|
|
{
|
2020-03-21 15:46:48 +00:00
|
|
|
blockquote: { block: 'blockquote' },
|
|
|
|
paragraph: { block: 'paragraph' },
|
|
|
|
list_item: { block: 'list_item' },
|
|
|
|
bullet_list: { block: 'bullet_list' },
|
|
|
|
ordered_list: {
|
|
|
|
block: 'ordered_list',
|
|
|
|
getAttrs: tok => ({ order: +tok.attrGet('start') || 1 }),
|
|
|
|
},
|
|
|
|
heading: {
|
|
|
|
block: 'heading',
|
|
|
|
getAttrs: tok => ({ level: +tok.tag.slice(1) }),
|
|
|
|
},
|
|
|
|
code_block: { block: 'code_block' },
|
|
|
|
fence: {
|
|
|
|
block: 'code_block',
|
|
|
|
getAttrs: tok => ({ params: tok.info || '' }),
|
|
|
|
},
|
|
|
|
hr: { node: 'horizontal_rule' },
|
|
|
|
image: {
|
|
|
|
node: 'image',
|
|
|
|
getAttrs: tok => ({
|
|
|
|
src: tok.attrGet('src'),
|
|
|
|
title: tok.attrGet('title') || null,
|
|
|
|
alt: (tok.children[0] && tok.children[0].content) || null,
|
|
|
|
}),
|
|
|
|
},
|
|
|
|
hardbreak: { node: 'hard_break' },
|
2020-03-21 03:20:59 +00:00
|
|
|
|
2020-03-21 15:46:48 +00:00
|
|
|
em: { mark: 'em' },
|
|
|
|
strong: { mark: 'strong' },
|
|
|
|
mark: { mark: 'mark' },
|
|
|
|
s: { mark: 'strikethrough' },
|
|
|
|
link: {
|
|
|
|
mark: 'link',
|
|
|
|
getAttrs: tok => ({
|
|
|
|
href: tok.attrGet('href'),
|
|
|
|
title: tok.attrGet('title') || null,
|
|
|
|
}),
|
|
|
|
},
|
|
|
|
code_inline: { mark: 'code' },
|
2020-03-21 03:20:59 +00:00
|
|
|
},
|
|
|
|
)
|