diff options
author | Julius Härtl <jus@bitgrid.net> | 2019-06-11 21:44:29 +0300 |
---|---|---|
committer | Julius Härtl <jus@bitgrid.net> | 2019-06-11 21:44:29 +0300 |
commit | 711c0287683554b8077d3486f198dcd952ac8ff5 (patch) | |
tree | 020642ddbdc4cd76e860c6512cc849d1c9c2f9c4 /src/EditorFactory.js | |
parent | b43fe0693b1f35bb94cc58124687f658ccbea80f (diff) |
Implement strike support by extending the default markdown parser
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'src/EditorFactory.js')
-rw-r--r-- | src/EditorFactory.js | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/EditorFactory.js b/src/EditorFactory.js index 871164aac..624d45236 100644 --- a/src/EditorFactory.js +++ b/src/EditorFactory.js @@ -33,9 +33,11 @@ import { Image, History } from 'tiptap-extensions' -import { Strong, Italic } from './marks' +import { Strong, Italic, Strike } from './marks' import MarkdownIt from 'markdown-it' +import { MarkdownSerializer, defaultMarkdownSerializer } from 'prosemirror-markdown' + const createEditor = ({ content, onUpdate, extensions }) => { extensions = extensions || [] return new Editor({ @@ -47,6 +49,7 @@ const createEditor = ({ content, onUpdate, extensions }) => { new Code(), new Strong(), new Italic(), + new Strike(), new BulletList(), new OrderedList(), new Blockquote(), @@ -59,7 +62,29 @@ const createEditor = ({ content, onUpdate, extensions }) => { }) } -const markdownit = MarkdownIt('commonmark', { html: false }) +const markdownit = MarkdownIt({ html: false }) + +const createMarkdownSerializer = (_nodes, _marks) => { + const nodes = Object + .entries(_nodes) + .filter(([, node]) => node.toMarkdown) + .reduce((items, [name, { toMarkdown }]) => ({ + ...items, + [name]: toMarkdown + }), {}) + + const marks = Object + .entries(_marks) + .filter(([, node]) => node.toMarkdown) + .reduce((items, [name, { toMarkdown }]) => ({ + ...items, + [name]: toMarkdown + }), {}) + return new MarkdownSerializer( + { ...defaultMarkdownSerializer.nodes, ...nodes }, + { ...defaultMarkdownSerializer.marks, ...marks } + ) +} export default createEditor -export { markdownit, createEditor } +export { markdownit, createEditor, createMarkdownSerializer } |