diff --git a/wax-prosemirror-core/src/WaxView.js b/wax-prosemirror-core/src/WaxView.js index 6f53084f5ecaa796d0c1a9e52ef6ca427b762dcb..12bdaccab8bc6c176c51a42829118ee3211b2f69 100644 --- a/wax-prosemirror-core/src/WaxView.js +++ b/wax-prosemirror-core/src/WaxView.js @@ -52,7 +52,12 @@ export default props => { const state = view.state.apply(tr); view.updateState(state); - context.updateView({ main: view }); + + context.updateView({ + main: view, + activeViewId: context.activeViewId, + activeView: view + }); props.onChange(state.doc.content); }; diff --git a/wax-prosemirror-core/src/ioc-react.js b/wax-prosemirror-core/src/ioc-react.js index 52c1fcb3769735a86b3e2280a6ff6db9b03f5b0d..36f768cc2e6548ff5e59035f16d6091392d81cc2 100644 --- a/wax-prosemirror-core/src/ioc-react.js +++ b/wax-prosemirror-core/src/ioc-react.js @@ -3,6 +3,7 @@ import React, { useContext, useState } from "react"; export const WaxContext = React.createContext({ view: {}, activeView: {}, + activeViewId: null, app: null, updateView: null, updateActiveView: null @@ -13,15 +14,21 @@ export default props => { app: props.app, view: props.view || {}, activeView: props.activeView || {}, + activeViewId: props.activeViewId || {}, updateView: view => { setContext({ ...context, view: Object.assign(context.view, view), - activeView: view.main || view + activeView: view.main || view, + activeViewId: view.activeViewId }); }, updateActiveView: view => { - setContext({ ...context, activeView: view }); + setContext({ + ...context, + activeView: view.activeView, + activeViewId: view.activeViewId + }); } }); diff --git a/wax-prosemirror-services/src/NoteService/Editor.js b/wax-prosemirror-services/src/NoteService/Editor.js index 4c663bbbe5fd153ca2944abfa9f222c9120d0d47..54885fd028f798a3475b0f06ee5f6a9492625d12 100644 --- a/wax-prosemirror-services/src/NoteService/Editor.js +++ b/wax-prosemirror-services/src/NoteService/Editor.js @@ -48,9 +48,13 @@ export default ({ node, view }) => { outerTr.step(steps[j].map(offsetMap)); } - //Set everytime the active view into context - context.updateActiveView(context.view[noteId]); if (outerTr.docChanged) view.dispatch(outerTr); + + //Set everytime the active view into context + context.updateActiveView({ + activeView: context.view[noteId], + activeViewId: noteId + }); } }, handleDOMEvents: { @@ -68,8 +72,12 @@ export default ({ node, view }) => { context.updateView({ [noteId]: noteView }); if (context.view[noteId]) { context.view[noteId].focus(); + //Set everytime the active view into context - context.updateActiveView(context.view[noteId]); + context.updateActiveView({ + activeView: context.view[noteId], + activeViewId: noteId + }); } }, []);