UNPKG

@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
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] })); };