MMEditor

事件与交互模型

MMEditor 当前的事件主要分为 editor 层和 graph 层。一般原则是:

editor 层事件

这些事件通过 editor.on 监听。

最小示例:

editor.on("load", (data) => {
  console.log("loaded", data);
});

editor.on("format", ({ data }) => {
  console.log("formatted", data);
});

editor.on("zoom", (payload) => {
  console.log("zoom", payload?.scale, editor.controller.scale);
});

graph 层事件

这些事件通过 editor.graph.on 监听。

画布与渲染

节点

连线

键盘与编辑行为

常见监听方式

选择节点并同步右侧面板:

editor.graph.on("node:click", ({ node }) => {
  console.log("active node", node.data);
});

editor.graph.on("node:unactive", () => {
  console.log("clear active node");
});

在创建连线前替换线型:

editor.graph.on("line:beforeadd", ({ data }) => {
  data.type = "forceLine";
});

在布局或拖动后同步外部状态:

editor.on("format", () => {
  save(editor.schema.getData());
});

editor.on("panning", () => {
  updateViewport(editor.controller.scale);
});

触发时机建议

注意事项

相关源码