diff --git a/.changeset/loud-days-rule.md b/.changeset/loud-days-rule.md new file mode 100644 index 0000000000..f7ecc54bf8 --- /dev/null +++ b/.changeset/loud-days-rule.md @@ -0,0 +1,5 @@ +--- +"@udecode/plate-markdown": patch +--- + +Fixes nodes option in serialize function diff --git a/apps/www/content/docs/en/markdown.mdx b/apps/www/content/docs/en/markdown.mdx index 15b60d214e..658d06dd8f 100644 --- a/apps/www/content/docs/en/markdown.mdx +++ b/apps/www/content/docs/en/markdown.mdx @@ -131,7 +131,7 @@ Converts the current Slate value to a Markdown string. - + The Slate nodes to serialize. If not provided, the entire editor value will be used. diff --git a/packages/markdown/src/lib/serializer/serializeMd.ts b/packages/markdown/src/lib/serializer/serializeMd.ts index 511c7e9cee..161d41dfbb 100644 --- a/packages/markdown/src/lib/serializer/serializeMd.ts +++ b/packages/markdown/src/lib/serializer/serializeMd.ts @@ -12,13 +12,15 @@ import { serializeMdNodes } from './serializeMdNodes'; /** Serialize the editor value to Markdown. */ export const serializeMd = ( editor: SlateEditor, - options?: Parameters['1'] + options?: { value?: Parameters['0'] } & Parameters< + typeof serializeMdNodes + >['1'] ) => { const plugins = editor.pluginList.filter( (p) => p.node.isElement || p.node.isLeaf ); - const nodes = plugins.reduce( + const pluginNodes = plugins.reduce( (acc, plugin) => { (acc as any)[plugin.key] = { isLeaf: plugin.node.isLeaf, @@ -31,8 +33,10 @@ export const serializeMd = ( {} as SerializeMdOptions['nodes'] ); - return serializeMdNodes(editor.children, { + const nodesToSerialize = options?.value ?? editor.children; + + return serializeMdNodes(nodesToSerialize, { ...options, - nodes: merge(nodes, options?.nodes), + nodes: merge(pluginNodes, options?.nodes), }); };