From bdccaabf0f35f96ce9db01021f93021a8b35b061 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Wed, 24 Nov 2021 23:40:43 +0200
Subject: [PATCH] new files

---
 wax-prosemirror-core/src/WaxView.js           |  3 ++
 .../components/FeedbackComponent.js           |  9 +++++-
 .../plugins/PasteIntoFeedbackPlugin.js        | 15 ++++++++++
 .../components/QuestionComponent.js           | 10 +++++--
 .../TrueFalseNodeView.js                      |  0
 .../TrueFalseQuestion.js                      |  0
 .../TrueFalseQuestionService.js               | 30 +++++++++++++++++++
 7 files changed, 63 insertions(+), 4 deletions(-)
 create mode 100644 wax-prosemirror-services/src/MultipleChoiceQuestionService/plugins/PasteIntoFeedbackPlugin.js
 create mode 100644 wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseNodeView.js
 create mode 100644 wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestion.js
 create mode 100644 wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestionService.js

diff --git a/wax-prosemirror-core/src/WaxView.js b/wax-prosemirror-core/src/WaxView.js
index 0ad849249..7cf556de2 100644
--- a/wax-prosemirror-core/src/WaxView.js
+++ b/wax-prosemirror-core/src/WaxView.js
@@ -77,6 +77,9 @@ const WaxView = forwardRef((props, ref) => {
             attributes: {
               spellcheck: browserSpellCheck ? 'true' : 'false',
             },
+            handlePaste: (view, event, slice) => {
+              if (view.state.selection.from === null) return true;
+            },
           },
         );
 
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
index 0fa7d157c..e1619f25a 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
@@ -47,7 +47,7 @@ export default ({ node, view, getPos }) => {
     if (e.key === 'Backspace') {
       context.view.main.dispatch(
         context.view.main.state.tr.setSelection(
-          TextSelection.create(context.view.main.state.tr.doc, 0),
+          TextSelection.create(context.view.main.state.tr.doc, null),
         ),
       );
     }
@@ -81,6 +81,12 @@ export default ({ node, view, getPos }) => {
     );
   };
 
+  const handleOnPaste = e => {
+    const clipboardData = e.clipboardData || window.clipboardData;
+    const pastedData = clipboardData.getData('Text');
+    setFeedBack(pastedData);
+  };
+
   return (
     <FeedBack>
       <FeedBackLabel>Feedback</FeedBackLabel>
@@ -88,6 +94,7 @@ export default ({ node, view, getPos }) => {
         onBlur={saveFeedBack}
         onChange={feedBackInput}
         onFocus={onFocus}
+        onPaste={e => handleOnPaste(e)}
         onKeyDown={handleKeyDown}
         placeholder="Insert feedback"
         ref={feedBackRef}
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/plugins/PasteIntoFeedbackPlugin.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/plugins/PasteIntoFeedbackPlugin.js
new file mode 100644
index 000000000..fcab65db1
--- /dev/null
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/plugins/PasteIntoFeedbackPlugin.js
@@ -0,0 +1,15 @@
+/* eslint-disable no-param-reassign */
+import { Plugin, PluginKey } from 'prosemirror-state';
+
+const PasteIntoFeedbackPlugin = new PluginKey('pasteIntoFeedbackPlugin');
+
+export default (props, context) => {
+  return new Plugin({
+    key: PasteIntoFeedbackPlugin,
+    props: {
+      handlePaste: (view, event, slice) => {
+        if (view.state.selection.from === null) return true;
+      },
+    },
+  });
+};
diff --git a/wax-prosemirror-services/src/MultipleChoiceSingleCorrectQuestionService/components/QuestionComponent.js b/wax-prosemirror-services/src/MultipleChoiceSingleCorrectQuestionService/components/QuestionComponent.js
index 7f3e507c5..80044aa84 100644
--- a/wax-prosemirror-services/src/MultipleChoiceSingleCorrectQuestionService/components/QuestionComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceSingleCorrectQuestionService/components/QuestionComponent.js
@@ -122,8 +122,12 @@ export default ({ node, view, getPos }) => {
 
   const getIsDisabled = () => {
     context.view.main.state.doc.descendants((editorNode, index) => {
-      if (editorNode.type.name === 'multiple_choice_single_correct') {
-        console.log(editorNode);
+      if (editorNode.type.name === 'multiple_choice_single_correct_container') {
+        editorNode.content.content.forEach(element => {
+          if (element.attrs.correct) {
+            console.log(element);
+          }
+        });
       }
     });
   };
@@ -139,8 +143,8 @@ export default ({ node, view, getPos }) => {
           <QuestionNunber />
           <SwitchComponent
             getPos={getPos}
-            node={node}
             isDisabled={getIsDisabled()}
+            node={node}
           />
         </InfoRow>
         <QuestionWrapper>
diff --git a/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseNodeView.js b/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseNodeView.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestion.js b/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestion.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestionService.js b/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestionService.js
new file mode 100644
index 000000000..eb82a0962
--- /dev/null
+++ b/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestionService.js
@@ -0,0 +1,30 @@
+import Service from '../Service';
+import TrueFalseQuestion from './TrueFalseQuestion';
+// import multipleChoiceSingleCorrectNode from './schema/multipleChoiceSingleCorrectNode';
+// import multipleChoiceSingleCorrectContainerNode from './schema/multipleChoiceSingleCorrectContainerNode';
+// import QuestionComponent from './components/QuestionComponent';
+import TrueFalseNodeView from './TrueFalseNodeView';
+
+class TrueFalseQuestionService extends Service {
+  register() {
+    this.container.bind('TrueFalseQuestion').to(TrueFalseQuestion);
+    const createNode = this.container.get('CreateNode');
+    const addPortal = this.container.get('AddPortal');
+
+    // createNode({
+    //   multiple_choice_single_correct: multipleChoiceSingleCorrectNode,
+    // });
+
+    // createNode({
+    //   multiple_choice_single_correct_container: multipleChoiceSingleCorrectContainerNode,
+    // });
+
+    // addPortal({
+    //   nodeView: TrueFalseNodeView,
+    //   component: QuestionComponent,
+    //   context: this.app,
+    // });
+  }
+}
+
+export default TrueFalseQuestionService;
-- 
GitLab