import React, { type FC, type PropsWithChildren, useCallback, useState, } from "react"; import { createPortal } from "react-dom"; const ShadowRoot: FC = ({ children }) => { const [shadowRoot, setShadowRoot] = useState(null); const containerRefCallback = useCallback( (container: HTMLDivElement | null) => { if (!container) { return; } const root = container.shadowRoot ?? container.attachShadow({ mode: "open" }); setShadowRoot(root); }, [], ); return (
{shadowRoot && createPortal(children, shadowRoot)}
); }; export default ShadowRoot;