From 4e7f52cad3a0026c55f03cee6f195e3848702686 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Tue, 29 Sep 2020 21:25:05 +0300
Subject: [PATCH] headings Active

---
 wax-prosemirror-components/src/components/Button.js |  2 +-
 .../DisplayBlockLevel/HeadingService/Heading1.js    | 13 +++++++++++--
 .../DisplayBlockLevel/HeadingService/Heading2.js    | 13 +++++++++++--
 .../DisplayBlockLevel/HeadingService/Heading3.js    | 13 +++++++++++--
 4 files changed, 34 insertions(+), 7 deletions(-)

diff --git a/wax-prosemirror-components/src/components/Button.js b/wax-prosemirror-components/src/components/Button.js
index 4db7e1c60..ed968a69a 100644
--- a/wax-prosemirror-components/src/components/Button.js
+++ b/wax-prosemirror-components/src/components/Button.js
@@ -19,7 +19,7 @@ const Button = ({ view = {}, item }) => {
     run(state, dispatch);
   };
 
-  const isActive = active && active(state);
+  const isActive = active && active(state, activeViewId);
 
   const isDisabled =
     enable && !enable(state) && !(select && select(state, activeViewId));
diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading1.js b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading1.js
index 4fed67b7a..f1d954587 100644
--- a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading1.js
+++ b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading1.js
@@ -19,8 +19,17 @@ class Heading1 extends Tools {
   }
 
   get active() {
-    return state => {
-      return Commands.blockActive(state.config.schema.nodes.heading, {
+    return (state, activeViewId) => {
+      let isActive = true;
+      if (activeViewId !== 'main') return false;
+      const { from, to } = state.selection;
+      state.doc.nodesBetween(from, to, (node, pos) => {
+        if (node.type.name === 'list_item') {
+          isActive = false;
+        }
+      });
+      if (!isActive) return false;
+      return !Commands.setBlockType(state.config.schema.nodes.heading, {
         level: 1,
       })(state);
     };
diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading2.js b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading2.js
index d4979cb93..cb07816bf 100644
--- a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading2.js
+++ b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading2.js
@@ -19,8 +19,17 @@ class Heading2 extends Tools {
   }
 
   get active() {
-    return state => {
-      return Commands.blockActive(state.config.schema.nodes.heading, {
+    return (state, activeViewId) => {
+      let isActive = true;
+      if (activeViewId !== 'main') return false;
+      const { from, to } = state.selection;
+      state.doc.nodesBetween(from, to, (node, pos) => {
+        if (node.type.name === 'list_item') {
+          isActive = false;
+        }
+      });
+      if (!isActive) return false;
+      return !Commands.setBlockType(state.config.schema.nodes.heading, {
         level: 2,
       })(state);
     };
diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading3.js b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading3.js
index 0e198226c..a4d444810 100644
--- a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading3.js
+++ b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/Heading3.js
@@ -19,8 +19,17 @@ class Heading3 extends Tools {
   }
 
   get active() {
-    return state => {
-      return Commands.blockActive(state.config.schema.nodes.heading, {
+    return (state, activeViewId) => {
+      let isActive = true;
+      if (activeViewId !== 'main') return false;
+      const { from, to } = state.selection;
+      state.doc.nodesBetween(from, to, (node, pos) => {
+        if (node.type.name === 'list_item') {
+          isActive = false;
+        }
+      });
+      if (!isActive) return false;
+      return !Commands.setBlockType(state.config.schema.nodes.heading, {
         level: 3,
       })(state);
     };
-- 
GitLab