another @antv/x6
html shape, using single-spa
life cycle hook.
扩展@antv/x6
内置html
节点,使用类似single-spa
的生命周期钩子
- 这里参照
single-spa
的接口,只使用了其中的mount
+unmount
,这样抽象带来的好处不仅限于react
/vue
,也可以使用其他框架实现自定义节点 - 不管用户使用什么框架实现自定义节点,都可以在传递进来的
mount
函数里面拿到node
监听change:data
事件更新自己的UI,实现一些自定义的交互逻辑 - 这里注册的
HTML2.View
(html2-view
)针对一些可点击的html组件屏蔽了onMouseUp
+onMouseDown
避免这两个事件触发x6
内部的选择和拖拽逻辑
- 将x6的各种
shape
注册成原生的vue
组件使用(核心思想是把x6退化成一个view
开发者自己处理数据扭转) - 同时支持使用
react
自定义节点(内部有使用一个DataWatcher
自动监听change:data
) - 初始版本是使用
@antv/x6-react-shape
来自定义节点,但是后来换成使用antv-x6-html2
- 内置一个默认的Portal,会在
Portal.getProvider()
返回的这个组件挂载的时候,自动使用portal渲染所有的自定义组件 - 有实现一些常用的组件
Background
,Clipboard
,Grid
,Mousewheel
,Selection
,Snapline
,MiniMap
,ContextMenu
等widgets
- 基础示例使用了
antd
的InputNumber
(一个带按钮的输入框)展示了自定义组件如何做到和x6做数据交互 - swimlane 泳道图参照
x6
官方示例实现 - DAG画布参照
x6
官方的DAG示例实现AlgoNode
的节点逻辑与官方示例相比较处理起来更简单 - ER图参照
x6
官方的ER图示例 - 展开收起树形图参照
x6
官方的示例
- 这个库实现的功能和antv-x6-react基本一致
当前还是使用@antv/x6-vue-shape
实现的,后续也会切换到antv-x6-html2
这边- 已经切换使用
antv-x6-html2
- DAG画布参照
x6
官方的DAG示例实现AlgoNode
的节点逻辑与官方示例相比较处理起来更简单