@wener/console
Version:
Base console UI toolkit
38 lines (37 loc) • 1.01 kB
JavaScript
import React, { createContext, useContext, useId, useMemo } from "react";
import { createPortal } from "react-dom";
export const PortalProvider = ({ children, id, container })=>{
const _id = useId();
const val = useMemo(()=>{
return {
container,
id: id || _id
};
}, [
id,
container,
_id
]);
return /*#__PURE__*/ React.createElement(Context.Provider, {
value: val
}, children);
};
const Context = /*#__PURE__*/ createContext(undefined);
function usePortalContext() {
const context = useContext(Context);
if (!context) {
return {
id: '__ROOT__',
container: document.body
};
}
return context;
}
export const Portal = ({ children, id })=>{
const _id = useId();
return /*#__PURE__*/ createPortal(children, usePortalContext().container, id || _id);
};
export function usePortal() {
return usePortalContext();
}
//# sourceMappingURL=PortalContainer.js.map