From ca3cc28a511892d6c007b8f67bebcdb8c55a6ae1 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Thu, 2 Dec 2021 17:19:27 +0200
Subject: [PATCH] fix undo redo cmd

---
 wax-prosemirror-components/index.js                  |  1 +
 wax-prosemirror-components/src/components/Button.js  |  4 +---
 .../src/components/SaveButton.js                     |  8 ++++----
 .../src/components/TitleButton.js                    |  4 +---
 .../src/components/various/LeftSideButton.js         |  4 +---
 .../src/BaseService/RedoService/Redo.js              | 12 +++++++++++-
 .../src/BaseService/SaveService/Save.js              |  4 ----
 .../src/BaseService/UndoService/Undo.js              | 12 +++++++++++-
 wax-prosemirror-services/src/lib/Tools.js            |  2 --
 9 files changed, 30 insertions(+), 21 deletions(-)

diff --git a/wax-prosemirror-components/index.js b/wax-prosemirror-components/index.js
index 6b8a47e79..7b19bfe9f 100644
--- a/wax-prosemirror-components/index.js
+++ b/wax-prosemirror-components/index.js
@@ -1,5 +1,6 @@
 export { default as Overlay } from './src/components/Overlay';
 export { default as Button } from './src/components/Button';
+export { default as UndoRedoButton } from './src/components/UndoRedoButton';
 export { default as MenuButton } from './src/ui/buttons/MenuButton';
 export { default as icons } from './src/icons/icons';
 export { default as TableDropDown } from './src/components/tables/TableDropDown';
diff --git a/wax-prosemirror-components/src/components/Button.js b/wax-prosemirror-components/src/components/Button.js
index 14f7c44e6..992be55df 100644
--- a/wax-prosemirror-components/src/components/Button.js
+++ b/wax-prosemirror-components/src/components/Button.js
@@ -4,7 +4,7 @@ import { WaxContext } from 'wax-prosemirror-core';
 import MenuButton from '../ui/buttons/MenuButton';
 
 const Button = ({ view = {}, item }) => {
-  const { active, icon, label, onlyOnMain, run, select, title } = item;
+  const { active, icon, label, run, select, title } = item;
 
   const {
     view: { main },
@@ -12,8 +12,6 @@ const Button = ({ view = {}, item }) => {
     activeView,
   } = useContext(WaxContext);
 
-  if (onlyOnMain) view = main;
-
   const isEditable = main.props.editable(editable => {
     return editable;
   });
diff --git a/wax-prosemirror-components/src/components/SaveButton.js b/wax-prosemirror-components/src/components/SaveButton.js
index 2d91b820f..fcbcdb459 100644
--- a/wax-prosemirror-components/src/components/SaveButton.js
+++ b/wax-prosemirror-components/src/components/SaveButton.js
@@ -4,7 +4,7 @@ import { WaxContext } from 'wax-prosemirror-core';
 import MenuButton from '../ui/buttons/MenuButton';
 
 const SaveButton = ({ view = {}, item }) => {
-  const { icon, label, onlyOnMain, select, title } = item;
+  const { icon, label, select, title } = item;
 
   const {
     view: { main },
@@ -12,8 +12,6 @@ const SaveButton = ({ view = {}, item }) => {
     activeView,
   } = useContext(WaxContext);
 
-  if (onlyOnMain) view = main;
-
   const { state } = view;
 
   const [isSaving, setIsSaving] = useState(false);
@@ -57,7 +55,9 @@ const SaveButton = ({ view = {}, item }) => {
         disabled={isDisabled}
         iconName={iconTodisplay}
         label={label}
-        onMouseDown={e => handleMouseDown(e, view.state, view.dispatch)}
+        onMouseDown={e =>
+          handleMouseDown(e, main.view.state, main.view.dispatch)
+        }
         title={title}
       />
     ),
diff --git a/wax-prosemirror-components/src/components/TitleButton.js b/wax-prosemirror-components/src/components/TitleButton.js
index 1477ed41f..4e6ada5e7 100644
--- a/wax-prosemirror-components/src/components/TitleButton.js
+++ b/wax-prosemirror-components/src/components/TitleButton.js
@@ -5,7 +5,7 @@ import { DocumentHelpers } from 'wax-prosemirror-utilities';
 import MenuButton from '../ui/buttons/MenuButton';
 
 const TitleButton = ({ view = {}, item }) => {
-  const { active, icon, label, onlyOnMain, run, select, title } = item;
+  const { active, icon, label, run, select, title } = item;
 
   const {
     app,
@@ -14,8 +14,6 @@ const TitleButton = ({ view = {}, item }) => {
     activeView,
   } = useContext(WaxContext);
 
-  if (onlyOnMain) view = main;
-
   const { dispatch, state } = view;
 
   const titleNode = DocumentHelpers.findChildrenByType(
diff --git a/wax-prosemirror-components/src/components/various/LeftSideButton.js b/wax-prosemirror-components/src/components/various/LeftSideButton.js
index 61b65e239..9df3369d9 100644
--- a/wax-prosemirror-components/src/components/various/LeftSideButton.js
+++ b/wax-prosemirror-components/src/components/various/LeftSideButton.js
@@ -13,7 +13,7 @@ const StyledButton = styled(MenuButton)`
 `;
 
 const LeftSideButton = ({ view = {}, item }) => {
-  const { active, icon, label, onlyOnMain, run, select, title } = item;
+  const { active, icon, label, run, select, title } = item;
 
   const {
     view: { main },
@@ -21,8 +21,6 @@ const LeftSideButton = ({ view = {}, item }) => {
     activeView,
   } = useContext(WaxContext);
 
-  if (onlyOnMain) view = main;
-
   const isEditable = main.props.editable(editable => {
     return editable;
   });
diff --git a/wax-prosemirror-services/src/BaseService/RedoService/Redo.js b/wax-prosemirror-services/src/BaseService/RedoService/Redo.js
index 2c090f96e..eb1f230b2 100644
--- a/wax-prosemirror-services/src/BaseService/RedoService/Redo.js
+++ b/wax-prosemirror-services/src/BaseService/RedoService/Redo.js
@@ -1,5 +1,8 @@
+import React from 'react';
+import { isEmpty } from 'lodash';
 import { redo } from 'prosemirror-history';
 import { injectable } from 'inversify';
+import { UndoRedoButton } from 'wax-prosemirror-components';
 import Tools from '../../lib/Tools';
 
 export default
@@ -7,7 +10,6 @@ export default
 class Redo extends Tools {
   title = 'Redo';
   icon = 'redo';
-  onlyOnMain = true;
   name = 'Redo';
 
   get run() {
@@ -23,4 +25,12 @@ class Redo extends Tools {
   select(state) {
     return redo(state);
   }
+
+  renderTool(view) {
+    if (isEmpty(view)) return null;
+    // eslint-disable-next-line no-underscore-dangle
+    return this._isDisplayed ? (
+      <UndoRedoButton item={this.toJSON()} key="Redo" view={view} />
+    ) : null;
+  }
 }
diff --git a/wax-prosemirror-services/src/BaseService/SaveService/Save.js b/wax-prosemirror-services/src/BaseService/SaveService/Save.js
index f13d6e901..cd72a2f26 100644
--- a/wax-prosemirror-services/src/BaseService/SaveService/Save.js
+++ b/wax-prosemirror-services/src/BaseService/SaveService/Save.js
@@ -1,7 +1,6 @@
 import React from 'react';
 import { isEmpty } from 'lodash';
 import { injectable } from 'inversify';
-
 import { SaveButton, icons } from 'wax-prosemirror-components';
 import Tools from '../../lib/Tools';
 
@@ -10,7 +9,6 @@ export default
 class Save extends Tools {
   title = 'Save changes';
   icon = 'save';
-  onlyOnMain = true;
   name = 'Save';
   content = icons.save;
   name = 'Save';
@@ -21,8 +19,6 @@ class Save extends Tools {
     };
   }
 
-  get enable() {}
-
   renderTool(view) {
     if (isEmpty(view)) return null;
     // eslint-disable-next-line no-underscore-dangle
diff --git a/wax-prosemirror-services/src/BaseService/UndoService/Undo.js b/wax-prosemirror-services/src/BaseService/UndoService/Undo.js
index 50aa7e657..2781908a2 100644
--- a/wax-prosemirror-services/src/BaseService/UndoService/Undo.js
+++ b/wax-prosemirror-services/src/BaseService/UndoService/Undo.js
@@ -1,5 +1,8 @@
+import React from 'react';
+import { isEmpty } from 'lodash';
 import { undo } from 'prosemirror-history';
 import { injectable } from 'inversify';
+import { UndoRedoButton } from 'wax-prosemirror-components';
 import Tools from '../../lib/Tools';
 
 export default
@@ -7,7 +10,6 @@ export default
 class Undo extends Tools {
   title = 'Undo';
   icon = 'undo';
-  onlyOnMain = true;
   name = 'Undo';
 
   get run() {
@@ -23,4 +25,12 @@ class Undo extends Tools {
   select(state) {
     return undo(state);
   }
+
+  renderTool(view) {
+    if (isEmpty(view)) return null;
+    // eslint-disable-next-line no-underscore-dangle
+    return this._isDisplayed ? (
+      <UndoRedoButton item={this.toJSON()} key="Undo" view={view} />
+    ) : null;
+  }
 }
diff --git a/wax-prosemirror-services/src/lib/Tools.js b/wax-prosemirror-services/src/lib/Tools.js
index 573530f89..f6a92e488 100644
--- a/wax-prosemirror-services/src/lib/Tools.js
+++ b/wax-prosemirror-services/src/lib/Tools.js
@@ -10,7 +10,6 @@ class Tools {
   title = 'title';
   _isDisplayed = true;
   _isHiddenInToolGroup = false;
-  onlyOnMain = false;
   config = {};
   pmplugins = {};
   name = 'name';
@@ -48,7 +47,6 @@ class Tools {
       run: this.run,
       enable: this.enable,
       select: this.select,
-      onlyOnMain: this.onlyOnMain,
       id: this.id,
     };
   }
-- 
GitLab