diff --git a/editors/editoria/src/config/config.js b/editors/editoria/src/config/config.js index 08f4a99e4b4e8693e399a3f67fbd3b011f91e81c..1e332ab95a60a13c5cc0f106f004e975dd78713d 100644 --- a/editors/editoria/src/config/config.js +++ b/editors/editoria/src/config/config.js @@ -56,12 +56,15 @@ export default { PmPlugins: [columnResizing(), tableEditing(), invisibles([hardBreak()])], + // Always load first CommentsService and LinkService, + //as it matters on how PM treats nodes and marks services: [ + new CommentsService(), + new LinkService(), new PlaceholderService(), new ImageService(), new ListsService(), new InlineAnnotationsService(), - new LinkService(), new TablesService(), new TextBlockLevelService(), new BaseService(), @@ -75,7 +78,6 @@ export default { new AnnotationToolGroupService(), new NoteToolGroupService(), new ListToolGroupService(), - new TrackChangeService(), - new CommentsService() + new TrackChangeService() ] }; diff --git a/wax-prosemirror-schema/src/marks/commentMark.js b/wax-prosemirror-schema/src/marks/commentMark.js index e297644ddde7454bc129cafe3bea4ad3cb3ee16b..3e46d3b2ac6b71c6e4ba863abe929bcfd39fba42 100644 --- a/wax-prosemirror-schema/src/marks/commentMark.js +++ b/wax-prosemirror-schema/src/marks/commentMark.js @@ -1,33 +1,37 @@ const comment = { attrs: { + class: { default: "comment" }, id: { default: "" }, group: { default: "" }, conversation: [] }, inclusive: false, - // excludes: "", parseDOM: [ { - tag: "span.comment[data-conversation]", - getAttrs(dom) { - return { - id: dom.dataset.id, - group: dom.dataset.group, - conversation: JSON.parse(dom.dataset.conversation) - }; + tag: "span.comment", + getAttrs(hook, next) { + Object.assign(hook, { + class: hook.dom.getAttribute("class"), + id: hook.dom.dataset.id, + group: hook.dom.dataset.group, + conversation: hook.dom.dataset.conversation + }); + next(); } } ], - toDOM(node) { - return [ + toDOM(hook, next) { + hook.value = [ "span", { - class: "comment", - "data-id": node.attrs.id, - "data-group": node.attrs.group, - "data-conversation": JSON.stringify(node.attrs.conversation) - } + class: hook.node.attrs.class, + "data-id": hook.node.attrs.id, + "data-track": JSON.stringify(hook.node.attrs.track), + "data-group": hook.node.attrs.group + }, + 0 ]; + next(); } }; diff --git a/wax-prosemirror-services/src/CommentsService/CommentsService.js b/wax-prosemirror-services/src/CommentsService/CommentsService.js index 96d9ef630a477dbbfcfa9fae7f352f6327a16ccb..1a35255163621987ac19d1abbf8f56c9d78f7fd5 100644 --- a/wax-prosemirror-services/src/CommentsService/CommentsService.js +++ b/wax-prosemirror-services/src/CommentsService/CommentsService.js @@ -29,8 +29,11 @@ export default class CommentsService extends Service { register() { const createMark = this.container.get("CreateMark"); - createMark({ - comment: commentMark - }); + createMark( + { + comment: commentMark + }, + { toWaxSchema: true } + ); } }