import { ReactNode } from 'react'; import type { MenuProps } from 'antd'; import { TabsState, MenusType, DataSourceType, TabsConfig, AddTabOptions, TabItem } from '../../propTypes'; export interface TabsManagerProps { /** 标签页配置 */ config: TabsConfig; /** 子元素内容 */ children: ReactNode; /** 菜单数据源 */ dataSource: DataSourceType | Partial; /** 原始菜单点击处理 */ originalOnMenuClick?: (params: { item: MenusType | null; key: string; keyPath: string[]; }) => void; /** Tab 栏的 Portal 挂载目标(由 ProLayout 提供),不传则原位渲染 */ tabsBarContainer?: HTMLElement | null; /** Tab 有无变化回调,供 ProLayout 控制 wrapper 动画 */ onTabsChange?: (hasTabs: boolean) => void; } export interface TabContextMenuProps { tabId: string; children: React.ReactElement; closable?: boolean; onClose: (tabId: string) => void; onCloseOthers: (tabId: string) => void; onCloseRight: (tabId: string) => void; onCloseAll: () => void; /** 自定义菜单项,会与默认菜单项合并 */ menuItems?: MenuProps['items']; /** 自定义菜单项点击回调 */ tabMenuClick?: (params: { key: string; tab: TabItem; tabs: TabItem[]; }) => void; /** 当前标签页信息 */ tab?: TabItem; /** 所有标签页列表 */ tabs?: TabItem[]; } export interface UseTabsStateOptions { /** 初始状态 */ initialState?: Partial; /** 配置 */ config: TabsManagerProps['config']; /** 数据源 */ dataSource?: TabsManagerProps['dataSource']; } export interface UseTabsStateReturn { /** 当前状态 */ state: TabsState; /** 缓存是否已恢复完成 */ isInitialized: boolean; /** 添加标签页 */ addTab: (menuItem: MenusType, options?: AddTabOptions) => void; /** 检查是否可以添加标签页 */ canAddTab: (menuItem: MenusType, options?: AddTabOptions) => boolean; /** 移除标签页 */ removeTab: (tabId: string) => void; /** 切换标签页 */ switchTab: (tabId: string) => void; /** 关闭其他标签页 */ closeOtherTabs: (currentTabId: string) => void; /** 关闭右侧标签页 */ closeRightTabs: (currentTabId: string) => void; /** 关闭全部标签页 */ closeAllTabs: () => void; /** 重置状态 */ resetTabs: () => void; /** 重排标签页顺序 */ reorderTabs: (activeId: string, overId: string) => void; } export interface TabsCacheManager { save: (state: TabsState) => void; restore: () => TabsState | null; clear: () => void; } export declare const DEFAULT_TABS_CONFIG: { storage: "localStorage"; cacheKey: string; };