import { Value } from 'platejs'; /** * 编辑器模式 * - edit: 编辑模式,允许修改内容 * - view: 查看模式,只读不可编辑 * - suggestion: 建议模式,显示修改建议 */ export type EditorMode = 'edit' | 'view' | 'suggestion'; /** * 查找选项 */ export interface FindOptions { /** 是否区分大小写,默认 false */ caseSensitive?: boolean; } /** * 替换选项 */ export interface ReplaceOptions extends FindOptions { /** 是否全部替换,默认 false */ replaceAll?: boolean; } /** * 匹配位置信息 */ export interface MatchPosition { /** 节点路径 */ path: number[]; /** 文本节点中的起始偏移量 */ offset: number; /** 匹配长度 */ length: number; } /** * 字数统计结果 */ export interface WordCountResult { /** 字符数(含空格) */ charactersWithSpaces: number; /** 字符数(不含空格) */ charactersWithoutSpaces: number; /** 单词数 */ words: number; /** 段落数 */ paragraphs: number; /** 行数 */ lines: number; } /** * 大纲项 */ export interface OutlineItem { /** 标题唯一标识符 */ id: string; /** 标题层级深度(1-6) */ depth: number; /** 节点路径 */ path: number[]; /** 标题文本内容 */ title: string; /** 标题类型 */ type: string; } /** * 编辑器值类型 */ export type EditorValue = Value; /** * 目录项 */ export interface TocItem { /** 唯一标识 */ id: string; /** 标题层级(1-6) */ level: number; /** 标题文本 */ text: string; /** 在文档中的路径 */ path: number[]; /** 节点在文档中的索引(用于精确定位) */ nodeIndex?: number; /** 子项 */ children?: TocItem[]; } /** * 目录位置 */ export type TocPosition = 'left' | 'right' | 'top' | 'custom'; /** * 目录引用接口 */ export interface TocRef { /** 获取目录数据 */ getData: () => TocItem[]; /** 设置可见性 */ setVisible: (visible: boolean) => void; /** 是否可见 */ isVisible: () => boolean; /** 重新生成目录 */ refresh: () => void; }