diff --git a/packages/lexical-markdown/src/MarkdownImport.ts b/packages/lexical-markdown/src/MarkdownImport.ts index 66cb85bbb..1d69db355 100644 --- a/packages/lexical-markdown/src/MarkdownImport.ts +++ b/packages/lexical-markdown/src/MarkdownImport.ts @@ -79,6 +79,7 @@ export function createMarkdownImport( byType.element, textFormatTransformersIndex, byType.textMatch, + shouldPreserveNewLines, ); } @@ -224,6 +225,7 @@ function $importBlocks( elementTransformers: Array, textFormatTransformersIndex: TextFormatTransformersIndex, textMatchTransformers: Array, + shouldPreserveNewLines: boolean, ) { const textNode = $createTextNode(lineText); const elementNode = $createParagraphNode(); @@ -253,9 +255,10 @@ function $importBlocks( if (elementNode.isAttached() && lineText.length > 0) { const previousNode = elementNode.getPreviousSibling(); if ( - $isParagraphNode(previousNode) || - $isQuoteNode(previousNode) || - $isListNode(previousNode) + !shouldPreserveNewLines && // Only append if we're not preserving newlines + ($isParagraphNode(previousNode) || + $isQuoteNode(previousNode) || + $isListNode(previousNode)) ) { let targetNode: typeof previousNode | ListItemNode | null = previousNode; diff --git a/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts b/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts index 021fc4073..fcae6a961 100644 --- a/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts +++ b/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts @@ -381,7 +381,7 @@ describe('Markdown', () => { shouldMergeAdjacentLines: false, }, { - html: '

hello
world

', + html: '

hello

world

', md: 'hello\nworld', shouldPreserveNewLines: true, },