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