import { useState, useCallback, useRef, useId } from 'react'; import { FormattedMessage, useIntl } from 'react-intl'; import type { OffsetValue, UsePopperOptions, } from 'react-overlays/esm/usePopper'; import Overlay from 'react-overlays/Overlay'; import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import { useSelectableClick } from 'mastodon/hooks/useSelectableClick'; import { IconButton } from '../icon_button'; import classes from './styles.module.scss'; const offset = [0, 4] as OffsetValue; const popperConfig = { strategy: 'fixed' } as UsePopperOptions; export const AltTextBadge: React.FC<{ description: string }> = ({ description, }) => { const intl = useIntl(); const uniqueId = useId(); const popoverId = `${uniqueId}-popover`; const titleId = `${uniqueId}-title`; const buttonRef = useRef(null); const popoverRef = useRef(null); const [open, setOpen] = useState(false); const handleClick = useCallback(() => { setOpen((v) => !v); setTimeout(() => { popoverRef.current?.focus(); }, 0); }, [setOpen]); const handleClose = useCallback(() => { setOpen(false); buttonRef.current?.focus(); }, [setOpen]); const [handleMouseDown, handleMouseUp] = useSelectableClick(handleClose); return ( <> {({ props }) => (
)}
); };