diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceNodeView.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceNodeView.js index 64d3c008a8965468bc48b5eeb31dd55158785397..4ed48b674107122fa0ef46ff63cc065e8a81dde9 100644 --- a/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceNodeView.js +++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceNodeView.js @@ -1,46 +1,18 @@ import { AbstractNodeView } from 'wax-prosemirror-services'; export default class MultipleChoiceNodeView extends AbstractNodeView { - constructor( - node, - view, - getPos, - decorations, - createPortal, - Component, - context, - ) { - super(node, view, getPos, decorations, createPortal, Component, context); - this.node = node; - this.outerView = view; - this.getPos = getPos; - this.context = context; - } + // constructor( + // node, + // view, + // getPos, + // decorations, + // createPortal, + // Component, + // context, + // ) { + // super(node, view, getPos, decorations, createPortal, Component, context); + // } static name() { return 'multiple_choice'; } - - update(node) { - if (!node.sameMarkup(this.node)) return false; - this.node = node; - if (this.context.view[node.attrs.id]) { - let state = this.context.view[node.attrs.id].state; - let start = node.content.findDiffStart(state.doc.content); - if (start != null) { - let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content); - let overlap = start - Math.min(endA, endB); - if (overlap > 0) { - endA += overlap; - endB += overlap; - } - this.context.view[node.attrs.id].dispatch( - state.tr - .replace(start, endB, node.slice(start, endA)) - .setMeta('fromOutside', true), - ); - } - } - - return true; - } } diff --git a/wax-prosemirror-services/src/PortalService/AbstractNodeView.js b/wax-prosemirror-services/src/PortalService/AbstractNodeView.js index 14d529f163f689269e530f7d1fc76b02feefc5e6..e06f76d88dbef6a1de4dc6ce7e64c4b2f27624cf 100644 --- a/wax-prosemirror-services/src/PortalService/AbstractNodeView.js +++ b/wax-prosemirror-services/src/PortalService/AbstractNodeView.js @@ -14,13 +14,36 @@ export default class AbstractNodeView { this.dom.id = uuidv4(); this.dom.classList.add('portal'); + this.node = node; + this.outerView = view; + this.getPos = getPos; + this.context = context; createPortal(this.dom, Component, node, view, getPos, decorations, context); } update(node) { - console.log('d;dld;ddld'); - return false; + 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]; + const start = node.content.findDiffStart(state.doc.content); + if (start != null) { + let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content); + const overlap = start - Math.min(endA, endB); + if (overlap > 0) { + endA += overlap; + endB += overlap; + } + this.context.view[node.attrs.id].dispatch( + state.tr + .replace(start, endB, node.slice(start, endA)) + .setMeta('fromOutside', true), + ); + } + } + + return true; } destroy() {