From dc0d680bbe661e8b1f3101de7e21dd554a5edbb8 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Thu, 12 Oct 2023 01:22:36 +0300
Subject: [PATCH] fix focus on surface

---
 .../src/config/plugins/FakeCursorPlugin.js    | 37 ++++++++++---------
 wax-prosemirror-core/src/styles/styles.css    | 17 +--------
 2 files changed, 21 insertions(+), 33 deletions(-)

diff --git a/wax-prosemirror-core/src/config/plugins/FakeCursorPlugin.js b/wax-prosemirror-core/src/config/plugins/FakeCursorPlugin.js
index cc5867082..8acf434b5 100644
--- a/wax-prosemirror-core/src/config/plugins/FakeCursorPlugin.js
+++ b/wax-prosemirror-core/src/config/plugins/FakeCursorPlugin.js
@@ -11,7 +11,9 @@ export default props => {
       init: (_, state) => {},
       apply(tr, prev, _, newState) {
         let createDecoration;
-        const widget = document.createElement('fakecursor');
+        const widget = document.createElement('span');
+        widget.setAttribute('id', 'fake-cursor');
+
         if (newState.selection.from === newState.selection.to) {
           createDecoration = DecorationSet.create(newState.doc, [
             Decoration.widget(newState.selection.from, widget, {
@@ -21,6 +23,11 @@ export default props => {
         }
         setTimeout(() => {
           widget.setAttribute('contenteditable', true);
+          if (navigator.userAgent.includes('Firefox')) {
+            widget.setAttribute('style', 'visibility:hidden');
+          } else {
+            widget.setAttribute('style', 'display:none');
+          }
         });
         return {
           createDecoration,
@@ -36,14 +43,12 @@ export default props => {
       handleDOMEvents: {
         focus: (view, event) => {
           event.preventDefault();
-          const fakeCursor = document.getElementsByTagName('fakecursor');
-          if (fakeCursor && fakeCursor[0]) {
-            for (let i = 0; i < fakeCursor.length; i++) {
-              if (navigator.userAgent.includes('Firefox')) {
-                fakeCursor[i].style.visibility = 'hidden';
-              } else {
-                fakeCursor[i].style.display = 'none';
-              }
+          const fakeCursor = document.getElementById('fake-cursor');
+          if (fakeCursor) {
+            if (navigator.userAgent.includes('Firefox')) {
+              fakeCursor.style.visibility = 'hidden';
+            } else {
+              fakeCursor.style.display = 'none';
             }
           }
         },
@@ -52,14 +57,12 @@ export default props => {
           if (view && event.relatedTarget === null) {
             view.focus();
           } else {
-            const fakeCursor = document.getElementsByTagName('fakecursor');
-            if (fakeCursor && fakeCursor[0]) {
-              for (let i = 0; i < fakeCursor.length; i++) {
-                if (navigator.userAgent.includes('Firefox')) {
-                  fakeCursor[i].style.visibility = 'visible';
-                } else {
-                  fakeCursor[i].style.display = 'inline';
-                }
+            const fakeCursor = document.getElementById('fake-cursor');
+            if (fakeCursor) {
+              if (navigator.userAgent.includes('Firefox')) {
+                fakeCursor.style.visibility = 'visible';
+              } else {
+                fakeCursor.style.display = 'inline';
               }
             }
           }
diff --git a/wax-prosemirror-core/src/styles/styles.css b/wax-prosemirror-core/src/styles/styles.css
index 90a08a5ea..502936aa2 100644
--- a/wax-prosemirror-core/src/styles/styles.css
+++ b/wax-prosemirror-core/src/styles/styles.css
@@ -227,22 +227,7 @@ img.ProseMirror-separator {
   color: #000;
 }
 
-
-/** Mozilla Firefox */
-
-fakecursor {
-  display: none;
-}
-
-@-moz-document url-prefix() {
-  fakecursor {
-    visibility: hidden;
-    display: inline !important;
-  }
-}
-
-
-fakecursor::before {
+span#fake-cursor::before {
   display: inline;
   content: '';
   border-right: 1px solid black;
-- 
GitLab