From ef109a3bc2a8ea89a1797f560141092335a5a854 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Tue, 23 Jun 2020 01:41:59 +0300
Subject: [PATCH] merge nodes and marks and sort them in order

---
 .../src/components/rightArea/RightArea.js     | 22 +++++++++++++------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/wax-prosemirror-components/src/components/rightArea/RightArea.js b/wax-prosemirror-components/src/components/rightArea/RightArea.js
index e23a710e7..ea583a8de 100644
--- a/wax-prosemirror-components/src/components/rightArea/RightArea.js
+++ b/wax-prosemirror-components/src/components/rightArea/RightArea.js
@@ -10,7 +10,7 @@ import styled from "styled-components";
 import { WaxContext } from "wax-prosemirror-core";
 import { DocumentHelpers } from "wax-prosemirror-utilities";
 import CommentsBoxList from "./../comments/CommentsBoxList";
-import { each, uniqBy } from "lodash";
+import { each, uniqBy, sortBy } from "lodash";
 
 export default ({ area }) => {
   const { view: { main }, app, activeView } = useContext(WaxContext);
@@ -147,6 +147,7 @@ const updateMarks = view => {
             mark.type.name === "deletion" ||
             mark.type.name === "format_change"
           ) {
+            mark.pos = node.pos;
             finalMarks.push(mark);
           }
         });
@@ -159,15 +160,22 @@ const updateMarks = view => {
       }
     });
 
-    const groupedNodes = {};
-    uniqBy(finalMarks, "attrs.id").forEach(mark => {
-      if (!groupedNodes[mark.attrs.group]) {
-        groupedNodes[mark.attrs.group] = [mark];
+    const nodesAndMarks = [...uniqBy(finalMarks, "attrs.id"), ...finalNodes];
+
+    const groupedMarkNodes = {};
+
+    sortBy(nodesAndMarks, ["pos"]).forEach(markNode => {
+      const markNodeAttrs = markNode.attrs
+        ? markNode.attrs
+        : markNode.node.attrs;
+
+      if (!groupedMarkNodes[markNodeAttrs.group]) {
+        groupedMarkNodes[markNodeAttrs.group] = [markNode];
       } else {
-        groupedNodes[mark.attrs.group].push(mark);
+        groupedMarkNodes[markNodeAttrs.group].push(markNode);
       }
     });
-    return groupedNodes;
+    return groupedMarkNodes;
   }
   return [];
 };
-- 
GitLab