Skip to content

常用操作 ​

以下代码中的 editor 是已经创建的 SkyNoteEditor。

创建与选择 ​

ts
export function addNote(editor: SkyNoteEditor<HTMLElement>): void {
  const id = editor.insertNodeAtViewportCenter({ nodeType: 'sticky', options: { text: '新的想法' } });
  if (id) editor.select([id]);
}

使用 createNode() 指定世界或父容器局部坐标。使用 insertNodeAtViewportCenter() 可以把新内容放到当前视口中心。

历史与视口 ​

ts
export function showNavigation(editor: SkyNoteEditor<HTMLElement>): void {
  editor.undo();
  editor.redo();
  editor.fitContent();
  editor.applyInitialView('actual-size');
  editor.zoomAt(1.2);
}

上面的函数逐项演示接口用途;实际应用中应由不同按钮分别调用相应操作,而不是把导航与历史串成一个用户命令。

fitContent() 缩放以容纳全部内容,actual-size 保持100%显示。视口操作不产生撤销记录。

观察变化 ​

ts
export function observeSelection(editor: SkyNoteEditor<HTMLElement>, render: (ids: string[]) => void): () => void {
  return editor.onSelectionChange(() => render([...editor.selectedNodeIds]));
}

observeSelection返回解绑函数,页面卸载时调用。传入的render负责更新自己的UI。

文档变更优先使用增量事件。不要在拖动等高频路径反复导出整份文档。

只读与快捷键 ​

ts
export function makeReadOnly(editor: SkyNoteEditor<HTMLElement>): void {
  editor.setReadOnly(true);
}

只读限制文档编辑,仍可导航。快捷键在画布持有焦点时生效:双击编辑文字,空格拖动或中键平移,Ctrl/⌘ + Z 撤销,Shift + 1 适配内容。输入法组合输入期间不会触发快捷键。

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