From d116858f84ac9dd21c5272d2a594cd66abbb161e Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Tue, 4 Aug 2020 13:52:58 +0300
Subject: [PATCH] Enable track changes tool

---
 editors/editoria/src/config/config.js         |  3 ++
 .../EnableTrackChange.js                      | 32 +++++++++++++++++++
 .../EnableTrackChangeService.js               | 12 +++++++
 .../TrackChangeService/TrackChangeService.js  | 19 ++++++-----
 .../src/TrackChangeService/index.js           |  3 ++
 .../TrackChange.js                            |  4 +--
 6 files changed, 63 insertions(+), 10 deletions(-)
 create mode 100644 wax-prosemirror-services/src/TrackChangeService/EnableTrackChangeService/EnableTrackChange.js
 create mode 100644 wax-prosemirror-services/src/TrackChangeService/EnableTrackChangeService/EnableTrackChangeService.js
 create mode 100644 wax-prosemirror-services/src/TrackChangeService/index.js

diff --git a/editors/editoria/src/config/config.js b/editors/editoria/src/config/config.js
index c37f64b13..2e195ed3a 100644
--- a/editors/editoria/src/config/config.js
+++ b/editors/editoria/src/config/config.js
@@ -23,6 +23,7 @@ import {
   CommentsService,
   CodeBlockService,
   CodeBlockToolGroupService,
+  TrackChangeToolGroupService,
 } from 'wax-prosemirror-services';
 
 import { WaxSelectionPlugin } from 'wax-prosemirror-plugins';
@@ -48,6 +49,7 @@ export default {
         'Images',
         'CodeBlock',
         'Tables',
+        'TrackChange',
       ],
     },
     {
@@ -92,5 +94,6 @@ export default {
     new ListToolGroupService(),
     new CodeBlockService(),
     new CodeBlockToolGroupService(),
+    new TrackChangeToolGroupService(),
   ],
 };
diff --git a/wax-prosemirror-services/src/TrackChangeService/EnableTrackChangeService/EnableTrackChange.js b/wax-prosemirror-services/src/TrackChangeService/EnableTrackChangeService/EnableTrackChange.js
new file mode 100644
index 000000000..e753ad468
--- /dev/null
+++ b/wax-prosemirror-services/src/TrackChangeService/EnableTrackChangeService/EnableTrackChange.js
@@ -0,0 +1,32 @@
+import React from 'react';
+import { injectable } from 'inversify';
+import { isEmpty } from 'lodash';
+import Tools from '../../lib/Tools';
+
+export default
+@injectable()
+class EnableTrackChange extends Tools {
+  title = 'Select Options';
+  content = 'table';
+
+  get run() {
+    return () => {
+      return true;
+    };
+  }
+
+  get enable() {
+    return state => {
+      return true;
+    };
+  }
+
+  select(state) {
+    return true;
+  }
+
+  renderTool(view) {
+    if (isEmpty(view)) return null;
+    return this._isDisplayed ? <button type="button"> Track </button> : null;
+  }
+}
diff --git a/wax-prosemirror-services/src/TrackChangeService/EnableTrackChangeService/EnableTrackChangeService.js b/wax-prosemirror-services/src/TrackChangeService/EnableTrackChangeService/EnableTrackChangeService.js
new file mode 100644
index 000000000..0540b09e7
--- /dev/null
+++ b/wax-prosemirror-services/src/TrackChangeService/EnableTrackChangeService/EnableTrackChangeService.js
@@ -0,0 +1,12 @@
+import Service from '../../Service';
+import EnableTrackChange from './EnableTrackChange';
+
+class EnableTrackChangeService extends Service {
+  boot() {}
+
+  register() {
+    this.container.bind('EnableTrackChange').to(EnableTrackChange);
+  }
+}
+
+export default EnableTrackChangeService;
diff --git a/wax-prosemirror-services/src/TrackChangeService/TrackChangeService.js b/wax-prosemirror-services/src/TrackChangeService/TrackChangeService.js
index 5d642d6d6..cc9ca5069 100644
--- a/wax-prosemirror-services/src/TrackChangeService/TrackChangeService.js
+++ b/wax-prosemirror-services/src/TrackChangeService/TrackChangeService.js
@@ -1,31 +1,34 @@
-import Service from "../Service";
-import { trackChangesMarks, trackChangesNodes } from "wax-prosemirror-schema";
+import { trackChangesMarks, trackChangesNodes } from 'wax-prosemirror-schema';
+import Service from '../Service';
+import TrackChangeServices from './index';
 
 class TrackChangeService extends Service {
   boot() {}
 
   register() {
-    const createMark = this.container.get("CreateMark");
-    const createNode = this.container.get("CreateNode");
+    const createMark = this.container.get('CreateMark');
+    const createNode = this.container.get('CreateNode');
 
     Object.keys(trackChangesMarks).forEach(mark => {
       createMark(
         {
-          [mark]: trackChangesMarks[mark]
+          [mark]: trackChangesMarks[mark],
         },
-        { toWaxSchema: true }
+        { toWaxSchema: true },
       );
     });
 
     Object.keys(trackChangesNodes).forEach(node => {
       createNode(
         {
-          [node]: trackChangesNodes[node]
+          [node]: trackChangesNodes[node],
         },
-        { toWaxSchema: true }
+        { toWaxSchema: true },
       );
     });
   }
+
+  dependencies = TrackChangeServices;
 }
 
 export default TrackChangeService;
diff --git a/wax-prosemirror-services/src/TrackChangeService/index.js b/wax-prosemirror-services/src/TrackChangeService/index.js
new file mode 100644
index 000000000..c46492337
--- /dev/null
+++ b/wax-prosemirror-services/src/TrackChangeService/index.js
@@ -0,0 +1,3 @@
+import EnableTrackChangeService from './EnableTrackChangeService/EnableTrackChangeService';
+
+export default [new EnableTrackChangeService()];
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TrackChangeToolGroupService/TrackChange.js b/wax-prosemirror-services/src/WaxToolGroups/TrackChangeToolGroupService/TrackChange.js
index f494b177f..a0358a588 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/TrackChangeToolGroupService/TrackChange.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/TrackChangeToolGroupService/TrackChange.js
@@ -4,9 +4,9 @@ import ToolGroup from '../../lib/ToolGroup';
 @injectable()
 class TrackChange extends ToolGroup {
   tools = [];
-  constructor() {
+  constructor(@inject('EnableTrackChange') enableTrackChange) {
     super();
-    this.tools = [];
+    this.tools = [enableTrackChange];
   }
 }
 
-- 
GitLab