From 055c037b9e062a57db885a7778c13d3653e92a5b Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Mon, 11 Jan 2021 19:55:40 +0200
Subject: [PATCH] new track options service

---
 wax-prosemirror-components/index.js           |  1 +
 .../components/trackChanges/HideShowTool.js   | 30 ++++++++++++++++
 wax-prosemirror-services/index.js             |  1 +
 .../TrackOptionsService.js                    | 11 ++++++
 .../TrackOptionsService/TrackOptionsTool.js   | 34 +++++++++++++++++++
 5 files changed, 77 insertions(+)
 create mode 100644 wax-prosemirror-components/src/components/trackChanges/HideShowTool.js
 create mode 100644 wax-prosemirror-services/src/TrackOptionsService/TrackOptionsService.js
 create mode 100644 wax-prosemirror-services/src/TrackOptionsService/TrackOptionsTool.js

diff --git a/wax-prosemirror-components/index.js b/wax-prosemirror-components/index.js
index 252a73fcf..a666ff4fe 100644
--- a/wax-prosemirror-components/index.js
+++ b/wax-prosemirror-components/index.js
@@ -22,3 +22,4 @@ export { default as TextHighlightingTool } from './src/components/textHighlight/
 export { default as EditorInfoTool } from './src/components/EditorInfo/CounterInfo/EditorInfoTool';
 export { default as TransformCaseComponent } from './src/components/transformCase/TransformCaseComponent';
 export { default as EditingSuggestingDropDown } from './src/components/editingSuggesting/EditingSuggestingDropDown';
+export { default as TrackChangeOptionsTool } from './src/components/trackChanges/TrackChangeOptionsTool';
diff --git a/wax-prosemirror-components/src/components/trackChanges/HideShowTool.js b/wax-prosemirror-components/src/components/trackChanges/HideShowTool.js
new file mode 100644
index 000000000..33f1b1e89
--- /dev/null
+++ b/wax-prosemirror-components/src/components/trackChanges/HideShowTool.js
@@ -0,0 +1,30 @@
+/* eslint react/prop-types: 0 */
+import React, { useState, useMemo } from 'react';
+import MenuButton from '../../ui/buttons/MenuButton';
+
+const HideShowTool = ({ view = {}, item, enabled }) => {
+  const [isEnabled, setEnabled] = useState(enabled);
+
+  const handleMouseDown = e => {
+    e.preventDefault();
+    setEnabled(!isEnabled);
+    item.run(view.state, view.dispatch);
+  };
+
+  const HideShowToolComponent = useMemo(
+    () => (
+      <MenuButton
+        active={isEnabled}
+        disabled={item.enable && !item.enable(view.state)}
+        label="Hide/Show"
+        onMouseDown={e => handleMouseDown(e)}
+        title={item.title}
+      />
+    ),
+    [isEnabled],
+  );
+
+  return HideShowToolComponent;
+};
+
+export default HideShowTool;
diff --git a/wax-prosemirror-services/index.js b/wax-prosemirror-services/index.js
index 512f06578..384fce7e5 100644
--- a/wax-prosemirror-services/index.js
+++ b/wax-prosemirror-services/index.js
@@ -36,6 +36,7 @@ export { default as CounterInfoService } from './src/BottomInfoService/CounterIn
 export { default as BottomInfoService } from './src/BottomInfoService/BottomInfoService';
 export { default as TransformService } from './src/TransformService/TransformService';
 export { default as EditingSuggestingService } from './src/EditingSuggestingService/EditingSuggestingService';
+export { default as TrackOptionsService } from './src/TrackOptionsService/TrackOptionsService';
 
 /*
 ToolGroups
diff --git a/wax-prosemirror-services/src/TrackOptionsService/TrackOptionsService.js b/wax-prosemirror-services/src/TrackOptionsService/TrackOptionsService.js
new file mode 100644
index 000000000..85a05b506
--- /dev/null
+++ b/wax-prosemirror-services/src/TrackOptionsService/TrackOptionsService.js
@@ -0,0 +1,11 @@
+import Service from '../Service';
+import TrackOptionsTool from './TrackOptionsTool';
+
+class TrackOptionsService extends Service {
+  name = 'TrackOptionsService';
+
+  register() {
+    this.container.bind('TrackOptionsTool').to(TrackOptionsTool);
+  }
+}
+export default TrackOptionsService;
diff --git a/wax-prosemirror-services/src/TrackOptionsService/TrackOptionsTool.js b/wax-prosemirror-services/src/TrackOptionsService/TrackOptionsTool.js
new file mode 100644
index 000000000..aeef7325e
--- /dev/null
+++ b/wax-prosemirror-services/src/TrackOptionsService/TrackOptionsTool.js
@@ -0,0 +1,34 @@
+import React from 'react';
+import { isEmpty } from 'lodash';
+import { v4 as uuidv4 } from 'uuid';
+import { injectable } from 'inversify';
+import { TrackChangeOptionsTool } from 'wax-prosemirror-components';
+import Tools from '../lib/Tools';
+
+export default
+@injectable()
+class SpecialCharacters extends Tools {
+  title = 'Track Changes Options';
+  icon = 'more';
+  name = 'trackchangeoptions';
+
+  get run() {
+    return (state, dispatch) => {};
+  }
+
+  select = (state, activeViewId) => {};
+
+  get enable() {
+    return state => {
+      return true;
+    };
+  }
+
+  renderTool(view) {
+    if (isEmpty(view)) return null;
+
+    return this._isDisplayed ? (
+      <TrackChangeOptionsTool key={uuidv4()} item={this.toJSON()} view={view} />
+    ) : null;
+  }
+}
-- 
GitLab