diff --git a/src/nodes/Table/TableHeadRow.js b/src/nodes/Table/TableHeadRow.js
index e2974c7e8a9..677780389d6 100644
--- a/src/nodes/Table/TableHeadRow.js
+++ b/src/nodes/Table/TableHeadRow.js
@@ -22,7 +22,7 @@ export default TableRow.extend({
parseHTML() {
return [
- { tag: 'tr', priority: 70 },
+ { tag: 'tr:first-of-type', priority: 80 },
]
},
})
diff --git a/src/nodes/Table/TableRow.js b/src/nodes/Table/TableRow.js
index b7343eb9a61..b6ce01d823b 100644
--- a/src/nodes/Table/TableRow.js
+++ b/src/nodes/Table/TableRow.js
@@ -11,7 +11,7 @@ export default TableRow.extend({
parseHTML() {
return [
- { tag: 'tr', priority: 80 },
+ { tag: 'tr', priority: 70 },
]
},
})
diff --git a/src/tests/helpers.js b/src/tests/helpers.js
index 5195792712e..38c17153d6a 100644
--- a/src/tests/helpers.js
+++ b/src/tests/helpers.js
@@ -49,3 +49,18 @@ export function markdownThroughEditorHtml(html) {
const serializer = createMarkdownSerializer(tiptap.schema)
return serializer.serialize(tiptap.state.doc)
}
+
+/**
+ * Paste HTML into the Editor and return the serialized markdown
+ *
+ * @param {string} html
+ * @returns {string}
+ */
+export function markdownFromPaste(html) {
+ const tiptap = createEditor({
+ enableRichEditing: true
+ })
+ tiptap.commands.insertContent(html)
+ const serializer = createMarkdownSerializer(tiptap.schema)
+ return serializer.serialize(tiptap.state.doc)
+}
diff --git a/src/tests/markdown.spec.js b/src/tests/markdown.spec.js
index 40e31fca2a2..83df8bb499d 100644
--- a/src/tests/markdown.spec.js
+++ b/src/tests/markdown.spec.js
@@ -1,7 +1,11 @@
import spec from "./fixtures/spec"
import markdownit from './../markdownit'
import { typesAvailable } from './../markdownit/callouts'
-import { markdownThroughEditor, markdownThroughEditorHtml } from "./helpers";
+import {
+ markdownThroughEditor,
+ markdownThroughEditorHtml,
+ markdownFromPaste
+} from "./helpers";
import { createMarkdownSerializer } from "../extensions/Markdown";
import createEditor from "../EditorFactory";
@@ -195,11 +199,20 @@ describe('Markdown serializer from html', () => {
)).toBe(`::: warn\n!warning!\n\n:::`)
})
+ test('table', () => {
+ expect(markdownThroughEditorHtml('
')).toBe('| greetings |\n|-----------|\n| hello |\n')
+ })
+
test('table cell escaping', () => {
// while '|' has no special meaning in commonmark is has to be escaped for GFM tables
expect(markdownThroughEditorHtml('')).toBe('| greetings |\n|-----------|\n| hello \\| hallo |\n')
})
+ test('table pastes (#2708)', () => {
+ // while '|' has no special meaning in commonmark is has to be escaped for GFM tables
+ expect(markdownFromPaste('')).toBe('| greetings |\n|-----------|\n| hello |\n')
+ })
+
test('front matter', () => {
expect(markdownThroughEditorHtml('some: value
Heading
')).toBe('---\nsome: value\n---\n\n# Heading')
// Test --- within front matter is allowed