UNPKG

@wener/console

Version:

Base console UI toolkit

38 lines (37 loc) 1.01 kB
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