From 7e9674b6b577edff527adf44f2e1593eab22ec92 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Mon, 12 Oct 2020 14:13:39 +0300
Subject: [PATCH] add math nodes and marks

---
 wax-prosemirror-schema/index.js               |  3 +++
 .../src/marks/mathSelectMark.js               |  8 ++++++++
 .../src/nodes/mathDisplayNode.js              | 14 +++++++++++++
 .../src/nodes/mathInlineNode.js               | 14 +++++++++++++
 .../src/MathService/MathService.js            | 20 +++++++++++++++++--
 5 files changed, 57 insertions(+), 2 deletions(-)
 create mode 100644 wax-prosemirror-schema/src/marks/mathSelectMark.js
 create mode 100644 wax-prosemirror-schema/src/nodes/mathDisplayNode.js
 create mode 100644 wax-prosemirror-schema/src/nodes/mathInlineNode.js

diff --git a/wax-prosemirror-schema/index.js b/wax-prosemirror-schema/index.js
index d821cda25..6e9de4854 100644
--- a/wax-prosemirror-schema/index.js
+++ b/wax-prosemirror-schema/index.js
@@ -12,6 +12,7 @@ export { default as underlineMark } from './src/marks/underlineMark';
 export { default as smallcapsMark } from './src/marks/smallcapsMark';
 export { default as sourceMark } from './src/marks/sourceMark';
 export { default as commentMark } from './src/marks/commentMark';
+export { default as mathSelectMark } from './src/marks/mathSelectMark';
 /*
 LIST OF TRACK CHANGES MARKS
 */
@@ -37,6 +38,8 @@ export { default as headingNode } from './src/nodes/headingNode';
 export { default as blockQuoteNode } from './src/nodes/blockQuoteNode';
 export { default as footNoteNode } from './src/nodes/footNoteNode';
 export { default as codeBlockNode } from './src/nodes/codeBlockNode';
+export { default as mathInlineNode } from './src/nodes/mathInlineNode';
+export { default as mathDisplayNode } from './src/nodes/mathDisplayNode';
 /*
 LIST OF TRACK CHANGES NODES
 */
diff --git a/wax-prosemirror-schema/src/marks/mathSelectMark.js b/wax-prosemirror-schema/src/marks/mathSelectMark.js
new file mode 100644
index 000000000..bda8ec0cc
--- /dev/null
+++ b/wax-prosemirror-schema/src/marks/mathSelectMark.js
@@ -0,0 +1,8 @@
+const mathSelectMark = {
+  toDOM() {
+    return ['math-select', 0];
+  },
+  parseDOM: [{ tag: 'math-select' }],
+};
+
+export default mathSelectMark;
diff --git a/wax-prosemirror-schema/src/nodes/mathDisplayNode.js b/wax-prosemirror-schema/src/nodes/mathDisplayNode.js
new file mode 100644
index 000000000..745e2215b
--- /dev/null
+++ b/wax-prosemirror-schema/src/nodes/mathDisplayNode.js
@@ -0,0 +1,14 @@
+const mathDisplayNode = {
+  group: 'block math',
+  content: 'text*',
+  atom: true,
+  code: true,
+  toDOM: () => ['math-display', { class: 'math-node' }, 0],
+  parseDOM: [
+    {
+      tag: 'math-display',
+    },
+  ],
+};
+
+export default mathDisplayNode;
diff --git a/wax-prosemirror-schema/src/nodes/mathInlineNode.js b/wax-prosemirror-schema/src/nodes/mathInlineNode.js
new file mode 100644
index 000000000..ff890f1c1
--- /dev/null
+++ b/wax-prosemirror-schema/src/nodes/mathInlineNode.js
@@ -0,0 +1,14 @@
+const mathInlineNode = {
+  group: 'inline math',
+  content: 'text*',
+  inline: true,
+  atom: true,
+  toDOM: () => ['math-inline', { class: 'math-node' }, 0],
+  parseDOM: [
+    {
+      tag: 'math-inline',
+    },
+  ],
+};
+
+export default mathInlineNode;
diff --git a/wax-prosemirror-services/src/MathService/MathService.js b/wax-prosemirror-services/src/MathService/MathService.js
index 267aa147e..1cc778bae 100644
--- a/wax-prosemirror-services/src/MathService/MathService.js
+++ b/wax-prosemirror-services/src/MathService/MathService.js
@@ -1,3 +1,8 @@
+import {
+  mathDisplayNode,
+  mathInlineNode,
+  mathSelectMark,
+} from 'wax-prosemirror-schema';
 import { mathPlugin, mathSelectPlugin } from 'wax-prosemirror-plugins';
 import Service from '../Service';
 
@@ -7,10 +12,21 @@ class MathService extends Service {
   boot() {
     this.app.PmPlugins.add('mathplugin', mathPlugin);
     this.app.PmPlugins.add('mathselectplugin', mathSelectPlugin);
-    console.log(this.app);
   }
 
-  register() {}
+  register() {
+    const createNode = this.container.get('CreateNode');
+    const createMark = this.container.get('CreateMark');
+    createNode({
+      math_display: mathDisplayNode,
+    });
+    createNode({
+      math_inline: mathInlineNode,
+    });
+    createMark({
+      math_select: mathSelectMark,
+    });
+  }
 }
 
 export default MathService;
-- 
GitLab