Skip to content

基础节点手册 ​

BasicNodesPlugin注册便签、文字、形状、画框、组合、图片和基础堆叠布局。Editor默认已装配;直接使用Core时需要自行安装。

本页示例使用已创建的Editor,SkyNoteEditor类型从@skynote/editor导入。

便签、文字与形状 ​

ts
export function addBasicContent(editor: SkyNoteEditor<HTMLElement>): void {
  editor.createNode({ nodeType: 'sticky', x: 0, y: 0, options: { text: '记下一个想法', color: 'yellow' } });
  editor.createNode({ nodeType: 'shape', x: 260, y: 0, options: { geometry: 'diamond', label: '换个角度?' } });
  editor.createNode({ nodeType: 'free-text', x: 20, y: 260, options: { text: '把零散的线索连接起来。' } });
}
nodeType创建options默认与特性
stickytext?: string、color?: StickyColor默认200×200、黄色、比例锁定;固定外框,放不下时省略
free-texttext?: string默认适应内容,字体测量后派生尺寸;没有可见底色
shapegeometry?: ShapeGeometry、label?: string默认矩形;椭圆、菱形、三角形、星形可选,标签可编辑

便签颜色名称为yellow/orange/pink/purple/blue/teal/green/gray。这是语义调色板引用,宿主可以通过主题调色板影响实际颜色。

普通形状默认160×100,三角形与星形默认120×120。需要覆盖尺寸时,在创建请求顶层提供width/height,不把公共几何塞入options或data。

文本尺寸与样式 ​

自由文本的三种排版状态由文本块sizing表示:

状态变化方式
auto-width按内容确定宽高,默认不折行
auto-height固定宽度,按文字折行撑高
fixed固定文字框宽高,溢出按对应规则展示

水平拖动、垂直拖动和四角缩放可能采用不同的节点缩放策略。不要把“改节点外框”与“直接改字号”视为同一操作。

ts
export function formatCurrentText(editor: SkyNoteEditor<HTMLElement>): void {
  editor.textEditor.toggleFormat('bold');
  editor.textEditor.applyStyle({ color: '$text', fontSize: 18 });
  editor.textEditor.setAlign('left');
}

文字格式方法作用于当前格式目标:编辑中有文字选区时影响该范围;空选区可能设置后续输入的样式;没有格式目标时不应假定一定修改了某个节点。字号、颜色、水平对齐和垂直对齐分别处理,垂直对齐只对有固定高度的文字块有意义。

画框 ​

ts
export function addFrame(editor: SkyNoteEditor<HTMLElement>): string | null {
  return editor.engine.documentStore.batch(() => {
    const frame = editor.createNode({
      nodeType: 'frame',
      x: 0,
      y: 0,
      autoWrap: false,
      width: 600,
      height: 360,
      options: { title: '讨论区' }
    });
    if (!frame) return null;
    editor.createNode({ nodeType: 'sticky', parentId: frame, x: 24, y: 24, options: { text: '相对于画框的位置' } });
    return frame;
  }, '创建讨论区');
}

frame的options为title?: string,默认480×320。标题在框外,子节点在框内;支持接收拖入内容,超出外框的子节点按裁剪规则处理。parentId决定归属,子节点坐标相对于画框。

创建画框时autoWrap默认收纳完全落在其中的同层内容。示例显式关闭该行为,再创建指定子节点,避免意外收纳页面原有节点。

setFrameAutoLayout(frameIds, options)用于开启、修改或关闭堆叠布局。启用后部分尺寸和位置由布局控制,宿主应查询可缩放轴,不强行把布局控制的几何覆盖成任意值。

组合 ​

组合没有可见底色,不裁剪成员,也不通过拖入自动收纳。它由groupNodes(ids)把已有节点组合生成,不提供空组合新建流程。

移动组合时成员相对位置保留。取消组合使用ungroupNodes,不是删除;删除组合会级联影响成员。解组和框选行为由真实成员几何决定,不只按空白外框判断。

图片 ​

图片模型使用node.image.assetId引用资产表,fit可为fill/cover/contain/none。低层创建选项包含assetId/intrinsicWidth/intrinsicHeight,但应用通常应调用insertImage(file, point),让宿主适配器完成登记与资源管理。

没有AssetAdapter或对应资产时,不将JSON里的引用当成可显示的图片。加载、解码、重试与导出见文档与媒体API。

常见问题 ​

现象原因与处理
便签文字被省略外框固定;加大尺寸、减少文字或显式适应内容
自由文本初始尺寸异常确认字体测量器已由渲染适配器注入,字体也已可用
修改width后高度跟着变化节点比例锁定或特定缩放策略生效
子节点移到画框外不显示检查父容器与裁剪;需要移出时改变归属,不只改坐标
修改文档对象却没有撤销记录改为调用语义命令,不直接给实体赋值

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