From 5d37046dd89d97842b316242cedac4bc776c1550 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Tue, 7 Sep 2021 04:30:58 +0300
Subject: [PATCH] fix HTML representation

---
 .../components/QuestionComponent.js           |  8 +++---
 .../helpers/helpers.js                        | 25 ++++++++++---------
 .../schema/multipleChoiceNode.js              |  6 +++--
 3 files changed, 21 insertions(+), 18 deletions(-)

diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/QuestionComponent.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/QuestionComponent.js
index a57d82abc..a31255fef 100644
--- a/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/QuestionComponent.js
+++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/QuestionComponent.js
@@ -77,10 +77,10 @@ export default ({ node, view, getPos }) => {
   });
 
   const removeOption = () => {
-    main.state.doc.nodesBetween(getPos(), getPos() + 1, (nodes, pos) => {
-      if (nodes.attrs.id === node.attrs.id) {
+    main.state.doc.nodesBetween(getPos(), getPos() + 1, (sinlgeNode, pos) => {
+      if (sinlgeNode.attrs.id === node.attrs.id) {
         main.dispatch(
-          main.state.tr.deleteRange(getPos(), getPos() + nodes.nodeSize),
+          main.state.tr.deleteRange(getPos(), getPos() + sinlgeNode.nodeSize),
         );
       }
     });
@@ -111,7 +111,7 @@ export default ({ node, view, getPos }) => {
           // create Empty Paragraph
           setTimeout(() => {
             helpers.createEmptyParagraph(context, newAnswerId);
-          }, 100);
+          }, 30);
         }
       }
     });
diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/helpers/helpers.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/helpers/helpers.js
index 46f1fda20..537c87cab 100644
--- a/editors/demo/src/HHMI/MultipleChoiceQuestionService/helpers/helpers.js
+++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/helpers/helpers.js
@@ -10,21 +10,22 @@ const createEmptyParagraph = (context, newAnswerId) => {
         ),
       ),
     );
-
-    let type = context.view.main.state.schema.nodes.paragraph;
+    if (context.view[newAnswerId].dispatch) {
+      let type = context.view.main.state.schema.nodes.paragraph;
+      context.view[newAnswerId].dispatch(
+        context.view[newAnswerId].state.tr.insert(0, type.create()),
+      );
+    }
     context.view[newAnswerId].dispatch(
-      context.view[newAnswerId].state.tr.insert(0, type.create()),
+      context.view[newAnswerId].state.tr.setSelection(
+        TextSelection.between(
+          context.view[newAnswerId].state.selection.$anchor,
+          context.view[newAnswerId].state.selection.$head,
+        ),
+      ),
     );
+    context.view[newAnswerId].focus();
   }
-  context.view[newAnswerId].dispatch(
-    context.view[newAnswerId].state.tr.setSelection(
-      TextSelection.between(
-        context.view[newAnswerId].state.selection.$anchor,
-        context.view[newAnswerId].state.selection.$head,
-      ),
-    ),
-  );
-  context.view[newAnswerId].focus();
 };
 
 export default {
diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/schema/multipleChoiceNode.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/schema/multipleChoiceNode.js
index 371f84ada..5df549c85 100644
--- a/editors/demo/src/HHMI/MultipleChoiceQuestionService/schema/multipleChoiceNode.js
+++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/schema/multipleChoiceNode.js
@@ -1,5 +1,6 @@
 const multipleChoiceNode = {
   attrs: {
+    class: { default: 'mutiple-choice-option' },
     id: { default: '' },
     correct: { default: false },
     feedback: { default: '' },
@@ -7,17 +8,18 @@ const multipleChoiceNode = {
   group: 'block',
   content: 'block*',
   // atom: true,
-  toDOM: node => ['multiple-choice', node.attrs, 0],
   parseDOM: [
     {
-      tag: 'multiple-choice',
+      tag: 'div.mutiple-choice-option',
       getAttrs(dom) {
         return {
           id: dom.getAttribute('id'),
+          class: dom.getAttribute('class'),
         };
       },
     },
   ],
+  toDOM: node => ['div', node.attrs, 0],
 };
 
 export default multipleChoiceNode;
-- 
GitLab