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