Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/text.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2019-06-11 21:44:29 +0300
committerJulius Härtl <jus@bitgrid.net>2019-06-11 21:44:29 +0300
commit711c0287683554b8077d3486f198dcd952ac8ff5 (patch)
tree020642ddbdc4cd76e860c6512cc849d1c9c2f9c4 /src/EditorFactory.js
parentb43fe0693b1f35bb94cc58124687f658ccbea80f (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.js31
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 }