import React, { useMemo } from 'react'; import { Tabs, Dropdown } from 'antd'; import type { MenuProps } from 'antd'; import { useStore } from '../store'; import DataViewer from './DataViewer'; import QueryEditor from './QueryEditor'; import TableDesigner from './TableDesigner'; import RedisViewer from './RedisViewer'; import RedisCommandEditor from './RedisCommandEditor'; const TabManager: React.FC = () => { const tabs = useStore(state => state.tabs); const activeTabId = useStore(state => state.activeTabId); const setActiveTab = useStore(state => state.setActiveTab); const closeTab = useStore(state => state.closeTab); const closeOtherTabs = useStore(state => state.closeOtherTabs); const closeTabsToLeft = useStore(state => state.closeTabsToLeft); const closeTabsToRight = useStore(state => state.closeTabsToRight); const closeAllTabs = useStore(state => state.closeAllTabs); const onChange = (newActiveKey: string) => { setActiveTab(newActiveKey); }; const onEdit = (targetKey: React.MouseEvent | React.KeyboardEvent | string, action: 'add' | 'remove') => { if (action === 'remove') { closeTab(targetKey as string); } }; const items = useMemo(() => tabs.map((tab, index) => { let content; if (tab.type === 'query') { content = ; } else if (tab.type === 'table') { content = ; } else if (tab.type === 'design') { content = ; } else if (tab.type === 'redis-keys') { content = ; } else if (tab.type === 'redis-command') { content = ; } const menuItems: MenuProps['items'] = [ { key: 'close-other', label: '关闭其他页', disabled: tabs.length <= 1, onClick: () => closeOtherTabs(tab.id), }, { key: 'close-left', label: '关闭左侧', disabled: index === 0, onClick: () => closeTabsToLeft(tab.id), }, { key: 'close-right', label: '关闭右侧', disabled: index === tabs.length - 1, onClick: () => closeTabsToRight(tab.id), }, { type: 'divider' }, { key: 'close-all', label: '关闭所有', disabled: tabs.length === 0, onClick: () => closeAllTabs(), }, ]; return { label: ( e.preventDefault()}>{tab.title} ), key: tab.id, children: content, }; }), [tabs, closeOtherTabs, closeTabsToLeft, closeTabsToRight, closeAllTabs]); return ( <> ); }; export default TabManager;