跳转到内容

Editor API 参考

import { createEditor } from '@easyx/editor';
const editor = createEditor(container: HTMLElement, options: EditorOptions);

在指定容器中创建编辑器实例,返回 EditorInstance。容器为空时抛出 Error。

配置项类型默认值说明
defaultContentEditorContentType—初始 HTML 内容
defaultThemeEditorTheme'light'初始主题,同时决定表格增强套件主题
placeholderstring'输入内容…'空内容时的占位文字
readOnlybooleanfalse只读模式
autoFocusbooleanfalse创建后自动聚焦
heightnumber | 'auto' | string'auto'见高度模式
minHeightnumber | string—最小高度,number 视为 px
maxHeightnumber | string—最大高度,超出后内部滚动
resizablebooleanfalse右下角拖拽手柄调节高度
imageEditorImageConfig—图片上传、媒体库与缩放配置
videoMediaUploadConfig—视频上传与媒体库配置
audioMediaUploadConfig—音频上传与媒体库配置
attachmentMediaUploadConfig—附件上传与媒体库配置
onChange(content: EditorContentType) => void—内容变更回调
onReady() => void—初始化完成回调
onFocus() => void—聚焦回调
onBlur() => void—失焦回调
onDestroy() => void—销毁回调
方法返回值说明
getHTML()string获取 HTML 内容
setHTML(html)void设置 HTML 内容
getJSON()Record<string, unknown>获取 ProseMirror JSON
setJSON(json)void设置 ProseMirror JSON
getText()string获取纯文本
clear()void清空内容
isEmpty()boolean是否为空
方法返回值说明
setTheme(theme)void切换主题(EditorTheme),同步表格主题
focus() / blur()void聚焦 / 失焦
isFocused()boolean是否聚焦
enable() / disable()void启用 / 禁用编辑
isDisabled()boolean是否禁用
getContainer()HTMLElement获取挂载容器
destroy()void销毁实例,清理 DOM 与事件监听
方法说明
on(event, handler)监听事件
off(event, handler)移除监听
once(event, handler)监听一次
emit(event, ...args)触发事件
事件参数触发时机
changecontent: string内容变更
ready—初始化完成
focus—获得焦点
blur—失去焦点
destroy—实例销毁
uploadErrorfile: File, error: unknown粘贴 / 拖入上传失败
editor.on('change', (content) => console.log(content));
editor.on('uploadError', (file, error) => console.error(file.name, error));
字段类型说明
upload(file: File, onProgress?: MediaUploadProgress) => Promise<MediaItem>上传单个文件
getList(params: MediaListParams) => Promise<MediaListResult>媒体库分页查询,提供后出现「媒体库」页签

在 MediaUploadConfig 基础上增加图片专属选项:

字段类型默认值说明
resizablebooleantrue是否启用图片拖拽缩放
字段类型说明
idstring媒体唯一标识
urlstring资源地址
namestring显示名称
sizenumber文件大小(字节)
thumbnailUrlstring缩略图地址
durationnumber时长(音视频,单位由宿主约定)
fileTypestring文件类型
字段类型说明
pagenumber页码,从 1 开始
pageSizenumber每页条数
keywordstring搜索关键词
字段类型说明
itemsMediaItem[]当前页数据
totalnumber总数

图片、视频、音频、附件统一支持三种插入方式(工具栏媒体按钮下拉,Tab 切换):

  • 上传:调用对应类型的 upload
  • 网络地址:直接粘贴 URL
  • 媒体库:调用 getList 浏览选择;未配置时该页签隐藏
  • 拖拽缩放:选中图片后拖动四角手柄调整像素宽度;resizable: false 可关闭
  • 宽度百分比:选中浮层中按百分比设置宽度
  • 对齐:左 / 中 / 右,序列化为 data-align
  • 选中浮层:对齐、宽度、替代文本(alt)、删除、查看原图

视频节点序列化到 <video> 标签,选中浮层可设置以下属性:

属性说明
data-align对齐方式,渲染在 wrapper 上
poster封面地址,空值清除
controls是否显示原生控制器,默认开启
autoplay是否自动播放,默认关闭

音频与附件同样支持上传、网络地址、媒体库三种插入方式。

createEditor 已注册全部扩展,无需手动配置:

分组扩展
基础编辑StarterKit(加粗 / 斜体 / 标题 / 列表 / 引用 / 代码块 / 撤销等)
文本样式TextStyle、Color、BackgroundColor、FontSize、FontFamily、LineHeight
段落TextAlign、Indent
特殊标记Subscript、Superscript、Typography
列表TaskList、TaskItem
表格TableKit、TablePlus
占位Placeholder
气泡菜单BubbleMenu(文本选区)、imageBubbleMenu、videoBubbleMenu
链接LinkOpen(Cmd/Ctrl+Click 与 Alt+Enter 打开链接)
媒体ImageUpload、VideoNode、AudioNode、AttachmentNode
类型说明
EditorOptionscreateEditor 配置项
EditorTheme'light' | 'dark'
EditorContentType内容类型,等价 string
EditorImageConfig图片媒体配置(MediaUploadConfig + resizable)
MediaUploadConfig / MediaItem / MediaListParams / MediaListResult媒体契约,与 @easyx/ai-rich-editor 同名同形
MediaUploadProgress上传进度回调 (progress: number) => void
EditorEventHandler事件监听回调 (...args: unknown[]) => void