Skip to content
目录

@xyflow/system 核心系统

@xyflow/system框架无关 层:几何、图算法、变更归约、指针逻辑。React/Svelte 包只做绑定与渲染。


1. 模块地图

模块职责
XYPanZoomviewport 变换、约束、事件
XYDrag节点/选择拖拽
XYHandle连接点命中与校验
applyNodeChanges / applyEdgeChanges将 change 列表归约到数组
边路径贝塞尔、平滑步进等
图工具连接性、边界框、fitView 计算等

2. 为何依赖 d3

  • d3-zoomd3-drag 成熟处理指针与变换。
  • system 封装后,框架层不直接散落 d3 调用。

3. 变更(Change)模型

用户交互不产生「新 nodes 数组」的隐式魔法,而是:

  1. 交互层生成 NodeChange[](type: position/select/remove/…)
  2. applyNodeChanges(changes, nodes) 得到下一状态
  3. 可选同步到 React props

利于 时间旅行、协同、撤销重做 扩展。


4. 测试与发布

  • system 包可单测纯函数。
  • v12 起独立版本号,React 包依赖其 semver。

07-v12重构


5. 总结

改 bug 或加交互时,先判断属 system 还是 react 绑定;几何/变更归约优先查 system。

MIT License.