From 04165dd4a947d4792e5ac2b4de2c2d7af2ca5acd Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Wed, 2 Mar 2022 11:43:44 +0200
Subject: [PATCH] keep selection

---
 editors/demo/src/Editors.js                              | 2 +-
 editors/demo/src/HHMI/config/config.js                   | 1 +
 wax-prosemirror-core/src/WaxView.js                      | 9 ++++++++-
 .../components/EditorComponent.js                        | 5 +++++
 .../components/QuestionEditorComponent.js                | 5 +++++
 5 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/editors/demo/src/Editors.js b/editors/demo/src/Editors.js
index d19991a2e..abd0628fb 100644
--- a/editors/demo/src/Editors.js
+++ b/editors/demo/src/Editors.js
@@ -70,7 +70,7 @@ const Editors = () => {
       case 'ncbi':
         return <NCBI />;
       default:
-        return <HHMI />;
+        return <Editoria />;
     }
   };
 
diff --git a/editors/demo/src/HHMI/config/config.js b/editors/demo/src/HHMI/config/config.js
index ebb2aa943..78c6197dd 100644
--- a/editors/demo/src/HHMI/config/config.js
+++ b/editors/demo/src/HHMI/config/config.js
@@ -40,6 +40,7 @@ export default {
         'Base',
         {
           name: 'Annotations',
+          exclude: ['LinkTool'],
           more: [
             'Superscript',
             'Subscript',
diff --git a/wax-prosemirror-core/src/WaxView.js b/wax-prosemirror-core/src/WaxView.js
index 3524bf111..7ff86c91d 100644
--- a/wax-prosemirror-core/src/WaxView.js
+++ b/wax-prosemirror-core/src/WaxView.js
@@ -11,7 +11,7 @@ import React, {
 } from 'react';
 
 import applyDevTools from 'prosemirror-dev-tools';
-import { EditorState } from 'prosemirror-state';
+import { EditorState, TextSelection } from 'prosemirror-state';
 import { EditorView } from 'prosemirror-view';
 import { trackedTransaction } from 'wax-prosemirror-services';
 import { WaxContext } from './WaxContext';
@@ -81,6 +81,13 @@ const WaxView = forwardRef((props, ref) => {
             attributes: {
               spellcheck: browserSpellCheck ? 'true' : 'false',
             },
+            handleDOMEvents: {
+              blur: (editorView, event) => {
+                if (view && event.relatedTarget === null) {
+                  view.focus();
+                }
+              },
+            },
           },
         );
 
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js
index 5a68b7d35..fd7478dff 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js
@@ -125,6 +125,11 @@ const EditorComponent = ({ node, view, getPos }) => {
             // the parent editor is focused.
             if (questionView.hasFocus()) questionView.focus();
           },
+          blur: (editorView, event) => {
+            if (questionView && event.relatedTarget === null) {
+              questionView.focus();
+            }
+          },
         },
 
         attributes: {
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js
index e2540fc90..d06847833 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js
@@ -154,6 +154,11 @@ const QuestionEditorComponent = ({ node, view, getPos }) => {
             // the parent editor is focused.
             if (questionView.hasFocus()) questionView.focus();
           },
+          blur: (editorView, event) => {
+            if (questionView && event.relatedTarget === null) {
+              questionView.focus();
+            }
+          },
         },
 
         attributes: {
-- 
GitLab