@openshift-console/dynamic-plugin-sdk
Version:
Provides core APIs, types and utilities used by dynamic plugins at runtime.
23 lines (22 loc) • 1.06 kB
JavaScript
import { jsxs as _jsxs } from "react/jsx-runtime";
import { createElement as _createElement } from "react";
import * as React from 'react';
import * as _ from 'lodash';
export const OverlayContext = React.createContext({
launchOverlay: () => { },
closeOverlay: () => { },
});
export const OverlayProvider = ({ children }) => {
const [componentsMap, setComponentsMap] = React.useState({});
const launchOverlay = React.useCallback((component, componentProps) => {
const id = _.uniqueId('plugin-overlay-');
setComponentsMap((components) => ({
...components,
[id]: { Component: component, props: componentProps },
}));
}, []);
const closeOverlay = React.useCallback((id) => {
setComponentsMap((components) => _.omit(components, id));
}, []);
return (_jsxs(OverlayContext.Provider, { value: { launchOverlay, closeOverlay }, children: [_.map(componentsMap, (c, id) => (_createElement(c.Component, { ...c.props, key: id, closeOverlay: () => closeOverlay(id) }))), children] }));
};