From 8c047ae1ec8167d3f24da64ea9b4031e1f8b5486 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Mon, 17 Jan 2022 02:33:00 +0200
Subject: [PATCH] add tool files

---
 editors/demo/src/HHMI/config/config.js        |  4 +++-
 wax-prosemirror-services/index.js             |  1 +
 .../src/EssayService/EssayQuestion.js         | 22 +++++++++++++++----
 .../helpers/helpers.js                        |  2 ++
 .../EssayToolGroupService/Essay.js            | 13 +++++++++++
 .../EssayToolGroupService.js                  | 10 +++++++++
 .../MultipleChoice.js                         |  4 +---
 7 files changed, 48 insertions(+), 8 deletions(-)
 create mode 100644 wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/Essay.js
 create mode 100644 wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/EssayToolGroupService.js

diff --git a/editors/demo/src/HHMI/config/config.js b/editors/demo/src/HHMI/config/config.js
index dbebc2840..28e67c535 100644
--- a/editors/demo/src/HHMI/config/config.js
+++ b/editors/demo/src/HHMI/config/config.js
@@ -26,6 +26,7 @@ import {
   FillTheGapToolGroupService,
   MultipleDropDownToolGroupService,
   EssayService,
+  EssayToolGroupService,
 } from 'wax-prosemirror-services';
 
 import { DefaultSchema } from 'wax-prosemirror-utilities';
@@ -52,7 +53,7 @@ export default {
         'Images',
         'Tables',
         'MultipleDropDown',
-        'MultipleChoice',
+        'Essay',
         'FillTheGap',
         'FullScreen',
       ],
@@ -76,6 +77,7 @@ export default {
     new MultipleChoiceToolGroupService(),
     new MultipleDropDownToolGroupService(),
     new EssayService(),
+    new EssayToolGroupService(),
     new ListsService(),
     new LinkService(),
     new InlineAnnotationsService(),
diff --git a/wax-prosemirror-services/index.js b/wax-prosemirror-services/index.js
index 17d4efd65..d6ad74108 100644
--- a/wax-prosemirror-services/index.js
+++ b/wax-prosemirror-services/index.js
@@ -76,3 +76,4 @@ export { default as CustomTagBlockToolGroupService } from './src/WaxToolGroups/C
 export { default as MultipleChoiceToolGroupService } from './src/WaxToolGroups/MultipleChoiceToolGroupService/MultipleChoiceToolGroupService';
 export { default as FillTheGapToolGroupService } from './src/WaxToolGroups/FillTheGapToolGroupService/FillTheGapToolGroupService';
 export { default as MultipleDropDownToolGroupService } from './src/WaxToolGroups/MultipleDropDownToolGroupService/MultipleDropDownToolGroupService';
+export { default as EssayToolGroupService } from './src/WaxToolGroups/EssayToolGroupService/EssayToolGroupService';
diff --git a/wax-prosemirror-services/src/EssayService/EssayQuestion.js b/wax-prosemirror-services/src/EssayService/EssayQuestion.js
index aca581aab..655fd4900 100644
--- a/wax-prosemirror-services/src/EssayService/EssayQuestion.js
+++ b/wax-prosemirror-services/src/EssayService/EssayQuestion.js
@@ -1,8 +1,22 @@
 import { injectable } from 'inversify';
-import { wrapIn } from 'prosemirror-commands';
 import { v4 as uuidv4 } from 'uuid';
+import { Commands } from 'wax-prosemirror-utilities';
 import Tools from '../lib/Tools';
 
+const checkifEmpty = view => {
+  const { state } = view;
+  const { from, to } = state.selection;
+  state.doc.nodesBetween(from, to, (node, pos) => {
+    if (node.textContent !== ' ') Commands.simulateKey(view, 13, 'Enter');
+  });
+  if (state.selection.constructor.name === 'GapCursor') {
+    Commands.simulateKey(view, 13, 'Enter');
+    setTimeout(() => {
+      view.focus();
+    });
+  }
+};
+
 @injectable()
 class EssayQuestion extends Tools {
   title = 'Add Essay Question';
@@ -12,9 +26,9 @@ class EssayQuestion extends Tools {
 
   get run() {
     return (state, dispatch) => {
-      wrapIn(state.config.schema.nodes.essay, {
-        id: uuidv4(),
-      })(state, dispatch);
+      console.log('essay');
+      //checkifEmpty(main);
+      //const { state, dispatch } = main;
     };
   }
 
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js
index 3a4183238..197698db1 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js
@@ -84,6 +84,8 @@ const createOptions = (main, context, parentType, questionType, answerType) => {
     createEmptyParagraph(context, secondOption.attrs.id);
     createEmptyParagraph(context, question.attrs.id);
   }, 50);
+
+  return true;
 };
 
 export default {
diff --git a/wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/Essay.js b/wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/Essay.js
new file mode 100644
index 000000000..3c34de106
--- /dev/null
+++ b/wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/Essay.js
@@ -0,0 +1,13 @@
+import { injectable, inject } from 'inversify';
+import ToolGroup from '../../lib/ToolGroup';
+
+@injectable()
+class Essay extends ToolGroup {
+  tools = [];
+  constructor(@inject('EssayQuestion') essayQuestion) {
+    super();
+    this.tools = [essayQuestion];
+  }
+}
+
+export default Essay;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/EssayToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/EssayToolGroupService.js
new file mode 100644
index 000000000..5a2bdb7ce
--- /dev/null
+++ b/wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/EssayToolGroupService.js
@@ -0,0 +1,10 @@
+import Service from '../../Service';
+import Essay from './Essay';
+
+class EssayToolGroupService extends Service {
+  register() {
+    this.container.bind('Essay').to(Essay);
+  }
+}
+
+export default EssayToolGroupService;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/MultipleChoiceToolGroupService/MultipleChoice.js b/wax-prosemirror-services/src/WaxToolGroups/MultipleChoiceToolGroupService/MultipleChoice.js
index 1e54cffb1..cffe0cf6b 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/MultipleChoiceToolGroupService/MultipleChoice.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/MultipleChoiceToolGroupService/MultipleChoice.js
@@ -8,11 +8,9 @@ class MultipleChoice extends ToolGroup {
     @inject('MultipleChoiceQuestion') multipleChoiceQuestion,
     @inject('MultipleChoiceSingleCorrectQuestion')
     multipleChoiceSingleCorrectQuestion,
-    @inject('EssayQuestion')
-    essayQuestion,
   ) {
     super();
-    this.tools = [essayQuestion];
+    this.tools = [multipleChoiceQuestion, multipleChoiceSingleCorrectQuestion];
   }
 }
 
-- 
GitLab