diff --git a/packages/slate-html-serializer/src/index.js b/packages/slate-html-serializer/src/index.js index 032380288..2da99649f 100644 --- a/packages/slate-html-serializer/src/index.js +++ b/packages/slate-html-serializer/src/index.js @@ -299,7 +299,7 @@ class Html { leaf.marks.push({ type, data }) return leaf }) - } else { + } else if (node.nodes) { node.nodes = node.nodes.map(applyMark) } diff --git a/packages/slate-html-serializer/test/deserialize/mark-void-inline.js b/packages/slate-html-serializer/test/deserialize/mark-void-inline.js new file mode 100644 index 000000000..eb5e55f44 --- /dev/null +++ b/packages/slate-html-serializer/test/deserialize/mark-void-inline.js @@ -0,0 +1,53 @@ +/** @jsx h */ + +import h from '../helpers/h' + +export const config = { + rules: [ + { + deserialize(el, next) { + switch (el.tagName.toLowerCase()) { + case 'p': { + return { + object: 'block', + type: 'paragraph', + nodes: next(el.childNodes), + } + } + case 'strong': { + return { + object: 'mark', + type: 'bold', + nodes: next(el.childNodes), + } + } + case 'br': { + return { + object: 'inline', + type: 'linebreak', + isVoid: true, + } + } + } + }, + }, + ], +} + +export const input = ` +
one
two