From 2d40a920cbb35829d3f85f546397b5f90311e8ec Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Thu, 28 Sep 2023 15:36:10 +0300
Subject: [PATCH] fix selection

---
 editors/demo/src/Editoria/config/config.js             |  2 +-
 .../src/AiService/ReplaceSelectedText.js               |  4 ++--
 .../src/AiService/components/AskAIOverlay.js           | 10 +++++++---
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/editors/demo/src/Editoria/config/config.js b/editors/demo/src/Editoria/config/config.js
index e8214f1da..3c828db6d 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('hello how are you?');
+        resolve(text);
       }
     }, 150);
   });
diff --git a/wax-prosemirror-services/src/AiService/ReplaceSelectedText.js b/wax-prosemirror-services/src/AiService/ReplaceSelectedText.js
index 34f04ad17..25b8c000f 100644
--- a/wax-prosemirror-services/src/AiService/ReplaceSelectedText.js
+++ b/wax-prosemirror-services/src/AiService/ReplaceSelectedText.js
@@ -15,7 +15,6 @@ const replaceSelectedText = (view, transformedText, replace = false) => {
   const parser = DOMParser.fromSchema(state.config.schema);
 
   if (from > state.doc.content.size || to > state.doc.content.size) {
-    console.error('Position out of range');
     return;
   }
 
@@ -49,7 +48,8 @@ const replaceSelectedText = (view, transformedText, replace = false) => {
   state = view.state;
 
   // Update the selection to the end of the new text
-  const newTo = from + transformedText.length;
+  const newFrom = replace ? from : to;
+  const newTo = newFrom + transformedText.length;
   const cursorPosition = paragraphNodes.length !== 0 ? newTo + 2 : newTo;
   const newSelection = TextSelection.create(
     state.doc,
diff --git a/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js b/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js
index cc697b9b6..0c33e7f0f 100644
--- a/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js
+++ b/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js
@@ -110,8 +110,8 @@ const AskAIOverlay = ({ setPosition, position, config }) => {
   useLayoutEffect(() => {
     const WaxSurface = activeView.dom.getBoundingClientRect();
     const { selection } = activeView.state;
-    const { from, to } = selection;
-    const start = activeView.coordsAtPos(from);
+    const { to } = selection;
+    // const start = activeView.coordsAtPos(from);
     const end = activeView.coordsAtPos(to - 1);
     const overLayComponent = document.getElementById('ai-overlay');
 
@@ -146,8 +146,12 @@ const AskAIOverlay = ({ setPosition, position, config }) => {
   };
 
   const handleSubmit = async () => {
-    setIsLoading(true);
     const inputValue = inputRef.current.value;
+    if (inputValue === '') {
+      inputRef.current.focus();
+      return;
+    }
+    setIsLoading(true);
 
     // Get the highlighted text from the editor
     const { from, to } = activeView.state.selection;
-- 
GitLab