import * as React from 'react'; import Popper from '@mui/material/Popper'; import Typography from '@mui/material/Typography'; import Fade from '@mui/material/Fade'; import Paper from '@mui/material/Paper'; export default function VirtualElementPopper() { const [open, setOpen] = React.useState(false); const [anchorEl, setAnchorEl] = React.useState(null); const previousAnchorElPosition = React.useRef(undefined); React.useEffect(() => { if (anchorEl) { if (typeof anchorEl === 'object') { previousAnchorElPosition.current = anchorEl.getBoundingClientRect(); } else { previousAnchorElPosition.current = anchorEl().getBoundingClientRect(); } } }, [anchorEl]); const handleClose = () => { setOpen(false); }; const handleMouseUp = () => { const selection = window.getSelection(); // Resets when the selection has a length of 0 if (!selection || selection.anchorOffset === selection.focusOffset) { handleClose(); return; } const getBoundingClientRect = () => { if (selection.rangeCount === 0 && previousAnchorElPosition.current) { setOpen(false); return previousAnchorElPosition.current; } return selection.getRangeAt(0).getBoundingClientRect(); }; setOpen(true); setAnchorEl({ getBoundingClientRect }); }; const id = open ? 'virtual-element-popper' : undefined; return (