From 67db04c660d480c2901e6a29ca2b16f54fa02137 Mon Sep 17 00:00:00 2001 From: Alessio Gravili Date: Fri, 27 Dec 2024 21:53:44 -0700 Subject: [PATCH] fix(richtext-lexical): newlines in mdx props were stripped, even though objects inside props may expect there to be newlines (#10215) --- .../linesFromMatchToContentAndPropsString.ts | 3 --- test/lexical-mdx/int.spec.ts | 21 +++++++++++++++++++ .../mdx/jsxBlocks/packageInstallOptions.ts | 8 ++++++- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/packages/richtext-lexical/src/features/blocks/server/linesFromMatchToContentAndPropsString.ts b/packages/richtext-lexical/src/features/blocks/server/linesFromMatchToContentAndPropsString.ts index ef3c81961..e99c132c9 100644 --- a/packages/richtext-lexical/src/features/blocks/server/linesFromMatchToContentAndPropsString.ts +++ b/packages/richtext-lexical/src/features/blocks/server/linesFromMatchToContentAndPropsString.ts @@ -159,9 +159,6 @@ export function linesFromStartToContentAndPropsString({ } } - // Replace all \n with spaces - propsString = propsString.replace(/\n/g, ' ').trim() - const afterEndLine = linesCopy[endLineIndex].trim().slice(endlineLastCharIndex) return { diff --git a/test/lexical-mdx/int.spec.ts b/test/lexical-mdx/int.spec.ts index 27b7d5de5..f8679aae1 100644 --- a/test/lexical-mdx/int.spec.ts +++ b/test/lexical-mdx/int.spec.ts @@ -1401,6 +1401,27 @@ Some line [Start of link }, }, }, + { + input: ` + + +`, + inputAfterConvertFromEditorJSON: ``, + blockNode: { + fields: { + blockType: 'PackageInstallOptions', + packageId: 'Line', + someObject: { test: 'Line 1\n\nLine 2' }, + update: true, + }, + }, + }, ] const INPUT_AND_OUTPUT: Tests = INPUT_AND_OUTPUTBase //.filter((test) => test.debugFlag) diff --git a/test/lexical-mdx/mdx/jsxBlocks/packageInstallOptions.ts b/test/lexical-mdx/mdx/jsxBlocks/packageInstallOptions.ts index d9b18e557..c78f4a69c 100644 --- a/test/lexical-mdx/mdx/jsxBlocks/packageInstallOptions.ts +++ b/test/lexical-mdx/mdx/jsxBlocks/packageInstallOptions.ts @@ -10,6 +10,7 @@ export const PackageInstallOptions: Block = { someNestedObject: props?.someNestedObject, uniqueId: props?.uniqueId, update: props?.update, + someObject: props?.someObject, } }, export: ({ fields, lexicalToMarkdown }) => { @@ -20,6 +21,7 @@ export const PackageInstallOptions: Block = { someNestedObject: fields?.someNestedObject, uniqueId: fields?.uniqueId, update: fields?.update, + someObject: fields?.someObject, }, } }, @@ -27,12 +29,16 @@ export const PackageInstallOptions: Block = { fields: [ { name: 'packageId', - type: 'text', + type: 'textarea', }, { name: 'global', type: 'checkbox', }, + { + name: 'someObject', + type: 'json', + }, { name: 'update', type: 'checkbox',