From acfa4282fb776f43dbb43037efbf066daaadbda6 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Mon, 23 Dec 2019 23:34:06 +0200
Subject: [PATCH] wax Toolgroups in progress

---
 editors/editoria/src/config/config.js         |  6 ++++-
 .../src/config/defaultConfig.js               |  8 +++---
 wax-prosemirror-services/index.js             | 13 +++++++---
 .../AnnotationService/AnnotationService.js    | 14 ----------
 .../AnnotationToolGroupService.js             | 17 ++++++++++++
 .../Annotations.js}                           | 16 ++++--------
 .../tools/Blockquote.js                       |  4 +--
 .../tools/Table.js                            |  4 +--
 .../tools/TableDropDownOptions.js             |  4 +--
 .../tools/index.js                            |  0
 .../BaseToolGroupService/Base.js              |  0
 .../BaseToolGroupService.js                   | 12 +++++++++
 .../ImageToolGroupService/Image.js            |  0
 .../ImageToolGroupService.js                  | 12 +++++++++
 .../ListToolGroupService.js                   | 12 +++++++++
 .../ListToolGroupService/Lists.js             | 26 +++++++++++++++++++
 .../TableListGroupService/Table.js            |  0
 .../TableListGroupService.js                  | 12 +++++++++
 18 files changed, 122 insertions(+), 38 deletions(-)
 delete mode 100644 wax-prosemirror-services/src/AnnotationService/AnnotationService.js
 create mode 100644 wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/AnnotationToolGroupService.js
 rename wax-prosemirror-services/src/{AnnotationService/Annotation.js => WaxToolGroups/AnnotationToolGroupService/Annotations.js} (75%)
 rename wax-prosemirror-services/src/{AnnotationService => WaxToolGroups/AnnotationToolGroupService}/tools/Blockquote.js (87%)
 rename wax-prosemirror-services/src/{AnnotationService => WaxToolGroups/AnnotationToolGroupService}/tools/Table.js (80%)
 rename wax-prosemirror-services/src/{AnnotationService => WaxToolGroups/AnnotationToolGroupService}/tools/TableDropDownOptions.js (89%)
 rename wax-prosemirror-services/src/{AnnotationService => WaxToolGroups/AnnotationToolGroupService}/tools/index.js (100%)
 create mode 100644 wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/Base.js
 create mode 100644 wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/BaseToolGroupService.js
 create mode 100644 wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/Image.js
 create mode 100644 wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/ImageToolGroupService.js
 create mode 100644 wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/ListToolGroupService.js
 create mode 100644 wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/Lists.js
 create mode 100644 wax-prosemirror-services/src/WaxToolGroups/TableListGroupService/Table.js
 create mode 100644 wax-prosemirror-services/src/WaxToolGroups/TableListGroupService/TableListGroupService.js

diff --git a/editors/editoria/src/config/config.js b/editors/editoria/src/config/config.js
index ff7367bf1..18946d5bf 100644
--- a/editors/editoria/src/config/config.js
+++ b/editors/editoria/src/config/config.js
@@ -10,7 +10,11 @@ export default {
   MenuService: [
     {
       templateArea: "topBar",
-      toolGroups: ["Annotation", { name: "RedoUndo", exclude: ["Redo"] }]
+      toolGroups: [
+        "Annotations",
+        "Lists",
+        { name: "RedoUndo", exclude: ["Redo"] }
+      ]
     },
     {
       templateArea: "leftSideBar",
diff --git a/wax-prosemirror-core/src/config/defaultConfig.js b/wax-prosemirror-core/src/config/defaultConfig.js
index 83635b631..55d21c234 100644
--- a/wax-prosemirror-core/src/config/defaultConfig.js
+++ b/wax-prosemirror-core/src/config/defaultConfig.js
@@ -1,6 +1,6 @@
 import LayoutService from "../services/LayoutService/LayoutService";
 import {
-  AnnotationService,
+  AnnotationToolGroupService,
   ImageService,
   MenuService,
   SchemaService,
@@ -11,7 +11,8 @@ import {
   TextStyleService,
   InlineAnnotationsService,
   LinkService,
-  ListsService
+  ListsService,
+  ListToolGroupService
 } from "wax-prosemirror-services";
 
 export default {
@@ -22,7 +23,8 @@ export default {
     new LayoutService(),
     new MenuService(),
     new RedoUndoService(),
-    new AnnotationService(),
+    new AnnotationToolGroupService(),
+    new ListToolGroupService(),
     new TextStyleService(),
     new PlaceholderService(),
     new ImageService(),
diff --git a/wax-prosemirror-services/index.js b/wax-prosemirror-services/index.js
index 951afea2c..e884c5d7c 100644
--- a/wax-prosemirror-services/index.js
+++ b/wax-prosemirror-services/index.js
@@ -3,9 +3,6 @@ export { default as MenuService } from "./src/MenuService/MenuService";
 export {
   default as RedoUndoService
 } from "./src/RedoUndoService/RedoUndoService";
-export {
-  default as AnnotationService
-} from "./src/AnnotationService/AnnotationService";
 export {
   default as TextStyleService
 } from "./src/TextStyleService/TextStyleService";
@@ -25,3 +22,13 @@ export {
 export { default as ListsService } from "./src/ListsService/ListsService";
 
 export { default as Tool } from "./src/lib/Tools";
+
+/*
+ToolGroups
+*/
+export {
+  default as AnnotationToolGroupService
+} from "./src/WaxToolGroups/AnnotationToolGroupService/AnnotationToolGroupService";
+export {
+  default as ListToolGroupService
+} from "./src/WaxToolGroups/ListToolGroupService/ListToolGroupService";
diff --git a/wax-prosemirror-services/src/AnnotationService/AnnotationService.js b/wax-prosemirror-services/src/AnnotationService/AnnotationService.js
deleted file mode 100644
index 56269cef3..000000000
--- a/wax-prosemirror-services/src/AnnotationService/AnnotationService.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import Annotation from "./Annotation";
-import Service from "wax-prosemirror-core/src/services/Service";
-import * as Tools from "./tools";
-
-export default class AnnotationService extends Service {
-  name = "AnnotationService";
-
-  register() {
-    this.container.bind("Annotation").to(Annotation);
-    Object.entries(Tools).forEach(([key, value]) => {
-      this.container.bind(key).to(value);
-    });
-  }
-}
diff --git a/wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/AnnotationToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/AnnotationToolGroupService.js
new file mode 100644
index 000000000..55b6e783c
--- /dev/null
+++ b/wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/AnnotationToolGroupService.js
@@ -0,0 +1,17 @@
+import Service from "wax-prosemirror-core/src/services/Service";
+
+import Annotations from "./Annotations";
+import * as Tools from "./tools";
+
+class AnnotationToolGroupService extends Service {
+  name = "AnnotationToolGroupService";
+
+  register() {
+    this.container.bind("Annotations").to(Annotations);
+    Object.entries(Tools).forEach(([key, value]) => {
+      this.container.bind(key).to(value);
+    });
+  }
+}
+
+export default AnnotationToolGroupService;
diff --git a/wax-prosemirror-services/src/AnnotationService/Annotation.js b/wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/Annotations.js
similarity index 75%
rename from wax-prosemirror-services/src/AnnotationService/Annotation.js
rename to wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/Annotations.js
index da9061d63..31702bd78 100644
--- a/wax-prosemirror-services/src/AnnotationService/Annotation.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/Annotations.js
@@ -1,8 +1,8 @@
 import { injectable, inject } from "inversify";
-import ToolGroup from "../lib/ToolGroup";
+import ToolGroup from "../../lib/ToolGroup";
 
 @injectable()
-export default class Annotation extends ToolGroup {
+class Annotations extends ToolGroup {
   tools = [];
   constructor(
     @inject("Code") code,
@@ -16,10 +16,6 @@ export default class Annotation extends ToolGroup {
     @inject("Underline") underline,
     @inject("Blockquote") blockquote,
     @inject("Image") image,
-    @inject("OrderedList") orderedlist,
-    @inject("BulletList") bulletlist,
-    @inject("JoinUp") joinup,
-    @inject("Lift") lift,
     @inject("Table") table,
     @inject("TableDropDownOptions") tableDropDownOptions
   ) {
@@ -37,11 +33,7 @@ export default class Annotation extends ToolGroup {
       blockquote,
       tableDropDownOptions,
       image,
-      table,
-      orderedlist,
-      bulletlist,
-      joinup,
-      lift
+      table
     ];
   }
 
@@ -53,3 +45,5 @@ export default class Annotation extends ToolGroup {
     return tools;
   }
 }
+
+export default Annotations;
diff --git a/wax-prosemirror-services/src/AnnotationService/tools/Blockquote.js b/wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/tools/Blockquote.js
similarity index 87%
rename from wax-prosemirror-services/src/AnnotationService/tools/Blockquote.js
rename to wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/tools/Blockquote.js
index 209dddbe2..ffa361107 100644
--- a/wax-prosemirror-services/src/AnnotationService/tools/Blockquote.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/tools/Blockquote.js
@@ -1,8 +1,8 @@
-import Tools from "../../lib/Tools";
+import Tools from "../../../lib/Tools";
 import { injectable } from "inversify";
 import { icons } from "wax-prosemirror-components";
 import { wrapIn } from "prosemirror-commands";
-import { blockActive } from "../../lib/Utils";
+import { blockActive } from "../../../lib/Utils";
 
 @injectable()
 export default class Blockquote extends Tools {
diff --git a/wax-prosemirror-services/src/AnnotationService/tools/Table.js b/wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/tools/Table.js
similarity index 80%
rename from wax-prosemirror-services/src/AnnotationService/tools/Table.js
rename to wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/tools/Table.js
index 238c9084e..5de1b8c84 100644
--- a/wax-prosemirror-services/src/AnnotationService/tools/Table.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/tools/Table.js
@@ -1,5 +1,5 @@
-import Tools from "../../lib/Tools";
-import { createTable, canInsert } from "../../lib/Utils";
+import Tools from "../../../lib/Tools";
+import { createTable, canInsert } from "../../../lib/Utils";
 import { injectable } from "inversify";
 import { icons } from "wax-prosemirror-components";
 
diff --git a/wax-prosemirror-services/src/AnnotationService/tools/TableDropDownOptions.js b/wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/tools/TableDropDownOptions.js
similarity index 89%
rename from wax-prosemirror-services/src/AnnotationService/tools/TableDropDownOptions.js
rename to wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/tools/TableDropDownOptions.js
index 9deea97f4..2bd55d9c6 100644
--- a/wax-prosemirror-services/src/AnnotationService/tools/TableDropDownOptions.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/tools/TableDropDownOptions.js
@@ -1,7 +1,7 @@
 import React from "react";
 import { v4 as uuid } from "uuid";
-import { canInsert } from "../../lib/Utils";
-import Tools from "../../lib/Tools";
+import { canInsert } from "../../../lib/Utils";
+import Tools from "../../../lib/Tools";
 import { injectable } from "inversify";
 import { TableDropDown } from "wax-prosemirror-components";
 import { addColumnBefore } from "prosemirror-tables";
diff --git a/wax-prosemirror-services/src/AnnotationService/tools/index.js b/wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/tools/index.js
similarity index 100%
rename from wax-prosemirror-services/src/AnnotationService/tools/index.js
rename to wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/tools/index.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/Base.js b/wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/Base.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/BaseToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/BaseToolGroupService.js
new file mode 100644
index 000000000..90b532f0f
--- /dev/null
+++ b/wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/BaseToolGroupService.js
@@ -0,0 +1,12 @@
+import Base from "./Base";
+import Service from "wax-prosemirror-core/src/services/Service";
+
+class BaseToolGroupService extends Service {
+  name = "BaseToolGroupService";
+
+  register() {
+    this.container.bind("Base").to(Base);
+  }
+}
+
+export default BaseToolGroupService;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/Image.js b/wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/Image.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/ImageToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/ImageToolGroupService.js
new file mode 100644
index 000000000..4305f81c2
--- /dev/null
+++ b/wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/ImageToolGroupService.js
@@ -0,0 +1,12 @@
+import Image from "./Image";
+import Service from "wax-prosemirror-core/src/services/Service";
+
+class ImageToolGroupService extends Service {
+  name = "ImageToolGroupService";
+
+  register() {
+    this.container.bind("Image").to(Image);
+  }
+}
+
+export default ImageToolGroupService;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/ListToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/ListToolGroupService.js
new file mode 100644
index 000000000..311f02da6
--- /dev/null
+++ b/wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/ListToolGroupService.js
@@ -0,0 +1,12 @@
+import Lists from "./Lists";
+import Service from "wax-prosemirror-core/src/services/Service";
+
+class ListToolGroupService extends Service {
+  name = "ListToolGroupService";
+
+  register() {
+    this.container.bind("Lists").to(Lists);
+  }
+}
+
+export default ListToolGroupService;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/Lists.js b/wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/Lists.js
new file mode 100644
index 000000000..0e8bbf777
--- /dev/null
+++ b/wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/Lists.js
@@ -0,0 +1,26 @@
+import { injectable, inject } from "inversify";
+import ToolGroup from "../../lib/ToolGroup";
+
+@injectable()
+class Lists extends ToolGroup {
+  tools = [];
+  constructor(
+    @inject("OrderedList") orderedlist,
+    @inject("BulletList") bulletlist,
+    @inject("JoinUp") joinup,
+    @inject("Lift") lift
+  ) {
+    super();
+    this.tools = [orderedlist, bulletlist, joinup, lift];
+  }
+
+  renderTools(view) {
+    const tools = [];
+    this.tools.forEach(tool => {
+      tools.push(tool.renderTool(view));
+    });
+    return tools;
+  }
+}
+
+export default Lists;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TableListGroupService/Table.js b/wax-prosemirror-services/src/WaxToolGroups/TableListGroupService/Table.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TableListGroupService/TableListGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/TableListGroupService/TableListGroupService.js
new file mode 100644
index 000000000..137ed227b
--- /dev/null
+++ b/wax-prosemirror-services/src/WaxToolGroups/TableListGroupService/TableListGroupService.js
@@ -0,0 +1,12 @@
+import Table from "./Table";
+import Service from "wax-prosemirror-core/src/services/Service";
+
+class TableToolGroupService extends Service {
+  name = "TableToolGroupService";
+
+  register() {
+    this.container.bind("Table").to(Table);
+  }
+}
+
+export default TableToolGroupService;
-- 
GitLab