import { Value } from 'platejs'; /** * 自动保存配置选项 */ export interface AutoSaveOptions { /** 存储键名,默认 'kc-plate-editor-autosave' */ storageKey?: string; /** 自动保存间隔(毫秒),默认 30000(30秒) */ interval?: number; /** 是否在内容变化时立即保存,默认 true */ saveOnChange?: boolean; /** 内容变化后延迟保存时间(毫秒),默认 2000(2秒) */ debounceTime?: number; /** 最大保存版本数,默认 10 */ maxVersions?: number; /** 是否启用,默认 true */ enabled?: boolean; /** 保存成功回调 */ onSave?: (content: Value) => void; /** 保存失败回调 */ onError?: (error: Error) => void; /** 恢复成功回调 */ onRestore?: (content: Value) => void; } /** * 保存的版本信息 */ export interface SavedVersion { /** 版本 ID */ id: string; /** 保存时间戳 */ timestamp: number; /** 内容 */ content: Value; /** 内容摘要(前100个字符) */ summary: string; } /** * 自动保存状态 */ export interface AutoSaveState { /** 是否正在保存 */ isSaving: boolean; /** 最后保存时间 */ lastSavedAt: Date | null; /** 是否有未保存的更改 */ hasUnsavedChanges: boolean; /** 保存的版本列表 */ versions: SavedVersion[]; /** 错误信息 */ error: Error | null; } /** * 自动保存返回值 */ export interface UseAutoSaveReturn extends AutoSaveState { /** 手动保存 */ save: (content: Value) => void; /** 恢复到指定版本 */ restore: (versionId: string) => Value | null; /** 恢复最新版本 */ restoreLatest: () => Value | null; /** 清除所有保存的版本 */ clearAll: () => void; /** 清除指定版本 */ clearVersion: (versionId: string) => void; /** 标记有未保存的更改 */ markDirty: () => void; /** 标记已保存 */ markClean: () => void; } /** * 自动保存 Hook * @param options 配置选项 * @returns 自动保存状态和方法 */ export declare function useAutoSave(options?: AutoSaveOptions): UseAutoSaveReturn; /** * 创建自动保存的内容变化处理器 * @param autoSave useAutoSave 返回值 * @returns onChange 处理函数 */ export declare function createAutoSaveHandler(autoSave: UseAutoSaveReturn): (content: Value) => void;