diff --git a/editors/demo/src/Editors.js b/editors/demo/src/Editors.js index abd0628fb70695fdd171c22a2956784070ef3345..d19991a2ed8613a7f85ed0fed95a7dc6ef294736 100644 --- a/editors/demo/src/Editors.js +++ b/editors/demo/src/Editors.js @@ -70,7 +70,7 @@ const Editors = () => { case 'ncbi': return <NCBI />; default: - return <Editoria />; + return <HHMI />; } }; diff --git a/wax-prosemirror-services/src/EssayService/EssayQuestion.js b/wax-prosemirror-services/src/EssayService/EssayQuestion.js index a02f7931a60feec6c230fe8eac0a5fd24c5b1dee..aca581aab47125ba3d08194ae287ee5b8d5a4098 100644 --- a/wax-prosemirror-services/src/EssayService/EssayQuestion.js +++ b/wax-prosemirror-services/src/EssayService/EssayQuestion.js @@ -1,5 +1,6 @@ import { injectable } from 'inversify'; import { wrapIn } from 'prosemirror-commands'; +import { v4 as uuidv4 } from 'uuid'; import Tools from '../lib/Tools'; @injectable() @@ -11,7 +12,9 @@ class EssayQuestion extends Tools { get run() { return (state, dispatch) => { - wrapIn(state.config.schema.nodes.essay)(state, dispatch); + wrapIn(state.config.schema.nodes.essay, { + id: uuidv4(), + })(state, dispatch); }; } diff --git a/wax-prosemirror-services/src/EssayService/components/EditorComponent.js b/wax-prosemirror-services/src/EssayService/components/EditorComponent.js index 6a3fbc010aa60770e48b2bc4624845620c29dd34..90f48a3c22d441c923036c0c58bab2e199f5b566 100644 --- a/wax-prosemirror-services/src/EssayService/components/EditorComponent.js +++ b/wax-prosemirror-services/src/EssayService/components/EditorComponent.js @@ -45,6 +45,7 @@ const EditorComponent = ({ node, view, getPos }) => { const editorRef = useRef(); const context = useContext(WaxContext); + const { activeViewId } = context; let questionView; const questionId = node.attrs.id; const isEditable = context.view.main.props.editable(editable => { @@ -98,21 +99,14 @@ const EditorComponent = ({ node, view, getPos }) => { disallowedTools: ['Images', 'Lists', 'lift', 'MultipleChoice'], handleDOMEvents: { mousedown: () => { - context.view.main.dispatch( - context.view.main.state.tr.setSelection( - new TextSelection( - context.view.main.state.tr.doc.resolve(getPos() + 2), + context.view[activeViewId].dispatch( + context.view[activeViewId].state.tr.setSelection( + TextSelection.between( + context.view[activeViewId].state.selection.$anchor, + context.view[activeViewId].state.selection.$head, ), ), ); - // context.view[activeViewId].dispatch( - // context.view[activeViewId].state.tr.setSelection( - // TextSelection.between( - // context.view[activeViewId].state.selection.$anchor, - // context.view[activeViewId].state.selection.$head, - // ), - // ), - // ); context.updateView({}, questionId); // Kludge to prevent issues due to the fact that the whole // footnote is node-selected (and thus DOM-selected) when diff --git a/wax-prosemirror-services/src/EssayService/components/EssayComponent.js b/wax-prosemirror-services/src/EssayService/components/EssayComponent.js index ace6f2e9102c7c4a199ffca60051ea4866828b2a..efc17d00e85d22f08872143943820c9a7851260f 100644 --- a/wax-prosemirror-services/src/EssayService/components/EssayComponent.js +++ b/wax-prosemirror-services/src/EssayService/components/EssayComponent.js @@ -1,5 +1,7 @@ +/* eslint-disable react/prop-types */ import React from 'react'; +import EditorComponent from './EditorComponent'; export default ({ node, view, getPos }) => { - return <span>Essay</span>; + return <EditorComponent getPos={getPos} node={node} view={view} />; }; diff --git a/wax-prosemirror-services/src/EssayService/schema/essayNode.js b/wax-prosemirror-services/src/EssayService/schema/essayNode.js index e87a69822768f84d6e8778651db9e39c62e85482..257009cb8529d99fd27c39343e60894a054f5890 100644 --- a/wax-prosemirror-services/src/EssayService/schema/essayNode.js +++ b/wax-prosemirror-services/src/EssayService/schema/essayNode.js @@ -1,9 +1,9 @@ const essayNode = { attrs: { class: { default: 'essay' }, + id: { default: '' }, }, group: 'block questions', - atom: true, selectable: true, draggable: true, content: 'block+',