Skip to content

API 参考

本文档是 NovelHelperLite 扩展开发 API 的完整参考,列出了所有可用于扩展开发的接口、类型定义和事件。通过这些 API,开发者可以创建自定义编辑器插件、扩展应用功能或与外部系统集成。

核心 API

应用实例

NovelHelperLite 提供了一个全局的应用实例,通过 NovelHelper 命名空间访问。该实例包含了应用的所有核心功能。

typescript
namespace NovelHelper {
  // 获取应用实例
  const app: NovelHelperInstance;
}

NovelHelperInstance 接口

应用实例实现了 NovelHelperInstance 接口,提供了对应用核心功能的访问:

typescript
interface NovelHelperInstance {
  // 版本信息
  readonly version: string;
  
  // 配置信息
  readonly config: AppConfig;
  
  // 编辑器管理器
  readonly editor: EditorManager;
  
  // 项目管理器
  readonly project: ProjectManager;
  
  // 存储管理器
  readonly storage: StorageManager;
  
  // 主题管理器
  readonly theme: ThemeManager;
  
  // 事件系统
  readonly events: EventSystem;
}

编辑器 API

EditorManager

编辑器管理器负责管理所有编辑器实例。

typescript
interface EditorManager {
  // 获取当前活动的编辑器实例
  getActiveEditor(): EditorInstance | null;
  
  // 获取所有编辑器实例
  getAllEditors(): EditorInstance[];
  
  // 注册新的编辑器类型
  registerEditorType(type: string, factory: EditorFactory): void;
  
  // 创建编辑器实例
  createEditor(options: EditorOptions): Promise<EditorInstance>;
}

EditorInstance

编辑器实例代表一个具体的编辑器,提供编辑操作接口:

typescript
interface EditorInstance {
  // 编辑器唯一标识
  readonly id: string;
  
  // 编辑器类型
  readonly type: string;
  
  // 编辑器内容
  content: string;
  
  // 编辑器选中区域
  selection: Selection;
  
  // 获取编辑器容器元素
  getContainer(): HTMLElement;
  
  // 设置编辑器内容
  setContent(content: string): void;
  
  // 获取编辑器内容
  getContent(): string;
  
  // 插入文本
  insertText(text: string): void;
  
  // 删除选中区域
  deleteSelection(): void;
  
  // 设置选中区域
  setSelection(selection: Selection): void;
  
  // 获取选中区域
  getSelection(): Selection;
  
  // 撤销操作
  undo(): void;
  
  // 重做操作
  redo(): void;
  
  // 格式化文档
  format(): void;
  
  // 添加事件监听
  on(event: string, handler: Function): void;
  
  // 移除事件监听
  off(event: string, handler: Function): void;
}

Selection 接口

typescript
interface Selection {
  // 起始位置
  start: Position;
  
  // 结束位置
  end: Position;
  
  // 选中文本
  text: string;
}

Position 接口

typescript
interface Position {
  // 行号(从 0 开始)
  line: number;
  
  // 列号(从 0 开始)
  column: number;
  
  // 偏移量(从 0 开始)
  offset: number;
}

项目 API

ProjectManager

项目管理器负责项目的创建、加载和保存。

typescript
interface ProjectManager {
  // 当前打开的项目
  readonly currentProject: Project | null;
  
  // 所有项目列表
  readonly projects: Project[];
  
  // 创建新项目
  createProject(options: ProjectOptions): Promise<Project>;
  
  // 打开项目
  openProject(projectId: string): Promise<Project>;
  
  // 保存项目
  saveProject(project?: Project): Promise<void>;
  
  // 关闭项目
  closeProject(project?: Project): Promise<void>;
  
  // 删除项目
  deleteProject(projectId: string): Promise<void>;
  
  // 导出项目
  exportProject(project: Project, format: string): Promise<Blob>;
  
  // 导入项目
  importProject(data: Blob): Promise<Project>;
}

Project 接口

typescript
interface Project {
  // 项目唯一标识
  readonly id: string;
  
  // 项目名称
  name: string;
  
  // 项目描述
  description: string;
  
  // 项目创建时间
  readonly createdAt: Date;
  
  // 项目最后修改时间
  readonly updatedAt: Date;
  
  // 项目文档列表
  documents: Document[];
  
  // 项目设置
  settings: ProjectSettings;
  
  // 添加文档
  addDocument(document: Document): void;
  
  // 移除文档
  removeDocument(documentId: string): void;
  
  // 获取文档
  getDocument(documentId: string): Document | undefined;
  
  // 更新设置
  updateSettings(settings: Partial<ProjectSettings>): void;
}

Document 接口

typescript
interface Document {
  // 文档唯一标识
  readonly id: string;
  
  // 文档标题
  title: string;
  
  // 文档内容
  content: string;
  
  // 文档类型
  type: DocumentType;
  
  // 文档元数据
  metadata: DocumentMetadata;
  
  // 保存文档
  save(): Promise<void>;
  
  // 重命名
  rename(newTitle: string): void;
}

存储 API

StorageManager

存储管理器提供数据的持久化存储接口。

typescript
interface StorageManager {
  // 存储键值对
  set(key: string, value: any): Promise<void>;
  
  // 获取存储的值
  get(key: string): Promise<any>;
  
  // 删除存储的值
  remove(key: string): Promise<void>;
  
  // 清空所有存储
  clear(): Promise<void>;
  
  // 获取所有键
  keys(): Promise<string[]>;
  
  // 批量存储
  setBatch(items: Record<string, any>): Promise<void>;
  
  // 批量获取
  getBatch(keys: string[]): Promise<Record<string, any>>;
}

主题 API

ThemeManager

主题管理器负责应用主题的切换和管理。

typescript
interface ThemeManager {
  // 当前主题
  readonly currentTheme: Theme;
  
  // 所有可用主题
  readonly themes: Theme[];
  
  // 设置主题
  setTheme(themeName: string): void;
  
  // 注册主题
  registerTheme(theme: Theme): void;
  
  // 删除主题
  unregisterTheme(themeName: string): void;
  
  // 监听主题变化
  onThemeChange(handler: (theme: Theme) => void): void;
}

Theme 接口

typescript
interface Theme {
  // 主题名称
  name: string;
  
  // 主题显示名称
  displayName: string;
  
  // 主题类型
  type: 'light' | 'dark' | 'custom';
  
  // 主题颜色配置
  colors: ThemeColors;
  
  // 是否为默认主题
  isDefault: boolean;
}

事件系统

EventSystem

事件系统提供了组件间和模块间的通信机制。

typescript
interface EventSystem {
  // 发布事件
  emit(event: string, payload?: any): void;
  
  // 订阅事件
  on(event: string, handler: EventHandler): void;
  
  // 取消订阅
  off(event: string, handler?: EventHandler): void;
  
  // 只订阅一次
  once(event: string, handler: EventHandler): void;
  
  // 订阅匹配的事件
  onAny(handler: (event: string, payload: any) => void): void;
}

预定义事件

应用定义了以下预定义事件:

事件名称描述载荷类型
app:ready应用准备就绪
app:shutdown应用关闭
project:created项目创建Project
project:opened项目打开Project
project:saved项目保存Project
project:closed项目关闭Project
document:created文档创建Document
document:opened文档打开Document
document:saved文档保存Document
document:closed文档关闭Document
editor:changed编辑器切换EditorInstance
theme:changed主题切换Theme

扩展点 API

ExtensionPoint

应用提供了多个扩展点,允许插件扩展应用功能:

typescript
interface ExtensionPoint {
  // 注册编辑器插件
  registerEditorPlugin(plugin: EditorPlugin): void;
  
  // 注册工具栏按钮
  registerToolbarButton(button: ToolbarButton): void;
  
  // 注册菜单项
  registerMenuItem(item: MenuItem): void;
  
  // 注册快捷键
  registerShortcut(shortcut: Shortcut): void;
  
  // 注册设置面板
  registerSettingsPanel(panel: SettingsPanel): void;
}

最后更新:2025年12月