From 6e74b389121af96ca8596a947af34530d41c5332 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Thu, 16 Jan 2020 14:13:50 +0200
Subject: [PATCH] Text tool service

---
 editors/editoria/src/Editoria.js              |  3 +-
 editors/editoria/src/config/config.js         | 12 ++++----
 .../src/nodes/extractPoetryNode.js            |  2 +-
 .../BlockQuoteService/BlockQuote.js           | 22 +++++++++++++++
 .../BlockQuoteService/BlockQuoteService.js    | 20 +++++++++++++
 .../ExtractPoetryService/ExtractPoetry.js     | 22 +++++++++++++++
 .../ExtractPoetryService.js                   | 20 +++++++++++++
 .../ExtractProseService/ExtractProse.js       | 22 +++++++++++++++
 .../ExtractProseService.js                    | 20 +++++++++++++
 .../ParagraphContinued.js                     |  4 +--
 .../ParagraphContinuedService.js              |  8 ++++++
 .../ParagraphService/ParagraphService.js      |  2 +-
 .../SourceNoteService/SourceNote.js           | 22 +++++++++++++++
 .../SourceNoteService/SourceNoteService.js    | 20 +++++++++++++
 .../src/TextBlockLevel/index.js               | 28 ++++++++++---------
 .../TextToolGroupService/Text.js              | 27 ++++++++++++++++--
 16 files changed, 228 insertions(+), 26 deletions(-)
 create mode 100644 wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuote.js
 create mode 100644 wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuoteService.js
 create mode 100644 wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetry.js
 create mode 100644 wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProse.js
 create mode 100644 wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNote.js

diff --git a/editors/editoria/src/Editoria.js b/editors/editoria/src/Editoria.js
index 2ad25dee4..cf9c690d2 100644
--- a/editors/editoria/src/Editoria.js
+++ b/editors/editoria/src/Editoria.js
@@ -51,9 +51,8 @@ const Editoria = () => (
       value="<p> <span style='font-style:italic;'>test</span>hello <code> this is the code</code></p>"
       layout={EditoriaLayout}
       user={user}
-      debug
     />
-    <div id="editors"></div>
+    <div id="editors" />
   </Fragment>
 );
 
diff --git a/editors/editoria/src/config/config.js b/editors/editoria/src/config/config.js
index 05a78a8f1..893459088 100644
--- a/editors/editoria/src/config/config.js
+++ b/editors/editoria/src/config/config.js
@@ -14,7 +14,9 @@ import {
   BaseToolGroupService,
   DisplayBlockLevelService,
   DisplayToolGroupService,
-  ImageToolGroupService
+  ImageToolGroupService,
+  TextBlockLevelService,
+  TextToolGroupService
 } from "wax-prosemirror-services";
 
 import invisibles, {
@@ -31,7 +33,7 @@ export default {
     },
     {
       templateArea: "leftSideBar",
-      toolGroups: ["Display"]
+      toolGroups: ["Display", "Text"]
     }
   ],
 
@@ -59,8 +61,8 @@ export default {
     new BaseToolGroupService(),
     new DisplayBlockLevelService(),
     new DisplayToolGroupService(),
-    new ImageToolGroupService()
-    // new TextBlockLevelService(),
-    // new TextToolGroupService()
+    new ImageToolGroupService(),
+    new TextBlockLevelService(),
+    new TextToolGroupService()
   ]
 };
diff --git a/wax-prosemirror-schema/src/nodes/extractPoetryNode.js b/wax-prosemirror-schema/src/nodes/extractPoetryNode.js
index 63bbaa546..bf4499c03 100644
--- a/wax-prosemirror-schema/src/nodes/extractPoetryNode.js
+++ b/wax-prosemirror-schema/src/nodes/extractPoetryNode.js
@@ -22,7 +22,7 @@ const extractPoetry = {
   ],
   toDOM(hook, next) {
     const attrs = blockLevelToDOM(hook.node);
-    hook.value[("p", attrs, 0)];
+    hook.value = ["p", attrs, 0];
     next();
   }
 };
diff --git a/wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuote.js b/wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuote.js
new file mode 100644
index 000000000..77ac0af54
--- /dev/null
+++ b/wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuote.js
@@ -0,0 +1,22 @@
+import Tools from "../../lib/Tools";
+import { injectable } from "inversify";
+import { wrapIn } from "prosemirror-commands";
+
+@injectable()
+class BlockQuote extends Tools {
+  title = "Change to Block Quote";
+  content = "Block Quote";
+
+  get run() {
+    return (state, dispatch) => {
+      wrapIn(state.config.schema.nodes.blockquote)(state, dispatch);
+    };
+  }
+
+  get enable() {
+    return state => {
+      return wrapIn(state.config.schema.nodes.blockquote)(state);
+    };
+  }
+}
+export default BlockQuote;
diff --git a/wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuoteService.js b/wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuoteService.js
new file mode 100644
index 000000000..b81a5f94c
--- /dev/null
+++ b/wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuoteService.js
@@ -0,0 +1,20 @@
+import Service from "wax-prosemirror-core/src/services/Service";
+import { blockQuoteNode } from "wax-prosemirror-schema";
+import BlockQuote from "./BlockQuote";
+
+class BlockQuoteService extends Service {
+  boot() {}
+
+  register() {
+    this.container.bind("BlockQuote").to(BlockQuote);
+    const createNode = this.container.get("CreateNode");
+    createNode(
+      {
+        blockquote: blockQuoteNode
+      },
+      { toWaxSchema: true }
+    );
+  }
+}
+
+export default BlockQuoteService;
diff --git a/wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetry.js b/wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetry.js
new file mode 100644
index 000000000..f3507f5d8
--- /dev/null
+++ b/wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetry.js
@@ -0,0 +1,22 @@
+import Tools from "../../lib/Tools";
+import { injectable } from "inversify";
+import { setBlockType } from "prosemirror-commands";
+
+@injectable()
+class ExtractPoetry extends Tools {
+  title = "Change to Extract Poetry";
+  content = "Extract Poetry";
+
+  get run() {
+    return (state, dispatch) => {
+      setBlockType(state.config.schema.nodes.extractPoetry)(state, dispatch);
+    };
+  }
+
+  get enable() {
+    return state => {
+      return setBlockType(state.config.schema.nodes.extractPoetry)(state);
+    };
+  }
+}
+export default ExtractPoetry;
diff --git a/wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetryService.js b/wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetryService.js
index e69de29bb..9b0a043a0 100644
--- a/wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetryService.js
+++ b/wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetryService.js
@@ -0,0 +1,20 @@
+import Service from "wax-prosemirror-core/src/services/Service";
+import { extractPoetryNode } from "wax-prosemirror-schema";
+import ExtractPoetry from "./ExtractPoetry";
+
+class ExtractPoetryService extends Service {
+  boot() {}
+
+  register() {
+    this.container.bind("ExtractPoetry").to(ExtractPoetry);
+    const createNode = this.container.get("CreateNode");
+    createNode(
+      {
+        extractPoetry: extractPoetryNode
+      },
+      { toWaxSchema: true }
+    );
+  }
+}
+
+export default ExtractPoetryService;
diff --git a/wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProse.js b/wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProse.js
new file mode 100644
index 000000000..261cfe18d
--- /dev/null
+++ b/wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProse.js
@@ -0,0 +1,22 @@
+import Tools from "../../lib/Tools";
+import { injectable } from "inversify";
+import { setBlockType } from "prosemirror-commands";
+
+@injectable()
+class ExtractProse extends Tools {
+  title = "Change to Extract Prose";
+  content = "Extract Prose";
+
+  get run() {
+    return (state, dispatch) => {
+      setBlockType(state.config.schema.nodes.extractProse)(state, dispatch);
+    };
+  }
+
+  get enable() {
+    return state => {
+      return setBlockType(state.config.schema.nodes.extractProse)(state);
+    };
+  }
+}
+export default ExtractProse;
diff --git a/wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProseService.js b/wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProseService.js
index e69de29bb..74933be55 100644
--- a/wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProseService.js
+++ b/wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProseService.js
@@ -0,0 +1,20 @@
+import Service from "wax-prosemirror-core/src/services/Service";
+import { extractProseNode } from "wax-prosemirror-schema";
+import ExtractProse from "./ExtractProse";
+
+class ExtractProseService extends Service {
+  boot() {}
+
+  register() {
+    this.container.bind("ExtractProse").to(ExtractProse);
+    const createNode = this.container.get("CreateNode");
+    createNode(
+      {
+        extractProse: extractProseNode
+      },
+      { toWaxSchema: true }
+    );
+  }
+}
+
+export default ExtractProseService;
diff --git a/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinued.js b/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinued.js
index ce7affa84..bcc3c506e 100644
--- a/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinued.js
+++ b/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinued.js
@@ -9,13 +9,13 @@ class ParagraphContinued extends Tools {
 
   get run() {
     return (state, dispatch) => {
-      setBlockType(state.config.schema.nodes.paragraph)(state, dispatch);
+      setBlockType(state.config.schema.nodes.paragraphCont)(state, dispatch);
     };
   }
 
   get enable() {
     return state => {
-      return setBlockType(state.config.schema.nodes.paragraph)(state);
+      return setBlockType(state.config.schema.nodes.paragraphCont)(state);
     };
   }
 }
diff --git a/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinuedService.js b/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinuedService.js
index 553f8bfc9..dbb93a649 100644
--- a/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinuedService.js
+++ b/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinuedService.js
@@ -1,4 +1,5 @@
 import Service from "wax-prosemirror-core/src/services/Service";
+import { paragraphContNode } from "wax-prosemirror-schema";
 import ParagraphContinued from "./ParagraphContinued";
 
 class ParagraphContinuedService extends Service {
@@ -6,6 +7,13 @@ class ParagraphContinuedService extends Service {
 
   register() {
     this.container.bind("ParagraphContinued").to(ParagraphContinued);
+    const createNode = this.container.get("CreateNode");
+    createNode(
+      {
+        paragraphCont: paragraphContNode
+      },
+      { toWaxSchema: true }
+    );
   }
 }
 
diff --git a/wax-prosemirror-services/src/TextBlockLevel/ParagraphService/ParagraphService.js b/wax-prosemirror-services/src/TextBlockLevel/ParagraphService/ParagraphService.js
index aecfcffd8..b02a73f21 100644
--- a/wax-prosemirror-services/src/TextBlockLevel/ParagraphService/ParagraphService.js
+++ b/wax-prosemirror-services/src/TextBlockLevel/ParagraphService/ParagraphService.js
@@ -1,7 +1,7 @@
 import Service from "wax-prosemirror-core/src/services/Service";
 import Paragraph from "./Paragraph";
 
-class PsragraphService extends Service {
+class ParagraphService extends Service {
   boot() {}
 
   register() {
diff --git a/wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNote.js b/wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNote.js
new file mode 100644
index 000000000..5e05eea06
--- /dev/null
+++ b/wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNote.js
@@ -0,0 +1,22 @@
+import Tools from "../../lib/Tools";
+import { injectable } from "inversify";
+import { setBlockType } from "prosemirror-commands";
+
+@injectable()
+class SourceNote extends Tools {
+  title = "Change to Source Note";
+  content = "Source Note";
+
+  get run() {
+    return (state, dispatch) => {
+      setBlockType(state.config.schema.nodes.sourceNote)(state, dispatch);
+    };
+  }
+
+  get enable() {
+    return state => {
+      return setBlockType(state.config.schema.nodes.sourceNote)(state);
+    };
+  }
+}
+export default SourceNote;
diff --git a/wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNoteService.js b/wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNoteService.js
index e69de29bb..f57ac2f92 100644
--- a/wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNoteService.js
+++ b/wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNoteService.js
@@ -0,0 +1,20 @@
+import Service from "wax-prosemirror-core/src/services/Service";
+import { sourceNoteNode } from "wax-prosemirror-schema";
+import SourceNote from "./SourceNote";
+
+class SourceNoteService extends Service {
+  boot() {}
+
+  register() {
+    this.container.bind("SourceNote").to(SourceNote);
+    const createNode = this.container.get("CreateNode");
+    createNode(
+      {
+        sourceNote: sourceNoteNode
+      },
+      { toWaxSchema: true }
+    );
+  }
+}
+
+export default SourceNoteService;
diff --git a/wax-prosemirror-services/src/TextBlockLevel/index.js b/wax-prosemirror-services/src/TextBlockLevel/index.js
index 3bf999cd8..750644104 100644
--- a/wax-prosemirror-services/src/TextBlockLevel/index.js
+++ b/wax-prosemirror-services/src/TextBlockLevel/index.js
@@ -1,13 +1,15 @@
-// import ExtractPoetryService from "./ExtractPoetryService/ExtractPoetryService";
-// import ExtractProseService from "./ExtractProseService/ExtractProseService";
-// import ParagraphContinuedService from "./ParagraphContinuedService/ParagraphContinuedService";
-// import ParagraphService from "./ParagraphService/ParagraphService";
-// import SourceNoteService from "./SourceNoteService/SourceNoteService";
-//
-// export default [
-//   new ExtractPoetryService(),
-//   new ExtractProseService(),
-//   new ParagraphContinuedService(),
-//   new ParagraphService(),
-//   new SourceNoteService()
-// ];
+import ExtractPoetryService from "./ExtractPoetryService/ExtractPoetryService";
+import ExtractProseService from "./ExtractProseService/ExtractProseService";
+import ParagraphContinuedService from "./ParagraphContinuedService/ParagraphContinuedService";
+import ParagraphService from "./ParagraphService/ParagraphService";
+import SourceNoteService from "./SourceNoteService/SourceNoteService";
+import BlockQuoteService from "./BlockQuoteService/BlockQuoteService";
+
+export default [
+  new ExtractPoetryService(),
+  new ExtractProseService(),
+  new ParagraphContinuedService(),
+  new ParagraphService(),
+  new SourceNoteService(),
+  new BlockQuoteService()
+];
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js b/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js
index e14231b12..b1cdb108a 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js
@@ -1,12 +1,35 @@
+import React from "react";
 import { injectable, inject } from "inversify";
 import ToolGroup from "../../lib/ToolGroup";
 
 @injectable()
 class Text extends ToolGroup {
   tools = [];
-  constructor() {
+  title = () => {
+    return (
+      <span>
+        Text
+        <hr />
+      </span>
+    );
+  };
+  constructor(
+    @inject("Paragraph") paragraph,
+    @inject("ParagraphContinued") paragraphContinued,
+    @inject("ExtractProse") extractProse,
+    @inject("ExtractPoetry") extractPoetry,
+    @inject("SourceNote") sourceNote,
+    @inject("BlockQuote") blockQuote
+  ) {
     super();
-    this.tools = [];
+    this.tools = [
+      paragraph,
+      paragraphContinued,
+      extractProse,
+      extractPoetry,
+      sourceNote,
+      blockQuote
+    ];
   }
 }
 
-- 
GitLab