- ThinkEditorKit 概述
- 构造函数
- 描述
- 接口
- 参数
- 返回值
- Load
- 描述
- 接口
- 参数
- 返回值
- LoadAsync
- 描述
- 接口
- 参数
- 返回值
- Configure
- 描述
- 接口
- 参数
- 返回值
- CreateEditorAsync
- 描述
- 接口
- 参数
- 返回值
- 批量创建多文档(推荐)
- SelectEditor
- 描述
- 接口
- 参数
- 返回值
- SelectEditorByEditorId
- 描述
- 接口
- 参数
- 返回值
- CloseEditor
- 描述
- 接口
- 参数
- 返回值
- CloseAllEditors
- 描述
- 接口
- 参数
- 返回值
- AddEditor
- 描述
- 接口
- 参数
- 返回值
- GetEditors
- 描述
- 接口
- 参数
- 返回值
- GetEditor
- 描述
- 接口
- 参数
- 返回值
- GetEditorByShowName
- 描述
- 接口
- 参数
- 返回值
- GetEditorByIndex
- 描述
- 接口
- 参数
- 返回值
- GetEditorByEditorId
- 描述
- 接口
- 参数
- 返回值
- GetSelectedEditor
- 描述
- 接口
- 参数
- 返回值
- GetSelectedDocName
- 描述
- 接口
- 参数
- 返回值
- GetEditorCount
- 描述
- 接口
- 参数
- 返回值
- GetLastEditor
- 描述
- 接口
- 参数
- 返回值
- Destroy
- 描述
- 接口
- 参数
- 返回值
- 事件监听
- 描述
- 接口
- 参数
- 返回值
- Kit 事件
- 描述
- 注册示例
- 常用 Kit 事件
closeDoc与页签关闭- 与单文档
thinkEditor.addEventListener的区别 - 配置项说明
- Kit 布局
- 各工具页签(fileBar / editBar / insertBar / printBar / viewBar)
- 编辑器公共项(传入 CreateEditorAsync / SetEditorConfig)
- Kit UI 常用配置示例
- 选中工具页签(
selectToolTab) - 工具栏自动换行(
toolBarAutoWrap) - Kit 配置与编辑器配置分离
- 组合示例
- 公开属性(只读/运行时)
- 典型生命周期
ThinkEditorKit 概述
ThinkEditorKit 是信译编辑器 一体化 UI 套件,封装工具栏(文件/编辑/插入/打印/视图)、文档页签栏、文档编辑区及多文档 ThinkEditorInstance 管理。
典型用法:
const thinkEditorKit = new ThinkEditorKit({
instanceName: "实例1",
lib: "/editorSdk/",
// selectToolTab: "edit", // 默认即为编辑页签,可省略
});
await thinkEditorKit.LoadAsync(document.getElementById("editor-root"));
const thinkEditor = await thinkEditorKit.CreateEditorAsync({ docName: "doc1", showName: "新文档", selectEditor: true });
thinkEditor.NewDoc("doc1", E_DOC_TYPE.Entity);更多 Kit UI 配置见 Kit UI 常用配置示例。
ThinkEditorKit 继承 EventTarget,可监听编辑器内部事件(经 editorInstance 路由后冒泡到 Kit)。常用注册方式见 Kit 事件。
构造函数
描述
创建 Kit 实例,合并默认配置与 options,并初始化内部 ThinkEditorInstance。
Load / LoadAsync 之前也可仅通过 options 预置配置;UI 相关项在 LoadAsync 后才会渲染到 DOM。
接口
new ThinkEditorKit(options?: object)参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|---|---|---|---|
| options | 否 | object | Kit 与编辑器合并配置 | 见 配置项说明 |
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| ThinkEditorKit | Kit 实例 | — |
Load
描述
加载 Kit UI 到指定 DOM 容器(LoadAsync 的同步包装)。
会清空 container 内容,创建工具栏、工具面板、文档页签栏(可选)、文档编辑区,并初始化工具页签(默认选中 selectToolTab,未配置时为 编辑 页签)。
接口
async Load(container: HTMLElement): Promise<void>参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|---|---|---|---|
| container | 是 | HTMLElement | 挂载根节点 | 需有可用高度;内部使用 flex 纵向布局 |
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| Promise |
无 | 等价于 LoadAsync |
LoadAsync
描述
异步加载 Kit 完整 UI 结构。
- 清空并记录
container - 按
showToolBar/showToolPanel/showDocBar/showDocPanel创建对应区域 - 初始化工具页签与工具面板内容(激活页签见
selectToolTab,默认"edit") - 刷新文档页签栏与
docPanel高度
接口
async LoadAsync(container: HTMLElement): Promise<void>参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|---|---|---|---|
| container | 是 | HTMLElement | 挂载根节点 | 同 Load |
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| Promise |
无 | — |
Configure
描述
运行时合并配置并应用到 UI(工具栏页签名/显隐、iconMap、toolBarAutoWrap、selectToolTab、preventDefaultKeys、文档栏等)。
- Load 之前调用:合并
this.config与editorCommonOptions(Kit 键见KIT_ONLY_CONFIG_KEYS),不操作 DOM - Load 之后调用:同步 DOM、工具栏实例;若
*Bar.items/iconMap等变更会重建工具面板;lib/auth等编辑器项写入editorCommonOptions,影响后续CreateEditorAsync;若传入selectToolTab会切换到对应工具页签;若toolBarAutoWrap变更会重建工具面板
接口
async Configure(settings?: object): Promise<void>参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|---|---|---|---|
| settings | 否 | object | 待合并的配置片段 | 字段与构造函数 options 相同,深度合并 |
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| Promise |
无 | — |
CreateEditorAsync
描述
创建并注册一个新的 ThinkEditor 文档实例:执行 InitAsync、预置 container = docPanel、注册右键菜单、加入 editorInstance。
首份文档创建后无论 selectEditor 为何值,都会自动 SelectEditor 并 Load 到 docPanel。
第 2 份及以后:selectEditor === false 时仅 InitAsync + AddEditor,待 SelectEditor(或页签切换)再 Load,避免多 canvas 堆叠。
若 docName 已存在,直接返回已有实例。
当 showDocBar === false 时,创建新文档前会自动 CloseAllEditors()(单文档模式),且创建后会自动 SelectEditor 以立即显示文档。
接口
async CreateEditorAsync(editorOptions?: object): Promise<ThinkEditor>参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|---|---|---|---|
| editorOptions | 否 | object | 单文档配置 | 与 Kit 构造时的 editorCommonOptions 合并 |
| editorOptions.docName | 是* | string | 文档内部名 | *新建时必填;重复则返回已有 |
| editorOptions.showName | 否 | string | 页签显示名 | 默认同 docName |
| editorOptions.selectEditor | 否 | boolean | 创建后是否选中并 Load | 首份文档忽略此标志始终 Load;第 2 份起默认 false 不挂载,true 时 SelectEditor |
| editorOptions.lib | 否 | string | ArrayBuffer | WASM 路径或二进制 | 继承 Kit 默认 |
| editorOptions.fontPath | 否 | string | 字体目录 | — |
| editorOptions.auth | 否 | object | 授权配置 | — |
| editorOptions.logLevel | 否 | number | 日志级别 | E_LOG_LEVEL |
| editorOptions.forbidCallAutoSetInputFocus | 否 | boolean | 禁止自动 focus input | 默认 false |
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| Promise |
文档编辑器实例 | 创建失败时 InitAsync 抛错 |
批量创建多文档(推荐)
连续创建时第 1 份会自动显示;其余使用 selectEditor: false,需要时再 SelectEditor:
for (const item of docList) {
await thinkEditorKit.CreateEditorAsync({ docName: item.name, showName: item.title, selectEditor: false });
}
// 首份已自动 Load;若要默认展示其他文档:
// thinkEditorKit.SelectEditor(docList[2].name);SelectEditor
描述
按 docName 切换当前选中文档:对旧文档 UnLoad,对新文档 Load,并刷新文档页签栏。
内部经 ThinkEditorInstance.SelectEditor 处理,切换后会恢复输入焦点(SetInputFocus / SetEditorFocus)。
接口
SelectEditor(docName: string): void参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|---|---|---|---|
| docName | 是 | string | 目标文档名 | 不存在时 Instance 层 console.warn |
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| void | 无 | Instance 层返回 boolean;Kit 层无返回值 |
SelectEditorByEditorId
描述
按 editorId 切换当前选中文档,并刷新文档页签栏。
接口
SelectEditorByEditorId(editorId: string): boolean参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|---|---|---|---|
| editorId | 是 | string | 编辑器 ID | — |
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| boolean | 是否切换成功 | false:找不到对应 editor |
CloseEditor
描述
关闭指定文档(UnInit 并移出列表),自动选中最近使用的文档,并刷新页签栏。
接口
CloseEditor(doc: string | ThinkEditor): boolean参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|---|---|---|---|
| doc | 是 | string | ThinkEditor | 文档名或实例 | — |
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| boolean | 是否关闭成功 | 文档不存在时 false |
CloseAllEditors
描述
关闭全部已打开文档,并刷新页签栏。
接口
CloseAllEditors(): void参数
无。
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| void | 无 | — |
AddEditor
描述
将已在外部创建并完成 InitAsync 的 ThinkEditor 注册到 Kit 的 editorInstance。
docName 重复时拒绝添加。
接口
AddEditor(thinkEditor: ThinkEditor): boolean参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|---|---|---|---|
| thinkEditor | 是 | ThinkEditor | 编辑器实例 | 通常更推荐使用 CreateEditorAsync |
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| boolean | 是否添加成功 | — |
| — |
GetEditors
描述
获得Kit在所有编辑器ThinkEditor对象。
接口
GetEditors(): Array<ThinkEditor> | undefined参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| Array | undefined | 编辑器实例数组 | 不存在时为 undefined |
GetEditor
描述
按 docName 获取已注册的 ThinkEditor 实例。
接口
GetEditor(docName: string): ThinkEditor | undefined参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|---|---|---|---|
| docName | 是 | string | 文档名 | — |
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| ThinkEditor | undefined | 编辑器实例 | 不存在时为 undefined |
GetEditorByShowName
描述
按页签显示名 showName 查找编辑器。
接口
GetEditorByShowName(showName: string): ThinkEditor | undefined参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|---|---|---|---|
| showName | 是 | string | 显示名称 | — |
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| ThinkEditor | undefined | 编辑器实例 | — |
GetEditorByIndex
描述
按打开顺序索引获取编辑器(从 0 开始)。
接口
GetEditorByIndex(index: number): ThinkEditor | undefined参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|---|---|---|---|
| index | 是 | number | 索引 | 越界返回 undefined |
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| ThinkEditor | undefined | 编辑器实例 | — |
GetEditorByEditorId
描述
按 editorId 获取编辑器实例。
接口
GetEditorByEditorId(editorId: string): ThinkEditor | undefined参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|---|---|---|---|
| editorId | 是 | string | 编辑器 ID | — |
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| ThinkEditor | undefined | 编辑器实例 | — |
GetSelectedEditor
描述
获取当前选中的 ThinkEditor 实例。
接口
GetSelectedEditor(): ThinkEditor | undefined参数
无。
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| ThinkEditor | undefined | 当前选中文档 | 无文档时 undefined |
GetSelectedDocName
描述
获取当前选中文档的 docName。
接口
GetSelectedDocName(): string参数
无。
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| string | 文档名 | 无选中时为空字符串 |
GetEditorCount
描述
返回当前打开的文档数量。
接口
GetEditorCount(): number参数
无。
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| number | 文档数 | — |
GetLastEditor
描述
按 selectedTime 获取最近一次被选中的编辑器(关闭文档时用于自动切换)。
接口
GetLastEditor(): ThinkEditor | undefined参数
无。
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| ThinkEditor | undefined | 最近选中的编辑器 | — |
Destroy
描述
销毁 Kit 对 editorInstance 内部事件的路由监听(removeInnerEventListenerAgent)。
注意:不会自动 CloseAllEditors / UnInit 各 ThinkEditor,也不会移除已挂载 DOM。页面卸载前建议业务先关闭全部文档。
接口
Destroy(): void参数
无。
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| void | 无 | — |
事件监听
描述
ThinkEditorKit 继承 EventTarget。各 ThinkEditor 的内部事件经 ThinkEditorInstance 汇聚后,由 Kit 的 OnInnerEvent 再次 dispatchEvent 到 Kit 自身。
业务可在 Kit 上监听经 ThinkEditorInstance 汇聚后冒泡的事件(事件名见 E_EVENT_KEY)。常用 Kit 级事件见 Kit 事件。
接口
kit.addEventListener(type: string, listener: EventListener): void
kit.removeEventListener(type: string, listener: EventListener): void参数
| 参数名 | 必填 | 类型 | 说明 | 备注 |
|---|---|---|---|---|
| type | 是 | string | 事件名 | 如 E_EVENT_KEY.closeDoc |
| listener | 是 | function | 回调 | 回调参数为 ThinkEditorEvent |
返回值
| 类型 | 说明 | 备注 |
|---|---|---|
| void | 无 | — |
Kit 事件
描述
ThinkEditorKit 在构造时会通过 addInnerEventListenerAgent() 将 editorInstance 上的全部 E_EVENT_KEY 事件路由到 Kit 的 OnInnerEvent,再 dispatchEvent 到 Kit 自身。业务在 LoadAsync 之后 向 Kit 注册监听即可收到多文档场景下的统一回调。
回调参数为 ThinkEditorEvent,常用字段:
| 字段 | 类型 | 说明 |
|---|---|---|
evt.type |
string | 与 E_EVENT_KEY 枚举值相同 |
evt.data |
ThinkEditorEventData | 事件载荷 |
evt.data.editor |
ThinkEditor | 触发事件的文档实例(部分事件有) |
evt.data.instance |
ThinkEditorInstance | 多文档管理器(Instance 转发时填充) |
evt.data.data |
any | 内核或 DOM 附带的扩展数据 |
需在业务侧从 SDK 引入 E_EVENT_KEY(如 ThinkEditor.Defined.ts / 打包后的等价导出)。
注册示例
import { E_EVENT_KEY } from "./ThinkEditor.Defined.js"; // 路径以项目为准
await thinkEditorKit.LoadAsync(container);
thinkEditorKit.addEventListener(E_EVENT_KEY.docModified, OnDocModified); // 文档内容有修改
thinkEditorKit.addEventListener(E_EVENT_KEY.instanceChange, OnInstanceChange); // 文档有增减
thinkEditorKit.addEventListener(E_EVENT_KEY.focusChange, OnDocFocusChange); // 文档中输入焦点有变化
thinkEditorKit.addEventListener(E_EVENT_KEY.drop, OnDocDropEvent); // 拖动内容到文档中
thinkEditorKit.addEventListener(E_EVENT_KEY.selectEditorChange, OnSelectEditorChange); // 文档 docTab 发生了切换
thinkEditorKit.addEventListener(E_EVENT_KEY.closeDoc, OnCloseDocRequest); // tab 的 × 被点击
function OnDocModified(evt) {
const editor = evt.data.editor;
// ...
}
function OnCloseDocRequest(evt) {
// 返回 false 或调用 evt.preventDefault() 可取消 Kit 默认关页行为
if (!confirm("关闭文档?")) {
evt.preventDefault();
return false;
}
}页面卸载或 Kit 销毁前,应对称调用 removeEventListener;Destroy() 仅移除 Kit 内部路由,不会自动移除业务监听。
常用 Kit 事件
事件名 (E_EVENT_KEY) |
说明 | 典型触发时机 | 备注 |
|---|---|---|---|
docModified |
文档内容有修改 | 内核标记文档已改 | 可用于脏标记、自动保存提示 |
instanceChange |
文档实例有增减 | CreateEditorAsync / CloseEditor / CloseAllEditors 等 |
evt.data.instance 为当前 ThinkEditorInstance |
focusChange |
文档内输入焦点变化 | 光标/选区/元素焦点变化 | 与 editorFocus(单击进入编辑器)不同 |
drop |
拖动内容落入文档 | canvas drop,dataTransfer 解析为 JSON |
evt.data.data 含拖放载荷;可 preventDefault 拦截默认处理 |
selectEditorChange |
当前选中文档切换 | 页签点击、SelectEditor、关闭文档后自动选中上一文档 |
evt.data.editor 为切换后的文档 |
closeDoc |
请求关闭文档 | 文档页签栏 × 点击 | 可取消:preventDefault() 后 Kit 不执行 closeDocument;类型为 request 句柄 |
closeDoc 与页签关闭
页签 × 时 Kit 调用 editor.dispatchEditorRequest(E_EVENT_KEY.closeDoc, { docName }),监听方取消后不会调用 closeDocument。业务若仅监听 Kit 而未拦截,Kit 在请求未被取消时会默认关闭该文档。
与单文档 thinkEditor.addEventListener 的区别
| 监听对象 | 范围 | 适用场景 |
|---|---|---|
thinkEditorKit |
经 Instance 汇聚的多文档事件 | 页签、脏标记、统一拖放处理 |
thinkEditor |
仅该文档实例 | 单文档脚本、元素级逻辑 |
同一 E_EVENT_KEY 在单文档上也会触发;多文档应用推荐在 Kit 上注册上述实例级事件,避免为每个 thinkEditor 重复绑定。
配置项说明
构造函数 options / Configure(settings) 支持的主要字段:
Kit 布局
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| showToolBar | boolean | true | 顶部工具页签栏(文件/编辑/插入/打印/视图) |
| showToolPanel | boolean | true | 工具面板(Ribbon 按钮区) |
| showDocBar | boolean | true | 多文档页签栏 |
| showDocPanel | boolean | true | 文档编辑区 |
| toolBarAutoWrap | number | 1 |
工具面板换行:默认开启(1);组内仅一行时按图标宽度换行,组内多行时整组换行(保留组内行结构);显式 0 时不换行(单行、超出裁剪) |
| selectToolTab | string | "edit" |
当前选中的工具页签:file | edit | insert | print | view;LoadAsync 时作为初始页签,未配置时默认为 edit;若该页签被隐藏则回退到第一个可见页签;Configure 传入时立即切换 |
| instanceName | string | “实例1” | ThinkEditorInstance 标识 |
| iconUrlPath | string | “/editorRes/“ | 工具栏图标资源根路径 |
| iconMap | object | — | 工具栏图标映射(Kit 层,不传 SetEditorConfig) |
| iconUrlMap | object | — | 工具栏图标 URL 映射(Kit 层) |
| fontInfoList | array | — | 编辑栏字体下拉列表(Kit 层) |
| hideToolBarItems | string[] | [] | 强制隐藏的工具页签,如 ["fileBar"] |
| preventDefaultKeys | string[] | [] | 工具栏快捷键拦截列表 |
配置分流:上表及
*Bar页签配置仅作用于 Kit UI(this.config),不会传入SetEditorConfig。其余字段(如lib、auth)进入editorCommonOptions,在CreateEditorAsync时传给编辑器。完整 Kit 键列表见源码KIT_ONLY_CONFIG_KEYS。
各工具页签(fileBar / editBar / insertBar / printBar / viewBar)
| 参数名 | 类型 | 说明 |
|---|---|---|
| name | string | 页签显示名 |
| items | object | 工具组配置;null/[] 可隐藏页签或 group |
| iconMap | object | 图标映射 |
| iconUrlMap | object | 图标 URL 映射 |
页签/group 显隐规则见源码注释 KIT_BAR_CONFIG_KEYS 与 isKitBarToolbarAbsent。
编辑器公共项(传入 CreateEditorAsync / SetEditorConfig)
options / Configure(settings) 中除 Kit 专用键外的字段均合并进 editorCommonOptions(见 KIT_ONLY_CONFIG_KEYS)。
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| lib | string | ArrayBuffer | “/editorSdk/“ | WASM 路径或二进制 |
| fontPath | string | “/editorFonts/“ | 字体目录 |
| logLevel | number | Debug | 日志级别 |
| useInnerUI | boolean | true | 使用内置 UI |
| useInnerMenuBox | boolean | false | 内置菜单盒 |
| auth | object | { mode: 0 } |
授权配置 |
| forbidCallAutoSetInputFocus | boolean | false | 禁止接口自动 focus |
| forbidLocalFonts | boolean | — | 禁用本地字体 |
| debugFont | boolean | — | 字体调试 |
Kit UI 常用配置示例
选中工具页签(selectToolTab)
未配置时默认即为 编辑 页签,无需额外设置:
const kit = new ThinkEditorKit({ lib: "/editorSdk/" });
await kit.LoadAsync(container);
// 加载后顶部工具页签与下方面板均为「编辑」指定其他初始页签:
const kit = new ThinkEditorKit({
lib: "/editorSdk/",
selectToolTab: "file", // file | edit | insert | print | view
});若指定页签被隐藏(如 hideToolBarItems: ["fileBar"] 且 selectToolTab: "file"),则自动回退到第一个可见页签。
运行时通过 Configure 代码切换页签:
await kit.Configure({ selectToolTab: "insert" });工具栏自动换行(toolBarAutoWrap)
默认 开启(1,构造时可省略)。组内只有一行时,图标按宽度自动换行;组内有多行时(如开关 + 单选两行),整组换行并保留组内行结构:
const kit = new ThinkEditorKit({
lib: "/editorSdk/",
// toolBarAutoWrap 默认为 1,可省略
});关闭自动换行(单行、超出裁剪):
const kit = new ThinkEditorKit({
toolBarAutoWrap: 0,
});
await kit.LoadAsync(container);
await kit.Configure({ toolBarAutoWrap: 0 });Kit 配置与编辑器配置分离
构造 / Configure 时,Kit 专用项只影响 UI,不会传入 SetEditorConfig;其余字段进入 editorCommonOptions,在 CreateEditorAsync 时传给编辑器内核。
const kit = new ThinkEditorKit({
// —— Kit UI(不进 SetEditorConfig)——
selectToolTab: "edit",
hideToolBarItems: [],
editBar: {
name: "编辑",
// items: { group1: [...] } // 可选,覆盖部分工具组
},
iconMap: { /* 工具栏图标 */ },
// —— 编辑器(进 editorCommonOptions / SetEditorConfig)——
lib: "/editorSdk/",
fontPath: "/editorFonts/",
auth: { mode: 0 },
});
await kit.LoadAsync(container);
// 运行时仅更新编辑器授权(影响后续新建的 ThinkEditor)
await kit.Configure({ auth: { mode: 1, company: "xxx" } });Kit 专用键完整列表见源码 KIT_ONLY_CONFIG_KEYS(含 showToolBar、editBar、fileBar、selectToolTab、toolBarAutoWrap 等)。
组合示例
const kit = new ThinkEditorKit({
lib: "/editorSdk/",
selectToolTab: "edit", // 默认编辑页签(可省略)
preventDefaultKeys: ["saveDoc"], // 保存按钮交给业务处理
});
await kit.LoadAsync(document.getElementById("editor-root"));
const editor = await kit.CreateEditorAsync({
docName: "doc1",
showName: "新文档",
selectEditor: true,
});
editor.NewDoc("doc1", E_DOC_TYPE.Entity);公开属性(只读/运行时)
| 属性名 | 类型 | 说明 |
|---|---|---|
| config | object | 合并后的 Kit 配置 |
| editorCommonOptions | object | 创建 ThinkEditor 时的默认 options |
| editorInstance | ThinkEditorInstance | 多文档管理器 |
| container | HTMLElement | Load 后的根容器 |
| toolBar | HTMLElement | 工具页签栏 |
| toolPanel | HTMLElement | 工具面板 |
| docBar | HTMLElement | 文档页签栏 |
| docPanel | HTMLElement | 文档编辑区 |
典型生命周期
new ThinkEditorKit(options)
→ await LoadAsync(container)
→ await CreateEditorAsync({ docName, showName, selectEditor: true })
→ editor.NewDoc / ParseDoc ...
→ SelectEditor(otherDocName) // 切换页签
→ CloseEditor(docName) // 关闭文档
→ Destroy() // 页面卸载单文档 ThinkEditor 生命周期(由 Kit 内部驱动):
InitAsync → Load ↔ UnLoad(切换页签)→ UnInit(关闭文档)