From d59d38cb1c621fcb61b4c941e5e094613452a199 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Thu, 7 May 2020 11:52:28 +0300 Subject: [PATCH] add file --- wax-prosemirror-core/src/WaxContext.js | 51 ++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 wax-prosemirror-core/src/WaxContext.js diff --git a/wax-prosemirror-core/src/WaxContext.js b/wax-prosemirror-core/src/WaxContext.js new file mode 100644 index 000000000..a4e012e9d --- /dev/null +++ b/wax-prosemirror-core/src/WaxContext.js @@ -0,0 +1,51 @@ +import React, { useContext, useState } from "react"; + +export const WaxContext = React.createContext({ + view: {}, + activeView: {}, + activeViewId: null, + app: null, + updateView: null, + updateActiveView: null +}); + +export default props => { + const [context, setContext] = useState({ + app: props.app, + view: props.view || {}, + activeView: props.activeView || {}, + activeViewId: props.activeViewId || {}, + updateView: (newView, activeViewId) => { + const view = Object.assign(context.view, newView); + const activeView = view[activeViewId || context.activeViewId]; + setContext({ + ...context, + view, + activeView: activeView, + activeViewId: activeViewId || context.activeViewId + }); + } + }); + + return ( + <WaxContext.Provider + value={{ + ...context + }} + > + {props.children} + </WaxContext.Provider> + ); +}; + +export const useInjection = identifier => { + const { app: { container } } = useContext(WaxContext); + + if (!container) { + throw new Error(); + } + + return container.isBound(identifier) + ? { instance: container.get(identifier) } + : null; +}; -- GitLab