Skip to content

剪切板 Clipboard

剪切板用于复制/粘贴节点和边,并支持跨画布的复制/粘贴,创建画布时通过以下配置启用。

js
const netGraph = new NetPlanGraph({
  clipboard: true,
})

// 等同于
const netGraph = new NetPlanGraph({
  clipboard: {
    enabled: true,
  }
})

创建画布后,可以调用 graph.enableClipboard() 和 graph.disableClipboard() 来启用和禁用剪贴板。

js
if (netGraph.isClipboardEnabled()) {
  netGraph.disableClipboard()
} else {
  netGraph.enableClipboard()
}

持久化

开启 useLocalStorage 后,被复制的节点/边同时被保存到 localStorage 中,浏览器刷新或者关闭后重新打开,复制/粘贴也能正常工作。

可以在创建画布时全局开启。

js
const netGraph = new NetPlanGraph({
  clipboard: {
    enabled: true,
    useLocalStorage: true,
  }
})

也可以在调用以下三个方法时开启。

  • netGraph.copy(cells: Cell[], options: CopyOptions = {})
  • netGraph.cut(cells: Cell[], options: CopyOptions = {})
  • netGraph.paste(options: PasteOptions = {}, targetGraph: Graph = this)

例如:

js
netGraph.copy(cells, {
  useLocalStorage: true,
})

演示

  • 选中节点后,点击复制按钮复制节点。
  • 设置不同的 offset,观察粘贴时对节点位置的影响。
  • 启用 localStorage 后复制节点,刷新页面或重新打开浏览器后,点击粘贴按钮。

API

netGraph.copy(...)

复制节点/边。

netGraph.cut(...)

剪切节点/边。

netGraph.paste(...)

粘贴,返回粘贴到画布的节点/边。

netGraph.getCellsInClipboard()

获取剪切板中的节点/边。

netGraph.cleanClipboard()

清空剪切板。

netGraph.isClipboardEmpty()

返回剪切板是否为空。

netGraph.isClipboardEnabled()

返回是否启用了剪切板。

netGraph.enableClipboard()

启用剪切板。

netGraph.disableClipboard()

禁用剪切板。

netGraph.toggleClipboard(...)

切换剪切板的启用状态。

事件

clipboard:changed

复制、剪切、清空剪切板时触发。

js
netGraph.on('clipboard:changed', ({cells}) => { 
  // code here
})

Released under the MIT License.