From ca84e98b6449bbc7ff952b3cbefff681734a81ce Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Wed, 16 Sep 2020 10:50:35 +0300
Subject: [PATCH] find block change

---
 .../src/trackChanges/TrackChangePlugin.js     | 41 ++++-----
 .../src/trackChanges/helpers.js               | 84 -------------------
 2 files changed, 16 insertions(+), 109 deletions(-)
 delete mode 100644 wax-prosemirror-plugins/src/trackChanges/helpers.js

diff --git a/wax-prosemirror-plugins/src/trackChanges/TrackChangePlugin.js b/wax-prosemirror-plugins/src/trackChanges/TrackChangePlugin.js
index 0de481e2e..2fb5bdcbd 100644
--- a/wax-prosemirror-plugins/src/trackChanges/TrackChangePlugin.js
+++ b/wax-prosemirror-plugins/src/trackChanges/TrackChangePlugin.js
@@ -16,29 +16,6 @@ export default options => {
     key,
     state: {
       init(config, state) {
-        const userIds = [];
-        state.doc.descendants(node => {
-          if (node.attrs.track) {
-            node.attrs.track.forEach(track => {
-              if (!userIds.includes(track.user) && track.user !== 0) {
-                userIds.push(track.user);
-              }
-            });
-          } else {
-            node.marks.forEach(mark => {
-              if (
-                ['deletion', 'insertion', 'format_change'].includes(
-                  mark.type.name,
-                ) &&
-                !userIds.includes(mark.attrs.user) &&
-                mark.attrs.user !== 0
-              ) {
-                userIds.push(mark.attrs.user);
-              }
-            });
-          }
-        });
-
         return {
           decos: DecorationSet.empty,
         };
@@ -46,11 +23,25 @@ export default options => {
       apply(tr, prev, oldState, state) {
         const meta = tr.getMeta(key);
         if (meta) {
-          // There has been an update, return values from meta instead
-          // of previous values
           return meta;
         }
 
+        const {
+          selection: { from, to },
+        } = state;
+
+        state.doc.nodesBetween(from, to, (node, pos) => {
+          if (
+            node.attrs.track &&
+            node.attrs.track.find(track => track.type === 'block_change')
+          ) {
+            const blockChangeTrack = node.attrs.track.find(
+              track => track.type === 'block_change',
+            );
+            console.log(blockChangeTrack);
+          }
+        });
+
         let { decos } = this.getState(oldState);
 
         if (tr.selectionSet) {
diff --git a/wax-prosemirror-plugins/src/trackChanges/helpers.js b/wax-prosemirror-plugins/src/trackChanges/helpers.js
deleted file mode 100644
index 0cdeda125..000000000
--- a/wax-prosemirror-plugins/src/trackChanges/helpers.js
+++ /dev/null
@@ -1,84 +0,0 @@
-// import { Decoration, DecorationSet } from 'prosemirror-view';
-// import { DocumentHelpers } from 'wax-prosemirror-utilities';
-//
-// import {
-//   key,
-//   selectedInsertionSpec,
-//   selectedDeletionSpec,
-//   selectedChangeFormatSpec,
-//   selectedChangeBlockSpec,
-// } from './TrackChangePlugin';
-//
-// export function getSelectedChanges(state) {
-//   const { decos } = key.getState(state);
-//
-//   const insertion = decos.find(
-//     undefined,
-//     undefined,
-//     spec => spec === selectedInsertionSpec,
-//   )[0];
-//   const deletion = decos.find(
-//     undefined,
-//     undefined,
-//     spec => spec === selectedDeletionSpec,
-//   )[0];
-//   const format_change = decos.find(
-//     undefined,
-//     undefined,
-//     spec => spec === selectedChangeFormatSpec,
-//   )[0];
-//   const block_change = decos.find(
-//     undefined,
-//     undefined,
-//     spec => spec === selectedChangeBlockSpec,
-//   )[0];
-//
-//   return { insertion, deletion, format_change, block_change };
-// }
-//
-// export function setSelectedChanges(state, type, pos) {
-//   const { tr } = state;
-//   const node = tr.doc.nodeAt(pos);
-//   const mark = node.attrs.track
-//     ? node.attrs.track.find(trackAttr => trackAttr.type === type)
-//     : node.marks.find(mark => mark.type.name === type);
-//   if (!mark) {
-//     return;
-//   }
-//
-//   DocumentHelpers.findMarkPosition(state, pos, type);
-//
-//   const selectedChange = node.isInline
-//     ? DocumentHelpers.findMarkPosition(state, pos, type)
-//     : { from: pos, to: pos + node.nodeSize };
-//   let decos = DecorationSet.empty;
-//   let spec;
-//   if (type === 'insertion') {
-//     spec = selectedInsertionSpec;
-//   } else if (type === 'deletion') {
-//     spec = selectedDeletionSpec;
-//   } else if (type === 'format_change') {
-//     spec = selectedChangeFormatSpec;
-//   } else if (type === 'block_change') {
-//     spec = selectedChangeBlockSpec;
-//   }
-//   const decoType = node.isInline ? Decoration.inline : Decoration.node;
-//   decos = decos.add(tr.doc, [
-//     decoType(
-//       selectedChange.from,
-//       selectedChange.to,
-//       {
-//         class: `selected-${type}`,
-//       },
-//       spec,
-//     ),
-//   ]);
-//   tr.setMeta(key, { decos }).setMeta('track', true);
-// }
-//
-// export function deactivateAllSelectedChanges(tr) {
-//   const pluginState = {
-//     decos: DecorationSet.empty,
-//   };
-//   return tr.setMeta(key, pluginState).setMeta('track', true);
-// }
-- 
GitLab