Core
平台中立内核,负责文档模型、事务、会话、空间查询与插件协议。不会依赖DOM或某个具体绘图库。
应用接入优先使用Editor。需要自行装配、开发通用插件或实现新渲染适配器时,再使用本页协议。
协议导航
| 专题 | 使用场景 |
|---|---|
| 插件上下文 | 生命周期、注册、文档命令、只读查询和宿主能力 |
| 节点定义 | 创建内容、文本槽位、声明式图元与节点专有字段 |
| 输入作用域 | 键盘优先级、组合输入、指针会话与取消 |
| 渲染适配 | 字体测量、挂载、尺寸同步和资源释放 |
文档与会话
| 类型 | 包含内容 | 持久化与更新 |
|---|---|---|
CanvasDocument | id/name/meta/content/assets?/resources? | 经文档语义命令或事务修改 |
CanvasContent | 以ID为键的nodes与connectors字典 | 补丁按实体ID定位,不使用数组下标 |
NodeEntity | 几何、层级、样式、文本块和具名扩展字段 | 子节点坐标相对父容器 |
ConnectorEntity | 端点、路由类型、样式与标签 | 绑定节点或自由端点 |
ViewportState | x/y/zoom | 会话状态,不进入文档历史 |
CanvasDocumentView | 深只读的当前文档投影 | 只读,不通过赋值更新 |
zIndex是同一容器中按字典序比较的分数索引。不要把它当连续数组索引或用全量重排来移动一个实体。
媒体元数据保存在文档资产表,实际二进制属于宿主AssetAdapter。节点特有状态通过类型扩展表达,通用data只用于开放业务载荷。
引擎装配与事务
SkyNoteEngine(options?)管理文档、会话、实体索引和插件。常用选项包括initialDoc、initialViewport、zoomRange、theme、fonts与assets。engine.use(plugin)安装插件,最终调用engine.destroy()释放资源。
Core本身不提供浏览器界面,也不自动安装所有节点。直接使用Core时,需要显式安装基础节点/交互并提供宿主渲染与输入桥接;仅新建引擎不会得到完整编辑器UI。
写入使用documentStore或插件上下文document的语义方法。batch将同步的一组修改组合提交;撤销重做由操作记录和补丁驱动。读取实体后直接赋值会绕过历史、派生失效和校验,不是合法更新方式。
增量通知
DocumentChangeSet包含nodes/connectors/assets/contentReplaced/orderChanged。节点还区分局部geometry与worldGeometry:祖先移动会改变后代世界几何,即使后代局部坐标没变。
nodes.dataPaths可选,字段路径为相对节点的路径;null表示整体替换,缺省或空路径不能被当作“无需更新”,消费者应完整刷新对应节点。没有必要时,不在高频路径重建整份文档快照。
公开入口
| 入口 | 用途 |
|---|---|
SkyNoteEngine | 底层引擎与插件装配 |
SkyNotePlugin / CanvasPluginContext | 插件生命周期及公开能力 |
NodeTypeDefinition | 节点类型与声明式内容 |
CanvasDocument | 文档持久化模型 |
CanvasHost / AssetAdapter | 宿主交互与资产边界 |
InputScope | 按优先级协调键盘输入 |
子路径包括 /protocols、/utils、/operation、/state、/registry、/spatial、/input、/plugin。实体写入必须走公开事务或语义命令。