# Editor 配置与事件参考

查询创建配置、内容替换选项与全部公开事件的源码定义。

本页用于查字段，调用步骤见 [Editor 用法](/api/editor)。所有签名均来自 `@quirekit/core` 的公开入口，不需要从内部目录导入类型。

## 创建配置

`extensions`、Schema 与命令在创建时建立；`setOptions()` 不会重新编译扩展。`element` 存在时选择的 `mode` 必须已有适配器，省略 `mode` 选择 retained `html`，而不是原生 `dom`。

事件可在创建选项中使用 `onCreate`、`onUpdate` 等回调。`create` 在构造期间同步发生，因此 `new Editor()` 返回后才订阅 `create` 会错过它；在 `onCreate` 中使用回调参数的 `editor`。

### QuireEditorOptions

`@quirekit/core` · MIT

创建 Editor 时的内容、扩展、视图与事件配置。

```ts
export interface QuireEditorOptions extends QuireEditorEventCallbacks {
    readonly content?: QuireEditorContent;
    readonly contentType?: QuireMarkdownContentType | undefined;
    readonly markdown?: QuireMarkdownManagerOptions | undefined;
    readonly docx?: QuireDocxManagerOptions | undefined;
    readonly schema?: Schema;
    readonly editorProps?: QuireEditorProps | undefined;
    readonly parseOptions?: ParseOptions | undefined;
    readonly autofocus?: FocusPosition | undefined;
    readonly editable?: boolean | undefined;
    readonly textDirection?: "ltr" | "rtl" | "auto" | undefined;
    readonly injectCSS?: boolean | undefined;
    readonly injectNonce?: string | undefined;
    readonly coreExtensionOptions?: CoreExtensionOptions | undefined;
    readonly enableCoreExtensions?: boolean | Partial<Record<CoreExtensionName, false>> | undefined;
    readonly enableContentCheck?: boolean | undefined;
    readonly emitContentError?: boolean | undefined;
    readonly enableExtensionDispatchTransaction?: boolean | undefined;
    readonly enableInputRules?: QuireEnableRules | undefined;
    readonly enablePasteRules?: QuireEnableRules | undefined;
    readonly extensions?: readonly QuireAnyExtension[];
    readonly element?: Element | {
        readonly mount: HTMLElement;
    } | ((editor: HTMLElement) => void) | null | undefined;
    readonly mode?: QuireViewMode;
    readonly viewId?: string;
}
```

**content** — 初始正文，可传相容的 PM 文档或 JSON；字符串按所选内容类型解析。

**contentType** — 初始字符串的明确内容类型，例如 markdown；省略时按 HTML 解析。

**markdown** — Markdown 解析与序列化配置，能力由已安装扩展共同提供。

**docx** — 本实例 DOCX 管理器的默认值、运行时加载与诊断监听。

**schema** — 显式 Schema；省略时从内容或扩展确定。

**editorProps** — 直接传给视图的 PM 风格属性，先于插件属性处理。

**parseOptions** — 解析编辑器内容时使用的默认选项。

**autofocus** — 首次挂载后使用的焦点与选区目标。

**editable** — 是否接受用户编辑输入；不等同于禁止所有程序命令。

**textDirection** — 正文的默认文本方向：ltr、rtl 或 auto。

**injectCSS** — 是否注入兼容 Tiptap 的基础样式。

**injectNonce** — 注入样式所用的 CSP nonce。

**coreExtensionOptions** — 传给内置扩展的配置。

**enableCoreExtensions** — 开启内置扩展，或按名称禁用其中的项目。

**enableContentCheck** — 启用初始内容严格检查；错误应通过内容错误回调处理，不能把回退内容当成导入成功。

**emitContentError** — 初始内容非法时报告 contentError；恢复流程仍需在提交前自行校验。

**enableExtensionDispatchTransaction** — 是否允许扩展拦截事务分发。

**enableInputRules** — 全局或按扩展控制输入规则。

**enablePasteRules** — 全局或按扩展控制粘贴规则。

**extensions** — 创建时安装的有序扩展列表。

**element** — 主视图宿主元素、挂载包装、回调或 null；未提供时可稍后挂载。

**mode** — 挂到 element 的视图模式；需预先注册对应适配器。

**viewId** — 主视图的稳定标识。

**onMount** — 主视图完成挂载后通知。

**onUnmount** — 主视图释放后通知。

**onBeforeCreate** — 创建选项注册后、扩展创建钩子运行前通知。

**onCreate** — 初始状态建立后同步通知；需要在构造选项中预先注册回调。

**onContentError** — 初始内容无法正确解析时报告错误。

**onBeforeTransaction** — 事务应用前通知。

**onTransaction** — 事务接受后通知，包含根事务及插件追加事务。

**onSelectionUpdate** — 选区变化后通知。

**onFocus** — 视图取得输入焦点时通知。

**onBlur** — 视图失去输入焦点时通知。

**onClipboardPasteResult** — 报告粘贴事务接受或拒绝的结果，包括无法发出 update 的拒绝情况。

**onDelete** — 删除扩展观察到内容或格式被移除时通知。

**onUpdate** — 更新通知，携带旧状态和事务；setEditable 默认也会触发，判断正文变化时需比较文档。

**onDestroy** — 最终销毁前通知。

**onPaste** — 兼容内容粘贴回调，接收原生事件与解析后的 Slice。

**onDrop** — 兼容内容拖放回调，接收原生事件、Slice 与移动标记。

## 内容替换选项

`setContent()` 与 `replaceDocument()` 共用这些选项。省略 `emitUpdate` 时正常通知更新；`errorOnInvalidContent` 需要显式启用。语义和校验限制见[内容读写](/guide/content)。

### QuireSetContentOptions

`@quirekit/core` · MIT

正文替换与完整文档恢复共用的解析和更新通知选项。

```ts
export interface QuireSetContentOptions extends SetContentOptions {
    readonly contentType?: QuireMarkdownContentType | undefined;
    readonly parseOptions?: ParseOptions;
    readonly errorOnInvalidContent?: boolean;
    readonly emitUpdate?: boolean;
}
```

**contentType** — 字符串内容的明确类型，例如 markdown。

**parseOptions** — 传给 HTML 解析器的选项。

**errorOnInvalidContent** — 非法内容是否抛错而不是回退；严格恢复时显式开启。

**emitUpdate** — 是否发出内容更新事件并运行扩展更新钩子；false 不会取消事务本身。

## 事件表

事件通知描述状态或输入事实，不是第二条修改通道。`transaction` 还携带 `appendedTransactions`；需要判断实际正文是否改变时，比较接受后的文档与旧文档，不能只看根事务。`update` 默认也可由 `setEditable()` 触发，见[事件用法](/concepts/lifecycle)。

### QuireEditorEvents

`@quirekit/core` · MIT

Editor 通过 on、once 与 off 暴露的公开事件及其负载类型。

```ts
export interface QuireEditorEvents {
    readonly mount: EditorEvents["mount"];
    readonly unmount: EditorEvents["unmount"];
    readonly beforeCreate: QuireEditorEventPayload;
    readonly create: QuireEditorEventPayload;
    readonly contentError: EditorEvents["contentError"];
    readonly beforeTransaction: QuireEditorBeforeTransactionEvent;
    readonly transaction: QuireEditorTransactionEvent;
    readonly selectionUpdate: QuireEditorSelectionUpdateEvent;
    readonly focus: QuireEditorFocusEvent;
    readonly blur: QuireEditorBlurEvent;
    readonly paste: QuireEditorPasteEvent;
    readonly clipboardPasteResult: QuireClipboardPasteResult;
    readonly drop: QuireEditorDropEvent;
    readonly delete: QuireEditorDeleteEvent;
    readonly update: QuireEditorUpdateEvent;
    readonly destroy: void;
}
```

**mount** — 主视图完成挂载后通知。

**unmount** — 主视图释放后通知。

**beforeCreate** — 创建选项注册后、扩展创建钩子运行前通知。

**create** — 初始状态建立后同步通知；需要在构造选项中预先注册回调。

**contentError** — 初始内容无法正确解析时报告错误。

**beforeTransaction** — 事务应用前通知。

**transaction** — 事务接受后通知，包含根事务及插件追加事务。

**selectionUpdate** — 选区变化后通知。

**focus** — 视图取得输入焦点时通知。

**blur** — 视图失去输入焦点时通知。

**paste** — 视图处理粘贴时通知。

**clipboardPasteResult** — 报告粘贴事务接受或拒绝的结果，包括无法发出 update 的拒绝情况。

**drop** — 视图处理拖放时通知。

**delete** — 删除扩展观察到内容或格式被移除时通知。

**update** — 更新通知，携带旧状态和事务；setEditable 默认也会触发，判断正文变化时需比较文档。

**destroy** — 最终销毁前通知。
