@logicflow/core 2.2.0 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/api/logicflow-constructor/index.en.md +106 -0
- package/dist/docs/api/logicflow-constructor/index.zh.md +106 -0
- package/dist/docs/api/logicflow-constructor/use.en.md +61 -0
- package/dist/docs/api/logicflow-constructor/use.zh.md +61 -0
- package/dist/docs/api/logicflow-instance/canvas.en.md +197 -0
- package/dist/docs/api/logicflow-instance/canvas.zh.md +199 -0
- package/dist/docs/api/logicflow-instance/edge.en.md +273 -0
- package/dist/docs/api/logicflow-instance/edge.zh.md +273 -0
- package/dist/docs/api/logicflow-instance/edit-config.en.md +59 -0
- package/dist/docs/api/logicflow-instance/edit-config.zh.md +59 -0
- package/dist/docs/api/logicflow-instance/element.en.md +375 -0
- package/dist/docs/api/logicflow-instance/element.zh.md +379 -0
- package/dist/docs/api/logicflow-instance/event.en.md +326 -0
- package/dist/docs/api/logicflow-instance/event.zh.md +406 -0
- package/dist/docs/api/logicflow-instance/history.en.md +38 -0
- package/dist/docs/api/logicflow-instance/history.zh.md +38 -0
- package/dist/docs/api/logicflow-instance/index.en.md +41 -0
- package/dist/docs/api/logicflow-instance/index.zh.md +41 -0
- package/dist/docs/api/logicflow-instance/node.en.md +308 -0
- package/dist/docs/api/logicflow-instance/node.zh.md +308 -0
- package/dist/docs/api/logicflow-instance/register.en.md +76 -0
- package/dist/docs/api/logicflow-instance/register.zh.md +76 -0
- package/dist/docs/api/logicflow-instance/render-and-data.en.md +179 -0
- package/dist/docs/api/logicflow-instance/render-and-data.zh.md +181 -0
- package/dist/docs/api/logicflow-instance/text.en.md +60 -0
- package/dist/docs/api/logicflow-instance/text.zh.md +60 -0
- package/dist/docs/api/logicflow-instance/theme.en.md +179 -0
- package/dist/docs/api/logicflow-instance/theme.zh.md +179 -0
- package/dist/docs/api/runtime-model/edgeModel.en.md +29 -0
- package/dist/docs/api/runtime-model/edgeModel.zh.md +325 -0
- package/dist/docs/api/runtime-model/graphModel.en.md +275 -0
- package/dist/docs/api/runtime-model/graphModel.zh.md +1153 -0
- package/dist/docs/api/runtime-model/nodeModel.en.md +37 -0
- package/dist/docs/api/runtime-model/nodeModel.zh.md +644 -0
- package/dist/docs/api/type/MainTypes.en.md +598 -0
- package/dist/docs/api/type/MainTypes.zh.md +867 -0
- package/dist/docs/api/type/Theme.en.md +187 -0
- package/dist/docs/api/type/Theme.zh.md +187 -0
- package/dist/docs/api/type/canvas-types.en.md +25 -0
- package/dist/docs/api/type/canvas-types.zh.md +25 -0
- package/dist/docs/api/type/index.en.md +96 -0
- package/dist/docs/api/type/index.zh.md +99 -0
- package/dist/docs/api/type/node-types.en.md +21 -0
- package/dist/docs/api/type/node-types.zh.md +21 -0
- package/dist/docs/api/type/plugin-types.en.md +24 -0
- package/dist/docs/api/type/plugin-types.zh.md +24 -0
- package/dist/docs/index.md +11 -0
- package/dist/docs/tutorial/about.en.md +38 -0
- package/dist/docs/tutorial/about.zh.md +65 -0
- package/dist/docs/tutorial/advanced/dnd.en.md +62 -0
- package/dist/docs/tutorial/advanced/dnd.zh.md +52 -0
- package/dist/docs/tutorial/advanced/edge.en.md +64 -0
- package/dist/docs/tutorial/advanced/edge.zh.md +66 -0
- package/dist/docs/tutorial/advanced/keyboard.en.md +70 -0
- package/dist/docs/tutorial/advanced/keyboard.zh.md +67 -0
- package/dist/docs/tutorial/advanced/node.en.md +338 -0
- package/dist/docs/tutorial/advanced/node.zh.md +338 -0
- package/dist/docs/tutorial/advanced/react.en.md +106 -0
- package/dist/docs/tutorial/advanced/react.zh.md +114 -0
- package/dist/docs/tutorial/advanced/silent-mode.en.md +75 -0
- package/dist/docs/tutorial/advanced/silent-mode.zh.md +71 -0
- package/dist/docs/tutorial/advanced/snapline.en.md +54 -0
- package/dist/docs/tutorial/advanced/vue.en.md +249 -0
- package/dist/docs/tutorial/advanced/vue.zh.md +248 -0
- package/dist/docs/tutorial/ai.en.md +64 -0
- package/dist/docs/tutorial/ai.zh.md +64 -0
- package/dist/docs/tutorial/basic/background.en.md +50 -0
- package/dist/docs/tutorial/basic/canvas.en.md +164 -0
- package/dist/docs/tutorial/basic/canvas.zh.md +183 -0
- package/dist/docs/tutorial/basic/class.en.md +106 -0
- package/dist/docs/tutorial/basic/class.zh.md +103 -0
- package/dist/docs/tutorial/basic/edge.en.md +151 -0
- package/dist/docs/tutorial/basic/edge.zh.md +152 -0
- package/dist/docs/tutorial/basic/event.en.md +70 -0
- package/dist/docs/tutorial/basic/event.zh.md +66 -0
- package/dist/docs/tutorial/basic/grid.en.md +77 -0
- package/dist/docs/tutorial/basic/node.en.md +358 -0
- package/dist/docs/tutorial/basic/node.zh.md +318 -0
- package/dist/docs/tutorial/basic/theme.en.md +154 -0
- package/dist/docs/tutorial/basic/theme.zh.md +157 -0
- package/dist/docs/tutorial/extension/adapter.en.md +446 -0
- package/dist/docs/tutorial/extension/adapter.zh.md +429 -0
- package/dist/docs/tutorial/extension/bpmn-element.en.md +1427 -0
- package/dist/docs/tutorial/extension/bpmn-element.zh.md +1472 -0
- package/dist/docs/tutorial/extension/control.en.md +117 -0
- package/dist/docs/tutorial/extension/control.zh.md +118 -0
- package/dist/docs/tutorial/extension/curved-edge.en.md +46 -0
- package/dist/docs/tutorial/extension/curved-edge.zh.md +46 -0
- package/dist/docs/tutorial/extension/custom.en.md +142 -0
- package/dist/docs/tutorial/extension/custom.zh.md +138 -0
- package/dist/docs/tutorial/extension/dnd-panel.en.md +109 -0
- package/dist/docs/tutorial/extension/dnd-panel.zh.md +109 -0
- package/dist/docs/tutorial/extension/dynamic-group.en.md +606 -0
- package/dist/docs/tutorial/extension/dynamic-group.zh.md +606 -0
- package/dist/docs/tutorial/extension/group.en.md +217 -0
- package/dist/docs/tutorial/extension/group.zh.md +209 -0
- package/dist/docs/tutorial/extension/highlight.en.md +50 -0
- package/dist/docs/tutorial/extension/highlight.zh.md +50 -0
- package/dist/docs/tutorial/extension/insert-node-in-polyline.en.md +52 -0
- package/dist/docs/tutorial/extension/insert-node-in-polyline.zh.md +47 -0
- package/dist/docs/tutorial/extension/intro.en.md +72 -0
- package/dist/docs/tutorial/extension/intro.zh.md +95 -0
- package/dist/docs/tutorial/extension/label.en.md +136 -0
- package/dist/docs/tutorial/extension/label.zh.md +135 -0
- package/dist/docs/tutorial/extension/layout.en.md +156 -0
- package/dist/docs/tutorial/extension/layout.zh.md +156 -0
- package/dist/docs/tutorial/extension/menu.en.md +319 -0
- package/dist/docs/tutorial/extension/menu.zh.md +377 -0
- package/dist/docs/tutorial/extension/minimap.en.md +164 -0
- package/dist/docs/tutorial/extension/minimap.zh.md +180 -0
- package/dist/docs/tutorial/extension/node-resize.en.md +199 -0
- package/dist/docs/tutorial/extension/node-resize.zh.md +221 -0
- package/dist/docs/tutorial/extension/pool.en.md +227 -0
- package/dist/docs/tutorial/extension/pool.zh.md +227 -0
- package/dist/docs/tutorial/extension/proximity-connect.en.md +104 -0
- package/dist/docs/tutorial/extension/proximity-connect.zh.md +107 -0
- package/dist/docs/tutorial/extension/selection.en.md +166 -0
- package/dist/docs/tutorial/extension/selection.zh.md +150 -0
- package/dist/docs/tutorial/extension/snapshot.en.md +276 -0
- package/dist/docs/tutorial/extension/snapshot.zh.md +276 -0
- package/dist/docs/tutorial/get-started.en.md +501 -0
- package/dist/docs/tutorial/get-started.zh.md +139 -0
- package/dist/docs/tutorial/update.en.md +213 -0
- package/dist/docs/tutorial/update.zh.md +212 -0
- package/dist/index.css +3 -2
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/es/LogicFlow.d.ts +9 -0
- package/es/LogicFlow.js +0 -1
- package/es/constant/index.d.ts +1 -1
- package/es/constant/index.js +1 -1
- package/es/constant/theme.d.ts +136 -0
- package/es/constant/theme.js +680 -0
- package/es/index.css +3 -2
- package/es/model/GraphModel.d.ts +10 -2
- package/es/model/GraphModel.js +48 -14
- package/es/model/TransformModel.js +9 -9
- package/es/model/edge/BaseEdgeModel.js +7 -2
- package/es/model/edge/PolylineEdgeModel.d.ts +7 -0
- package/es/model/edge/PolylineEdgeModel.js +136 -7
- package/es/model/node/BaseNodeModel.d.ts +12 -1
- package/es/model/node/BaseNodeModel.js +9 -2
- package/es/model/node/HtmlNodeModel.d.ts +12 -0
- package/es/model/node/HtmlNodeModel.js +19 -0
- package/es/model/node/PolygonNodeModel.js +3 -3
- package/es/options.d.ts +4 -2
- package/es/style/index.css +3 -2
- package/es/style/index.less +3 -2
- package/es/style/raw.d.ts +1 -1
- package/es/style/raw.js +1 -1
- package/es/tool/MultipleSelectTool.js +10 -5
- package/es/util/drag.js +0 -1
- package/es/util/edge.d.ts +40 -1
- package/es/util/edge.js +43 -9
- package/es/util/geometry.d.ts +8 -0
- package/es/util/geometry.js +79 -0
- package/es/util/theme.d.ts +2 -65
- package/es/util/theme.js +4 -281
- package/es/view/Anchor.d.ts +1 -0
- package/es/view/Anchor.js +24 -21
- package/es/view/Control.d.ts +5 -0
- package/es/view/Control.js +44 -57
- package/es/view/edge/BaseEdge.js +9 -0
- package/es/view/edge/PolylineEdge.js +13 -2
- package/es/view/node/BaseNode.d.ts +1 -0
- package/es/view/node/BaseNode.js +23 -11
- package/es/view/node/HtmlNode.js +2 -4
- package/es/view/overlay/CanvasOverlay.js +5 -2
- package/es/view/overlay/Grid.d.ts +12 -1
- package/es/view/overlay/Grid.js +85 -23
- package/es/view/overlay/OutlineOverlay.d.ts +1 -0
- package/es/view/overlay/OutlineOverlay.js +18 -17
- package/es/view/overlay/gridConfig.d.ts +46 -0
- package/es/view/overlay/gridConfig.js +99 -0
- package/es/view/shape/Polygon.d.ts +0 -7
- package/es/view/shape/Polygon.js +12 -43
- package/lib/LogicFlow.d.ts +9 -0
- package/lib/LogicFlow.js +0 -1
- package/lib/constant/index.d.ts +1 -1
- package/lib/constant/index.js +16 -2
- package/lib/constant/theme.d.ts +136 -0
- package/lib/constant/theme.js +683 -0
- package/lib/index.css +3 -2
- package/lib/model/GraphModel.d.ts +10 -2
- package/lib/model/GraphModel.js +49 -15
- package/lib/model/TransformModel.js +9 -9
- package/lib/model/edge/BaseEdgeModel.js +7 -2
- package/lib/model/edge/PolylineEdgeModel.d.ts +7 -0
- package/lib/model/edge/PolylineEdgeModel.js +136 -7
- package/lib/model/node/BaseNodeModel.d.ts +12 -1
- package/lib/model/node/BaseNodeModel.js +9 -2
- package/lib/model/node/HtmlNodeModel.d.ts +12 -0
- package/lib/model/node/HtmlNodeModel.js +19 -0
- package/lib/model/node/PolygonNodeModel.js +3 -3
- package/lib/options.d.ts +4 -2
- package/lib/style/index.css +3 -2
- package/lib/style/index.less +3 -2
- package/lib/style/raw.d.ts +1 -1
- package/lib/style/raw.js +1 -1
- package/lib/tool/MultipleSelectTool.js +10 -5
- package/lib/util/drag.js +0 -1
- package/lib/util/edge.d.ts +40 -1
- package/lib/util/edge.js +43 -9
- package/lib/util/geometry.d.ts +8 -0
- package/lib/util/geometry.js +81 -1
- package/lib/util/theme.d.ts +2 -65
- package/lib/util/theme.js +15 -292
- package/lib/view/Anchor.d.ts +1 -0
- package/lib/view/Anchor.js +24 -21
- package/lib/view/Control.d.ts +5 -0
- package/lib/view/Control.js +44 -57
- package/lib/view/edge/BaseEdge.js +9 -0
- package/lib/view/edge/PolylineEdge.js +13 -2
- package/lib/view/node/BaseNode.d.ts +1 -0
- package/lib/view/node/BaseNode.js +22 -10
- package/lib/view/node/HtmlNode.js +1 -3
- package/lib/view/overlay/CanvasOverlay.js +5 -2
- package/lib/view/overlay/Grid.d.ts +12 -1
- package/lib/view/overlay/Grid.js +83 -21
- package/lib/view/overlay/OutlineOverlay.d.ts +1 -0
- package/lib/view/overlay/OutlineOverlay.js +18 -17
- package/lib/view/overlay/gridConfig.d.ts +46 -0
- package/lib/view/overlay/gridConfig.js +104 -0
- package/lib/view/shape/Polygon.d.ts +0 -7
- package/lib/view/shape/Polygon.js +13 -45
- package/package.json +9 -2
- package/scripts/postinstall-ai-prompt.js +67 -0
- package/.turbo/turbo-build$colon$dev.log +0 -10
- package/.turbo/turbo-build.log +0 -33
- package/CHANGELOG.md +0 -1849
- package/__tests__/algorithm/egde.test.ts +0 -131
- package/__tests__/algorithm/index.test.ts +0 -74
- package/__tests__/algorithm/outline.test.ts +0 -43
- package/__tests__/bugs/1545-spec.test.ts +0 -42
- package/__tests__/event/event.test.ts +0 -22
- package/__tests__/history/history.test.ts +0 -28
- package/__tests__/logicflow.test.ts +0 -575
- package/__tests__/model/graphmodel.test.ts +0 -87
- package/__tests__/util/compatible.test.ts +0 -48
- package/__tests__/util/edge.test.ts +0 -224
- package/__tests__/util/geometry.test.ts +0 -14
- package/__tests__/util/graph.test.ts +0 -16
- package/__tests__/util/matrix.test.ts +0 -41
- package/__tests__/util/node.test.ts +0 -68
- package/__tests__/util/sampling.test.ts +0 -12
- package/__tests__/util/vector.test.ts +0 -50
- package/__tests__/util/zIndex.test.ts +0 -10
- package/src/LogicFlow.tsx +0 -2008
- package/src/algorithm/edge.ts +0 -67
- package/src/algorithm/index.ts +0 -70
- package/src/algorithm/outline.ts +0 -77
- package/src/algorithm/rotate.ts +0 -55
- package/src/common/drag.ts +0 -219
- package/src/common/history.ts +0 -108
- package/src/common/index.ts +0 -6
- package/src/common/keyboard.ts +0 -108
- package/src/common/matrix.ts +0 -122
- package/src/common/vector.ts +0 -93
- package/src/constant/index.ts +0 -179
- package/src/event/event.md +0 -66
- package/src/event/eventArgs.ts +0 -643
- package/src/event/eventEmitter.ts +0 -156
- package/src/history/index.ts +0 -119
- package/src/index.less +0 -1
- package/src/index.ts +0 -26
- package/src/keyboard/index.ts +0 -112
- package/src/keyboard/shortcut.ts +0 -200
- package/src/model/BaseModel.ts +0 -250
- package/src/model/EditConfigModel.ts +0 -334
- package/src/model/GraphModel.ts +0 -1788
- package/src/model/NestedTransformModel.ts +0 -121
- package/src/model/SnaplineModel.ts +0 -256
- package/src/model/TransformModel.ts +0 -258
- package/src/model/edge/BaseEdgeModel.ts +0 -777
- package/src/model/edge/BezierEdgeModel.ts +0 -197
- package/src/model/edge/LineEdgeModel.ts +0 -36
- package/src/model/edge/PolylineEdgeModel.ts +0 -672
- package/src/model/edge/index.ts +0 -4
- package/src/model/index.ts +0 -9
- package/src/model/node/BaseNodeModel.ts +0 -949
- package/src/model/node/CircleNodeModel.ts +0 -91
- package/src/model/node/DiamondNodeModel.ts +0 -132
- package/src/model/node/EllipseNodeModel.ts +0 -98
- package/src/model/node/HtmlNodeModel.ts +0 -50
- package/src/model/node/PolygonNodeModel.ts +0 -150
- package/src/model/node/RectNodeModel.ts +0 -69
- package/src/model/node/TextNodeModel.ts +0 -54
- package/src/model/node/index.ts +0 -8
- package/src/options.ts +0 -145
- package/src/style/index.less +0 -261
- package/src/style/raw.ts +0 -220
- package/src/tool/MultipleSelectTool.tsx +0 -132
- package/src/tool/TextEditTool.tsx +0 -193
- package/src/tool/index.ts +0 -101
- package/src/typings.d.ts +0 -5
- package/src/util/animation.ts +0 -29
- package/src/util/browser.ts +0 -4
- package/src/util/compatible.ts +0 -15
- package/src/util/drag.ts +0 -220
- package/src/util/edge.ts +0 -1060
- package/src/util/geometry.ts +0 -55
- package/src/util/graph.ts +0 -46
- package/src/util/index.ts +0 -17
- package/src/util/matrix.ts +0 -129
- package/src/util/mobx.ts +0 -23
- package/src/util/node.ts +0 -543
- package/src/util/raf.ts +0 -28
- package/src/util/resize.ts +0 -606
- package/src/util/sampling.ts +0 -85
- package/src/util/theme.ts +0 -375
- package/src/util/uuid.ts +0 -26
- package/src/util/vector.ts +0 -93
- package/src/util/zIndex.ts +0 -6
- package/src/view/Anchor.tsx +0 -445
- package/src/view/Control.tsx +0 -512
- package/src/view/Graph.tsx +0 -141
- package/src/view/Rotate.tsx +0 -113
- package/src/view/behavior/dnd.ts +0 -162
- package/src/view/behavior/index.ts +0 -2
- package/src/view/behavior/snapline.ts +0 -16
- package/src/view/edge/AdjustPoint.tsx +0 -425
- package/src/view/edge/Arrow.tsx +0 -54
- package/src/view/edge/BaseEdge.tsx +0 -650
- package/src/view/edge/BezierEdge.tsx +0 -101
- package/src/view/edge/LineEdge.tsx +0 -81
- package/src/view/edge/PolylineEdge.tsx +0 -299
- package/src/view/edge/index.ts +0 -6
- package/src/view/index.ts +0 -8
- package/src/view/node/BaseNode.tsx +0 -571
- package/src/view/node/CircleNode.tsx +0 -21
- package/src/view/node/DiamondNode.tsx +0 -24
- package/src/view/node/EllipseNode.tsx +0 -22
- package/src/view/node/HtmlNode.tsx +0 -95
- package/src/view/node/PolygonNode.tsx +0 -28
- package/src/view/node/RectNode.tsx +0 -30
- package/src/view/node/TextNode.tsx +0 -39
- package/src/view/node/index.ts +0 -8
- package/src/view/overlay/BackgroundOverlay.tsx +0 -34
- package/src/view/overlay/BezierAdjustOverlay.tsx +0 -150
- package/src/view/overlay/CanvasOverlay.tsx +0 -288
- package/src/view/overlay/Grid.tsx +0 -162
- package/src/view/overlay/ModificationOverlay.tsx +0 -31
- package/src/view/overlay/OutlineOverlay.tsx +0 -170
- package/src/view/overlay/SnaplineOverlay.tsx +0 -44
- package/src/view/overlay/ToolOverlay.tsx +0 -65
- package/src/view/overlay/getTransformHoc.tsx +0 -50
- package/src/view/overlay/index.ts +0 -8
- package/src/view/shape/Circle.tsx +0 -41
- package/src/view/shape/Ellipse.tsx +0 -42
- package/src/view/shape/Line.tsx +0 -39
- package/src/view/shape/Path.tsx +0 -22
- package/src/view/shape/Polygon.tsx +0 -91
- package/src/view/shape/Polyline.tsx +0 -31
- package/src/view/shape/Rect.tsx +0 -44
- package/src/view/shape/Text.tsx +0 -169
- package/src/view/shape/index.ts +0 -8
- package/src/view/text/BaseText.tsx +0 -134
- package/src/view/text/LineText.tsx +0 -168
- package/src/view/text/index.ts +0 -2
- package/stats.html +0 -4842
- package/tsconfig.json +0 -18
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
---
|
|
2
|
+
nav: API
|
|
3
|
+
group:
|
|
4
|
+
title: 运行时 Model
|
|
5
|
+
order: 3
|
|
6
|
+
title: edgeModel
|
|
7
|
+
toc: content
|
|
8
|
+
order: 14
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<style>
|
|
12
|
+
table td:first-of-type {
|
|
13
|
+
word-break: normal;
|
|
14
|
+
}
|
|
15
|
+
</style>
|
|
16
|
+
|
|
17
|
+
LogicFlow 中所有的边都会有一个 edgeModel 与其对应。由于数据驱动视图的机制,我们对边的所有操作事实上就是对
|
|
18
|
+
model 的操作。大多数情况下,我们不建议直接对 edgeModel 的属性进行赋值操作,而是调用 model
|
|
19
|
+
或者[graphModel](./graphModel.zh.md)上提供的方法。
|
|
20
|
+
|
|
21
|
+
## 数据属性
|
|
22
|
+
|
|
23
|
+
边的数据属性是指在 LogicFlow 流程图保存时,保存边的数据。
|
|
24
|
+
|
|
25
|
+
| 名称 | 类型 | 是否必须 | 描述 |
|
|
26
|
+
|:-------------|:--------------|:-----|:-------------------------------------|
|
|
27
|
+
| id | string | ✅ | 边 id |
|
|
28
|
+
| type | string | ✅ | 边类型 |
|
|
29
|
+
| sourceNodeId | string | ✅ | 开始节点 Id |
|
|
30
|
+
| targetNodeId | string | ✅ | 结束节点 Id |
|
|
31
|
+
| startPoint | Point | ✅ | 边的开始坐标 |
|
|
32
|
+
| endPoint | Point | ✅ | 边的结束坐标 |
|
|
33
|
+
| text | Object/string | | 边文本 |
|
|
34
|
+
| points | string | | 控制边的轨迹 |
|
|
35
|
+
| pointsList | Array | | 控制边的轨迹,`polyline`和`bezier`有,`line`没有 |
|
|
36
|
+
| properties | Object | | 边的自定义属性 |
|
|
37
|
+
|
|
38
|
+
## 状态属性
|
|
39
|
+
|
|
40
|
+
一般用于自定义边的时候,基于状态属性进行更细粒度的样式显示。
|
|
41
|
+
|
|
42
|
+
| 名称 | 类型 | 是否必须 | 描述 |
|
|
43
|
+
|:------------------|:--------|:-----|:-----------------|
|
|
44
|
+
| isSelected | boolean | ✅ | 边是否被选中 |
|
|
45
|
+
| isHovered | boolean | ✅ | 边是否在 hover 状态 |
|
|
46
|
+
| isHitable | boolean | ✅ | 边是否可点击 |
|
|
47
|
+
| draggable | boolean | ✅ | 边是否可拖动 |
|
|
48
|
+
| isDragging | boolean | ✅ | 边是否正在拖动 |
|
|
49
|
+
| isAnimation | boolean | ✅ | 边是否有动画 |
|
|
50
|
+
| isShowAdjustPoint | boolean | ✅ | 边是否显示边两端的调整点 |
|
|
51
|
+
| visible | boolean | ✅ | 边是否显示, `1.1.0`新增 |
|
|
52
|
+
|
|
53
|
+
## 形状属性
|
|
54
|
+
|
|
55
|
+
一般用于自定义边的时候,形状属性可以通过`setAttributes`来设置。
|
|
56
|
+
|
|
57
|
+
| 名称 | 类型 | 是否必须 | 描述 |
|
|
58
|
+
|:-------|:-------|:-----|:-----------------------------------------------|
|
|
59
|
+
| offset | number | | polyline 表示折线转折点基于节点的距离。 bezier 表示控制曲线调整手柄的长度。 |
|
|
60
|
+
|
|
61
|
+
## 其它属性
|
|
62
|
+
|
|
63
|
+
LogicFlow 在`model`上还维护一些属性,开发者可以通过这些属性拿到一些信息。例如拿到`graphModel`,
|
|
64
|
+
节点的基础`model`类型等。
|
|
65
|
+
|
|
66
|
+
| 名称 | 类型 | 是否必须 | 描述 |
|
|
67
|
+
|:-------------------|:------------------------------|:-----|:------------------------------------------------------------------------------------------------------------------------------------------|
|
|
68
|
+
| graphModel | `GraphModel` | ✅ | 整个画布对应的 model,[详情见](./graphModel.zh.md) |
|
|
69
|
+
| zIndex | number | ✅ | 节点在 z 轴的高度,元素重合时,zIndex 高的在上面。默认为 0 |
|
|
70
|
+
| state | number | ✅ | 元素状态,不同的状态对应着元素显示效果。DEFAULT = 1 默认显示;TEXT_EDIT = 2 此元素正在进行文本编辑;ALLOW_CONNECT = 4, 此元素允许作为当前边的目标节点;NOT_ALLOW_CONNECT = 5, 此元素不允许作为当前边的目标节点 |
|
|
71
|
+
| BaseType | string | ✅ | 当前 model 的基础类型,对于边,则固定为`edge`。主要用在节点和边混合的时候识别此`model`是节点还是边。 |
|
|
72
|
+
| modelType | string | ✅ | 当前 model 的类型,可取值有`edge`,`polyline`,`bezier`,`line` |
|
|
73
|
+
| sourceAnchorId | string | - | 连线起点锚点 id |
|
|
74
|
+
| additionStateData | `Model.AdditionStateDataType` | - | 传递的额外值 |
|
|
75
|
+
| targetAnchorId | string | - | 连线终点锚点 id |
|
|
76
|
+
| customTextPosition | boolean | - | 自定义连线文本位置 |
|
|
77
|
+
| style | `LogicFlow.CommonTheme` | - | 边的样式 |
|
|
78
|
+
| arrowConfig | `{markerStart, markerEnd}` | - | 箭头属性 |
|
|
79
|
+
| virtual | boolean | - | 是否为虚拟连线,默认 false。当为 true 时导出数据不会包含此元素。 `v1.1.24` |
|
|
80
|
+
|
|
81
|
+
## 样式属性
|
|
82
|
+
|
|
83
|
+
LogicFlow 所有的边最终都是以 SVG DOM 的方式渲染。svg 的样式相关属性都不会直接存在`edgeModel`。当开发者想要对
|
|
84
|
+
SVG DOM 添加更多的 <a href="https://developer.mozilla.org/zh-CN/docs/Web/SVG/Attribute" target="_blank">svg 属性</a>
|
|
85
|
+
时,可以通过重写`edgeModel`上获取边样式属性方法来实现。
|
|
86
|
+
|
|
87
|
+
## getEdgeStyle
|
|
88
|
+
|
|
89
|
+
支持重写,自定义边样式属性。默认为[主题(Theme 类型说明)](../logicflow-instance/theme.zh.md)
|
|
90
|
+
|
|
91
|
+
```tsx | pure
|
|
92
|
+
class SequenceFlowModel extends PolylineModel {
|
|
93
|
+
getEdgeStyle() {
|
|
94
|
+
const style = super.getEdgeStyle();
|
|
95
|
+
style.stroke = "blue";
|
|
96
|
+
style.strokeDasharray = "3 3";
|
|
97
|
+
return style;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## getAdjustPointStyle
|
|
103
|
+
|
|
104
|
+
自定义边调整点样式 (在 isShowAdjustPoint 为 true 时会显示调整点)
|
|
105
|
+
|
|
106
|
+
返回值: `LogicFlow.CircleTheme`
|
|
107
|
+
|
|
108
|
+
## getAnimation
|
|
109
|
+
|
|
110
|
+
支持重写,自定义边的流向动画
|
|
111
|
+
|
|
112
|
+
```tsx | pure
|
|
113
|
+
class CustomBezierModel extends BezierEdgeModel {
|
|
114
|
+
getAnimation() {
|
|
115
|
+
const animation = super.getAnimation();
|
|
116
|
+
animation.stroke = "blue";
|
|
117
|
+
return animation;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## getTextStyle
|
|
123
|
+
|
|
124
|
+
支持重写,自定义边文本样式属性,默认为[主题(Theme 类型说明)](../logicflow-instance/theme.zh.md)
|
|
125
|
+
|
|
126
|
+
```tsx | pure
|
|
127
|
+
class SequenceFlowModel extends PolylineModel {
|
|
128
|
+
getTextStyle() {
|
|
129
|
+
const style = super.getTextStyle();
|
|
130
|
+
style.color = "blue";
|
|
131
|
+
style.fontSize = "20";
|
|
132
|
+
return style;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## getEdgeAnimationStyle
|
|
138
|
+
|
|
139
|
+
自定义边动画样式
|
|
140
|
+
|
|
141
|
+
返回值:`LogicFlow.EdgeAnimation`
|
|
142
|
+
|
|
143
|
+
```tsx | pure
|
|
144
|
+
getEdgeAnimationStyle()
|
|
145
|
+
{
|
|
146
|
+
const style = super.getEdgeAnimationStyle();
|
|
147
|
+
style.stroke = 'blue';
|
|
148
|
+
style.animationDuration = '30s';
|
|
149
|
+
style.animationDirection = 'reverse';
|
|
150
|
+
return style;
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## getArrowStyle
|
|
155
|
+
|
|
156
|
+
自定义边箭头样式
|
|
157
|
+
|
|
158
|
+
```tsx | pure
|
|
159
|
+
getArrowStyle()
|
|
160
|
+
{
|
|
161
|
+
const style = super.getArrowStyle();
|
|
162
|
+
style.stroke = 'green';
|
|
163
|
+
return style;
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## getOutlineStyle
|
|
168
|
+
|
|
169
|
+
自定义边被选中时展示其范围的矩形框样式
|
|
170
|
+
|
|
171
|
+
```tsx | pure
|
|
172
|
+
getOutlineStyle()
|
|
173
|
+
{
|
|
174
|
+
const style = super.getOutlineStyle();
|
|
175
|
+
style.stroke = 'none';
|
|
176
|
+
style.hover.stroke = 'none';
|
|
177
|
+
return style;
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## initEdgeData
|
|
182
|
+
|
|
183
|
+
支持重写,初始化边数据。
|
|
184
|
+
|
|
185
|
+
```tsx | pure
|
|
186
|
+
class UserEdgeModel extends PolylineEdgeModel {
|
|
187
|
+
initEdgeData(data) {
|
|
188
|
+
super.initEdgeData(data);
|
|
189
|
+
this.offset = 20;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
:::info{title=提示}
|
|
195
|
+
initEdgeData 和 setAttributes 都可以对 edgeModel 的属性进行赋值,但是两者的区别在于:<br>
|
|
196
|
+
|
|
197
|
+
- `initEdgeData`只在初始化的时候调用,用于初始化的属性。
|
|
198
|
+
- `setAttributes`除了初始化调用外,还会在 properties 发生变化了调用。
|
|
199
|
+
:::
|
|
200
|
+
|
|
201
|
+
## setAttributes
|
|
202
|
+
|
|
203
|
+
设置 model 形状属性,每次 properties 发生变化会触发
|
|
204
|
+
|
|
205
|
+
```tsx | pure
|
|
206
|
+
class UserEdgeModel extends PolylineEdgeModel {
|
|
207
|
+
setAttributes(data) {
|
|
208
|
+
super.setAttributes(data)
|
|
209
|
+
this.offset = 20
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## createId
|
|
215
|
+
|
|
216
|
+
支持重写,自定义节点 id 的生成规则.
|
|
217
|
+
|
|
218
|
+
:::warning{title=注意}
|
|
219
|
+
|
|
220
|
+
1. 请保证此方法返回 id 的唯一性。<br>
|
|
221
|
+
2. 此方法为同步方法,如果想要异步修改边 id,
|
|
222
|
+
请参考 <a href="https://github.com/didi/LogicFlow/issues/272" target="_blank">issues</a>。
|
|
223
|
+
:::
|
|
224
|
+
|
|
225
|
+
```tsx | pure
|
|
226
|
+
import { v4 as uuidv4 } from "uuid";
|
|
227
|
+
|
|
228
|
+
class UserTaskModel extends RectNodeModel {
|
|
229
|
+
createId() {
|
|
230
|
+
return uuidv4();
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## getData
|
|
236
|
+
|
|
237
|
+
获取被保存时返回的数据。LogicFlow 有固定边数据格式。如果期望在保存数据上添加数据,请添加到 properties
|
|
238
|
+
上。
|
|
239
|
+
|
|
240
|
+
不支持重写此方法
|
|
241
|
+
|
|
242
|
+
```tsx | pure
|
|
243
|
+
const edgeModel = lf.getEdgeModelById("edge_1");
|
|
244
|
+
const edgeData = edgeModel.getData();
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
## getHistoryData
|
|
248
|
+
|
|
249
|
+
同`getData`
|
|
250
|
+
|
|
251
|
+
## getProperties
|
|
252
|
+
|
|
253
|
+
获取边属性
|
|
254
|
+
|
|
255
|
+
不支持重写此方法
|
|
256
|
+
|
|
257
|
+
```tsx | pure
|
|
258
|
+
const edgeModel = lf.getEdgeModelById("edge_1");
|
|
259
|
+
const properties = edgeModel.getProperties();
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## setProperties
|
|
263
|
+
|
|
264
|
+
设置边 properties
|
|
265
|
+
|
|
266
|
+
```tsx | pure
|
|
267
|
+
const edgeModel = lf.getEdgeModelById("edge_1");
|
|
268
|
+
edgeModel.setProperties({
|
|
269
|
+
// 自定义properties
|
|
270
|
+
});
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
## deleteProperty
|
|
274
|
+
|
|
275
|
+
删除边的某个属性
|
|
276
|
+
|
|
277
|
+
```tsx | pure
|
|
278
|
+
lf.on("edge:click", ({ data }) => {
|
|
279
|
+
lf.getEdgeModelById(data.id).deleteProperty("disabled");
|
|
280
|
+
lf.getEdgeModelById(data.id).deleteProperty("scale");
|
|
281
|
+
});
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## updateText
|
|
285
|
+
|
|
286
|
+
修改边文本内容
|
|
287
|
+
|
|
288
|
+
参数
|
|
289
|
+
|
|
290
|
+
| 名称 | 类型 | 必传 | 默认值 | 描述 |
|
|
291
|
+
|:------|:-------|:-----|:----|:----|
|
|
292
|
+
| value | string | true | 无 | 文本值 |
|
|
293
|
+
|
|
294
|
+
```tsx | pure
|
|
295
|
+
const edgeModel = lf.getEdgeModelById("edge_1");
|
|
296
|
+
edgeModel.updateText("hello world");
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## getTextPosition
|
|
300
|
+
|
|
301
|
+
支持重写,自定义连线上文本位置。
|
|
302
|
+
|
|
303
|
+
## getAnchorPosition
|
|
304
|
+
|
|
305
|
+
获取锚点位置
|
|
306
|
+
|
|
307
|
+
入参:`sourceNode: BaseNodeModel, targetPosition: LogicFlow.Position`
|
|
308
|
+
|
|
309
|
+
返回值:`LogicFlow.Point`
|
|
310
|
+
|
|
311
|
+
## getBeginAnchor
|
|
312
|
+
|
|
313
|
+
获取开始锚点
|
|
314
|
+
|
|
315
|
+
入参:`sourceNode: BaseNodeModel, targetNode: BaseNodeModel`
|
|
316
|
+
|
|
317
|
+
返回值:`LogicFlow.Point`
|
|
318
|
+
|
|
319
|
+
## getEndAnchor
|
|
320
|
+
|
|
321
|
+
获取结束锚点
|
|
322
|
+
|
|
323
|
+
入参:`targetNode: BaseNodeModel`
|
|
324
|
+
|
|
325
|
+
返回值:`LogicFlow.Point`
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
---
|
|
2
|
+
nav: API
|
|
3
|
+
group:
|
|
4
|
+
title: Runtime Model
|
|
5
|
+
order: 3
|
|
6
|
+
title: graphModel
|
|
7
|
+
toc: content
|
|
8
|
+
order: 12
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<style>
|
|
12
|
+
table td:first-of-type {
|
|
13
|
+
word-break: normal;
|
|
14
|
+
}
|
|
15
|
+
</style>
|
|
16
|
+
|
|
17
|
+
`graphModel` is the model for the entire LogicFlow canvas.
|
|
18
|
+
|
|
19
|
+
Most instance methods are thin wrappers around `graphModel`.
|
|
20
|
+
|
|
21
|
+
You can access `graphModel`:
|
|
22
|
+
|
|
23
|
+
- From the instance: `lf.graphModel`
|
|
24
|
+
- Inside a custom `model` constructor or methods via `this.graphModel`
|
|
25
|
+
- Inside a custom `view` via `this.props.graphModel`
|
|
26
|
+
|
|
27
|
+
```tsx | pure
|
|
28
|
+
class CustomModel extends RectNodeModel {
|
|
29
|
+
getNodeStyle() {
|
|
30
|
+
const graphModel = this.graphModel
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
```tsx | pure
|
|
36
|
+
class CustomNode extends RectNode {
|
|
37
|
+
getShape() {
|
|
38
|
+
const { model, graphModel } = this.props
|
|
39
|
+
// ...
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
:::info{title=Tip}
|
|
45
|
+
All `graphModel` fields are read-only; change state only through the documented methods.
|
|
46
|
+
:::
|
|
47
|
+
|
|
48
|
+
## Properties
|
|
49
|
+
|
|
50
|
+
| Property | Type | Default | Description |
|
|
51
|
+
| :------- | :--- | :------ | :---------- |
|
|
52
|
+
| width | `number` | | Canvas width |
|
|
53
|
+
| height | `number` | | Canvas height |
|
|
54
|
+
| theme | `LogicFlow.Theme` | | See [Theme API](../logicflow-instance/theme.en.md) |
|
|
55
|
+
| animation | `boolean \| LFOptions.AnimationConfig` | false | Animation flags |
|
|
56
|
+
| [eventCenter](#eventcenter) | `EventEmitter` | | Internal event hub |
|
|
57
|
+
| modelMap | `Map<string, BaseNodeModel \| BaseEdgeModel>` | | Model ctor registry by type |
|
|
58
|
+
| [topElement](#topElement) | `BaseNodeModel \| BaseEdgeModel` | | Top-most element (default overlap mode) |
|
|
59
|
+
| idGenerator | `(type?: string) => string \| undefined` | | Custom id factory |
|
|
60
|
+
| nodeMoveRules | `Model.NodeMoveRule[]` | [] | Hooks evaluated while moving nodes |
|
|
61
|
+
| customTrajectory | `LFOptions.CustomAnchorLineProps` | | Custom anchor line renderer |
|
|
62
|
+
| customTargetAnchor | `LFOptions.customTargetAnchorType` | | Anchor picking when manually connecting |
|
|
63
|
+
| edgeGenerator | `LFOptions.EdgeGeneratorType` | | Edge type factory |
|
|
64
|
+
| edgeType | `string` | | Default edge type for UI-created edges |
|
|
65
|
+
| nodes | `BaseNodeModel[]` | [] | All node models |
|
|
66
|
+
| edges | `BaseEdgeModel[]` | [] | All edge models |
|
|
67
|
+
| fakeNode | `BaseNodeModel \| null` | null | Placeholder while dragging external nodes |
|
|
68
|
+
| [overlapMode](#overlapmode) | `OverlapMode` | | Z-order policy when elements overlap |
|
|
69
|
+
| background | `false \| LFOptions.BackgroundConfig` | | Background layer config |
|
|
70
|
+
| transformModel | `TransformModel` | | Pan/zoom matrix; see [transformModel](#transformmodel) below |
|
|
71
|
+
| editConfigModel | `EditConfigModel` | | Edit toggles; see [editConfigModel](#editconfigmodel) and [Edit config](../logicflow-instance/edit-config.en.md) |
|
|
72
|
+
| gridSize | `number` | 1 | Grid step |
|
|
73
|
+
| partial | `boolean` | false | Partial rendering for large graphs |
|
|
74
|
+
| nodesMap | `GraphModel.NodesMapType` | | Node id → model map |
|
|
75
|
+
| edgesMap | `GraphModel.EdgesMapType` | | Edge id → model map |
|
|
76
|
+
| modelsMap | `GraphModel.ModelsMapType` | | Combined map |
|
|
77
|
+
| selectNodes | `BaseNodeModel[]` | | Selected nodes |
|
|
78
|
+
| sortElements | `array` | | Elements sorted by `zIndex` |
|
|
79
|
+
| textEditElement | `BaseNodeModel \| BaseEdgeModel` | | Element currently in text edit |
|
|
80
|
+
| selectElements | `Map<string, BaseNodeModel \| BaseEdgeModel>` | | Current selection map |
|
|
81
|
+
|
|
82
|
+
### eventCenter {#eventcenter} (property)
|
|
83
|
+
|
|
84
|
+
LogicFlow’s internal `EventEmitter` for custom events.
|
|
85
|
+
|
|
86
|
+
```tsx | pure
|
|
87
|
+
class UserTaskModel extends RectNodeModel {
|
|
88
|
+
setAttributes() {
|
|
89
|
+
this.menu = [
|
|
90
|
+
{
|
|
91
|
+
text: 'Details',
|
|
92
|
+
callback: (res) => {
|
|
93
|
+
this.graphModel.eventCenter.emit('user:detail', res)
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
lf.on('user:detail', (res) => {})
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### topElement (property)
|
|
104
|
+
|
|
105
|
+
The element rendered on top in default overlap mode; used to restore ordering after temporary promotion.
|
|
106
|
+
|
|
107
|
+
### overlapMode (property)
|
|
108
|
+
|
|
109
|
+
Controls stacking when elements overlap.
|
|
110
|
+
|
|
111
|
+
- `-1` (**STATIC**): selection does not change z-order; `toFront` is ignored; use per-element `zIndex`.
|
|
112
|
+
- `0` (**DEFAULT**): nodes render above edges; selection temporarily raises elements.
|
|
113
|
+
- `1` (**INCREASE**): each `toFront` bumps `zIndex` permanently.
|
|
114
|
+
- `2` (**EDGE_TOP**): edges render above nodes; `toFront` still promotes temporarily.
|
|
115
|
+
|
|
116
|
+
Only **INCREASE** and **STATIC** persist `zIndex` into serialized graph data.
|
|
117
|
+
|
|
118
|
+
## transformModel {#transformmodel}
|
|
119
|
+
|
|
120
|
+
`graphModel.transformModel` is the `TransformModel` instance that applies pan/zoom. Prefer `lf.graphModel.transformModel` or helpers on `lf` when available.
|
|
121
|
+
|
|
122
|
+
### zoom(zoomSize, point)
|
|
123
|
+
|
|
124
|
+
Zoom the canvas. Step size follows `transformModel.ZOOM_SIZE`.
|
|
125
|
+
|
|
126
|
+
| Name | Type | Default | Description |
|
|
127
|
+
| ---- | ---- | ------- | ----------- |
|
|
128
|
+
| zoomSize | `TransformModel.ZoomParamType` | false | Zoom factor (`0..n`), or `true` / `false` to step by the built-in preset. |
|
|
129
|
+
| point | [`PointTuple`](../type/MainTypes.en.md#pointtuple) | optional | Anchor point for zoom (transform origin). |
|
|
130
|
+
|
|
131
|
+
```tsx | pure
|
|
132
|
+
const { transformModel } = lf.graphModel
|
|
133
|
+
transformModel.zoom(true)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### resetZoom
|
|
137
|
+
|
|
138
|
+
Reset zoom to the default scale.
|
|
139
|
+
|
|
140
|
+
### translate(x, y)
|
|
141
|
+
|
|
142
|
+
Pan the canvas by `(x, y)` in canvas space.
|
|
143
|
+
|
|
144
|
+
| Name | Type | Description |
|
|
145
|
+
| ---- | ---- | ----------- |
|
|
146
|
+
| x | number | Delta on X. |
|
|
147
|
+
| y | number | Delta on Y. |
|
|
148
|
+
|
|
149
|
+
### focusOn(targetX, targetY, width, height)
|
|
150
|
+
|
|
151
|
+
Center the rectangle `(targetX, targetY, width, height)` in the viewport.
|
|
152
|
+
|
|
153
|
+
### HtmlPointToCanvasPoint(point)
|
|
154
|
+
|
|
155
|
+
Maps a point from the HTML tool overlay into canvas overlay coordinates after applying zoom/pan.
|
|
156
|
+
|
|
157
|
+
| Name | Type | Required | Description |
|
|
158
|
+
| ---- | ---- | -------- | ----------- |
|
|
159
|
+
| point | `PointTuple` | Yes | Input coordinate. |
|
|
160
|
+
|
|
161
|
+
Returns `PointTuple`.
|
|
162
|
+
|
|
163
|
+
### CanvasPointToHtmlPoint(point)
|
|
164
|
+
|
|
165
|
+
Inverse of `HtmlPointToCanvasPoint`.
|
|
166
|
+
|
|
167
|
+
### updateTranslateLimits(limit)
|
|
168
|
+
|
|
169
|
+
Updates how far the canvas may be panned. Argument type matches constructor option `stopMoveGraph`: `boolean \| 'vertical' \| 'horizontal' \| [number, number, number, number]`.
|
|
170
|
+
|
|
171
|
+
## editConfigModel {#editconfigmodel}
|
|
172
|
+
|
|
173
|
+
`graphModel.editConfigModel` holds interaction toggles (wheel zoom, canvas drag, adjust handles, anchors, selection outlines, text editing, multi-select keys, etc.). Instance helpers [`lf.updateEditConfig` / `lf.getEditConfig`](../logicflow-instance/edit-config.en.md) wrap this model.
|
|
174
|
+
|
|
175
|
+
Field meanings and typings follow [`IEditConfigType`](../type/MainTypes.en.md#ieditconfigtype-edit-control); this section documents model methods only.
|
|
176
|
+
|
|
177
|
+
### updateEditConfig(config)
|
|
178
|
+
|
|
179
|
+
Merge partial edit configuration. Runs through `computeConfig`, including silent-mode bookkeeping.
|
|
180
|
+
|
|
181
|
+
```ts
|
|
182
|
+
updateEditConfig(config: Partial<IEditConfigType>): void
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
| Name | Type | Description |
|
|
186
|
+
| ---- | ---- | ----------- |
|
|
187
|
+
| config | `Partial<IEditConfigType>` | Keys to merge (see type dictionary). |
|
|
188
|
+
|
|
189
|
+
### getConfig()
|
|
190
|
+
|
|
191
|
+
Returns the fully merged edit configuration currently in effect (`IEditConfigType`).
|
|
192
|
+
|
|
193
|
+
### updateTextMode(textMode)
|
|
194
|
+
|
|
195
|
+
Updates global `textMode` and synchronizes related node/edge text modes.
|
|
196
|
+
|
|
197
|
+
| Name | Type | Description |
|
|
198
|
+
| ---- | ---- | ----------- |
|
|
199
|
+
| textMode | `TextMode` | Same semantics as constructor `textMode`. |
|
|
200
|
+
|
|
201
|
+
```ts
|
|
202
|
+
import { TextMode } from '@logicflow/core'
|
|
203
|
+
|
|
204
|
+
lf.graphModel.editConfigModel.updateTextMode(TextMode.LABEL)
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Methods {#methods}
|
|
208
|
+
|
|
209
|
+
The following table summarizes `graphModel` mutation and query helpers. Several have matching shortcuts on the `lf` instance.
|
|
210
|
+
|
|
211
|
+
| Method | Purpose |
|
|
212
|
+
| ------ | ------- |
|
|
213
|
+
| `getAreaElement(leftTop, rightBottom, wholeEdge?, wholeNode?, ignoreHide?)` | Elements intersecting a rectangle (legacy helper). |
|
|
214
|
+
| `getModel(type)` | Registered model constructor for `type`. |
|
|
215
|
+
| `getNodeModelById(id)` | Look up a node model by id. |
|
|
216
|
+
| `getPointByClient(point)` | Convert a browser `Position` to `{ domOverlayPosition, canvasOverlayPosition }`. |
|
|
217
|
+
| `isElementInArea(element, lt, rb, wholeEdge?, wholeNode?)` | Hit-test an element against a box. |
|
|
218
|
+
| `getAreaElements(...)` | Same as `getAreaElement` with explicit defaults for hidden/hit rules. |
|
|
219
|
+
| `graphDataToModel(graphData)` | Replace the entire canvas from [`GraphConfigData`](../type/MainTypes.en.md#graphconfigdata) (clears existing elements). |
|
|
220
|
+
| `modelToGraphData()` | Export [`GraphConfigData`](../type/MainTypes.en.md#graphconfigdata). |
|
|
221
|
+
| `modelToHistoryData()` | Snapshot formatted for the history stack (`false` when disabled). |
|
|
222
|
+
| `getEdgeModelById(edgeId)` | Edge model lookup. |
|
|
223
|
+
| `getElement(id)` | Node or edge model by id. |
|
|
224
|
+
| `getNodeEdges(nodeId)` | All edges attached to a node. |
|
|
225
|
+
| `getSelectElements(isIgnoreCheck?)` | Selected elements as graph config data. |
|
|
226
|
+
| `getVirtualRectSize(includeEdge?)` | Bounding box of the diagram. |
|
|
227
|
+
| `changeNodeId` / `changeEdgeId` | Rename elements while keeping wiring consistent. |
|
|
228
|
+
| `handleEdgeTextMove(edge, x, y)` | Reposition edge label. |
|
|
229
|
+
| `toFront(id)` | Bring node/edge forward per overlap rules. |
|
|
230
|
+
| `setElementZIndex(id, zIndex)` | Manual stacking (`number` \| `'top'` \| `'bottom'`). |
|
|
231
|
+
| `deleteNode` / `addNode` / `cloneNode` / `moveNode` / `moveNode2Coordinate` | Node lifecycle helpers. |
|
|
232
|
+
| `editText(id)` | Open inline editor for node/edge text. |
|
|
233
|
+
| `setElementState(type)` | Element-local state flag (see model docs). |
|
|
234
|
+
| `addEdge` / `deleteEdge*` | Edge lifecycle helpers. |
|
|
235
|
+
| `updateText(id, value)` | Update label string. |
|
|
236
|
+
| `selectNodeById` / `selectEdgeById` / `selectElementById` / `clearSelectElements` | Selection API. |
|
|
237
|
+
| `moveNodes(nodeIds, dx, dy)` | Batch move with edge refresh. |
|
|
238
|
+
| `addNodeMoveRules(rule)` | Push additional move guards. |
|
|
239
|
+
| `getNodeIncomingNode` / `getNodeOutgoingNode` | Graph neighbourhood (nodes). |
|
|
240
|
+
| `getNodeIncomingEdge` / `getNodeOutgoingEdge` | Graph neighbourhood (edges). |
|
|
241
|
+
| `setDefaultEdgeType(type)` | Change default edge created by UI. |
|
|
242
|
+
| `changeNodeType` / `changeEdgeType` | Swap registered types in place. |
|
|
243
|
+
| `openEdgeAnimation` / `closeEdgeAnimation` | Per-edge animation toggles. |
|
|
244
|
+
| `setTheme(partial)` | Merge runtime theme overrides. |
|
|
245
|
+
| `resize(width, height)` | Canvas dimensions. |
|
|
246
|
+
| `clearData()` | Remove all nodes and edges. |
|
|
247
|
+
| `translateCenter()` | Pan content to the canvas center. |
|
|
248
|
+
| `fitView(verticalOffset?, horizontalOffset?)` | Zoom/pan to fit the diagram with padding. |
|
|
249
|
+
|
|
250
|
+
### updateAttributes {#updateattributes}
|
|
251
|
+
|
|
252
|
+
Low-level merge into element model fields.
|
|
253
|
+
|
|
254
|
+
:::warning{title=Warning}
|
|
255
|
+
Prefer `setProperties`, `updateText`, `changeNodeId`, and other high-level APIs. Writing ids or geometry incorrectly can desynchronize edges and hit-testing.
|
|
256
|
+
:::
|
|
257
|
+
|
|
258
|
+
| Name | Type | Description |
|
|
259
|
+
| ---- | ---- | ----------- |
|
|
260
|
+
| id | string | Element id. |
|
|
261
|
+
| attributes | object | Patch object applied to the model. |
|
|
262
|
+
|
|
263
|
+
### setElementStateById {#setelementstatebyid}
|
|
264
|
+
|
|
265
|
+
Ensures a single element owns an interactive state (for example connection targeting).
|
|
266
|
+
|
|
267
|
+
| Name | Type | Required | Description |
|
|
268
|
+
| ---- | ---- | -------- | ----------- |
|
|
269
|
+
| id | string | Yes | Node or edge id. |
|
|
270
|
+
| state | [`ElementState`](../type/MainTypes.en.md#elementstate) | Yes | Target state code. |
|
|
271
|
+
| additionStateData | `Model.AdditionStateDataType` | No | Extra payload for the state machine. |
|
|
272
|
+
|
|
273
|
+
```tsx | pure
|
|
274
|
+
lf.graphModel.setElementStateById('node_1', 4)
|
|
275
|
+
```
|