@grafana/ui
Version:
Grafana Components Library
35 lines (32 loc) • 1.19 kB
JavaScript
import { jsx } from 'react/jsx-runtime';
import * as React from 'react';
import { useState, useCallback, useMemo } from 'react';
;
const ModalsContext = React.createContext({
component: null,
props: {},
showModal: () => {
},
hideModal: () => {
}
});
function ModalsProvider({ children }) {
const [component, setComponent] = useState(null);
const [props, setProps] = useState({});
const showModal = useCallback((component2, props2) => {
setComponent(() => component2);
setProps(props2);
}, []);
const hideModal = useCallback(() => {
setComponent(null);
setProps({});
}, []);
const value = useMemo(() => ({ component, props, showModal, hideModal }), [component, props, showModal, hideModal]);
return /* @__PURE__ */ jsx(ModalsContext.Provider, { value, children });
}
const ModalRoot = () => /* @__PURE__ */ jsx(ModalsContext.Consumer, { children: ({ component: Component, props }) => {
return Component ? /* @__PURE__ */ jsx(Component, { ...props }) : null;
} });
const ModalsController = ModalsContext.Consumer;
export { ModalRoot, ModalsContext, ModalsController, ModalsProvider };
//# sourceMappingURL=ModalsContext.mjs.map