From 14ef6ee2fcf19870af4fbacd4e3d6f8c5ca1c6a5 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Mon, 11 Jul 2022 15:05:16 +0300
Subject: [PATCH] display on outline node

---
 .../OENContainersService.js                   |  1 +
 .../src/OverlayService/usePosition.js         |  8 +++----
 .../src/document/DocumentHelpers.js           | 21 ++++++++++++++++---
 3 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/wax-prosemirror-services/src/OENContainersService/OENContainersService.js b/wax-prosemirror-services/src/OENContainersService/OENContainersService.js
index e255bb05c..9ac251fed 100644
--- a/wax-prosemirror-services/src/OENContainersService/OENContainersService.js
+++ b/wax-prosemirror-services/src/OENContainersService/OENContainersService.js
@@ -52,6 +52,7 @@ class OENContainersService extends Service {
       {},
       {
         nodeType: 'oen_container',
+        findInParent: true,
         markType: '',
         followCursor: false,
         selection: false,
diff --git a/wax-prosemirror-services/src/OverlayService/usePosition.js b/wax-prosemirror-services/src/OverlayService/usePosition.js
index fc47e4b7c..c883feea2 100644
--- a/wax-prosemirror-services/src/OverlayService/usePosition.js
+++ b/wax-prosemirror-services/src/OverlayService/usePosition.js
@@ -21,7 +21,7 @@ export default options => {
   });
 
   let mark = {};
-  let node = {};
+  let node = '';
   /* Sets Default position at the end of the annotation. You
   can overwrite the default position in your component.
   Check: wax-prosemirror-components/src/components/comments/CommentBubbleComponent.js
@@ -53,11 +53,11 @@ export default options => {
   };
 
   const displayOnNode = (focusedView, overlayOptions) => {
-    const { nodeType, followCursor } = overlayOptions;
+    const { nodeType, followCursor, findInParent } = overlayOptions;
     const PMnode = focusedView.state.schema.nodes[nodeType];
 
-    node = DocumentHelpers.findNode(focusedView.state, PMnode);
-    console.log('here', node, PMnode);
+    node = DocumentHelpers.findNode(focusedView.state, PMnode, findInParent);
+    console.log(node);
     if (!isObject(node)) return defaultOverlay;
     const { from, to } = followCursor ? focusedView.state.selection : node;
 
diff --git a/wax-prosemirror-utilities/src/document/DocumentHelpers.js b/wax-prosemirror-utilities/src/document/DocumentHelpers.js
index 2420d369a..c5db8c3be 100644
--- a/wax-prosemirror-utilities/src/document/DocumentHelpers.js
+++ b/wax-prosemirror-utilities/src/document/DocumentHelpers.js
@@ -27,10 +27,25 @@ const findMark = (state, PMmark, toArr = false) => {
   return markFound;
 };
 
-const findNode = (state, PMnode, parent = true) => {
+const findNode = (state, PMnode, findInParent) => {
   let nodeFound;
-  if (parent) {
-    
+  if (findInParent) {
+    state.doc.nodesBetween(
+      state.selection.from,
+      state.selection.to,
+      (node, pos) => {
+        if (
+          node.type.name === 'oen_container' &&
+          node.attrs.class === 'outline'
+        ) {
+          nodeFound = {
+            from: state.selection.from,
+            to: state.selection.to,
+            node,
+          };
+        }
+      },
+    );
   } else if (
     state.selection.node &&
     state.selection.node.type.name === PMnode.name
-- 
GitLab