From 212de6f4b43b4643ceb55cec3a34bc61cf1e3346 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Thu, 19 Dec 2019 18:43:10 +0200
Subject: [PATCH] feat: subscript service

---
 .../src/AnnotationService/tools/index.js       |  2 +-
 .../CodeService/CodeService.js                 | 11 ++---------
 .../SubscriptService}/Subscript.js             |  0
 .../SubscriptService/SubscriptService.js       | 18 ++++++++++++++++++
 .../src/InlineAnnotations/index.js             |  8 +++++++-
 wax-prosemirror-schema/index.js                |  1 +
 wax-prosemirror-schema/src/editoria/marks.js   |  5 -----
 .../src/marks/subscriptMark.js                 | 10 ++++++++++
 8 files changed, 39 insertions(+), 16 deletions(-)
 rename wax-prosemirror-plugins/src/{AnnotationService/tools => InlineAnnotations/SubscriptService}/Subscript.js (100%)
 create mode 100644 wax-prosemirror-plugins/src/InlineAnnotations/SubscriptService/SubscriptService.js
 create mode 100644 wax-prosemirror-schema/src/marks/subscriptMark.js

diff --git a/wax-prosemirror-plugins/src/AnnotationService/tools/index.js b/wax-prosemirror-plugins/src/AnnotationService/tools/index.js
index 643a61eb5..af913b544 100644
--- a/wax-prosemirror-plugins/src/AnnotationService/tools/index.js
+++ b/wax-prosemirror-plugins/src/AnnotationService/tools/index.js
@@ -1,7 +1,7 @@
 export { default as Blockquote } from "./Blockquote";
 export { default as SmallCaps } from "./SmallCaps";
 export { default as StrikeThrough } from "./StrikeThrough";
-export { default as Subscript } from "./Subscript";
+// export { default as Subscript } from "./Subscript";
 export { default as Superscript } from "./Superscript";
 export { default as Underline } from "./Underline";
 export { default as Table } from "./Table";
diff --git a/wax-prosemirror-plugins/src/InlineAnnotations/CodeService/CodeService.js b/wax-prosemirror-plugins/src/InlineAnnotations/CodeService/CodeService.js
index d714f11dc..543d5f6a4 100644
--- a/wax-prosemirror-plugins/src/InlineAnnotations/CodeService/CodeService.js
+++ b/wax-prosemirror-plugins/src/InlineAnnotations/CodeService/CodeService.js
@@ -1,4 +1,5 @@
 import Service from "wax-prosemirror-core/src/services/Service";
+import { codeMark } from "wax-prosemirror-schema";
 import Code from "./Code";
 
 class CodeService extends Service {
@@ -7,15 +8,7 @@ class CodeService extends Service {
   register() {
     this.container
       .bind("schema")
-      .toConstantValue({
-        code: {
-          parseDOM: { tag: "code" },
-          toDOM(hook, next) {
-            hook.value = ["code", 0];
-            next();
-          }
-        }
-      })
+      .toConstantValue({ code: codeMark })
       .whenTargetNamed("mark");
 
     this.container.bind("Code").to(Code);
diff --git a/wax-prosemirror-plugins/src/AnnotationService/tools/Subscript.js b/wax-prosemirror-plugins/src/InlineAnnotations/SubscriptService/Subscript.js
similarity index 100%
rename from wax-prosemirror-plugins/src/AnnotationService/tools/Subscript.js
rename to wax-prosemirror-plugins/src/InlineAnnotations/SubscriptService/Subscript.js
diff --git a/wax-prosemirror-plugins/src/InlineAnnotations/SubscriptService/SubscriptService.js b/wax-prosemirror-plugins/src/InlineAnnotations/SubscriptService/SubscriptService.js
new file mode 100644
index 000000000..31c8d37e4
--- /dev/null
+++ b/wax-prosemirror-plugins/src/InlineAnnotations/SubscriptService/SubscriptService.js
@@ -0,0 +1,18 @@
+import Service from "wax-prosemirror-core/src/services/Service";
+import { subscriptMark } from "wax-prosemirror-schema";
+import Subscript from "./Subscript";
+
+class SubscriptService extends Service {
+  boot() {}
+
+  register() {
+    this.container
+      .bind("schema")
+      .toConstantValue({ subscript: subscriptMark })
+      .whenTargetNamed("mark");
+
+    this.container.bind("Subscript").to(Subscript);
+  }
+}
+
+export default SubscriptService;
diff --git a/wax-prosemirror-plugins/src/InlineAnnotations/index.js b/wax-prosemirror-plugins/src/InlineAnnotations/index.js
index af8fbbc80..1d9705ef1 100644
--- a/wax-prosemirror-plugins/src/InlineAnnotations/index.js
+++ b/wax-prosemirror-plugins/src/InlineAnnotations/index.js
@@ -1,4 +1,10 @@
 import CodeService from "./CodeService/CodeService";
 import StrongService from "./StrongService/StrongService";
 import EmphasisService from "./EmphasisService/EmphasisService";
-export default [new CodeService(), new StrongService(), new EmphasisService()];
+import SubscriptService from "./SubscriptService/SubscriptService";
+export default [
+  new CodeService(),
+  new StrongService(),
+  new EmphasisService(),
+  new SubscriptService()
+];
diff --git a/wax-prosemirror-schema/index.js b/wax-prosemirror-schema/index.js
index 7520b51b6..e0c547e00 100644
--- a/wax-prosemirror-schema/index.js
+++ b/wax-prosemirror-schema/index.js
@@ -5,3 +5,4 @@ export { default as codeMark } from "./src/marks/codeMark";
 export { default as strongMark } from "./src/marks/strongMark";
 export { default as linkMark } from "./src/marks/linkMark";
 export { default as emphasisMark } from "./src/marks/emphasisMark";
+export { default as subscriptMark } from "./src/marks/subscriptMark";
diff --git a/wax-prosemirror-schema/src/editoria/marks.js b/wax-prosemirror-schema/src/editoria/marks.js
index 64f02b362..dc5a8df67 100644
--- a/wax-prosemirror-schema/src/editoria/marks.js
+++ b/wax-prosemirror-schema/src/editoria/marks.js
@@ -3,11 +3,6 @@ const emDOM = ["em", 0],
   codeDOM = ["code", 0];
 
 const marks = {
-  subscript: {
-    excludes: "superscript",
-    parseDOM: [{ tag: "sub" }, { style: "vertical-align=sub" }],
-    toDOM: () => ["sub"]
-  },
   superscript: {
     excludes: "subscript",
     parseDOM: [{ tag: "sup" }, { style: "vertical-align=super" }],
diff --git a/wax-prosemirror-schema/src/marks/subscriptMark.js b/wax-prosemirror-schema/src/marks/subscriptMark.js
new file mode 100644
index 000000000..ee7d7fc4a
--- /dev/null
+++ b/wax-prosemirror-schema/src/marks/subscriptMark.js
@@ -0,0 +1,10 @@
+const subscript = {
+  excludes: "superscript",
+  parseDOM: [{ tag: "sub" }, { style: "vertical-align=sub" }],
+  toDOM(hook, next) {
+    hook.value = ["sub"];
+    next();
+  }
+};
+
+export default subscript;
-- 
GitLab