From 0d3140d8a0d4bba68a920984e78adb542a0dfd8c Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Thu, 28 Sep 2023 15:47:28 +0300 Subject: [PATCH] display lists --- editors/demo/src/Editoria/config/config.js | 2 +- .../src/AiService/ReplaceSelectedText.js | 21 ++++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/editors/demo/src/Editoria/config/config.js b/editors/demo/src/Editoria/config/config.js index 3c828db6d..8b8c5846f 100644 --- a/editors/demo/src/Editoria/config/config.js +++ b/editors/demo/src/Editoria/config/config.js @@ -106,7 +106,7 @@ async function DummyPromise(userInput) { if (userInput === 'reject') { reject('Your request could not be processed for now'); } else { - resolve(text); + resolve('text'); } }, 150); }); diff --git a/wax-prosemirror-services/src/AiService/ReplaceSelectedText.js b/wax-prosemirror-services/src/AiService/ReplaceSelectedText.js index 25b8c000f..e4a55dba4 100644 --- a/wax-prosemirror-services/src/AiService/ReplaceSelectedText.js +++ b/wax-prosemirror-services/src/AiService/ReplaceSelectedText.js @@ -7,7 +7,7 @@ const elementFromString = string => { return new window.DOMParser().parseFromString(wrappedValue, 'text/html').body; }; -const replaceSelectedText = (view, transformedText, replace = false) => { +const replaceSelectedText = (view, responseText, replace = false) => { let { state } = view; let { tr } = state; const { from, to } = tr.selection; @@ -18,8 +18,17 @@ const replaceSelectedText = (view, transformedText, replace = false) => { return; } - if (transformedText.includes('\n\n')) { - transformedText.split('\n\n').forEach(element => { + let transformedText = state.schema.text(responseText); + + if (responseText.includes('<ul>') || responseText.includes('ol')) { + transformedText = parser.parse( + elementFromString(responseText.replace(/^\s+|\s+$/g, '')), + {}, + ); + } + + if (responseText.includes('\n\n')) { + responseText.split('\n\n').forEach(element => { paragraphNodes.push( parser.parse(elementFromString(element.replace(/\n/g, '<br />')), { preserveWhitespace: true, @@ -29,9 +38,7 @@ const replaceSelectedText = (view, transformedText, replace = false) => { } const finalReplacementText = - paragraphNodes.length !== 0 - ? paragraphNodes - : state.schema.text(transformedText); + paragraphNodes.length !== 0 ? paragraphNodes : transformedText; if (replace) { if (from !== to) { @@ -49,7 +56,7 @@ const replaceSelectedText = (view, transformedText, replace = false) => { // Update the selection to the end of the new text const newFrom = replace ? from : to; - const newTo = newFrom + transformedText.length; + const newTo = newFrom + responseText.length; const cursorPosition = paragraphNodes.length !== 0 ? newTo + 2 : newTo; const newSelection = TextSelection.create( state.doc, -- GitLab