Skip to content

Editor ​

SkyNoteEditor<TContainer>是应用集成的主要入口,负责引擎、基础插件与渲染适配器的装配。自身不依赖Vue或React。浏览器使用Leafer时,容器类型通常为HTMLElement。

按任务查找 ​

专题内容
节点、连线与选择创建参数、返回ID、查询、修改、组合、删除
视口、工具与主题坐标转换、缩放、内容适配、只读与工具
历史与连续编辑undo/redo、batch、groupId、几何编辑结束
事件与释放监听载荷、解绑时机、增量更新与持久化
文档、媒体与导出导入与恢复差异、资产任务、图片导出
完整签名索引从源码生成的全部非私有成员、默认参数和返回类型

构造参数 ​

new SkyNoteEditor<TContainer>(options)。以下为应用常用选项;字体测量器由渲染适配器提供。

参数类型 / 默认值作用
rendererRenderAdapter<TContainer>,必填提供渲染器及文字测量能力
pluginsreadonly SkyNotePlugin[],[]在内置插件后安装;相同id会替换已安装者
initialViewactual-size,也可为fit-content或preserve首次挂载及成功导入/恢复时使用的视口策略
initialDocCanvasDocument,默认空文档初始文档;外部输入应先校验
initialViewportPartial<ViewportState>初始会话视口;需配合preserve避免打开策略覆盖
zoomRange{ min: 0.02, max: 8 }会话缩放范围
readOnlyboolean,false限制文档编辑,仍可浏览
themeCanvasThemeConfig,默认浅色画布主题,独立于宿主CSS
assetsAssetAdapter,可选上传、解析和释放媒体资源
ts
export function openEditor(container: HTMLElement): SkyNoteEditor<HTMLElement> {
  const editor = new SkyNoteEditor<HTMLElement>({
    renderer: new LeaferAdapter(),
    initialView: 'fit-content',
    readOnly: false,
    zoomRange: { min: 0.02, max: 8 }
  });
  try {
    editor.mount(container);
    return editor;
  } catch (error) {
    editor.destroy();
    throw error;
  }
}

示例需要从@skynote/editor和@skynote/renderer-leafer导入对应类型与类,完整文件与本页示例一起参与类型检查。SSR中只在客户端加载并调用。

生命周期 ​

接口参数 / 返回值行为与使用时机
isMountedboolean当前是否存在已挂载渲染器
mount(container)TContainer → void容器必须已进入布局且有尺寸;已挂载时先卸载旧渲染器
unmount()void释放渲染器、输入桥接和渲染订阅,保留引擎、文档及插件
destroy()void释放Editor自身资源、渲染器与引擎插件;页面彻底退出时调用

unmount()后的实例可以重新mount();destroy()表示最终销毁,不再复用。宿主自己注册的订阅仍应主动解绑。初始化抛错时销毁已创建实例,避免留下半初始化资源。

已装配能力 ​

Editor内置基础节点、分支连线、视口导航、选择与选区轮廓、编辑快捷键、变换、剪贴板、连线创建/编辑及文字编辑。小地图和业务插件需要显式安装,详见基础插件API。

editor.engine供高级扩展装配或批量事务使用;宿主UI优先使用Editor门面。查询结果即使类型上可读取,也不能绕过事务直接改写持久化实体。

常用入口速查 ​

接口用途
mount(container) / unmount() / destroy()挂载、卸载与最终销毁
createNode(request)按指定坐标创建节点
insertNodeAtViewportCenter(request)在视口中心创建节点
select(ids) / selectedNodeIds设置和读取选择
undo() / redo()历史操作
fitContent() / zoomAt(factor)导航
applyInitialView(mode)适配、100%居中或保持视口
exportDocument() / importDocument(value)文档导出与校验导入
onDocumentChange() / onSelectionChange()增量事件与选择订阅

创建返回null、导入的ParseResult、媒体任务的状态结果和普通void命令表示不同的失败反馈,不能统一按“没有异常就成功”处理。具体语义见各专题;Vue生命周期见完整接入教程。

可组合的画布能力,从一个想法开始。