From 2bab18d2cfb7ec8338f51227fed16fcd6be52ca3 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Sat, 12 Mar 2022 11:59:24 +0200
Subject: [PATCH] rest of files

---
 .../src/Editoria/layout/EditoriaLayout.js     |  1 +
 .../Editoria/layout/EditoriaMobileLayout.js   |  4 +--
 .../src/components/images/ImageUpload.js      |  8 ++---
 .../trackChanges/ConnectedTrackChange.js      | 26 ++++++++--------
 .../TrackChangeOptionsComponent.js            | 12 ++++----
 wax-prosemirror-core/src/helpers/helpers.js   |  4 +--
 .../src/EssayService/EssayAnswerNodeView.js   |  8 ++---
 .../src/EssayService/EssayQuestion.js         | 30 ++++++++++---------
 .../src/EssayService/EssayQuestionNodeView.js |  8 ++---
 .../components/EditorComponent.js             | 19 +++++++-----
 .../components/EssayAnswerComponent.js        | 23 +++++++-------
 .../components/EssayQuestionComponent.js      | 24 ++++++++-------
 .../src/EssayService/components/ToolBarBtn.js |  4 +--
 .../FillTheGapContainerNodeView.js            | 12 ++++----
 .../FillTheGapNodeView.js                     | 16 ++++------
 .../components/ContainerEditor.js             | 18 ++++++-----
 .../components/EditorComponent.js             | 19 ++++++------
 .../components/FeedbackComponent.js           | 20 ++++++-------
 .../FillTheGapContainerComponent.js           |  5 ++--
 .../components/InputComponent.js              | 17 ++++++-----
 .../MultipleChoiceContainerNodeView.js        |  8 ++---
 .../MultipleChoiceNodeView.js                 |  8 ++---
 ...pleChoiceSingleCorrectContainerNodeView.js |  8 ++---
 .../MultipleChoiceSingleCorrectNodeView.js    |  8 ++---
 .../QuestionMultipleSingleNodeView.js         |  8 ++---
 .../components/AnswerComponent.js             | 20 +++++--------
 .../components/SwitchComponent.js             |  8 ++---
 .../QuestionNodeView.js                       |  8 ++---
 .../QuestionTrueFalseNodeView.js              |  8 ++---
 .../TrueFalseContainerNodeView.js             |  8 ++---
 .../TrueFalseNodeView.js                      |  8 ++---
 .../components/AnswerComponent.js             | 21 +++++--------
 .../components/SwitchComponent.js             |  8 ++---
 .../QuestionTrueFalseSingleNodeView.js        |  8 ++---
 ...TrueFalseSingleCorrectContainerNodeView.js |  8 ++---
 .../TrueFalseSingleCorrectNodeView.js         |  8 ++---
 .../components/AnswerComponent.js             | 21 +++++--------
 .../components/SwitchComponent.js             |  8 ++---
 .../components/AnswerComponent.js             | 21 +++++--------
 .../components/EditorComponent.js             | 25 +++++++++-------
 .../components/FeedbackComponent.js           | 28 +++++++++--------
 .../components/QuestionEditorComponent.js     | 17 ++++++-----
 .../components/SwitchComponent.js             |  9 +++---
 .../components/ToolBarBtn.js                  |  4 +--
 .../helpers/helpers.js                        | 30 +++++++++----------
 .../src/PortalService/AbstractNodeView.js     |  2 +-
 .../DropComponent.js                          |  2 +-
 47 files changed, 298 insertions(+), 300 deletions(-)

diff --git a/editors/demo/src/Editoria/layout/EditoriaLayout.js b/editors/demo/src/Editoria/layout/EditoriaLayout.js
index bc4a0b7a0..6eea3a0c1 100644
--- a/editors/demo/src/Editoria/layout/EditoriaLayout.js
+++ b/editors/demo/src/Editoria/layout/EditoriaLayout.js
@@ -171,6 +171,7 @@ const NotesContainer = styled.div`
   padding-left: ${grid(10)};
   height: 100%;
   width: 65%;
+  ${EditorElements};
 `;
 const WaxBottomRightInfo = styled.div``;
 const InfoContainer = styled.div`
diff --git a/editors/demo/src/Editoria/layout/EditoriaMobileLayout.js b/editors/demo/src/Editoria/layout/EditoriaMobileLayout.js
index 8bb9cc23d..7cda592c3 100644
--- a/editors/demo/src/Editoria/layout/EditoriaMobileLayout.js
+++ b/editors/demo/src/Editoria/layout/EditoriaMobileLayout.js
@@ -152,7 +152,7 @@ const InfoContainer = styled.div`
   right: 21px;
   z-index: 1;
 `;
-const InfoArea = styled.div``;
+
 let surfaceHeight = 500;
 let notesHeight = 150;
 
@@ -178,7 +178,7 @@ const BottomRightInfo = ComponentPlugin('BottomRightInfo');
 
 const EditoriaLayout = ({ editor }) => {
   const {
-    view: { main },
+    pmViews: { main },
   } = useContext(WaxContext);
 
   const notes = main && getNotes(main);
diff --git a/wax-prosemirror-components/src/components/images/ImageUpload.js b/wax-prosemirror-components/src/components/images/ImageUpload.js
index ced0b167c..146f4cb4f 100644
--- a/wax-prosemirror-components/src/components/images/ImageUpload.js
+++ b/wax-prosemirror-components/src/components/images/ImageUpload.js
@@ -35,15 +35,15 @@ const ImageUpload = ({ item, fileUpload, view }) => {
           nodeFound = node;
         }
       });
-      context.view.main.dispatch(
-        context.view.main.state.tr
+      main.dispatch(
+        main.state.tr
           .setMeta('outsideView', activeViewId)
           .setSelection(
             new TextSelection(
-              context.view.main.state.tr.doc.resolve(
+              main.state.tr.doc.resolve(
                 nodeFound.pos +
                   2 +
-                  context.view[activeViewId].state.selection.to,
+                  context.pmViews[activeViewId].state.selection.to,
               ),
             ),
           ),
diff --git a/wax-prosemirror-components/src/components/trackChanges/ConnectedTrackChange.js b/wax-prosemirror-components/src/components/trackChanges/ConnectedTrackChange.js
index b4e28d9e1..7193c658e 100644
--- a/wax-prosemirror-components/src/components/trackChanges/ConnectedTrackChange.js
+++ b/wax-prosemirror-components/src/components/trackChanges/ConnectedTrackChange.js
@@ -20,7 +20,7 @@ const ConnectedTrackChangeStyled = styled.div`
 
 export default ({ trackChangeId, top, recalculateTops, trackChange }) => {
   const context = useContext(WaxContext);
-  const { app, activeView, view } = context;
+  const { app, activeView, pmViews } = context;
   const user = app.config.get('user');
   const [isActive, setIsActive] = useState(false);
   const { state, dispatch } = activeView;
@@ -41,30 +41,32 @@ export default ({ trackChangeId, top, recalculateTops, trackChange }) => {
     if (viewId !== 'main') context.updateView({}, viewId);
 
     const allTracksWithSameId = DocumentHelpers.findAllMarksWithSameId(
-      view[viewId].state,
+      pmViews[viewId].state,
       trackData,
     );
     const maxPos = maxBy(allTracksWithSameId, 'pos');
     maxPos.pos += last(allTracksWithSameId).node.nodeSize;
 
-    view[viewId].dispatch(
-      view[viewId].state.tr.setSelection(
-        new TextSelection(view[viewId].state.tr.doc.resolve(maxPos.pos - 1)),
+    pmViews[viewId].dispatch(
+      pmViews[viewId].state.tr.setSelection(
+        new TextSelection(pmViews[viewId].state.tr.doc.resolve(maxPos.pos - 1)),
       ),
     );
 
-    view[viewId].focus();
+    pmViews[viewId].focus();
     return true;
   };
 
   const focusOnBlcock = trackData => {
-    view[viewId].dispatch(
-      view[viewId].state.tr.setSelection(
-        new TextSelection(view[viewId].state.tr.doc.resolve(trackData.pos + 1)),
+    pmViews[viewId].dispatch(
+      pmViews[viewId].state.tr.setSelection(
+        new TextSelection(
+          pmViews[viewId].state.tr.doc.resolve(trackData.pos + 1),
+        ),
       ),
     );
 
-    view[viewId].focus();
+    pmViews[viewId].focus();
     return true;
   };
 
@@ -80,13 +82,13 @@ export default ({ trackChangeId, top, recalculateTops, trackChange }) => {
   const onClickAccept = () => {
     const acceptConfig = app.config.get('config.AcceptTrackChangeService');
     acceptTrackChange(state, dispatch, user, activeTrackChange, acceptConfig);
-    view[viewId].focus();
+    pmViews[viewId].focus();
   };
 
   const onClickReject = () => {
     const rejectConfig = app.config.get('config.RejectTrackChangeService');
     rejectTrackChange(state, dispatch, user, activeTrackChange, rejectConfig);
-    view[viewId].focus();
+    pmViews[viewId].focus();
   };
 
   const MemorizedTrackChange = useMemo(
diff --git a/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsComponent.js b/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsComponent.js
index ae06eb172..38554a98f 100644
--- a/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsComponent.js
+++ b/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsComponent.js
@@ -189,13 +189,13 @@ const TrackChangeOptionsComponent = ({
 }) => {
   const [isShownTrack, setIsShownTrack] = useState(false);
   const menuItems = groups[0].items;
-  const { app, view, activeView, activeViewId } = useContext(WaxContext);
-  const { state } = view;
+  const { app, pmViews, activeView, activeViewId } = useContext(WaxContext);
+  const { state } = activeView;
   const user = app.config.get('user');
   const hideShowPlugin = app.PmPlugins.get('hideShowPlugin');
-  const inlineTracks = getInlineTracks(view.main).length;
-  const blockTracks = getTrackBlockNodes(view.main).length;
-  const comments = getComments(view.main).length;
+  const inlineTracks = getInlineTracks(pmViews.main).length;
+  const blockTracks = getTrackBlockNodes(pmViews.main).length;
+  const comments = getComments(pmViews.main).length;
 
   const renderTools = () => {
     const tools = [];
@@ -223,7 +223,7 @@ const TrackChangeOptionsComponent = ({
               if (menuItem.name === 'ShowHideTrackChange') {
                 setShowHidden(!showHiddenValue);
                 hideShowPlugin.props.setHideShow(showHiddenValue);
-                each(view, (singleView, viewId) => {
+                each(pmViews, (singleView, viewId) => {
                   singleView.dispatch(singleView.state.tr);
                 });
                 return false;
diff --git a/wax-prosemirror-core/src/helpers/helpers.js b/wax-prosemirror-core/src/helpers/helpers.js
index 1f5b4d512..974c01309 100644
--- a/wax-prosemirror-core/src/helpers/helpers.js
+++ b/wax-prosemirror-core/src/helpers/helpers.js
@@ -35,10 +35,10 @@ const getDocContent = (schema, serializer, targetFormat, context) => {
   let content = '';
   alterNotesSchema(schema);
   if (targetFormat === 'JSON') {
-    content = context.app.context.view.main.state.doc.content;
+    content = context.app.context.pmViews.main.state.doc.content;
   } else {
     const serialize = serializer(schema);
-    content = serialize(context.app.context.view.main.state.doc.content);
+    content = serialize(context.app.context.pmViews.main.state.doc.content);
   }
   revertNotesSchema(content);
 
diff --git a/wax-prosemirror-services/src/EssayService/EssayAnswerNodeView.js b/wax-prosemirror-services/src/EssayService/EssayAnswerNodeView.js
index 36cda93ba..6946e9f83 100644
--- a/wax-prosemirror-services/src/EssayService/EssayAnswerNodeView.js
+++ b/wax-prosemirror-services/src/EssayService/EssayAnswerNodeView.js
@@ -24,8 +24,8 @@ export default class EssayAnswerNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class EssayAnswerNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -46,7 +46,7 @@ export default class EssayAnswerNodeView extends AbstractNodeView {
   }
 
   stopEvent(event) {
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/EssayService/EssayQuestion.js b/wax-prosemirror-services/src/EssayService/EssayQuestion.js
index cae89533f..8ab9229ea 100644
--- a/wax-prosemirror-services/src/EssayService/EssayQuestion.js
+++ b/wax-prosemirror-services/src/EssayService/EssayQuestion.js
@@ -24,30 +24,32 @@ const checkifEmpty = view => {
 };
 
 const createEmptyParagraph = (context, newAnswerId) => {
-  if (context.view[newAnswerId]) {
-    context.view[newAnswerId].dispatch(
-      context.view[newAnswerId].state.tr.setSelection(
+  const { pmViews } = context;
+
+  if (pmViews[newAnswerId]) {
+    pmViews[newAnswerId].dispatch(
+      pmViews[newAnswerId].state.tr.setSelection(
         TextSelection.between(
-          context.view[newAnswerId].state.selection.$anchor,
-          context.view[newAnswerId].state.selection.$head,
+          pmViews[newAnswerId].state.selection.$anchor,
+          pmViews[newAnswerId].state.selection.$head,
         ),
       ),
     );
-    if (context.view[newAnswerId].dispatch) {
-      const type = context.view.main.state.schema.nodes.paragraph;
-      context.view[newAnswerId].dispatch(
-        context.view[newAnswerId].state.tr.insert(0, type.create()),
+    if (pmViews[newAnswerId].dispatch) {
+      const type = pmViews.main.state.schema.nodes.paragraph;
+      pmViews[newAnswerId].dispatch(
+        pmViews[newAnswerId].state.tr.insert(0, type.create()),
       );
     }
-    context.view[newAnswerId].dispatch(
-      context.view[newAnswerId].state.tr.setSelection(
+    pmViews[newAnswerId].dispatch(
+      pmViews[newAnswerId].state.tr.setSelection(
         TextSelection.between(
-          context.view[newAnswerId].state.selection.$anchor,
-          context.view[newAnswerId].state.selection.$head,
+          pmViews[newAnswerId].state.selection.$anchor,
+          pmViews[newAnswerId].state.selection.$head,
         ),
       ),
     );
-    context.view[newAnswerId].focus();
+    pmViews[newAnswerId].focus();
   }
 };
 
diff --git a/wax-prosemirror-services/src/EssayService/EssayQuestionNodeView.js b/wax-prosemirror-services/src/EssayService/EssayQuestionNodeView.js
index c69fefc4c..7f98b85d5 100644
--- a/wax-prosemirror-services/src/EssayService/EssayQuestionNodeView.js
+++ b/wax-prosemirror-services/src/EssayService/EssayQuestionNodeView.js
@@ -24,8 +24,8 @@ export default class EssayQuestionNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class EssayQuestionNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -46,7 +46,7 @@ export default class EssayQuestionNodeView extends AbstractNodeView {
   }
 
   stopEvent(event) {
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/EssayService/components/EditorComponent.js b/wax-prosemirror-services/src/EssayService/components/EditorComponent.js
index 8bfcdfd54..753a54d14 100644
--- a/wax-prosemirror-services/src/EssayService/components/EditorComponent.js
+++ b/wax-prosemirror-services/src/EssayService/components/EditorComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useEffect } from 'react';
@@ -45,10 +44,14 @@ const EditorComponent = ({ node, view, getPos }) => {
   const editorRef = useRef();
 
   const context = useContext(WaxContext);
-  const { activeViewId } = context;
+  const {
+    app,
+    activeViewId,
+    pmViews: { main },
+  } = context;
   let questionView;
   const questionId = node.attrs.id;
-  const isEditable = context.view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
@@ -69,7 +72,7 @@ const EditorComponent = ({ node, view, getPos }) => {
     };
   };
 
-  const plugins = [keymap(createKeyBindings()), ...context.app.getPlugins()];
+  const plugins = [keymap(createKeyBindings()), ...app.getPlugins()];
 
   // eslint-disable-next-line no-shadow
   const createPlaceholder = placeholder => {
@@ -99,11 +102,11 @@ const EditorComponent = ({ node, view, getPos }) => {
         disallowedTools: ['Images', 'Lists', 'lift', 'MultipleChoice'],
         handleDOMEvents: {
           mousedown: () => {
-            context.view[activeViewId].dispatch(
-              context.view[activeViewId].state.tr.setSelection(
+            context.pmViews[activeViewId].dispatch(
+              context.pmViews[activeViewId].state.tr.setSelection(
                 TextSelection.between(
-                  context.view[activeViewId].state.selection.$anchor,
-                  context.view[activeViewId].state.selection.$head,
+                  context.pmViews[activeViewId].state.selection.$anchor,
+                  context.pmViews[activeViewId].state.selection.$head,
                 ),
               ),
             );
diff --git a/wax-prosemirror-services/src/EssayService/components/EssayAnswerComponent.js b/wax-prosemirror-services/src/EssayService/components/EssayAnswerComponent.js
index 97a50f237..696278600 100644
--- a/wax-prosemirror-services/src/EssayService/components/EssayAnswerComponent.js
+++ b/wax-prosemirror-services/src/EssayService/components/EssayAnswerComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useEffect } from 'react';
@@ -51,9 +50,13 @@ const EssayAnswerComponent = ({ node, view, getPos }) => {
   const editorRef = useRef();
 
   const context = useContext(WaxContext);
+  const {
+    app,
+    pmViews: { main },
+  } = context;
   let essayAnswerView;
   const questionId = node.attrs.id;
-  const isEditable = context.view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
@@ -100,7 +103,7 @@ const EssayAnswerComponent = ({ node, view, getPos }) => {
     };
   };
 
-  const plugins = [keymap(createKeyBindings()), ...context.app.getPlugins()];
+  const plugins = [keymap(createKeyBindings()), ...app.getPlugins()];
 
   // eslint-disable-next-line no-shadow
   const createPlaceholder = placeholder => {
@@ -131,15 +134,15 @@ const EssayAnswerComponent = ({ node, view, getPos }) => {
         handleDOMEvents: {
           mousedown: () => {
             context.updateView({}, questionId);
-            context.view.main.dispatch(
-              context.view.main.state.tr
+            main.dispatch(
+              main.state.tr
                 .setMeta('outsideView', questionId)
                 .setSelection(
                   new TextSelection(
-                    context.view.main.state.tr.doc.resolve(
+                    main.state.tr.doc.resolve(
                       getPos() +
                         2 +
-                        context.view[questionId].state.selection.to,
+                        context.pmViews[questionId].state.selection.to,
                     ),
                   ),
                 ),
@@ -172,8 +175,8 @@ const EssayAnswerComponent = ({ node, view, getPos }) => {
   }, []);
 
   const dispatchTransaction = tr => {
-    const outerTr = context.view.main.state.tr;
-    context.view.main.dispatch(outerTr.setMeta('outsideView', questionId));
+    const outerTr = main.state.tr;
+    main.dispatch(outerTr.setMeta('outsideView', questionId));
     const { state, transactions } = essayAnswerView.state.applyTransaction(tr);
     context.updateView({}, questionId);
     essayAnswerView.updateState(state);
@@ -185,7 +188,7 @@ const EssayAnswerComponent = ({ node, view, getPos }) => {
           outerTr.step(steps[j].map(offsetMap));
       }
       if (outerTr.docChanged)
-        context.view.main.dispatch(outerTr.setMeta('outsideView', questionId));
+        main.dispatch(outerTr.setMeta('outsideView', questionId));
     }
   };
 
diff --git a/wax-prosemirror-services/src/EssayService/components/EssayQuestionComponent.js b/wax-prosemirror-services/src/EssayService/components/EssayQuestionComponent.js
index b2add9612..32f738970 100644
--- a/wax-prosemirror-services/src/EssayService/components/EssayQuestionComponent.js
+++ b/wax-prosemirror-services/src/EssayService/components/EssayQuestionComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useEffect } from 'react';
@@ -49,9 +48,14 @@ const EssayQuestionComponent = ({ node, view, getPos }) => {
   const editorRef = useRef();
 
   const context = useContext(WaxContext);
+  const {
+    app,
+    pmViews: { main },
+  } = context;
+
   let essayQuestionView;
   const questionId = node.attrs.id;
-  const isEditable = context.view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
@@ -98,7 +102,7 @@ const EssayQuestionComponent = ({ node, view, getPos }) => {
     };
   };
 
-  const plugins = [keymap(createKeyBindings()), ...context.app.getPlugins()];
+  const plugins = [keymap(createKeyBindings()), ...app.getPlugins()];
 
   // eslint-disable-next-line no-shadow
   const createPlaceholder = placeholder => {
@@ -129,15 +133,15 @@ const EssayQuestionComponent = ({ node, view, getPos }) => {
         handleDOMEvents: {
           mousedown: () => {
             context.updateView({}, questionId);
-            context.view.main.dispatch(
-              context.view.main.state.tr
+            main.dispatch(
+              main.state.tr
                 .setMeta('outsideView', questionId)
                 .setSelection(
                   new TextSelection(
-                    context.view.main.state.tr.doc.resolve(
+                    main.state.tr.doc.resolve(
                       getPos() +
                         2 +
-                        context.view[questionId].state.selection.to,
+                        context.pmViews[questionId].state.selection.to,
                     ),
                   ),
                 ),
@@ -173,8 +177,8 @@ const EssayQuestionComponent = ({ node, view, getPos }) => {
   }, []);
 
   const dispatchTransaction = tr => {
-    const outerTr = context.view.main.state.tr;
-    context.view.main.dispatch(outerTr.setMeta('outsideView', questionId));
+    const outerTr = main.state.tr;
+    main.dispatch(outerTr.setMeta('outsideView', questionId));
     const { state, transactions } = essayQuestionView.state.applyTransaction(
       tr,
     );
@@ -188,7 +192,7 @@ const EssayQuestionComponent = ({ node, view, getPos }) => {
           outerTr.step(steps[j].map(offsetMap));
       }
       if (outerTr.docChanged)
-        context.view.main.dispatch(outerTr.setMeta('outsideView', questionId));
+        main.dispatch(outerTr.setMeta('outsideView', questionId));
     }
   };
 
diff --git a/wax-prosemirror-services/src/EssayService/components/ToolBarBtn.js b/wax-prosemirror-services/src/EssayService/components/ToolBarBtn.js
index 84090be50..ceec5b108 100644
--- a/wax-prosemirror-services/src/EssayService/components/ToolBarBtn.js
+++ b/wax-prosemirror-services/src/EssayService/components/ToolBarBtn.js
@@ -16,7 +16,7 @@ const ToolBarBtn = ({ view = {}, item }) => {
   const { icon, label, select, title } = item;
   const context = useContext(WaxContext);
   const {
-    view: { main },
+    pmViews: { main },
     activeView,
   } = useContext(WaxContext);
 
@@ -38,7 +38,7 @@ const ToolBarBtn = ({ view = {}, item }) => {
         label={label}
         onMouseDown={e => {
           e.preventDefault();
-          item.run(context.view.main, context);
+          item.run(main, context);
         }}
         title={title}
       />
diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapContainerNodeView.js b/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapContainerNodeView.js
index c24768949..b61ea7648 100644
--- a/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapContainerNodeView.js
+++ b/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapContainerNodeView.js
@@ -24,8 +24,8 @@ export default class FillTheGapContainerNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class FillTheGapContainerNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -46,7 +46,7 @@ export default class FillTheGapContainerNodeView extends AbstractNodeView {
   }
 
   selectNode() {
-    this.context.view[this.node.attrs.id].focus();
+    this.context.pmViews[this.node.attrs.id].focus();
   }
 
   stopEvent(event) {
@@ -55,9 +55,9 @@ export default class FillTheGapContainerNodeView extends AbstractNodeView {
     }
 
     return (
-      this.context.view[this.node.attrs.id] !== undefined &&
+      this.context.pmViews[this.node.attrs.id] !== undefined &&
       event.target !== undefined &&
-      this.context.view[this.node.attrs.id].dom.contains(event.target)
+      this.context.pmViews[this.node.attrs.id].dom.contains(event.target)
     );
   }
 }
diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapNodeView.js b/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapNodeView.js
index 701c2cf6c..068d2d702 100644
--- a/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapNodeView.js
+++ b/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapNodeView.js
@@ -24,8 +24,8 @@ export default class FillTheGapNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class FillTheGapNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -46,18 +46,14 @@ export default class FillTheGapNodeView extends AbstractNodeView {
   }
 
   selectNode() {
-    this.context.view[this.node.attrs.id].focus();
+    this.context.pmViews[this.node.attrs.id].focus();
   }
 
   stopEvent(event) {
     return (
-      this.context.view[this.node.attrs.id] !== undefined &&
+      this.context.pmViews[this.node.attrs.id] !== undefined &&
       event.target !== undefined &&
-      this.context.view[this.node.attrs.id].dom.contains(event.target)
+      this.context.pmViews[this.node.attrs.id].dom.contains(event.target)
     );
   }
-
-  ignoreMutation() {
-    return true;
-  }
 }
diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/components/ContainerEditor.js b/wax-prosemirror-services/src/FillTheGapQuestionService/components/ContainerEditor.js
index a3083d237..27bdb40de 100644
--- a/wax-prosemirror-services/src/FillTheGapQuestionService/components/ContainerEditor.js
+++ b/wax-prosemirror-services/src/FillTheGapQuestionService/components/ContainerEditor.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useEffect } from 'react';
@@ -36,9 +35,14 @@ const EditorComponent = ({ node, view, getPos }) => {
   const editorRef = useRef();
 
   const context = useContext(WaxContext);
+  const {
+    app,
+    pmViews: { main },
+  } = context;
+
   let gapContainerView;
   const questionId = node.attrs.id;
-  const isEditable = context.view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
@@ -59,7 +63,7 @@ const EditorComponent = ({ node, view, getPos }) => {
     };
   };
 
-  const plugins = [keymap(createKeyBindings()), ...context.app.getPlugins()];
+  const plugins = [keymap(createKeyBindings()), ...app.getPlugins()];
 
   finalPlugins = finalPlugins.concat([...plugins]);
 
@@ -86,15 +90,15 @@ const EditorComponent = ({ node, view, getPos }) => {
         ],
         handleDOMEvents: {
           mousedown: () => {
-            context.view.main.dispatch(
-              context.view.main.state.tr
+            main.dispatch(
+              main.state.tr
                 .setMeta('outsideView', questionId)
                 .setSelection(
                   new TextSelection(
-                    context.view.main.state.tr.doc.resolve(
+                    main.state.tr.doc.resolve(
                       getPos() +
                         2 +
-                        context.view[questionId].state.selection.to,
+                        context.pmViews[questionId].state.selection.to,
                     ),
                   ),
                 ),
diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/components/EditorComponent.js b/wax-prosemirror-services/src/FillTheGapQuestionService/components/EditorComponent.js
index dfd211373..77521c768 100644
--- a/wax-prosemirror-services/src/FillTheGapQuestionService/components/EditorComponent.js
+++ b/wax-prosemirror-services/src/FillTheGapQuestionService/components/EditorComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useEffect } from 'react';
@@ -49,9 +48,13 @@ const EditorComponent = ({ node, view, getPos }) => {
   const editorRef = useRef();
 
   const context = useContext(WaxContext);
+  const {
+    app,
+    pmViews: { main },
+  } = context;
   let gapView;
   const questionId = node.attrs.id;
-  const isEditable = context.view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
@@ -72,12 +75,10 @@ const EditorComponent = ({ node, view, getPos }) => {
     };
   };
 
-  const plugins = [keymap(createKeyBindings()), ...context.app.getPlugins()];
+  const plugins = [keymap(createKeyBindings()), ...app.getPlugins()];
 
   finalPlugins = finalPlugins.concat([...plugins]);
 
-  const { activeViewId } = context;
-
   useEffect(() => {
     gapView = new EditorView(
       {
@@ -103,15 +104,15 @@ const EditorComponent = ({ node, view, getPos }) => {
         ],
         handleDOMEvents: {
           mousedown: () => {
-            context.view.main.dispatch(
-              context.view.main.state.tr
+            main.dispatch(
+              main.state.tr
                 .setMeta('outsideView', questionId)
                 .setSelection(
                   new TextSelection(
-                    context.view.main.state.tr.doc.resolve(
+                    main.state.tr.doc.resolve(
                       getPos() +
                         2 +
-                        context.view[questionId].state.selection.to,
+                        context.pmViews[questionId].state.selection.to,
                     ),
                   ),
                 ),
diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/components/FeedbackComponent.js b/wax-prosemirror-services/src/FillTheGapQuestionService/components/FeedbackComponent.js
index c9f4b2045..0afd56b88 100644
--- a/wax-prosemirror-services/src/FillTheGapQuestionService/components/FeedbackComponent.js
+++ b/wax-prosemirror-services/src/FillTheGapQuestionService/components/FeedbackComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useState, useEffect } from 'react';
@@ -35,13 +34,16 @@ const FeedBackInput = styled.input`
 
 export default ({ node, view, getPos, readOnly }) => {
   const context = useContext(WaxContext);
+  const {
+    pmViews: { main },
+  } = context;
   const [feedBack, setFeedBack] = useState(' ');
   const [isFirstRun, setFirstRun] = useState(true);
   const [typing, setTyping] = useState(false);
   const feedBackRef = useRef(null);
 
   useEffect(() => {
-    const allNodes = getNodes(context.view.main);
+    const allNodes = getNodes(main);
     allNodes.forEach(singleNode => {
       if (singleNode.node.attrs.id === node.attrs.id) {
         if (!typing || context.transaction.meta.inputType === 'Redo') {
@@ -53,14 +55,14 @@ export default ({ node, view, getPos, readOnly }) => {
         }
       }
     });
-  }, [getNodes(context.view.main)]);
+  }, [getNodes(main)]);
 
   const handleKeyDown = e => {
     setTyping(true);
     if (e.key === 'Backspace') {
-      context.view.main.dispatch(
-        context.view.main.state.tr.setSelection(
-          TextSelection.create(context.view.main.state.tr.doc, null),
+      main.dispatch(
+        main.state.tr.setSelection(
+          TextSelection.create(main.state.tr.doc, null),
         ),
       );
     }
@@ -75,10 +77,8 @@ export default ({ node, view, getPos, readOnly }) => {
   };
 
   const onFocus = () => {
-    context.view.main.dispatch(
-      context.view.main.state.tr.setSelection(
-        TextSelection.create(context.view.main.state.tr.doc, null),
-      ),
+    main.dispatch(
+      main.state.tr.setSelection(TextSelection.create(main.state.tr.doc, null)),
     );
   };
 
diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/components/FillTheGapContainerComponent.js b/wax-prosemirror-services/src/FillTheGapQuestionService/components/FillTheGapContainerComponent.js
index af75baa87..acdb1891e 100644
--- a/wax-prosemirror-services/src/FillTheGapQuestionService/components/FillTheGapContainerComponent.js
+++ b/wax-prosemirror-services/src/FillTheGapQuestionService/components/FillTheGapContainerComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 import React, { useContext } from 'react';
 import { WaxContext } from 'wax-prosemirror-core';
@@ -21,10 +20,10 @@ const FillTheGapWrapper = styled.div`
 export default ({ node, view, getPos }) => {
   const context = useContext(WaxContext);
   const {
-    view: { main },
+    pmViews: { main },
   } = context;
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
   const isEditable = main.props.editable(editable => {
     return editable;
diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/components/InputComponent.js b/wax-prosemirror-services/src/FillTheGapQuestionService/components/InputComponent.js
index 0ce5483c7..6c496ca74 100644
--- a/wax-prosemirror-services/src/FillTheGapQuestionService/components/InputComponent.js
+++ b/wax-prosemirror-services/src/FillTheGapQuestionService/components/InputComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useState, useEffect } from 'react';
@@ -21,6 +20,10 @@ const AnswerInput = styled.input`
 
 export default ({ node, view, getPos }) => {
   const context = useContext(WaxContext);
+  const {
+    pmViews: { main },
+  } = context;
+
   const [answer, setAnswer] = useState(' ');
   const [typing, setTyping] = useState(false);
   const answerRef = useRef(null);
@@ -30,9 +33,9 @@ export default ({ node, view, getPos }) => {
   const handleKeyDown = e => {
     setTyping(true);
     if (e.key === 'Backspace') {
-      context.view.main.dispatch(
-        context.view.main.state.tr.setSelection(
-          TextSelection.create(context.view.main.state.tr.doc, null),
+      main.dispatch(
+        main.state.tr.setSelection(
+          TextSelection.create(main.state.tr.doc, null),
         ),
       );
     }
@@ -47,10 +50,8 @@ export default ({ node, view, getPos }) => {
   };
 
   const onFocus = () => {
-    context.view.main.dispatch(
-      context.view.main.state.tr.setSelection(
-        TextSelection.create(context.view.main.state.tr.doc, null),
-      ),
+    main.dispatch(
+      main.state.tr.setSelection(TextSelection.create(main.state.tr.doc, null)),
     );
   };
 
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceContainerNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceContainerNodeView.js
index c00da4041..87d8faffa 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceContainerNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceContainerNodeView.js
@@ -24,8 +24,8 @@ export default class MultipleChoiceContainerNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class MultipleChoiceContainerNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class MultipleChoiceContainerNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceNodeView.js
index 83f5ee867..7d4f72ac0 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceNodeView.js
@@ -24,8 +24,8 @@ export default class MultipleChoiceNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class MultipleChoiceNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class MultipleChoiceNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectContainerNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectContainerNodeView.js
index 1e0db8862..ab1754453 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectContainerNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectContainerNodeView.js
@@ -24,8 +24,8 @@ export default class MultipleChoiceSingleCorrectContainerNodeView extends Abstra
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class MultipleChoiceSingleCorrectContainerNodeView extends Abstra
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class MultipleChoiceSingleCorrectContainerNodeView extends Abstra
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectNodeView.js
index 87956baad..eb1c12b91 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectNodeView.js
@@ -25,8 +25,8 @@ export default class MultipleChoiceSingleCorrectNodeView extends AbstractNodeVie
   update(node) {
     // if (!node.sameMarkup(this.node)) return false;
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -35,7 +35,7 @@ export default class MultipleChoiceSingleCorrectNodeView extends AbstractNodeVie
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -50,7 +50,7 @@ export default class MultipleChoiceSingleCorrectNodeView extends AbstractNodeVie
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/QuestionMultipleSingleNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/QuestionMultipleSingleNodeView.js
index 40bc5a9fd..51fa05cc2 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/QuestionMultipleSingleNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/QuestionMultipleSingleNodeView.js
@@ -24,8 +24,8 @@ export default class QuestionMultipleSingleNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class QuestionMultipleSingleNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class QuestionMultipleSingleNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/AnswerComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/AnswerComponent.js
index 0ac82c38f..a9cc737b2 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/AnswerComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/AnswerComponent.js
@@ -83,11 +83,11 @@ const StyledIconAction = styled(Icon)`
 export default ({ node, view, getPos }) => {
   const context = useContext(WaxContext);
   const {
-    view: { main },
+    pmViews: { main },
   } = context;
 
   // eslint-disable-next-line react/destructuring-assignment
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
   const isEditable = main.props.editable(editable => {
     return editable;
@@ -115,26 +115,22 @@ export default ({ node, view, getPos }) => {
 
   const addOption = nodeId => {
     const newAnswerId = uuidv4();
-    context.view.main.state.doc.descendants((editorNode, index) => {
+    main.state.doc.descendants((editorNode, index) => {
       if (editorNode.type.name === 'multiple_choice_single_correct') {
         if (editorNode.attrs.id === nodeId) {
-          context.view.main.dispatch(
-            context.view.main.state.tr.setSelection(
+          main.dispatch(
+            main.state.tr.setSelection(
               new TextSelection(
-                context.view.main.state.tr.doc.resolve(
-                  editorNode.nodeSize + index,
-                ),
+                main.state.tr.doc.resolve(editorNode.nodeSize + index),
               ),
             ),
           );
 
-          const answerOption = context.view.main.state.config.schema.nodes.multiple_choice_single_correct.create(
+          const answerOption = main.state.config.schema.nodes.multiple_choice_single_correct.create(
             { id: newAnswerId },
             Fragment.empty,
           );
-          context.view.main.dispatch(
-            context.view.main.state.tr.replaceSelectionWith(answerOption),
-          );
+          main.dispatch(main.state.tr.replaceSelectionWith(answerOption));
           // create Empty Paragraph
           setTimeout(() => {
             helpers.createEmptyParagraph(context, newAnswerId);
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js
index 7259ea37b..e29755eff 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useState, useContext, useEffect } from 'react';
@@ -12,15 +11,14 @@ const CustomSwitch = ({ node, getPos }) => {
   const [checked, setChecked] = useState(false);
   const [checkedAnswerMode, setCheckedAnswerMode] = useState(false);
   const {
-    view,
-    view: { main },
+    pmViews: { main },
   } = context;
 
-  const isEditable = view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
   useEffect(() => {
     const allNodes = getNodes(main);
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/QuestionNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/QuestionNodeView.js
index de265aa47..9430d97a5 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/QuestionNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/QuestionNodeView.js
@@ -24,8 +24,8 @@ export default class QuestionNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class QuestionNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class QuestionNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/QuestionTrueFalseNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/QuestionTrueFalseNodeView.js
index f373d41b5..8dd46b286 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/QuestionTrueFalseNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/QuestionTrueFalseNodeView.js
@@ -24,8 +24,8 @@ export default class QuestionTrueFalseNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class QuestionTrueFalseNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class QuestionTrueFalseNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseContainerNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseContainerNodeView.js
index f5f145d38..d5d916320 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseContainerNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseContainerNodeView.js
@@ -24,8 +24,8 @@ export default class TrueFalseContainerNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class TrueFalseContainerNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class TrueFalseContainerNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseNodeView.js
index ad6eb44d8..9720ca22b 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseNodeView.js
@@ -24,8 +24,8 @@ export default class TrueFalseNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class TrueFalseNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class TrueFalseNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/AnswerComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/AnswerComponent.js
index ace315a66..63acff33a 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/AnswerComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/AnswerComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 import React, { useContext } from 'react';
 import styled from 'styled-components';
@@ -84,10 +83,10 @@ const StyledIconAction = styled(Icon)`
 export default ({ node, view, getPos }) => {
   const context = useContext(WaxContext);
   const {
-    view: { main },
+    pmViews: { main },
   } = context;
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
   const isEditable = main.props.editable(editable => {
     return editable;
@@ -115,26 +114,22 @@ export default ({ node, view, getPos }) => {
 
   const addOption = nodeId => {
     const newAnswerId = uuidv4();
-    context.view.main.state.doc.descendants((editorNode, index) => {
+    main.state.doc.descendants((editorNode, index) => {
       if (editorNode.type.name === 'true_false') {
         if (editorNode.attrs.id === nodeId) {
-          context.view.main.dispatch(
-            context.view.main.state.tr.setSelection(
+          main.dispatch(
+            main.state.tr.setSelection(
               new TextSelection(
-                context.view.main.state.tr.doc.resolve(
-                  editorNode.nodeSize + index,
-                ),
+                main.state.tr.doc.resolve(editorNode.nodeSize + index),
               ),
             ),
           );
 
-          const answerOption = context.view.main.state.config.schema.nodes.true_false.create(
+          const answerOption = main.state.config.schema.nodes.true_false.create(
             { id: newAnswerId },
             Fragment.empty,
           );
-          context.view.main.dispatch(
-            context.view.main.state.tr.replaceSelectionWith(answerOption),
-          );
+          main.dispatch(main.state.tr.replaceSelectionWith(answerOption));
           // create Empty Paragraph
           setTimeout(() => {
             helpers.createEmptyParagraph(context, newAnswerId);
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/SwitchComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/SwitchComponent.js
index 1c85aec23..1d7c9b5b0 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/SwitchComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/SwitchComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useState, useContext, useEffect } from 'react';
@@ -12,13 +11,12 @@ const CustomSwitch = ({ node, getPos }) => {
   const [checkedAnswerMode, setCheckedAnswerMode] = useState(false);
 
   const {
-    view,
-    view: { main },
+    pmViews: { main },
   } = context;
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
-  const isEditable = view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/QuestionTrueFalseSingleNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/QuestionTrueFalseSingleNodeView.js
index 9496fe060..3da377957 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/QuestionTrueFalseSingleNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/QuestionTrueFalseSingleNodeView.js
@@ -24,8 +24,8 @@ export default class QuestionTrueFalseSingleNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class QuestionTrueFalseSingleNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class QuestionTrueFalseSingleNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectContainerNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectContainerNodeView.js
index d8a8ed1c1..5d61b3852 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectContainerNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectContainerNodeView.js
@@ -24,8 +24,8 @@ export default class TrueFalseSingleCorrectContainerNodeView extends AbstractNod
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class TrueFalseSingleCorrectContainerNodeView extends AbstractNod
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class TrueFalseSingleCorrectContainerNodeView extends AbstractNod
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectNodeView.js
index d57375c18..c7319c19e 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectNodeView.js
@@ -24,8 +24,8 @@ export default class TrueFalseSingleCorrectNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class TrueFalseSingleCorrectNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class TrueFalseSingleCorrectNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/AnswerComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/AnswerComponent.js
index 65d103b75..8a097de48 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/AnswerComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/AnswerComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 import React, { useContext } from 'react';
 import styled from 'styled-components';
@@ -84,10 +83,10 @@ const StyledIconAction = styled(Icon)`
 export default ({ node, view, getPos }) => {
   const context = useContext(WaxContext);
   const {
-    view: { main },
+    pmViews: { main },
   } = context;
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
   const isEditable = main.props.editable(editable => {
     return editable;
@@ -115,26 +114,22 @@ export default ({ node, view, getPos }) => {
 
   const addOption = nodeId => {
     const newAnswerId = uuidv4();
-    context.view.main.state.doc.descendants((editorNode, index) => {
+    main.state.doc.descendants((editorNode, index) => {
       if (editorNode.type.name === 'true_false_single_correct') {
         if (editorNode.attrs.id === nodeId) {
-          context.view.main.dispatch(
-            context.view.main.state.tr.setSelection(
+          main.dispatch(
+            main.state.tr.setSelection(
               new TextSelection(
-                context.view.main.state.tr.doc.resolve(
-                  editorNode.nodeSize + index,
-                ),
+                main.state.tr.doc.resolve(editorNode.nodeSize + index),
               ),
             ),
           );
 
-          const answerOption = context.view.main.state.config.schema.nodes.true_false_single_correct.create(
+          const answerOption = main.state.config.schema.nodes.true_false_single_correct.create(
             { id: newAnswerId },
             Fragment.empty,
           );
-          context.view.main.dispatch(
-            context.view.main.state.tr.replaceSelectionWith(answerOption),
-          );
+          main.dispatch(main.state.tr.replaceSelectionWith(answerOption));
           // create Empty Paragraph
           setTimeout(() => {
             helpers.createEmptyParagraph(context, newAnswerId);
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/SwitchComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/SwitchComponent.js
index fd6b91985..7dcb3653d 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/SwitchComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/SwitchComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useState, useContext, useEffect } from 'react';
@@ -13,13 +12,12 @@ const CustomSwitch = ({ node, getPos }) => {
   const [checkedAnswerMode, setCheckedAnswerMode] = useState(false);
 
   const {
-    view,
-    view: { main },
+    pmViews: { main },
   } = context;
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
-  const isEditable = view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/AnswerComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/AnswerComponent.js
index 8e3a4e730..14c6c4233 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/AnswerComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/AnswerComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 import React, { useContext } from 'react';
 import styled from 'styled-components';
@@ -84,10 +83,10 @@ const StyledIconAction = styled(Icon)`
 export default ({ node, view, getPos }) => {
   const context = useContext(WaxContext);
   const {
-    view: { main },
+    pmViews: { main },
   } = context;
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
   const isEditable = main.props.editable(editable => {
     return editable;
@@ -115,26 +114,22 @@ export default ({ node, view, getPos }) => {
 
   const addOption = nodeId => {
     const newAnswerId = uuidv4();
-    context.view.main.state.doc.descendants((editorNode, index) => {
+    main.state.doc.descendants((editorNode, index) => {
       if (editorNode.type.name === 'multiple_choice') {
         if (editorNode.attrs.id === nodeId) {
-          context.view.main.dispatch(
-            context.view.main.state.tr.setSelection(
+          main.dispatch(
+            main.state.tr.setSelection(
               new TextSelection(
-                context.view.main.state.tr.doc.resolve(
-                  editorNode.nodeSize + index,
-                ),
+                main.state.tr.doc.resolve(editorNode.nodeSize + index),
               ),
             ),
           );
 
-          const answerOption = context.view.main.state.config.schema.nodes.multiple_choice.create(
+          const answerOption = main.state.config.schema.nodes.multiple_choice.create(
             { id: newAnswerId },
             Fragment.empty,
           );
-          context.view.main.dispatch(
-            context.view.main.state.tr.replaceSelectionWith(answerOption),
-          );
+          main.dispatch(main.state.tr.replaceSelectionWith(answerOption));
           // create Empty Paragraph
           setTimeout(() => {
             helpers.createEmptyParagraph(context, newAnswerId);
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js
index 81ff309ef..d95a0be47 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useEffect } from 'react';
@@ -57,9 +56,13 @@ const EditorComponent = ({ node, view, getPos }) => {
   const editorRef = useRef();
 
   const context = useContext(WaxContext);
+  const {
+    app,
+    pmViews: { main },
+  } = context;
   let questionView;
   const questionId = node.attrs.id;
-  const isEditable = context.view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
@@ -80,7 +83,7 @@ const EditorComponent = ({ node, view, getPos }) => {
     };
   };
 
-  const plugins = [keymap(createKeyBindings()), ...context.app.getPlugins()];
+  const plugins = [keymap(createKeyBindings()), ...app.getPlugins()];
 
   // eslint-disable-next-line no-shadow
   const createPlaceholder = placeholder => {
@@ -110,24 +113,24 @@ const EditorComponent = ({ node, view, getPos }) => {
         disallowedTools: ['Images', 'Lists', 'lift', 'MultipleChoice'],
         handleDOMEvents: {
           mousedown: () => {
-            context.view.main.dispatch(
-              context.view.main.state.tr
+            main.dispatch(
+              main.state.tr
                 .setMeta('outsideView', questionId)
                 .setSelection(
                   new TextSelection(
-                    context.view.main.state.tr.doc.resolve(
+                    main.state.tr.doc.resolve(
                       getPos() +
                         2 +
-                        context.view[questionId].state.selection.to,
+                        context.pmViews[questionId].state.selection.to,
                     ),
                   ),
                 ),
             );
-            // context.view[activeViewId].dispatch(
-            //   context.view[activeViewId].state.tr.setSelection(
+            // context.pmViews[activeViewId].dispatch(
+            //   context.pmViews[activeViewId].state.tr.setSelection(
             //     TextSelection.between(
-            //       context.view[activeViewId].state.selection.$anchor,
-            //       context.view[activeViewId].state.selection.$head,
+            //       context.pmViews[activeViewId].state.selection.$anchor,
+            //       context.pmViews[activeViewId].state.selection.$head,
             //     ),
             //   ),
             // );
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
index b7b59b96c..5ff3ac5cb 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useState, useEffect } from 'react';
@@ -33,13 +32,18 @@ const FeedBackInput = styled.input`
 
 export default ({ node, view, getPos, readOnly }) => {
   const context = useContext(WaxContext);
+  const {
+    app,
+    pmViews: { main },
+  } = context;
+
   const [feedBack, setFeedBack] = useState(' ');
   const [isFirstRun, setFirstRun] = useState(true);
   const [typing, setTyping] = useState(false);
   const feedBackRef = useRef(null);
 
   useEffect(() => {
-    const allNodes = getNodes(context.view.main);
+    const allNodes = getNodes(main);
     allNodes.forEach(singleNode => {
       if (singleNode.node.attrs.id === node.attrs.id) {
         if (!typing || context.transaction.meta.inputType === 'Redo') {
@@ -51,14 +55,14 @@ export default ({ node, view, getPos, readOnly }) => {
         }
       }
     });
-  }, [getNodes(context.view.main)]);
+  }, [getNodes(main)]);
 
   const handleKeyDown = e => {
     setTyping(true);
     if (e.key === 'Backspace') {
-      context.view.main.dispatch(
-        context.view.main.state.tr.setSelection(
-          TextSelection.create(context.view.main.state.tr.doc, null),
+      main.dispatch(
+        main.state.tr.setSelection(
+          TextSelection.create(main.state.tr.doc, null),
         ),
       );
     }
@@ -69,11 +73,11 @@ export default ({ node, view, getPos, readOnly }) => {
   };
 
   const saveFeedBack = () => {
-    const allNodes = getNodes(context.view.main);
+    const allNodes = getNodes(main);
     allNodes.forEach(singleNode => {
       if (singleNode.node.attrs.id === node.attrs.id) {
-        context.view.main.dispatch(
-          context.view.main.state.tr.setNodeMarkup(getPos(), undefined, {
+        main.dispatch(
+          main.state.tr.setNodeMarkup(getPos(), undefined, {
             ...singleNode.node.attrs,
             feedback: feedBack,
           }),
@@ -85,10 +89,8 @@ export default ({ node, view, getPos, readOnly }) => {
   };
 
   const onFocus = () => {
-    context.view.main.dispatch(
-      context.view.main.state.tr.setSelection(
-        TextSelection.create(context.view.main.state.tr.doc, null),
-      ),
+    main.dispatch(
+      main.state.tr.setSelection(TextSelection.create(main.state.tr.doc, null)),
     );
   };
 
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js
index 74e41034c..eee47af1e 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useEffect } from 'react';
@@ -61,9 +60,13 @@ const QuestionEditorComponent = ({ node, view, getPos }) => {
   const editorRef = useRef();
 
   const context = useContext(WaxContext);
+  const {
+    app,
+    pmViews: { main },
+  } = context;
   let questionView;
   const questionId = node.attrs.id;
-  const isEditable = context.view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
@@ -115,7 +118,7 @@ const QuestionEditorComponent = ({ node, view, getPos }) => {
     };
   };
 
-  const plugins = [keymap(createKeyBindings()), ...context.app.getPlugins()];
+  const plugins = [keymap(createKeyBindings()), ...app.getPlugins()];
 
   // eslint-disable-next-line no-shadow
   const createPlaceholder = placeholder => {
@@ -146,15 +149,15 @@ const QuestionEditorComponent = ({ node, view, getPos }) => {
         handleDOMEvents: {
           mousedown: () => {
             context.updateView({}, questionId);
-            context.view.main.dispatch(
-              context.view.main.state.tr
+            main.dispatch(
+              main.state.tr
                 .setMeta('outsideView', questionId)
                 .setSelection(
                   new TextSelection(
-                    context.view.main.state.tr.doc.resolve(
+                    main.state.tr.doc.resolve(
                       getPos() +
                         2 +
-                        context.view[questionId].state.selection.to,
+                        context.pmViews[questionId].state.selection.to,
                     ),
                   ),
                 ),
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/SwitchComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/SwitchComponent.js
index b0887514e..a046213c5 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/SwitchComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/SwitchComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useState, useContext, useEffect } from 'react';
@@ -11,13 +10,13 @@ const CustomSwitch = ({ node, getPos }) => {
   const [checked, setChecked] = useState(false);
   const [checkedAnswerMode, setCheckedAnswerMode] = useState(false);
   const {
-    view,
-    view: { main },
+    pmViews,
+    pmViews: { main },
   } = context;
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
-  const isEditable = view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/ToolBarBtn.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/ToolBarBtn.js
index 84090be50..ceec5b108 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/ToolBarBtn.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/ToolBarBtn.js
@@ -16,7 +16,7 @@ const ToolBarBtn = ({ view = {}, item }) => {
   const { icon, label, select, title } = item;
   const context = useContext(WaxContext);
   const {
-    view: { main },
+    pmViews: { main },
     activeView,
   } = useContext(WaxContext);
 
@@ -38,7 +38,7 @@ const ToolBarBtn = ({ view = {}, item }) => {
         label={label}
         onMouseDown={e => {
           e.preventDefault();
-          item.run(context.view.main, context);
+          item.run(main, context);
         }}
         title={title}
       />
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js
index 869a539e4..c2ca1ce75 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js
@@ -5,30 +5,30 @@ import { Fragment } from 'prosemirror-model';
 import { findWrapping } from 'prosemirror-transform';
 
 const createEmptyParagraph = (context, newAnswerId) => {
-  if (context.view[newAnswerId]) {
-    context.view[newAnswerId].dispatch(
-      context.view[newAnswerId].state.tr.setSelection(
+  if (context.pmViews[newAnswerId]) {
+    context.pmViews[newAnswerId].dispatch(
+      context.pmViews[newAnswerId].state.tr.setSelection(
         TextSelection.between(
-          context.view[newAnswerId].state.selection.$anchor,
-          context.view[newAnswerId].state.selection.$head,
+          context.pmViews[newAnswerId].state.selection.$anchor,
+          context.pmViews[newAnswerId].state.selection.$head,
         ),
       ),
     );
-    if (context.view[newAnswerId].dispatch) {
-      const type = context.view.main.state.schema.nodes.paragraph;
-      context.view[newAnswerId].dispatch(
-        context.view[newAnswerId].state.tr.insert(0, type.create()),
+    if (context.pmViews[newAnswerId].dispatch) {
+      const type = context.pmViews.main.state.schema.nodes.paragraph;
+      context.pmViews[newAnswerId].dispatch(
+        context.pmViews[newAnswerId].state.tr.insert(0, type.create()),
       );
     }
-    context.view[newAnswerId].dispatch(
-      context.view[newAnswerId].state.tr.setSelection(
+    context.pmViews[newAnswerId].dispatch(
+      context.pmViews[newAnswerId].state.tr.setSelection(
         TextSelection.between(
-          context.view[newAnswerId].state.selection.$anchor,
-          context.view[newAnswerId].state.selection.$head,
+          context.pmViews[newAnswerId].state.selection.$anchor,
+          context.pmViews[newAnswerId].state.selection.$head,
         ),
       ),
     );
-    context.view[newAnswerId].focus();
+    context.pmViews[newAnswerId].focus();
   }
 };
 
@@ -79,7 +79,7 @@ const createOptions = (main, context, parentType, questionType, answerType) => {
   tr.replaceSelectionWith(secondOption);
   dispatch(tr);
   setTimeout(() => {
-    context.view[question.attrs.id].focus();
+    context.pmViews[question.attrs.id].focus();
     //   createEmptyParagraph(context, firstOption.attrs.id);
     //   createEmptyParagraph(context, secondOption.attrs.id);
     //   createEmptyParagraph(context, question.attrs.id);
diff --git a/wax-prosemirror-services/src/PortalService/AbstractNodeView.js b/wax-prosemirror-services/src/PortalService/AbstractNodeView.js
index 37304f52e..9d50b0c70 100644
--- a/wax-prosemirror-services/src/PortalService/AbstractNodeView.js
+++ b/wax-prosemirror-services/src/PortalService/AbstractNodeView.js
@@ -36,7 +36,7 @@ export default class AbstractNodeView {
   }
 
   stopEvent(event) {
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 
diff --git a/wax-prosemirror-services/src/WaxToolGroups/MultipleDropDownToolGroupService/DropComponent.js b/wax-prosemirror-services/src/WaxToolGroups/MultipleDropDownToolGroupService/DropComponent.js
index d92127eb1..30bb239e4 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/MultipleDropDownToolGroupService/DropComponent.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/MultipleDropDownToolGroupService/DropComponent.js
@@ -43,7 +43,7 @@ const DropComponent = ({ title, view, tools }) => {
   const {
     activeView,
     activeViewId,
-    view: { main },
+    pmViews: { main },
   } = context;
   const { state } = view;
 
-- 
GitLab