import { useRef } from 'react'; const PORTAL_CONTAINER_ID = 'react-portal'; export function usePortal(name: string) { const ref = useRef(getOrCreatePortal(name)); return ref.current; } function getOrCreatePortal(name: string) { const portalContainer = document.getElementById(PORTAL_CONTAINER_ID) as HTMLDivElement; let existing = portalContainer.querySelector(`:scope > [data-portal-name="${name}"]`); if (!existing) { const el: HTMLDivElement = document.createElement('div'); el.setAttribute('data-portal-name', name); portalContainer.appendChild(el); existing = el; } return existing; }