import type { GridPlusContextValue } from './gridContext'; import type { SchemeStorageAdapter, CurrentSchemeDto, ColumnScheme, QueryScheme } from '../shared/storage/schemeStorageAdapter'; /** * useSchemeManager Hook 配置 */ export interface UseSchemeManagerConfig { /** 存储适配器 */ adapter: SchemeStorageAdapter; /** 是否在 mount 时自动加载数据,默认 true */ autoLoad?: boolean; /** 加载失败时是否显示错误提示,默认 true */ showErrorMessage?: boolean; /** 当前用户ID,用于监听用户切换 */ currentUserId?: string | null; } /** * 集中式方案管理 Hook * * 用于 GridPlusContext.Provider 中初始化方案管理功能 * * @example * ```tsx * function AppProvider({ children }) { * const adapter = new BackendApiSchemeAdapter({ ... }); * const schemeManager = useSchemeManager({ adapter }); * * return ( * * {children} * * ); * } * ``` */ export declare function useSchemeManager(config: UseSchemeManagerConfig): { columnSchemes: Record; querySchemes: Record; currentSchemes: Record; schemesLoading: boolean; lastSyncTime: number; saveColumnScheme: (gridId: string, scheme: ColumnScheme) => Promise; deleteColumnScheme: (gridId: string, schemeId: string) => Promise; setCurrentColumnScheme: (gridId: string, schemeId: string | null) => Promise; saveQueryScheme: (gridId: string, scheme: QueryScheme) => Promise; deleteQueryScheme: (gridId: string, schemeId: string) => Promise; setCurrentQueryScheme: (gridId: string, schemeId: string | null) => Promise; refreshSchemes: () => Promise; getColumnSchemes: (gridId: string) => ColumnScheme[]; getQuerySchemes: (gridId: string) => QueryScheme[]; getCurrentScheme: (gridId: string) => CurrentSchemeDto | null; applySchemeToGlobal: (gridId: string, schemeId?: string) => Promise; resetToGlobal: (gridId: string) => Promise; resetAllUsers: (gridId: string) => Promise; }; /** * 在组件中使用集中式方案管理 * * ⚠️ 必须在 Provider 中传入 SchemeManager 状态,否则抛出错误 * * @example * ```tsx * // 1. 创建适配器和方案管理器 * function App() { * const adapter = useMemo( * () => new BackendApiSchemeAdapter({ * apiBaseUrl: 'https://api.example.com', * getToken: () => localStorage.getItem('token'), * getUserId: () => localStorage.getItem('userId') * }), * [] * ); * * const schemeManager = useSchemeManager({ * adapter, * autoLoad: true, * showErrorMessage: true, * currentUserId: currentUser?.id * }); * * // 2. 传入 Provider * return ( * {}, * applyToGlobal: () => {}, * resetCurrent: () => {}, * resetAll: () => {}, * queryFormItems: [], * ...schemeManager // 展开方案管理状态 * }}> * * * ); * } * * // 3. 在子组件中使用 * function MyGrid() { * const { * columnSchemes, * saveColumnScheme, * setCurrentColumnScheme * } = useGridSchemes(); * * const gridId = 'my-grid'; * const schemes = columnSchemes?.[gridId] || []; * * const handleSave = async () => { * await saveColumnScheme?.(gridId, newScheme); * }; * } * ``` */ export declare function useGridSchemes(): GridPlusContextValue;