import React, { memo } from 'react'; import { PiBrowser } from 'react-icons/pi'; import { FloatingFocusManager, FloatingPortal } from '@floating-ui/react'; import { useStore } from 'zustand'; import { useShallow } from 'zustand/react/shallow'; import { useStoreWithEqualityFn } from 'zustand/traditional'; import { shallow } from 'zustand/vanilla/shallow'; import { usePopover } from '../../floating'; import { cn } from '../../utils/cn'; import { getRootWindow, type ReactWindow } from '../ReactWindow'; const WindowDockItem = memo<{ win: ReactWindow }>(({ win }) => { const iconClass = 'w-8 h-8 '; const { minimized, icon, title } = useStoreWithEqualityFn( win.store, ({ minimized, icon, title }) => { if (React.isValidElement(icon)) { icon = React.cloneElement(icon, { className: iconClass, } as any); } return { minimized, icon, title }; }, shallow, ); const { refs, open, context, floatingStyles, getFloatingProps, getReferenceProps } = usePopover({ hover: true, placement: 'left', }); return ( <> {open && (
{title}
)} ); }); export const WindowDockList = memo(() => { const windows = useStore( getRootWindow().store, useShallow((s) => s.windows), ); return (
{windows.map((win) => { return ; })}
); });