From ee7edf9e3ae2f1afaaf65a47b7972cf353db9d22 Mon Sep 17 00:00:00 2001
From: Giannis Kopanas <jkopanas@gmail.com>
Date: Fri, 27 Dec 2019 15:25:48 +0200
Subject: [PATCH] fix(schema): add prosemirrorschema

---
 .../src/config/defaultConfig.js               |  2 +-
 wax-prosemirror-core/src/ioc-react.js         | 33 -------------------
 wax-prosemirror-schema/src/editoria/nodes.js  |  6 +---
 wax-prosemirror-services/index.js             |  3 --
 .../StrongService/StrongService.js            | 12 +++----
 .../src/ListsService/ListsService.js          |  4 +--
 .../src/SchemaService/Node.js                 |  2 ++
 .../src/SchemaService/SchemaService.js        | 17 +++++-----
 .../InsertTableService/InsertTableService.js  | 19 +++++++++++
 9 files changed, 39 insertions(+), 59 deletions(-)

diff --git a/wax-prosemirror-core/src/config/defaultConfig.js b/wax-prosemirror-core/src/config/defaultConfig.js
index 9179f0011..f2f7f6324 100644
--- a/wax-prosemirror-core/src/config/defaultConfig.js
+++ b/wax-prosemirror-core/src/config/defaultConfig.js
@@ -11,7 +11,7 @@ import {
   TextStyleService,
   InlineAnnotationsService,
   LinkService,
-  OverlayService
+  OverlayService,
   ListsService,
   ListToolGroupService,
   TablesService,
diff --git a/wax-prosemirror-core/src/ioc-react.js b/wax-prosemirror-core/src/ioc-react.js
index aa4ea9ae3..fee702c69 100644
--- a/wax-prosemirror-core/src/ioc-react.js
+++ b/wax-prosemirror-core/src/ioc-react.js
@@ -6,39 +6,6 @@ export const WaxContext = React.createContext({
   updateView: null
 });
 
-// export default class WaxContextComponent extends Component {
-//   constructor(props) {
-//     super(props);
-//     console.log("tesss");
-//     this.state = {
-//       app: props.app,
-//       view: props.view,
-//       updateView: view => {
-//         this.setState(view);
-//       }
-//     };
-//   }
-
-//   componentWillReceiveProps(next, prev) {
-//     console.log(next, prev);
-//   }
-
-//   render() {
-//     console.log("provider");
-//     return (
-//       <WaxContext.Provider
-//         value={{
-//           app: this.state.app,
-//           view: this.state.view,
-//           updateView: this.state.updateView
-//         }}
-//       >
-//         {this.props.children}
-//       </WaxContext.Provider>
-//     );
-//   }
-// }
-
 export default props => {
   const [context, setContext] = useState({
     app: props.app,
diff --git a/wax-prosemirror-schema/src/editoria/nodes.js b/wax-prosemirror-schema/src/editoria/nodes.js
index 8caedf3c1..5b5dd6182 100644
--- a/wax-prosemirror-schema/src/editoria/nodes.js
+++ b/wax-prosemirror-schema/src/editoria/nodes.js
@@ -333,10 +333,6 @@ const nodes = {
     toDOM() {
       return blockquoteDOM;
     }
-  },
-  ...tableNodes({
-    tableGroup: "block",
-    cellContent: "block+"
-  })
+  }
 };
 export default nodes;
diff --git a/wax-prosemirror-services/index.js b/wax-prosemirror-services/index.js
index af8386a84..293867afc 100644
--- a/wax-prosemirror-services/index.js
+++ b/wax-prosemirror-services/index.js
@@ -1,7 +1,4 @@
 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 PlaceholderService } from "./src/PlaceholderService/PlaceholderService";
 export { default as LinkService } from "./src/LinkService/LinkService";
 
 export { default as TextStyleService } from "./src/TextStyleService/TextStyleService";
diff --git a/wax-prosemirror-services/src/InlineAnnotations/StrongService/StrongService.js b/wax-prosemirror-services/src/InlineAnnotations/StrongService/StrongService.js
index 79832f9fc..b77b74c38 100644
--- a/wax-prosemirror-services/src/InlineAnnotations/StrongService/StrongService.js
+++ b/wax-prosemirror-services/src/InlineAnnotations/StrongService/StrongService.js
@@ -11,13 +11,13 @@ class StrongService extends Service {
 
   register() {
     this.container.bind("Strong").to(Strong);
-
-    this.container
-      .bind("schema")
-      .toConstantValue({
+    const createMark = this.container.get("CreateMark");
+    createMark(
+      {
         strong: strongMark
-      })
-      .whenTargetNamed("mark");
+      },
+      { toWaxSchema: true }
+    );
   }
 }
 
diff --git a/wax-prosemirror-services/src/ListsService/ListsService.js b/wax-prosemirror-services/src/ListsService/ListsService.js
index 6a8e560fd..b9fff5437 100644
--- a/wax-prosemirror-services/src/ListsService/ListsService.js
+++ b/wax-prosemirror-services/src/ListsService/ListsService.js
@@ -2,9 +2,7 @@ import ListsServices from "./index";
 import Service from "wax-prosemirror-core/src/services/Service";
 
 class ListsService extends Service {
-  register() {
-    this.config.pushToArray("services", ListsServices);
-  }
+  dependencies = ListsServices;
 }
 
 export default ListsService;
diff --git a/wax-prosemirror-services/src/SchemaService/Node.js b/wax-prosemirror-services/src/SchemaService/Node.js
index 085296aba..c3108aea3 100644
--- a/wax-prosemirror-services/src/SchemaService/Node.js
+++ b/wax-prosemirror-services/src/SchemaService/Node.js
@@ -6,6 +6,7 @@ export default class Node {
   name = "";
   importer = {};
 
+  isolating = false;
   inline = false;
   group = "";
   content = "";
@@ -59,6 +60,7 @@ export default class Node {
       inline: this.inline,
       group: this.group,
       content: this.content,
+      isolating: this.isolating,
       draggable: this.draggable,
       attrs: this._attrs,
       parseDOM: this._parseRules.map(rule => rule.combineRules()),
diff --git a/wax-prosemirror-services/src/SchemaService/SchemaService.js b/wax-prosemirror-services/src/SchemaService/SchemaService.js
index 459abe2d1..925e16bbe 100644
--- a/wax-prosemirror-services/src/SchemaService/SchemaService.js
+++ b/wax-prosemirror-services/src/SchemaService/SchemaService.js
@@ -13,29 +13,30 @@ export default class SchemaService extends Service {
       .inSingletonScope();
 
     this.container.bind("CreateNode").toFactory(context => {
-      return (schema, options) => {
+      return (schema, options = { toWaxSchema: false }) => {
         if (options.toWaxSchema) {
-          context
+          context.container
             .bind("schema")
             .toConstantValue(schema)
             .whenTargetNamed("node");
         } else {
-          const schema = context.get("Schema");
-          schema.addProsemirrorSchema(schema, "nodes");
+          const schemaInstance = context.container.get("Schema");
+
+          schemaInstance.addProsemirrorSchema(schema, "nodes");
         }
       };
     });
 
     this.container.bind("CreateMark").toFactory(context => {
-      return (schema, options) => {
+      return (schema, options = { toWaxSchema: false }) => {
         if (options.toWaxSchema) {
-          context
+          context.container
             .bind("schema")
             .toConstantValue(schema)
             .whenTargetNamed("mark");
         } else {
-          const schema = context.get("Schema");
-          schema.addProsemirrorSchema(schema, "marks");
+          const schemaInstance = context.container.get("Schema");
+          schemaInstance.addProsemirrorSchema(schema, "marks");
         }
       };
     });
diff --git a/wax-prosemirror-services/src/TablesService/InsertTableService/InsertTableService.js b/wax-prosemirror-services/src/TablesService/InsertTableService/InsertTableService.js
index f0accdee4..541ff1ac2 100644
--- a/wax-prosemirror-services/src/TablesService/InsertTableService/InsertTableService.js
+++ b/wax-prosemirror-services/src/TablesService/InsertTableService/InsertTableService.js
@@ -7,6 +7,25 @@ class InsertTableService extends Service {
 
   register() {
     this.container.bind("Table").to(Table);
+
+    const createNode = this.container.get("CreateNode");
+    const { table, table_row, table_cell, table_header } = tableNodes({
+      tableGroup: "block",
+      cellContent: "block+"
+    });
+
+    createNode({
+      table
+    });
+    createNode({
+      table_row
+    });
+    createNode({
+      table_cell
+    });
+    createNode({
+      table_header
+    });
   }
 }
 
-- 
GitLab