diff --git a/editors/demo/src/Editoria/layout/EditoriaLayout.js b/editors/demo/src/Editoria/layout/EditoriaLayout.js index bc4a0b7a08a871c436e1b453c6fe342bdbacd8a7..6eea3a0c1225c8039cae0ab412ebdd3ee6bb1d65 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 8bb9cc23dd4fe33a50a9002e2ab44dd6bc3a2c3e..7cda592c3793204aa1a4972139afb46432b839e6 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 ced0b167c948e3d8618f233c878520d991f7f340..146f4cb4fac25291ef15336c29e0d98a140b243e 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 b4e28d9e16c2b5a97b8179692b13e8156109f734..7193c658e82d6c8e1367b4fc67868bf912c94346 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 ae06eb172783686bf387dbaa50d76b75bf2acaa3..38554a98ff033e35e0473ade81e5b674c5450e22 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 1f5b4d5123e80dab9b0e0db111b8a7f25b87312e..974c013098ce3b969338c729014dc9b7ee0c8afa 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 36cda93bad53357a86297cd903cfad9e7a3c4183..6946e9f8395ec7b7b0e9c44ed99775994cb61843 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 cae89533fd0d2698908e4323b12df015c3755ab5..8ab9229ea540b4d658a16b6c664347622e403f80 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 c69fefc4c754a84c868390d7e111e5f86625727d..7f98b85d5c864c78d4173e5a6d21ac6408889cde 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 8bfcdfd54cc0bcc91bf3bc3c5a724db874165df7..753a54d147e5ee0c42e532ed0c284a38a6e47c28 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 97a50f237d1f3c25a781f7d4f64a6aee99fddb21..6962786007db6214ddac09a98b51dfc2be68b663 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 b2add961236125b7824974d90774a5acd8561a7f..32f7389700001bf56649f788e427212343dd57b6 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 84090be501c7a846357f7f570d52e7d327f4356a..ceec5b108adedc32472e49db7be9dbe5445869c6 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 c24768949ef504d0c5bd5e266b46f7f031dd75d4..b61ea7648c2e5d119b0dae6912c24b15eae9fba8 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 701c2cf6c6b24688f1d56ce32fcd59f827e298b3..068d2d702dbb84bb1d235154859fc02f2e3064fe 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 a3083d23735c2dd36f6d5c06a648d64e034bc1ef..27bdb40de01cd3bc9d30f6990d809244e213803e 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 dfd2113730625622d4f81db87debcaff2d121fef..77521c768002fe8065c12f1132b0dce9da14a115 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 c9f4b2045207dee993360f85bf67cdeadf05d3e0..0afd56b88d70dcfe21cf7faabbe0af016fef4375 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 af75baa87ac5376d688545444a386132fe25078b..acdb1891e804c7c11f1ced0ef166fb5dda2819b9 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 0ce5483c72f38ca0ac68ed32ba7dff9d95a0d028..6c496ca743ba19848098639ffb9a755f0c4c1d3b 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 c00da4041d4b54711280d4542ff97e31ff382117..87d8faffa08feed825607e918e6ef4f84eee4542 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 83f5ee867d95e702edfabb64bbe163653b9bb9b4..7d4f72ac05dc97a905f22c2db170ee248cc3b069 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 1e0db88629cc08a63a6c8dd1b8537a83d1ac1bff..ab17544531a80cf8c19a7eb922088c73ee1c5b85 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 87956baad8530b370453458a75681225e406f03c..eb1c12b91722a7f4ebceb598cc38080124c615ed 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 40bc5a9fdb59543597c3557fc8b987089d9075b0..51fa05cc2bd638d4811c502b8b306eef591b7e28 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 0ac82c38f04283ec12cc0b54badb30962ec0e7e6..a9cc737b28eed559cfad8775c7a3f8357f9c2a5e 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 7259ea37b9b009d29ef9d8ffa31c36f4f1644dd1..e29755eff0cce192cbc59111bfc6c003e1b1423e 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 de265aa479bc9474d99f2e67ef85bb9acdbab4b3..9430d97a5ecdd5671ad2279e648481537c426927 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 f373d41b5f2bf7218dbdb4bbec9a8c56d851abc6..8dd46b2866c8d02afb8dfc057604fa19a99870e9 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 f5f145d389e4e56f03b4df42fa506a37c799c23a..d5d916320b1b0d9a0bad310b1e4928becd8e8e74 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 ad6eb44d84f0bb4cdee64a43c96fd813422556de..9720ca22b80786883ea66027674ebe4a9a1db8d0 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 ace315a66427d6031b78f4e90b9f5a6be956f1c8..63acff33a489017d810c9646dcf91b8017c95085 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 1c85aec23ef3c9738dacd661d3b98b7dfd969c6f..1d7c9b5b0089eff1031004605a21819917aa6e67 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 9496fe060164aadcb1cb2d06e5f4d51d1c41fd4b..3da377957a63bf0f781874b3f60a66009d929bda 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 d8a8ed1c179151f15a6c1da18c459499eced5555..5d61b38529f5ff0445874ebcae57368fe8ffbe86 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 d57375c18a0d127cb8bbc958004cc113d00c2289..c7319c19e6e27bdb0a0f0481027937f0c80744ad 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 65d103b75f5689417f68d9e04f82d2d2b2ee5613..8a097de4801230e198479b5ad2f44e43388fb986 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 fd6b919857ab937c377d99743b36b17faaef0804..7dcb3653dec051841bdd6c5c4f42731cb7b6b127 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 8e3a4e730376d492af9b1126e01ef2c2e9b5212f..14c6c4233005ab3603e7ee3755e54631a8ed3ad9 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 81ff309ef077e5174b68aa8e1b0cc1363d7f5b0f..d95a0be4778818c1efb61a20443fe995b510d3f8 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 b7b59b96c8b95b6e36a5fa6b4a9bc4f7a233d454..5ff3ac5cb90ed2cb16f549f45f73e022791f4ddf 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 74e41034ce2aaf1d573745646611ee71f71f9ba6..eee47af1e3745b0f02a28f93d86272bd391f2109 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 b0887514ea196df3ee084241d0286397a29ca19a..a046213c51b3675f74305a2ec10e3bfbcd8bd335 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 84090be501c7a846357f7f570d52e7d327f4356a..ceec5b108adedc32472e49db7be9dbe5445869c6 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 869a539e4bb8d711a792da278758de385d0b96d5..c2ca1ce7550d12b7a14631911a9dba38b41ea668 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 37304f52eeade721d2852fa5f622cf9a02ec8ed6..9d50b0c70b166acb5bd0c0df4b4ac4c83a09a7e0 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 d92127eb15375b2fba6b42c58bac40129c3fcd9b..30bb239e4e98b60789e4856e55a76cad68d120b3 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;