From ae0c2f5ee6f085311d2ec85c87b2795efa901a21 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Fri, 13 Dec 2019 13:36:00 +0200
Subject: [PATCH] shortCutsService initial setup

---
 editors/editoria/src/EditorConfig.js          | 33 ++-----------------
 editors/editoria/src/config/config.js         |  5 +++
 wax-prosemirror-core/index.js                 |  3 --
 .../src/Config/defaultConfig.js               | 10 +++---
 wax-prosemirror-core/src/Wax.js               |  2 --
 wax-prosemirror-plugins/index.js              |  4 ++-
 .../src/RulesService/Rules.js                 |  2 +-
 .../src/ShortCutsService/ShortCuts.js         |  6 ++--
 .../src/ShortCutsService/ShortCutsService.js  |  9 +++++
 9 files changed, 30 insertions(+), 44 deletions(-)
 rename wax-prosemirror-core/src/config/classes/CreateShortCuts.js => wax-prosemirror-plugins/src/ShortCutsService/ShortCuts.js (94%)
 create mode 100644 wax-prosemirror-plugins/src/ShortCutsService/ShortCutsService.js

diff --git a/editors/editoria/src/EditorConfig.js b/editors/editoria/src/EditorConfig.js
index 9814b90e9..3685f4eca 100644
--- a/editors/editoria/src/EditorConfig.js
+++ b/editors/editoria/src/EditorConfig.js
@@ -25,7 +25,7 @@ import invisibles, {
 } from "@guardian/prosemirror-invisibles";
 import { LayoutService } from "./customServices/LayoutService/LayoutService";
 
-import { CreateSchema, CreateShortCuts } from "wax-prosemirror-core";
+import { CreateSchema } from "wax-prosemirror-core";
 import {
   LinkToolTipPlugin,
   FindAndReplacePlugin,
@@ -49,35 +49,6 @@ const extraNodes = {
 EditoriaSchema.nodes = { ...EditoriaSchema.nodes, ...extraNodes };
 const schema = new CreateSchema(EditoriaSchema);
 
-const shortCuts = {
-  "Mod-b": toggleMark(schema.marks.strong),
-  "Mod-i": toggleMark(schema.marks.em),
-  "Mod-u": toggleMark(schema.marks.underline),
-  "Mod-`": toggleMark(schema.marks.code),
-  "Ctrl->": wrapIn(schema.nodes.blockquote),
-  Enter: splitListItem(schema.nodes.list_item),
-  "Mod-[": liftListItem(schema.nodes.list_item),
-  "Mod-]": sinkListItem(schema.nodes.list_item),
-  "Alt-ArrowUp": joinUp,
-  "Alt-ArrowDown": joinDown,
-  "Mod-BracketLeft": lift,
-  Tab: goToNextCell(1),
-  "Shift-Tab": goToNextCell(-1),
-  "Shift-Ctrl-0": setBlockType(schema.nodes.paragraph),
-  "Shift-Ctrl-\\": setBlockType(schema.nodes.code_block),
-  "Shift-Ctrl-8": wrapInList(schema.nodes.bullet_list),
-  "Shift-Ctrl-9": wrapInList(schema.nodes.ordered_list),
-  "Shift-Ctrl-1": setBlockType(schema.nodes.heading, { level: 1 }),
-  "Shift-Ctrl-2": setBlockType(schema.nodes.heading, { level: 2 }),
-  "Shift-Ctrl-3": setBlockType(schema.nodes.heading, { level: 3 }),
-  "Shift-Ctrl-4": setBlockType(schema.nodes.heading, { level: 4 }),
-  "Shift-Ctrl-5": setBlockType(schema.nodes.heading, { level: 5 }),
-  "Shift-Ctrl-6": setBlockType(schema.nodes.heading, { level: 6 })
-};
-
-// Create shortCuts
-const keys = new CreateShortCuts({ schema, shortCuts });
-
 // Add Plugins
 const plugins = [
   columnResizing(),
@@ -101,4 +72,4 @@ const services = [new LinkService()];
 
 // Add Rules
 
-export { schema, keys, plugins, services };
+export { schema, plugins, services };
diff --git a/editors/editoria/src/config/config.js b/editors/editoria/src/config/config.js
index 82fb3775f..2cb49b66c 100644
--- a/editors/editoria/src/config/config.js
+++ b/editors/editoria/src/config/config.js
@@ -15,5 +15,10 @@ export default {
     {
       rules: [emDash, ellipsis]
     }
+  ],
+  RulesService: [
+    {
+      shortCuts: {}
+    }
   ]
 };
diff --git a/wax-prosemirror-core/index.js b/wax-prosemirror-core/index.js
index 098d569b9..62a4c8a72 100644
--- a/wax-prosemirror-core/index.js
+++ b/wax-prosemirror-core/index.js
@@ -1,6 +1,3 @@
 export { default as Wax } from "./src/Wax";
 export { default as CreateSchema } from "./src/config/classes/CreateSchema";
-export {
-  default as CreateShortCuts
-} from "./src/config/classes/CreateShortCuts";
 export { default as Service } from "./src/services/Service";
diff --git a/wax-prosemirror-core/src/Config/defaultConfig.js b/wax-prosemirror-core/src/Config/defaultConfig.js
index 10ea27853..d49e24606 100644
--- a/wax-prosemirror-core/src/Config/defaultConfig.js
+++ b/wax-prosemirror-core/src/Config/defaultConfig.js
@@ -1,17 +1,19 @@
 import LayoutService from "../services/LayoutService/LayoutService";
 import {
-  MenuService,
   AnnotationService,
+  ImageService,
+  MenuService,
   RedoUndoService,
-  TextStyleService,
   PlaceholderService,
-  ImageService,
-  RulesService
+  RulesService,
+  ShortCutsService,
+  TextStyleService
 } from "wax-prosemirror-plugins";
 
 export default {
   services: [
     new RulesService(),
+    new ShortCutsService(),
     new LayoutService(),
     new MenuService(),
     new RedoUndoService(),
diff --git a/wax-prosemirror-core/src/Wax.js b/wax-prosemirror-core/src/Wax.js
index 7588a2b58..1b4a6ab2b 100644
--- a/wax-prosemirror-core/src/Wax.js
+++ b/wax-prosemirror-core/src/Wax.js
@@ -11,8 +11,6 @@ import WaxView from "./WaxView";
 import defaultPlugins from "./config/defaultPlugins";
 import placeholder from "./config/plugins/placeholder";
 
-import CreateShortCuts from "./config/classes/CreateShortCuts";
-
 const parser = schema => {
   const parser = DOMParser.fromSchema(schema);
 
diff --git a/wax-prosemirror-plugins/index.js b/wax-prosemirror-plugins/index.js
index 9e3aedf8b..b0e89fe7d 100644
--- a/wax-prosemirror-plugins/index.js
+++ b/wax-prosemirror-plugins/index.js
@@ -19,5 +19,7 @@ export {
 } from "./src/PlaceholderService/PlaceholderService";
 export { default as ImageService } from "./src/ImageService/ImageService";
 export { default as RulesService } from "./src/RulesService/RulesService";
-
+export {
+  default as ShortCutsService
+} from "./src/ShortCutsService/ShortCutsService";
 export { default as Tool } from "./src/lib/Tools";
diff --git a/wax-prosemirror-plugins/src/RulesService/Rules.js b/wax-prosemirror-plugins/src/RulesService/Rules.js
index 041ac1c75..465e4fbb8 100644
--- a/wax-prosemirror-plugins/src/RulesService/Rules.js
+++ b/wax-prosemirror-plugins/src/RulesService/Rules.js
@@ -1,4 +1,4 @@
-import { injectable, inject } from "inversify";
+import { injectable } from "inversify";
 import {
   inputRules,
   wrappingInputRule,
diff --git a/wax-prosemirror-core/src/config/classes/CreateShortCuts.js b/wax-prosemirror-plugins/src/ShortCutsService/ShortCuts.js
similarity index 94%
rename from wax-prosemirror-core/src/config/classes/CreateShortCuts.js
rename to wax-prosemirror-plugins/src/ShortCutsService/ShortCuts.js
index 98986fb1c..f8a27e947 100644
--- a/wax-prosemirror-core/src/config/classes/CreateShortCuts.js
+++ b/wax-prosemirror-plugins/src/ShortCutsService/ShortCuts.js
@@ -1,3 +1,4 @@
+import { injectable } from "inversify";
 import { keymap } from "prosemirror-keymap";
 import { undoInputRule } from "prosemirror-inputrules";
 import { undo, redo } from "prosemirror-history";
@@ -10,7 +11,8 @@ import {
   selectParentNode
 } from "prosemirror-commands";
 
-class CreateShortCuts {
+@injectable()
+class ShortCuts {
   constructor(config) {
     this.schema = config.schema;
     this.shortCuts = config.shortCuts;
@@ -63,4 +65,4 @@ class CreateShortCuts {
   }
 }
 
-export default CreateShortCuts;
+export default ShortCuts;
diff --git a/wax-prosemirror-plugins/src/ShortCutsService/ShortCutsService.js b/wax-prosemirror-plugins/src/ShortCutsService/ShortCutsService.js
new file mode 100644
index 000000000..5424d0cd3
--- /dev/null
+++ b/wax-prosemirror-plugins/src/ShortCutsService/ShortCutsService.js
@@ -0,0 +1,9 @@
+import Service from "wax-prosemirror-core/src/services/Service";
+import ShortCuts from "./ShortCuts";
+
+export default class ShortCutsService extends Service {
+  name = "ShortCutsService";
+
+  boot() {}
+  register() {}
+}
-- 
GitLab