Loading...
XFlow画布组件
<XFlowGraph />
组件只能在 <XFlow />
组件之内方可正常使用
在 <XFlow />
下引入 <XFlowGraph />
后, 其组件内部会将画布的实例保存到 <XFlow />
的 context 中,以供 <XFlow />
的 children 使用, 可以在组件中使用 useGraphInstance Hook 快速获取画布实例
<XFlow>...<XFlowGraph /><XFlow>
画布默认拥有快捷键和框选功能
禁止节点和边的交互
当 readonly
为 false
时候, 如果节点/边的 draggable
属性为 true
的时候, 则节点/边可以进行移动
<XFlowGraph readonly />
通过设置 minScale
maxScale
来设置画布缩放
<XFlowGraph minScale={1} maxScale={10} />
具体的 zoomOptions
配置 可以参考 mousewheel 配置
<XFlowGraphzoomablezoomOptions={{global: true,modifiers: ['ctrl', 'meta'],}}/>
开启画布滚动功能
<XFlowGraph scroller />
开启 pannable
来支持画布拖拽平移, 通过 panOptions
来进行拖拽平移配置。
<XFlowGraphpannablepanOptions={{eventTypes: ['leftMouseDown'],modifiers: ['ctrl']}}/>
panOptions
的配置参数如下:
参数名 | 描述 | 类型 | 默认值 |
---|---|---|---|
modifiers | 配置修饰键, 需要按下修饰键并点击鼠标才能触发画布拖拽 | string | ('alt' | 'ctrl' | 'meta' | 'shift')[] | null | - |
eventTypes | 触发画布平移的交互方式 | ('leftMouseDown' | 'rightMouseDown' | 'mouseWheel', 'mouseWheelDown')[] | - |
拖拽可能和其他操作冲突,此时可以设置 modifiers
参数,设置修饰键后需要按下修饰键并点击鼠标才能触发画布拖拽。
ModifierKey
支持以下几种形式:
alt
表示按下 alt
。[alt, ctrl]
表示按下 alt
或 ctrl
。alt|ctrl
表示按下 alt
或 ctrl
。alt&ctrl
表示同时按下 alt
和 ctrl
。alt|ctrl&shift
表示同时按下 alt
和 shift
或者同时按下 ctrl
和 shift
。eventTypes
支持三种形式或者他们之间的组合:
leftMouseDown
: 按下鼠标左键移动进行拖拽rightMouseDown
: 按下鼠标右键移动进行拖拽mouseWheel
: 使用鼠标滚轮滚动拖拽mouseWheelDown
: 按下鼠标滚轮进行拖拽centerViewOptions
来进行配置。<XFlowGraphcenterViewcenterViewOptions={{padding: { left: 100 }}}fitView/>
centerViewOptions
的配置参数如下:
参数名 | 描述 | 类型 | 默认值 |
---|---|---|---|
padding | 边距,只在 scroller 画布中生效 | number | Padding | |
useCellGeometry | 是否通过节点/边的几何信息(Model)计算内容区域 | boolean | true |
fitView
来进行配置。
fitViewOptions
的配置参数如下: 参数名 | 描述 | 类型 | 默认值 |
---|---|---|---|
padding | 边距 | number | { left: number, top: number, right: number, bottom: number } | - |
contentArea | 内容区域,默认获取画布内容区域 | Rectangle.RectangleLike | - |
viewportArea | 视口区域,默认获取画布视口 | Rectangle.RectangleLike | - |
scaleGrid | 修正缩放比例为 scaleGrid 的整倍数 | number | - |
minScale | 最小缩放比例 | number | - |
maxScale | 最大缩放比例 | number | - |
minScaleX | X 轴方向的最小缩放比例 | number | - |
maxScaleX | X 轴方向的最大缩放比例 | number | - |
minScaleY | Y 轴方向的最小缩放比例 | number | - |
maxScaleY | Y 轴方向的最大缩放比例 | number | - |
preserveAspectRatio | 是否保持长宽比 | boolean | false |
useCellGeometry | 是否使用节点/边的几何信息(Model)计算包围盒 | boolean | true |
将一个节点拖动到另一个节点中,使其成为另一节点的子节点
<XFlowGraphembedableembedOptions={{frontOnly:true,findParent: 'bbox',validate: () => true,}}/>
embedOptions 参数配置如下:
参数名 | 描述 | 类型 | 默认值 |
---|---|---|---|
findParent | 在节点被移动时通过 findParent 指定的方法返回父节点。默认值为 | findParent | bbox |
frontOnly | 如果 frontOnly 为 true ,则只能嵌入显示在最前面的节点 | boolean | true |
validate | validate 为判断节点能否被嵌入父节点的函数 | validate | () => true |
通过配置 restrict
来限制节点移动范围, 通过 restrictOptions 可以指定节点移动范围
<XFlowGraphrestrictrestrictOptions={{bound: {x: 0,y: 0,width: 100,height: 100,},}}/>
restrictOptions 可以指定一个节点的移动范围, 如果没有设置,默认节点不能移动超出画布区域
restrictOptions?: {bound:| Rectangle.RectangleLike| ((arg: CellView | null) => Rectangle.RectangleLike | null);};
配置 connectionOptions
可以实现连线交互, 具体的配置可以参考 连线配置
<XFlowGraphconnectionOptions={{snap: true,allowBlank: false,allowLoop: false,highlight: true,anchor: 'center',router: 'orth',connector: 'rounded',}}/>
注意: 与连线配置不同的是,如果你想要自定义新建的边的样式, 那么需要设置 connectionEdgeOptions
参数,而不是在 connectionOptions
中设置 createEdge
connectionEdgeOptions={{animated: true,draggable: false,selected: false,attrs: {line: {stroke: 'rgb(72, 203, 164)',strokeWidth: 2,targetMarker: {name: 'block',width: 14,height: 10,},},},zIndex: 0,}}
connectionEdgeOptions 参数除了继承 Edge,还额外有 selected
| draggable
| animated
三个属性
export interface EdgeOptions extends Edge.Metadata {selected?: boolean; // 是否被选中draggable?: boolean; // 是否可拖拽animated?: boolean; // 是都展示动画}
指定触发某种交互时节点/边的高亮样式
HighlightManager.Options 有两个参数, name
以及其对应的 args
, name
默认内置了两种高亮器,一种是 stroke, 一种是 className
注意:当 embedHighlightOptions
nodeAvailableHighlightOptions
magnetAvailableHighlightOptions
magnetAdsorbedHighlightOptions
这几种高亮配置缺省时, 默认使用 defaultHighlightOptions
配置
// stroke<XFlowGraphdefaultHighlightOptions={{name: 'stroke',args: {rx: 0,ry: 0,padding: 4,attrs: {'stroke-width': 2,stroke: 'red',},},}}/>// className<XFlowGraphdefaultHighlightOptions={{name: 'className',args: {className: 'x6-highlighted'},}}/>
参数名 | 描述 | 类型 | 默认值 |
---|---|---|---|
style | 语义化结构 style | CSSProperties | - |
classNames | 语义化结构 class | string | - |
readonly | 禁止画布交互 | boolean | false |
virtual | 是否只渲染可视区域内容 | boolean | false |
minScale | 画布的最小缩放级别 | number | 0.01 |
maxScale | 画布的最大缩放级别 | number | 16 | |
zoomable | 是否启用了鼠标滚轮来缩放画布 | boolean | false |
zoomOptions | 启用鼠标滚轮缩放画布的配置 | Omit<MouseWheelOptions, 'enabled'> | - |
pannable | 是否开启画布平移交互 | boolean | false |
panOptions | 开启画布平移交互的配置 | panOptions | - |
centerView | 将画布内容中心与视口中心对齐 | boolean | false |
centerViewOptions | 将画布内容中心与视口中心对齐配置 | centerViewOptions | - |
fitView | 缩放画布内容,使画布内容充满视口 | boolean | false |
fitViewOptions | 缩放画布内容配置 | fitViewOptions | - |
scroller | 是否开启滚动画布功能 | boolean | false |
scrollerOptions | 开启滚动画布功能的配置 | scrollerOptions | - |
connectionOptions | 连线配置 | Omit<Options.Connecting, 'createEdge'> | - |
connectionEdgeOptions | 连线选项中的自定义边 | EdgeOptions | - |
embedable | 是否允许节点之间组合 | boolean | false |
embedOptions | 节点组合配置 | embedOptions | - |
restrict | 是否限制节点的移动范围 | boolean | false |
restrictOptions | 限制节点移动范围配置 | restrict配置 | - |
selectOptions | 框选配置 | Selection配置 | - |
keyboardOptions | 快捷键配置 | Keyboard配置 | - |
defaultHighlightOptions | 默认高亮选项,当以下高亮配置缺省时被使用 | HighlightManager.Options | - |
embedHighlightOptions | 拖动节点进行嵌入操作过程中,节点可以被嵌入时被使用 | HighlightManager.Options | - |
nodeAvailableHighlightOptions | 连线过程中,节点可以被链接时被使用 | HighlightManager.Options | - |
magnetAvailableHighlightOptions | 连线过程中,连接桩可以被链接时被使用 | HighlightManager.Options | - |
magnetAdsorbedHighlightOptions | 连线过程中,自动吸附到连接桩时被使用 | HighlightManager.Options | - |