From a1af00d5bea575a3a17271d65bf6e7aba7f8d99c Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Sat, 1 Aug 2020 19:05:10 +0300
Subject: [PATCH] create TrackChangeToolGroupService and fix some linting erros

---
 .eslintrc.js                                  |  4 +--
 editors/editoria/src/config/config.js         |  1 +
 wax-prosemirror-services/index.js             |  1 +
 .../src/BaseService/RedoService/Redo.js       | 16 ++++++------
 .../src/BaseService/UndoService/Undo.js       | 16 ++++++------
 .../src/CommentsService/CommentsService.js    |  2 +-
 .../AuthorService/AuthorService.js            | 16 ++++++------
 .../EpigraphPoetryService/EpigraphPoetry.js   |  2 +-
 .../EpigraphPoetryService.js                  | 16 ++++++------
 .../EpigraphProseService/EpigraphProse.js     | 17 +++++++------
 .../EpigraphProseService.js                   | 14 +++++------
 .../HeadingService/Heading1.js                | 17 +++++++------
 .../HeadingService/Heading2.js                | 17 +++++++------
 .../HeadingService/Heading3.js                | 17 +++++++------
 .../HeadingService/HeadingService.js          | 24 +++++++++---------
 .../src/ImageService/Image.js                 | 25 ++++++++++---------
 .../src/ImageService/ImageService.js          | 16 ++++++------
 .../src/InlineAnnotations/CodeService/Code.js | 15 +++++------
 .../CodeService/CodeService.js                | 20 +++++++--------
 .../EmphasisService/Emphasis.js               | 15 +++++------
 .../EmphasisService/EmphasisService.js        | 20 +++++++--------
 .../TrackChange.js                            | 13 ++++++++++
 .../TrackChangeToolGroupService.js            | 10 ++++++++
 23 files changed, 173 insertions(+), 141 deletions(-)
 create mode 100644 wax-prosemirror-services/src/WaxToolGroups/TrackChangeToolGroupService/TrackChange.js
 create mode 100644 wax-prosemirror-services/src/WaxToolGroups/TrackChangeToolGroupService/TrackChangeToolGroupService.js

diff --git a/.eslintrc.js b/.eslintrc.js
index 55f6a6ca6..4bb224699 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -26,13 +26,13 @@ eslint.rules = {
     },
   ],
   'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx'] }],
-  'class-methods-use-this': [1, { exceptMethods: ['run', 'enable'] }],
+  'class-methods-use-this': [1, { exceptMethods: ['run', 'enable', 'active'] }],
 
   'react/prop-types': [
     2,
     { ignore: ['children', 'className', 'onClick', 'theme'] },
   ],
-  'import/no-named-as-default': 0,
+  // 'import/no-named-as-default': 0,
 };
 
 module.exports = eslint;
diff --git a/editors/editoria/src/config/config.js b/editors/editoria/src/config/config.js
index 397d80278..c37f64b13 100644
--- a/editors/editoria/src/config/config.js
+++ b/editors/editoria/src/config/config.js
@@ -58,6 +58,7 @@ export default {
 
   RulesService: [emDash, ellipsis],
   ShortCutsService: {},
+  TrackChangeService: { enabled: true },
 
   PmPlugins: [
     columnResizing(),
diff --git a/wax-prosemirror-services/index.js b/wax-prosemirror-services/index.js
index 0f53929b1..9da4eae14 100644
--- a/wax-prosemirror-services/index.js
+++ b/wax-prosemirror-services/index.js
@@ -40,3 +40,4 @@ export { default as DisplayToolGroupService } from './src/WaxToolGroups/DisplayT
 export { default as TextToolGroupService } from './src/WaxToolGroups/TextToolGroupService/TextToolGroupService';
 export { default as NoteToolGroupService } from './src/WaxToolGroups/NoteToolGroupService/NoteToolGroupService';
 export { default as CodeBlockToolGroupService } from './src/WaxToolGroups/CodeBlockToolGroupService/CodeBlockToolGroupService';
+export { default as TrackChangeToolGroupService } from './src/WaxToolGroups/TrackChangeToolGroupService/TrackChangeToolGroupService';
diff --git a/wax-prosemirror-services/src/BaseService/RedoService/Redo.js b/wax-prosemirror-services/src/BaseService/RedoService/Redo.js
index 9407f7f5b..50864e061 100644
--- a/wax-prosemirror-services/src/BaseService/RedoService/Redo.js
+++ b/wax-prosemirror-services/src/BaseService/RedoService/Redo.js
@@ -1,18 +1,18 @@
-import { redo } from "prosemirror-history";
-import Tools from "../../lib/Tools";
-import { injectable } from "inversify";
-import { icons } from "wax-prosemirror-components";
+import { redo } from 'prosemirror-history';
+import Tools from '../../lib/Tools';
+import { injectable } from 'inversify';
+import { icons } from 'wax-prosemirror-components';
 
+export default
 @injectable()
-export default class Redo extends Tools {
-  title = "Redo last undone change";
+class Redo extends Tools {
+  title = 'Redo last undone change';
   content = icons.redo;
   onlyOnMain = true;
 
   get run() {
     return (state, dispatch) => {
-      const { tr } = state;
-      redo(state, tr => dispatch(tr.setMeta("inputType", "historyRedo")));
+      redo(state, tr => dispatch(tr.setMeta('inputType', 'historyRedo')));
     };
   }
 
diff --git a/wax-prosemirror-services/src/BaseService/UndoService/Undo.js b/wax-prosemirror-services/src/BaseService/UndoService/Undo.js
index 5e374ad9e..f46fdd737 100644
--- a/wax-prosemirror-services/src/BaseService/UndoService/Undo.js
+++ b/wax-prosemirror-services/src/BaseService/UndoService/Undo.js
@@ -1,18 +1,18 @@
-import { undo } from "prosemirror-history";
-import Tools from "../../lib/Tools";
-import { injectable } from "inversify";
-import { icons } from "wax-prosemirror-components";
+import { undo } from 'prosemirror-history';
+import { injectable } from 'inversify';
+import { icons } from 'wax-prosemirror-components';
+import Tools from '../../lib/Tools';
 
+export default
 @injectable()
-export default class Undo extends Tools {
-  title = "Undo last change";
+class Undo extends Tools {
+  title = 'Undo last change';
   content = icons.undo;
   onlyOnMain = true;
 
   get run() {
     return (state, dispatch) => {
-      const { tr } = state;
-      undo(state, tr => dispatch(tr.setMeta("inputType", "historyUndo")));
+      undo(state, tr => dispatch(tr.setMeta('inputType', 'historyUndo')));
     };
   }
 
diff --git a/wax-prosemirror-services/src/CommentsService/CommentsService.js b/wax-prosemirror-services/src/CommentsService/CommentsService.js
index a728e91d4..6a2b16d5f 100644
--- a/wax-prosemirror-services/src/CommentsService/CommentsService.js
+++ b/wax-prosemirror-services/src/CommentsService/CommentsService.js
@@ -1,7 +1,7 @@
-import Service from '../Service';
 import { commentMark } from 'wax-prosemirror-schema';
 import { RightArea, CommentBubbleComponent } from 'wax-prosemirror-components';
 import { CommentPlugin } from 'wax-prosemirror-plugins';
+import Service from '../Service';
 
 const PLUGIN_KEY = 'commentPlugin';
 
diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/AuthorService/AuthorService.js b/wax-prosemirror-services/src/DisplayBlockLevel/AuthorService/AuthorService.js
index f937c1258..0ee9279ef 100644
--- a/wax-prosemirror-services/src/DisplayBlockLevel/AuthorService/AuthorService.js
+++ b/wax-prosemirror-services/src/DisplayBlockLevel/AuthorService/AuthorService.js
@@ -1,18 +1,18 @@
-import Service from "../../Service";
-import { authorNode } from "wax-prosemirror-schema";
-import Author from "./Author";
+import { authorNode } from 'wax-prosemirror-schema';
+import Service from '../../Service';
+import Author from './Author';
 
 class AuthorService extends Service {
-  boot() {}
+  // boot() {}
 
   register() {
-    this.container.bind("Author").to(Author);
-    const createNode = this.container.get("CreateNode");
+    this.container.bind('Author').to(Author);
+    const createNode = this.container.get('CreateNode');
     createNode(
       {
-        author: authorNode
+        author: authorNode,
       },
-      { toWaxSchema: true }
+      { toWaxSchema: true },
     );
   }
 }
diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphPoetryService/EpigraphPoetry.js b/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphPoetryService/EpigraphPoetry.js
index 39092015b..819a449b1 100644
--- a/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphPoetryService/EpigraphPoetry.js
+++ b/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphPoetryService/EpigraphPoetry.js
@@ -1,6 +1,6 @@
-import Tools from '../../lib/Tools';
 import { injectable } from 'inversify';
 import { Commands } from 'wax-prosemirror-utilities';
+import Tools from '../../lib/Tools';
 
 @injectable()
 class EpigraphPoetry extends Tools {
diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphPoetryService/EpigraphPoetryService.js b/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphPoetryService/EpigraphPoetryService.js
index dc8842b20..0f9e10a3e 100644
--- a/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphPoetryService/EpigraphPoetryService.js
+++ b/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphPoetryService/EpigraphPoetryService.js
@@ -1,18 +1,18 @@
-import Service from "../../Service";
-import { epigraphPoetryNode } from "wax-prosemirror-schema";
-import EpigraphPoetry from "./EpigraphPoetry";
+import { epigraphPoetryNode } from 'wax-prosemirror-schema';
+import EpigraphPoetry from './EpigraphPoetry';
+import Service from '../../Service';
 
 class EpigraphPoetryService extends Service {
-  boot() {}
+  // boot() {}
 
   register() {
-    this.container.bind("EpigraphPoetry").to(EpigraphPoetry);
-    const createNode = this.container.get("CreateNode");
+    this.container.bind('EpigraphPoetry').to(EpigraphPoetry);
+    const createNode = this.container.get('CreateNode');
     createNode(
       {
-        epigraphPoetry: epigraphPoetryNode
+        epigraphPoetry: epigraphPoetryNode,
       },
-      { toWaxSchema: true }
+      { toWaxSchema: true },
     );
   }
 }
diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphProseService/EpigraphProse.js b/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphProseService/EpigraphProse.js
index 0b800c069..d4a504b35 100644
--- a/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphProseService/EpigraphProse.js
+++ b/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphProseService/EpigraphProse.js
@@ -1,16 +1,17 @@
-import Tools from "../../lib/Tools";
-import { injectable } from "inversify";
-import { Commands } from "wax-prosemirror-utilities";
+import { injectable } from 'inversify';
+import { Commands } from 'wax-prosemirror-utilities';
+import Tools from '../../lib/Tools';
 
+export default
 @injectable()
-export default class EpigraphProse extends Tools {
-  title = "Change to Epigraph Prose";
-  content = "Epigraph Prose";
+class EpigraphProse extends Tools {
+  title = 'Change to Epigraph Prose';
+  content = 'Epigraph Prose';
 
   get run() {
     return (state, dispatch) => {
       Commands.setBlockType(state.config.schema.nodes.epigraphProse, {
-        class: "epigraph-prose"
+        class: 'epigraph-prose',
       })(state, dispatch);
     };
   }
@@ -18,7 +19,7 @@ export default class EpigraphProse extends Tools {
   get enable() {
     return state => {
       return Commands.setBlockType(state.config.schema.nodes.epigraphProse)(
-        state
+        state,
       );
     };
   }
diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphProseService/EpigraphProseService.js b/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphProseService/EpigraphProseService.js
index a32f9aaa0..b16be0c74 100644
--- a/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphProseService/EpigraphProseService.js
+++ b/wax-prosemirror-services/src/DisplayBlockLevel/EpigraphProseService/EpigraphProseService.js
@@ -1,18 +1,18 @@
-import Service from "../../Service";
-import { epigraphProseNode } from "wax-prosemirror-schema";
-import EpigraphProse from "./EpigraphProse";
+import { epigraphProseNode } from 'wax-prosemirror-schema';
+import EpigraphProse from './EpigraphProse';
+import Service from '../../Service';
 
 class EpigraphProseService extends Service {
   boot() {}
 
   register() {
-    this.container.bind("EpigraphProse").to(EpigraphProse);
-    const createNode = this.container.get("CreateNode");
+    this.container.bind('EpigraphProse').to(EpigraphProse);
+    const createNode = this.container.get('CreateNode');
     createNode(
       {
-        epigraphProse: epigraphProseNode
+        epigraphProse: epigraphProseNode,
       },
-      { toWaxSchema: true }
+      { toWaxSchema: true },
     );
   }
 }
diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading1.js b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading1.js
index 7cd58aec6..d1724fc9d 100644
--- a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading1.js
+++ b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading1.js
@@ -1,17 +1,18 @@
-import Tools from "../../lib/Tools";
-import { injectable } from "inversify";
-import { Commands } from "wax-prosemirror-utilities";
+import { injectable } from 'inversify';
+import { Commands } from 'wax-prosemirror-utilities';
+import Tools from '../../lib/Tools';
 
+export default
 @injectable()
-export default class Heading1 extends Tools {
-  title = "Change to heading level 1";
-  content = "Heading 1";
+class Heading1 extends Tools {
+  title = 'Change to heading level 1';
+  content = 'Heading 1';
 
   get run() {
     return (state, dispatch) => {
       Commands.setBlockType(state.config.schema.nodes.heading, { level: 1 })(
         state,
-        dispatch
+        dispatch,
       );
     };
   }
@@ -19,7 +20,7 @@ export default class Heading1 extends Tools {
   get enable() {
     return state => {
       return Commands.setBlockType(state.config.schema.nodes.heading, {
-        level: 1
+        level: 1,
       })(state);
     };
   }
diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading2.js b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading2.js
index 77bc4d4ea..792d810b0 100644
--- a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading2.js
+++ b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading2.js
@@ -1,17 +1,18 @@
-import Tools from "../../lib/Tools";
-import { injectable } from "inversify";
-import { Commands } from "wax-prosemirror-utilities";
+import { injectable } from 'inversify';
+import { Commands } from 'wax-prosemirror-utilities';
+import Tools from '../../lib/Tools';
 
+export default
 @injectable()
-export default class Heading2 extends Tools {
-  title = "Change to heading level 2";
-  content = "Heading 2";
+class Heading2 extends Tools {
+  title = 'Change to heading level 2';
+  content = 'Heading 2';
 
   get run() {
     return (state, dispatch) => {
       Commands.setBlockType(state.config.schema.nodes.heading, { level: 2 })(
         state,
-        dispatch
+        dispatch,
       );
     };
   }
@@ -19,7 +20,7 @@ export default class Heading2 extends Tools {
   get enable() {
     return state => {
       return Commands.setBlockType(state.config.schema.nodes.heading, {
-        level: 2
+        level: 2,
       })(state);
     };
   }
diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading3.js b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading3.js
index bf27f4bce..e1e133d52 100644
--- a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading3.js
+++ b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading3.js
@@ -1,17 +1,18 @@
-import Tools from "../../lib/Tools";
-import { injectable } from "inversify";
-import { Commands } from "wax-prosemirror-utilities";
+import { injectable } from 'inversify';
+import { Commands } from 'wax-prosemirror-utilities';
+import Tools from '../../lib/Tools';
 
+export default
 @injectable()
-export default class Heading3 extends Tools {
-  title = "Change to heading level 3";
-  content = "Heading 3";
+class Heading3 extends Tools {
+  title = 'Change to heading level 3';
+  content = 'Heading 3';
 
   get run() {
     return (state, dispatch) => {
       Commands.setBlockType(state.config.schema.nodes.heading, { level: 3 })(
         state,
-        dispatch
+        dispatch,
       );
     };
   }
@@ -19,7 +20,7 @@ export default class Heading3 extends Tools {
   get enable() {
     return state => {
       return Commands.setBlockType(state.config.schema.nodes.heading, {
-        level: 3
+        level: 3,
       })(state);
     };
   }
diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/HeadingService.js b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/HeadingService.js
index 6d4925468..f75bbe665 100644
--- a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/HeadingService.js
+++ b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/HeadingService.js
@@ -1,22 +1,22 @@
-import Service from "../../Service";
-import { headingNode } from "wax-prosemirror-schema";
-import Heading1 from "./Heading1";
-import Heading2 from "./Heading2";
-import Heading3 from "./Heading3";
+import { headingNode } from 'wax-prosemirror-schema';
+import Heading1 from './Heading1';
+import Heading2 from './Heading2';
+import Heading3 from './Heading3';
+import Service from '../../Service';
 
 class HeadingService extends Service {
-  boot() {}
+  // boot() {}
 
   register() {
-    this.container.bind("Heading1").to(Heading1);
-    this.container.bind("Heading2").to(Heading2);
-    this.container.bind("Heading3").to(Heading3);
-    const createNode = this.container.get("CreateNode");
+    this.container.bind('Heading1').to(Heading1);
+    this.container.bind('Heading2').to(Heading2);
+    this.container.bind('Heading3').to(Heading3);
+    const createNode = this.container.get('CreateNode');
     createNode(
       {
-        heading: headingNode
+        heading: headingNode,
       },
-      { toWaxSchema: true }
+      { toWaxSchema: true },
     );
   }
 }
diff --git a/wax-prosemirror-services/src/ImageService/Image.js b/wax-prosemirror-services/src/ImageService/Image.js
index 19d564300..7f0e6fea2 100644
--- a/wax-prosemirror-services/src/ImageService/Image.js
+++ b/wax-prosemirror-services/src/ImageService/Image.js
@@ -1,15 +1,16 @@
-import React from "react";
-import { v4 as uuidv4 } from "uuid";
-import { isEmpty } from "lodash";
-import { injectable } from "inversify";
-import { icons, ImageUpload } from "wax-prosemirror-components";
-import Tools from "../lib/Tools";
-import { Commands } from "wax-prosemirror-utilities";
-import fileUpload from "./fileUpload";
+import React from 'react';
+import { v4 as uuidv4 } from 'uuid';
+import { isEmpty } from 'lodash';
+import { injectable } from 'inversify';
+import { icons, ImageUpload } from 'wax-prosemirror-components';
+import { Commands } from 'wax-prosemirror-utilities';
+import Tools from '../lib/Tools';
+import fileUpload from './fileUpload';
 
+export default
 @injectable()
-export default class Image extends Tools {
-  title = "Insert image";
+class Image extends Tools {
+  title = 'Insert image';
   content = icons.image;
 
   get run() {
@@ -26,8 +27,8 @@ export default class Image extends Tools {
     if (isEmpty(view)) return null;
     const upload = fileUpload(
       view,
-      this.config.get("fileUpload"),
-      this.pmplugins.get("imagePlaceHolder")
+      this.config.get('fileUpload'),
+      this.pmplugins.get('imagePlaceHolder'),
     );
     return this._isDisplayed ? (
       <ImageUpload key={uuidv4()} item={this.toJSON()} fileUpload={upload} />
diff --git a/wax-prosemirror-services/src/ImageService/ImageService.js b/wax-prosemirror-services/src/ImageService/ImageService.js
index 8e2ed795c..526d22e52 100644
--- a/wax-prosemirror-services/src/ImageService/ImageService.js
+++ b/wax-prosemirror-services/src/ImageService/ImageService.js
@@ -1,18 +1,18 @@
-import Service from "../Service";
-import Image from "./Image";
-import { imageNode } from "wax-prosemirror-schema";
+import { imageNode } from 'wax-prosemirror-schema';
+import Service from '../Service';
+import Image from './Image';
 
 export default class ImageService extends Service {
-  name = "ImageService";
+  name = 'ImageService';
 
   register() {
-    this.container.bind("Image").to(Image);
-    const createNode = this.container.get("CreateNode");
+    this.container.bind('Image').to(Image);
+    const createNode = this.container.get('CreateNode');
     createNode(
       {
-        image: imageNode
+        image: imageNode,
       },
-      { toWaxSchema: true }
+      { toWaxSchema: true },
     );
   }
 }
diff --git a/wax-prosemirror-services/src/InlineAnnotations/CodeService/Code.js b/wax-prosemirror-services/src/InlineAnnotations/CodeService/Code.js
index ba88b541c..a6ccd2ffc 100644
--- a/wax-prosemirror-services/src/InlineAnnotations/CodeService/Code.js
+++ b/wax-prosemirror-services/src/InlineAnnotations/CodeService/Code.js
@@ -1,12 +1,13 @@
-import { toggleMark } from "prosemirror-commands";
-import { Commands } from "wax-prosemirror-utilities";
-import Tools from "../../lib/Tools";
-import { injectable } from "inversify";
-import { icons } from "wax-prosemirror-components";
+import { toggleMark } from 'prosemirror-commands';
+import { Commands } from 'wax-prosemirror-utilities';
+import Tools from '../../lib/Tools';
+import { injectable } from 'inversify';
+import { icons } from 'wax-prosemirror-components';
 
+export default
 @injectable()
-export default class Code extends Tools {
-  title = "Toggle code";
+class Code extends Tools {
+  title = 'Toggle code';
   content = icons.code;
 
   get run() {
diff --git a/wax-prosemirror-services/src/InlineAnnotations/CodeService/CodeService.js b/wax-prosemirror-services/src/InlineAnnotations/CodeService/CodeService.js
index 833699625..f9be7a4d6 100644
--- a/wax-prosemirror-services/src/InlineAnnotations/CodeService/CodeService.js
+++ b/wax-prosemirror-services/src/InlineAnnotations/CodeService/CodeService.js
@@ -1,22 +1,22 @@
-import Service from "../../Service";
-import { toggleMark } from "prosemirror-commands";
-import { codeMark } from "wax-prosemirror-schema";
-import Code from "./Code";
+import { toggleMark } from 'prosemirror-commands';
+import { codeMark } from 'wax-prosemirror-schema';
+import Code from './Code';
+import Service from '../../Service';
 
 class CodeService extends Service {
   boot() {
-    const shortCuts = this.container.get("ShortCuts");
-    shortCuts.addShortCut({ "Mod-`": toggleMark(this.schema.marks.code) });
+    const shortCuts = this.container.get('ShortCuts');
+    shortCuts.addShortCut({ 'Mod-`': toggleMark(this.schema.marks.code) });
   }
 
   register() {
-    this.container.bind("Code").to(Code);
-    const createMark = this.container.get("CreateMark");
+    this.container.bind('Code').to(Code);
+    const createMark = this.container.get('CreateMark');
     createMark(
       {
-        code: codeMark
+        code: codeMark,
       },
-      { toWaxSchema: true }
+      { toWaxSchema: true },
     );
   }
 }
diff --git a/wax-prosemirror-services/src/InlineAnnotations/EmphasisService/Emphasis.js b/wax-prosemirror-services/src/InlineAnnotations/EmphasisService/Emphasis.js
index e248a1604..89f79677f 100644
--- a/wax-prosemirror-services/src/InlineAnnotations/EmphasisService/Emphasis.js
+++ b/wax-prosemirror-services/src/InlineAnnotations/EmphasisService/Emphasis.js
@@ -1,12 +1,13 @@
-import { toggleMark } from "prosemirror-commands";
-import { Commands } from "wax-prosemirror-utilities";
-import Tools from "../../lib/Tools";
-import { injectable } from "inversify";
-import { icons } from "wax-prosemirror-components";
+import { toggleMark } from 'prosemirror-commands';
+import { Commands } from 'wax-prosemirror-utilities';
+import Tools from '../../lib/Tools';
+import { injectable } from 'inversify';
+import { icons } from 'wax-prosemirror-components';
 
+export default
 @injectable()
-export default class Emphasis extends Tools {
-  title = "Toggle emphasis";
+class Emphasis extends Tools {
+  title = 'Toggle emphasis';
   content = icons.em;
 
   get run() {
diff --git a/wax-prosemirror-services/src/InlineAnnotations/EmphasisService/EmphasisService.js b/wax-prosemirror-services/src/InlineAnnotations/EmphasisService/EmphasisService.js
index 11f2e42c2..859babb10 100644
--- a/wax-prosemirror-services/src/InlineAnnotations/EmphasisService/EmphasisService.js
+++ b/wax-prosemirror-services/src/InlineAnnotations/EmphasisService/EmphasisService.js
@@ -1,22 +1,22 @@
-import Service from "../../Service";
-import { toggleMark } from "prosemirror-commands";
-import { emphasisMark } from "wax-prosemirror-schema";
-import Emphasis from "./Emphasis";
+import { toggleMark } from 'prosemirror-commands';
+import { emphasisMark } from 'wax-prosemirror-schema';
+import Emphasis from './Emphasis';
+import Service from '../../Service';
 
 class EmphasisService extends Service {
   boot() {
-    const shortCuts = this.container.get("ShortCuts");
-    shortCuts.addShortCut({ "Mod-i": toggleMark(this.schema.marks.em) });
+    const shortCuts = this.container.get('ShortCuts');
+    shortCuts.addShortCut({ 'Mod-i': toggleMark(this.schema.marks.em) });
   }
 
   register() {
-    this.container.bind("Emphasis").to(Emphasis);
-    const createMark = this.container.get("CreateMark");
+    this.container.bind('Emphasis').to(Emphasis);
+    const createMark = this.container.get('CreateMark');
     createMark(
       {
-        em: emphasisMark
+        em: emphasisMark,
       },
-      { toWaxSchema: true }
+      { toWaxSchema: true },
     );
   }
 }
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TrackChangeToolGroupService/TrackChange.js b/wax-prosemirror-services/src/WaxToolGroups/TrackChangeToolGroupService/TrackChange.js
new file mode 100644
index 000000000..f494b177f
--- /dev/null
+++ b/wax-prosemirror-services/src/WaxToolGroups/TrackChangeToolGroupService/TrackChange.js
@@ -0,0 +1,13 @@
+import { injectable, inject } from 'inversify';
+import ToolGroup from '../../lib/ToolGroup';
+
+@injectable()
+class TrackChange extends ToolGroup {
+  tools = [];
+  constructor() {
+    super();
+    this.tools = [];
+  }
+}
+
+export default TrackChange;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TrackChangeToolGroupService/TrackChangeToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/TrackChangeToolGroupService/TrackChangeToolGroupService.js
new file mode 100644
index 000000000..96a6719b8
--- /dev/null
+++ b/wax-prosemirror-services/src/WaxToolGroups/TrackChangeToolGroupService/TrackChangeToolGroupService.js
@@ -0,0 +1,10 @@
+import Service from '../../Service';
+import TrackChange from './TrackChange';
+
+class TrackChangeToolGroupService extends Service {
+  register() {
+    this.container.bind('TrackChange').to(TrackChange);
+  }
+}
+
+export default TrackChangeToolGroupService;
-- 
GitLab