From 4b9e60caf936c3c13eede93f3018d2dd376a0715 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Fri, 24 Feb 2023 12:04:44 +0200
Subject: [PATCH] fake cursor plugin fixes

---
 wax-prosemirror-core/src/WaxView.js           | 11 ++++++++
 .../TablesService/plugins/FakeCursorPlugin.js | 26 +++++++------------
 2 files changed, 21 insertions(+), 16 deletions(-)

diff --git a/wax-prosemirror-core/src/WaxView.js b/wax-prosemirror-core/src/WaxView.js
index 40ad70192..f5998e3ec 100644
--- a/wax-prosemirror-core/src/WaxView.js
+++ b/wax-prosemirror-core/src/WaxView.js
@@ -88,8 +88,19 @@ const WaxView = forwardRef((props, ref) => {
               blur: (editorView, event) => {
                 if (view && event.relatedTarget === null) {
                   view.focus();
+                } else {
+                  const fakeCursor = document.getElementsByTagName(
+                    'fakecursor',
+                  );
+                  if (fakeCursor && fakeCursor[0])
+                    fakeCursor[0].style.display = 'inline';
                 }
               },
+              focus: (editorView, event) => {
+                const fakeCursor = document.getElementsByTagName('fakecursor');
+                if (fakeCursor && fakeCursor[0])
+                  fakeCursor[0].style.display = 'none';
+              },
             },
           },
         );
diff --git a/wax-prosemirror-services/src/TablesService/plugins/FakeCursorPlugin.js b/wax-prosemirror-services/src/TablesService/plugins/FakeCursorPlugin.js
index b2fd2aeb0..e6770b617 100644
--- a/wax-prosemirror-services/src/TablesService/plugins/FakeCursorPlugin.js
+++ b/wax-prosemirror-services/src/TablesService/plugins/FakeCursorPlugin.js
@@ -11,13 +11,14 @@ export default props => {
       init: (_, state) => {},
       apply(tr, prev, _, newState) {
         let createDecoration;
-        const widget = document.createElement('fakecursor');
-
-        createDecoration = DecorationSet.create(newState.doc, [
-          Decoration.widget(newState.selection.from, widget, {
-            key: 'fakecursor',
-          }),
-        ]);
+        if (newState.selection.from === newState.selection.to) {
+          const widget = document.createElement('fakecursor');
+          createDecoration = DecorationSet.create(newState.doc, [
+            Decoration.widget(newState.selection.from, widget, {
+              key: 'fakecursor',
+            }),
+          ]);
+        }
         return {
           createDecoration,
         };
@@ -30,15 +31,8 @@ export default props => {
           return fakeCursorPluginState.createDecoration;
       },
       handleDOMEvents: {
-        focus: (view, _event) => {
-          const fakeCursor = document.getElementsByTagName('fakecursor');
-          if (fakeCursor && fakeCursor[0]) fakeCursor[0].style.display = 'none';
-        },
-        blur: (view, _event) => {
-          const fakeCursor = document.getElementsByTagName('fakecursor');
-          if (fakeCursor && fakeCursor[0])
-            fakeCursor[0].style.display = 'inline';
-        },
+        focus: (view, _event) => {},
+        blur: (view, _event) => {},
       },
     },
   });
-- 
GitLab