import React, { memo, useMemo, type ComponentPropsWithoutRef, type CSSProperties } from 'react'; import { HiMiniArrowsPointingIn } from 'react-icons/hi2'; import { PiBrowsersLight } from 'react-icons/pi'; import { VscClose, VscCloseAll, VscPrimitiveSquare } from 'react-icons/vsc'; import { FloatingFocusManager, useTransitionStyles } from '@floating-ui/react'; import { usePopover } from '../../floating'; import { getRootWindow } from '../ReactWindow'; import { Window } from '../Window'; const WindowControlPopoverContent: React.FC> = (props) => { const root = getRootWindow(); // 避免单次操作内 layout 发生变化 const top = useMemo(() => root.top, []); const count = root.windows.length; return ( ); }; export const WindowControlButton = memo(() => { const { refs, getFloatingProps, getReferenceProps, open, setOpen, floatingStyles, context, nodeId } = usePopover({ placement: 'left-start', }); const { isMounted, styles } = useTransitionStyles(context, { initial: { opacity: 0, transform: 'translateY(-10px)', }, close: { opacity: 0, transform: 'translateY(10px)', }, }); return ( <> {isMounted && (
{ setOpen(false); }} />
)} ); });