From be700e1e40db12941b86825674375648741b6c54 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Fri, 7 Aug 2020 19:15:21 +0300
Subject: [PATCH] disable if from eq to

---
 .../src/components/Button.js                  | 20 +++---
 .../src/NoteService/Editor.js                 | 69 ++++++++++---------
 .../AcceptTrackChange.js                      |  8 +++
 .../RejectTrackChange.js                      |  8 +++
 4 files changed, 63 insertions(+), 42 deletions(-)

diff --git a/wax-prosemirror-components/src/components/Button.js b/wax-prosemirror-components/src/components/Button.js
index 4e950bc85..50bd49e97 100644
--- a/wax-prosemirror-components/src/components/Button.js
+++ b/wax-prosemirror-components/src/components/Button.js
@@ -1,24 +1,26 @@
-import React, { useContext } from "react";
-import styled from "styled-components";
-import { ButtonStyles } from "wax-prosemirror-themes";
-import { WaxContext } from "wax-prosemirror-core";
+import React, { useContext } from 'react';
+import styled from 'styled-components';
+import { ButtonStyles } from 'wax-prosemirror-themes';
+import { WaxContext } from 'wax-prosemirror-core';
 
 const ButtonStyled = styled.button`
   ${ButtonStyles};
   opacity: ${props => (props.select ? 1 : 0.4)};
-  pointer-events: ${props => (props.select ? "default" : "none")};
-  color: ${props => (props.isActive ? "white" : props.theme.colorButton)};
+  pointer-events: ${props => (props.select ? 'default' : 'none')};
+  color: ${props => (props.isActive ? 'white' : props.theme.colorButton)};
   background-color: ${props =>
-    props.isActive ? props.theme.colorPrimary : "transparent"};
+    props.isActive ? props.theme.colorPrimary : 'transparent'};
   &:hover {
     background-color: ${props =>
-      props.isActive ? props.theme.colorPrimary : "transparent"};
+      props.isActive ? props.theme.colorPrimary : 'transparent'};
   }
 `;
 
 const Button = ({ view = {}, item }) => {
   if (item.onlyOnMain) {
-    const { view: { main } } = useContext(WaxContext);
+    const {
+      view: { main },
+    } = useContext(WaxContext);
     view = main;
   }
 
diff --git a/wax-prosemirror-services/src/NoteService/Editor.js b/wax-prosemirror-services/src/NoteService/Editor.js
index 376644b2f..acd9b3974 100644
--- a/wax-prosemirror-services/src/NoteService/Editor.js
+++ b/wax-prosemirror-services/src/NoteService/Editor.js
@@ -15,8 +15,9 @@ export default ({ node, view }) => {
   const editorRef = useRef();
   const context = useContext(WaxContext);
   const noteId = node.attrs.id;
+  let noteView;
   useEffect(() => {
-    const noteView = new EditorView(
+    noteView = new EditorView(
       { mount: editorRef.current },
       {
         state: EditorState.create({
@@ -24,38 +25,7 @@ export default ({ node, view }) => {
           plugins: [keymap(createKeyBindings()), ...context.app.getPlugins()],
         }),
         // This is the magic part
-        dispatchTransaction: tr => {
-          let { state, transactions } = noteView.state.applyTransaction(tr);
-          noteView.updateState(state);
-
-          const allNotes = DocumentHelpers.findChildrenByType(
-            view.state.doc,
-            view.state.schema.nodes.footnote,
-            true,
-          );
-
-          const noteFound = filter(allNotes, {
-            node: { attrs: { id: noteId } },
-          });
-
-          // TODO Remove timeout and use state to check if noteView has changed
-          setTimeout(() => {
-            context.updateView({}, noteId);
-          }, 20);
-
-          if (!tr.getMeta('fromOutside')) {
-            let outerTr = view.state.tr,
-              offsetMap = StepMap.offset(noteFound[0].pos + 1);
-            for (let i = 0; i < transactions.length; i++) {
-              let steps = transactions[i].steps;
-              for (let j = 0; j < steps.length; j++)
-                outerTr.step(steps[j].map(offsetMap));
-            }
-
-            if (outerTr.docChanged)
-              view.dispatch(outerTr.setMeta('outsideView', 'notes'));
-          }
-        },
+        dispatchTransaction,
         handleDOMEvents: {
           mousedown: () => {
             context.updateView({}, noteId);
@@ -84,6 +54,39 @@ export default ({ node, view }) => {
     }
   }, []);
 
+  const dispatchTransaction = tr => {
+    const { state, transactions } = noteView.state.applyTransaction(tr);
+    noteView.updateState(state);
+
+    const allNotes = DocumentHelpers.findChildrenByType(
+      view.state.doc,
+      view.state.schema.nodes.footnote,
+      true,
+    );
+
+    const noteFound = filter(allNotes, {
+      node: { attrs: { id: noteId } },
+    });
+
+    // TODO Remove timeout and use state to check if noteView has changed
+    setTimeout(() => {
+      context.updateView({}, noteId);
+    }, 20);
+
+    if (!tr.getMeta('fromOutside')) {
+      let outerTr = view.state.tr,
+        offsetMap = StepMap.offset(noteFound[0].pos + 1);
+      for (let i = 0; i < transactions.length; i++) {
+        let steps = transactions[i].steps;
+        for (let j = 0; j < steps.length; j++)
+          outerTr.step(steps[j].map(offsetMap));
+      }
+
+      if (outerTr.docChanged)
+        view.dispatch(outerTr.setMeta('outsideView', 'notes'));
+    }
+  };
+
   const createKeyBindings = () => {
     const keys = getKeys();
     Object.keys(baseKeymap).forEach(key => {
diff --git a/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js b/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js
index 069ece3a1..ecde18b5b 100644
--- a/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js
+++ b/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js
@@ -67,6 +67,14 @@ class AcceptTrackChange extends Tools {
     };
   }
 
+  select = state => {
+    const {
+      selection: { from, to },
+    } = state;
+    if (from === to) return false;
+    return true;
+  };
+
   get active() {
     return state => {};
   }
diff --git a/wax-prosemirror-services/src/TrackChangeService/RejectTrackChangeService/RejectTrackChange.js b/wax-prosemirror-services/src/TrackChangeService/RejectTrackChangeService/RejectTrackChange.js
index 84f8775d2..0d89d3c74 100644
--- a/wax-prosemirror-services/src/TrackChangeService/RejectTrackChangeService/RejectTrackChange.js
+++ b/wax-prosemirror-services/src/TrackChangeService/RejectTrackChangeService/RejectTrackChange.js
@@ -88,6 +88,14 @@ class RejectTrackChange extends Tools {
     };
   }
 
+  select = state => {
+    const {
+      selection: { from, to },
+    } = state;
+    if (from === to) return false;
+    return true;
+  };
+
   get active() {
     return state => {};
   }
-- 
GitLab