From 7a0509d6774761be2f2d84eb7006cd13c642a37a Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Thu, 7 May 2020 11:48:59 +0300 Subject: [PATCH] alter id's for comments/notes in all pm views before pasting --- .../src/helpers/TransformPasted.js | 13 ++++++++++ .../src/NoteService/Editor.js | 4 +++ .../NoteService/helpers/TransformPasted.js | 26 +++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 wax-prosemirror-services/src/NoteService/helpers/TransformPasted.js diff --git a/wax-prosemirror-core/src/helpers/TransformPasted.js b/wax-prosemirror-core/src/helpers/TransformPasted.js index 9ff762af7..5fc679e6d 100644 --- a/wax-prosemirror-core/src/helpers/TransformPasted.js +++ b/wax-prosemirror-core/src/helpers/TransformPasted.js @@ -8,15 +8,28 @@ const transformPasted = (slice, view) => { view.state.schema.marks.comment, true ); + + const notes = DocumentHelpers.findChildrenByType( + content, + view.state.schema.nodes.footnote, + true + ); + const allComments = commentNodes.map(node => { return node.node.marks.filter(comment => { return comment.type.name === "comment"; }); }); + //TODO check to alter attr with transform allComments.forEach(comment => { comment[0].attrs.id = uuidv4(); }); + + notes.forEach(note => { + note.node.attrs.id = uuidv4(); + }); + return slice; }; diff --git a/wax-prosemirror-services/src/NoteService/Editor.js b/wax-prosemirror-services/src/NoteService/Editor.js index f10e5ea53..12ce67a88 100644 --- a/wax-prosemirror-services/src/NoteService/Editor.js +++ b/wax-prosemirror-services/src/NoteService/Editor.js @@ -10,6 +10,7 @@ import { Commands } from "wax-prosemirror-utilities"; import { NoteEditorContainer } from "wax-prosemirror-components"; import { DocumentHelpers } from "wax-prosemirror-utilities"; import { filter } from "lodash"; +import transformPasted from "./helpers/TransformPasted"; export default ({ node, view }) => { const editorRef = useRef(); @@ -62,6 +63,9 @@ export default ({ node, view }) => { // the parent editor is focused. if (noteView.hasFocus()) noteView.focus(); } + }, + transformPasted: slice => { + return transformPasted(slice, noteView); } } ); diff --git a/wax-prosemirror-services/src/NoteService/helpers/TransformPasted.js b/wax-prosemirror-services/src/NoteService/helpers/TransformPasted.js new file mode 100644 index 000000000..0e2e797a2 --- /dev/null +++ b/wax-prosemirror-services/src/NoteService/helpers/TransformPasted.js @@ -0,0 +1,26 @@ +import { v4 as uuidv4 } from "uuid"; +import { DocumentHelpers } from "wax-prosemirror-utilities"; + +const transformPasted = (slice, view) => { + const { content } = slice; + const commentNodes = DocumentHelpers.findChildrenByMark( + content, + view.state.schema.marks.comment, + true + ); + + const allComments = commentNodes.map(node => { + return node.node.marks.filter(comment => { + return comment.type.name === "comment"; + }); + }); + + //TODO check to alter attr with transform + allComments.forEach(comment => { + comment[0].attrs.id = uuidv4(); + }); + + return slice; +}; + +export default transformPasted; -- GitLab