@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,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
nav: API
|
|
3
|
+
group:
|
|
4
|
+
title: Runtime Model
|
|
5
|
+
order: 3
|
|
6
|
+
title: nodeModel
|
|
7
|
+
toc: content
|
|
8
|
+
order: 13
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Every diagram node has a `nodeModel` that owns serializable data and rendering hooks. Prefer `graphModel` APIs or documented model methods instead of assigning arbitrary fields.
|
|
12
|
+
|
|
13
|
+
:::error{title=Warning}
|
|
14
|
+
Writing fields without understanding history, edges, and text synchronization can break the diagram. Move nodes through `graphModel.moveNode` rather than mutating `x` / `y` directly unless you know the implications.
|
|
15
|
+
:::
|
|
16
|
+
|
|
17
|
+
## Data properties {#data-properties}
|
|
18
|
+
|
|
19
|
+
`data` mirrors what you pass through [`NodeConfig`](../type/MainTypes.en.md#nodeconfig): identity (`id`, `type`), geometry (`x`, `y`, `width`, `height`, rotation flags), nested `text`, `properties`, `zIndex`, and extension-specific slots returned by `getData()`.
|
|
20
|
+
|
|
21
|
+
## Shape attributes {#shape-attributes}
|
|
22
|
+
|
|
23
|
+
Geometry that participates in layout and edge routing—width, height, radius, etc.—must be updated inside `setAttributes()` (or equivalent lifecycle hooks). Changing them elsewhere may leave edges or anchors inconsistent.
|
|
24
|
+
|
|
25
|
+
## Style attributes {#style-attributes}
|
|
26
|
+
|
|
27
|
+
Visual styling is resolved through model methods such as `getNodeStyle`, `getTextStyle`, `getAnchorStyle`, `getOutlineStyle`, and related hooks. Override those methods in custom models instead of mutating SVG props directly from `view`.
|
|
28
|
+
|
|
29
|
+
## initNodeData {#initnodedata}
|
|
30
|
+
|
|
31
|
+
Called when the model instance is created; override to seed default geometry, text, or `properties` before the first render.
|
|
32
|
+
|
|
33
|
+
## setAttributes {#setattributes}
|
|
34
|
+
|
|
35
|
+
Runs whenever the renderer reconciles shape-related fields. Put width, height, radius, and other layout-critical updates here (especially for resizable nodes) so edges and anchors stay aligned.
|
|
36
|
+
|
|
37
|
+
For additional APIs (anchors, movement rules, serialization, etc.), follow the TypeScript definitions on `BaseNodeModel` / `RectNodeModel` in `@logicflow/core`.
|
|
@@ -0,0 +1,644 @@
|
|
|
1
|
+
---
|
|
2
|
+
nav: API
|
|
3
|
+
group:
|
|
4
|
+
title: 运行时 Model
|
|
5
|
+
order: 3
|
|
6
|
+
title: nodeModel
|
|
7
|
+
toc: content
|
|
8
|
+
order: 13
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<style>
|
|
12
|
+
table td:first-of-type {
|
|
13
|
+
word-break: normal;
|
|
14
|
+
}
|
|
15
|
+
</style>
|
|
16
|
+
|
|
17
|
+
LogicFlow 中所有的节点都会有一个 nodeModel 与其对应。由于数据驱动视图的机制,我们对节点的所有操作事实上就是对
|
|
18
|
+
model 的操作。大多数情况下,我们不建议直接对 nodeModel 的属性进行赋值操作,而是调用 model
|
|
19
|
+
或者 [graphModel](./graphModel.zh.md) 上提供的方法。
|
|
20
|
+
|
|
21
|
+
:::error{title=警告}
|
|
22
|
+
在对 LogicFlow 内部源码不熟悉的情况下,对 model 的属性进行赋值操作可能会引起很多不符合预期的问题。例如在
|
|
23
|
+
model 中`x`,`y`表示节点的位置,如果想要移动节点直接修改`x`,`y`
|
|
24
|
+
的话,会出现节点被移动了,而节点上的文本、节点相连的边都没有动。所以想要移动节点,最好的方法还是调用`graphModel`
|
|
25
|
+
上的`moveNode`方法来实现。
|
|
26
|
+
:::
|
|
27
|
+
|
|
28
|
+
nodeModel 上节点属性有很多,由于用途不一样,我们对其进行了分类。
|
|
29
|
+
|
|
30
|
+
## 数据属性
|
|
31
|
+
|
|
32
|
+
节点的数据属性是指 LogicFlow 图数据是用于标识节点的数据。在流程图保存时一般都只保存节点的数据属性。
|
|
33
|
+
|
|
34
|
+
| 名称 | 类型 | 是否必须 | 描述 |
|
|
35
|
+
|:-----------|:------------------|:-----|:--------------------|
|
|
36
|
+
| id | string | ✅ | 节点 id |
|
|
37
|
+
| type | string | ✅ | 节点类型 |
|
|
38
|
+
| x | number | ✅ | 节点中心 x 轴坐标 |
|
|
39
|
+
| y | number | ✅ | 节点中心 y 轴坐标 |
|
|
40
|
+
| text | TextObject/string | | 节点文本 |
|
|
41
|
+
| properties | Object | | 包含节点样式、形状属性和业务自定义属性 |
|
|
42
|
+
|
|
43
|
+
**TextObject**
|
|
44
|
+
|
|
45
|
+
| 名称 | 类型 | 是否必须 | 描述 |
|
|
46
|
+
|:----------|:--------|:-----|:-------------------------|
|
|
47
|
+
| value | string | | 文本内容 |
|
|
48
|
+
| x | number | ✅ | 文本中心 x 轴坐标 |
|
|
49
|
+
| y | number | ✅ | 文本中心 y 轴坐标 |
|
|
50
|
+
| draggable | boolean | ✅ | 文本是否允许被拖动调整位置,保存时不会保存此属性 |
|
|
51
|
+
| editable | boolean | ✅ | 文本是否允许被双击编辑,保存时不会保存此属性 |
|
|
52
|
+
|
|
53
|
+
## 状态属性
|
|
54
|
+
|
|
55
|
+
一般用于自定义节点的时候,基于状态属性进行更细粒度的样式显示。
|
|
56
|
+
|
|
57
|
+
| 名称 | 类型 | 是否必须 | 描述 |
|
|
58
|
+
|:-------------|:--------|:-----|:----------------|
|
|
59
|
+
| isSelected | boolean | ✅ | 节点是否被选中 |
|
|
60
|
+
| isHovered | boolean | ✅ | 节点是否在 hover 状态 |
|
|
61
|
+
| isHitable | boolean | ✅ | 节点是否可点击 |
|
|
62
|
+
| draggable | boolean | ✅ | 节点是否可拖动 |
|
|
63
|
+
| isShowAnchor | boolean | ✅ | 是否显示锚点 |
|
|
64
|
+
| isDragging | boolean | ✅ | 是否在拖动 |
|
|
65
|
+
| visible | boolean | ✅ | 是否显示, `1.1.0`新增 |
|
|
66
|
+
|
|
67
|
+
## 形状属性
|
|
68
|
+
|
|
69
|
+
LogicFlow 的形状属性主要是控制基础节点的主要外观。形状属性可以通过`setAttributes`或者`initNodeData`
|
|
70
|
+
来设置。具体设置方式见[自定义节点的形状属性](../../tutorial/basic/node.zh.md#2-形状属性)。
|
|
71
|
+
|
|
72
|
+
| 名称 | 类型 | 是否必须 | 描述 |
|
|
73
|
+
|:-------|:------------------|:-----|:--------------------------------------|
|
|
74
|
+
| width | number | ✅ | 节点的宽度 |
|
|
75
|
+
| height | number | ✅ | 高度的高度 |
|
|
76
|
+
| radius | number | | 矩形节点特有,节点的圆角 |
|
|
77
|
+
| r | number | | 圆形节点特有,圆的半径。对于圆形节点,会自动基于半径计算出节点的高度和宽度 |
|
|
78
|
+
| rx | number | | 椭圆节点和菱形节点存在,水平圆角的半径。会自动基于半径计算出节点的宽度 |
|
|
79
|
+
| ry | number | | 椭圆节点和菱形节点存在,垂直圆角的半径。会自动基于半径计算出节点的高度 |
|
|
80
|
+
| points | [number,number][] | | 多边形节点特有,多边形顶点。会自定基于顶点计算出节点的宽度和高度 |
|
|
81
|
+
|
|
82
|
+
## 其它属性
|
|
83
|
+
|
|
84
|
+
LogicFlow 在`model`上还维护一些属性,开发者可以通过这些属性拿到一些信息。例如拿到`graphModel`,
|
|
85
|
+
节点的基础`model`类型等。
|
|
86
|
+
|
|
87
|
+
| 名称 | 类型 | 是否必须 | 描述 |
|
|
88
|
+
|:------------|:-----------------------|:-----|:------------------------------------------------------------------------------------------------------------------------------------------|
|
|
89
|
+
| graphModel | GraphModel | ✅ | 整个画布对应的 model,详情见[graphModelApi](./graphModel.zh.md) |
|
|
90
|
+
| zIndex | number | ✅ | 节点在 z 轴的高度,元素重合时,zIndex 高的在上面, 默认为 1 |
|
|
91
|
+
| state | number | ✅ | 元素状态,不同的状态对应着元素显示效果。DEFAULT = 1 默认显示;TEXT_EDIT = 2 此元素正在进行文本编辑;ALLOW_CONNECT = 4, 此元素允许作为当前边的目标节点;NOT_ALLOW_CONNECT = 5, 此元素不允许作为当前边的目标节点 |
|
|
92
|
+
| BaseType | string | ✅ | 当前 model 的基础类型,对于节点,则固定为`node`。主要用在节点和边混合的时候识别此`model`是节点还是边。 |
|
|
93
|
+
| modelType | string | ✅ | 当前 model 的类型,可取值有`node`, `rect-node`,`circle-node`,`polygon-node`,`ellipse-node`,`diamond-node`, `html-node`,`text-node` |
|
|
94
|
+
| moveRules | `Model.NodeMoveRule[]` | | 节点被移动之前的校验规则 |
|
|
95
|
+
| sourceRules | `Model.ConnectRule[]` | | 节点连接其它节点时的校验规则 |
|
|
96
|
+
| targetRules | `Model.ConnectRule[]` | | 节点被其它节点连接时的校验规则 |
|
|
97
|
+
| autoToFront | boolean | ✅ | 控制节点选中时是否自动置顶,默认为 true. |
|
|
98
|
+
| incoming | object | ✅ | 进入当前节点的所有边和节点,`v1.1.4` |
|
|
99
|
+
| outgoing | object | ✅ | 离开当前节点的所有边和节点, `v1.1.4` |
|
|
100
|
+
| virtual | boolean | - | 是否为虚拟节点,默认 false。当为 true 时导出数据不会包含此元素。 `v1.1.24` |
|
|
101
|
+
|
|
102
|
+
:::info{title=modelType与type的区别是什么?}
|
|
103
|
+
在自定义节点的时候,`type`可以是开发者自定义的任何值,但是在 LogicFlow
|
|
104
|
+
内部,涉及到这个节点的计算时,我们需要感知到这个节点的具体形状,这个时候不能用`type`,
|
|
105
|
+
而是要用`modelType`来判断。
|
|
106
|
+
:::
|
|
107
|
+
|
|
108
|
+
## 样式属性
|
|
109
|
+
|
|
110
|
+
LogicFlow 所有的节点最终都是以 SVG DOM 的方式渲染。但是除了形状属性之外,所有的其他属于 svg
|
|
111
|
+
的属性都不会直接存在`nodeModel`。当开发者想要对 SVG DOM
|
|
112
|
+
添加更多的 <a href="https://developer.mozilla.org/zh-CN/docs/Web/SVG/Attribute" target="_blank">svg 属性</a>
|
|
113
|
+
时,可以通过重写`nodeModel`上获取节点样式属性方法来实现。
|
|
114
|
+
|
|
115
|
+
## 方法
|
|
116
|
+
|
|
117
|
+
### getNodeStyle
|
|
118
|
+
|
|
119
|
+
支持重写,自定义节点样式属性,默认为[主题(Theme 类型说明)](../logicflow-instance/theme.zh.md)
|
|
120
|
+
|
|
121
|
+
```tsx | pure
|
|
122
|
+
class UserTaskModel extends RectNodeModel {
|
|
123
|
+
getNodeStyle() {
|
|
124
|
+
const style = super.getNodeStyle();
|
|
125
|
+
style.stroke = "blue";
|
|
126
|
+
style.strokeDasharray = "3 3";
|
|
127
|
+
return style;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### getTextStyle
|
|
133
|
+
|
|
134
|
+
支持重写,自定义节点文本样式属性,默认为[主题(Theme 类型说明)](../logicflow-instance/theme.zh.md)
|
|
135
|
+
|
|
136
|
+
```tsx | pure
|
|
137
|
+
class UserTaskModel extends RectNodeModel {
|
|
138
|
+
getTextStyle() {
|
|
139
|
+
const style = super.getTextStyle();
|
|
140
|
+
style.fontSize = 16;
|
|
141
|
+
return style;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### getAnchorStyle
|
|
147
|
+
|
|
148
|
+
支持重写,自定义节点锚点样式属性,默认为[主题(Theme 类型说明)](../logicflow-instance/theme.zh.md)
|
|
149
|
+
|
|
150
|
+
```tsx | pure
|
|
151
|
+
class UserTaskModel extends RectNodeModel {
|
|
152
|
+
getAnchorStyle(anchorInfo) {
|
|
153
|
+
const style = super.getAnchorStyle(anchorInfo);
|
|
154
|
+
style.stroke = "rgb(24, 125, 255)";
|
|
155
|
+
style.r = 3;
|
|
156
|
+
style.hover.r = 8;
|
|
157
|
+
style.hover.fill = "rgb(24, 125, 255)";
|
|
158
|
+
style.hover.stroke = "rgb(24, 125, 255)";
|
|
159
|
+
return style;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### getAnchorLineStyle
|
|
165
|
+
|
|
166
|
+
支持重写,自定义节点锚点拖出连接线的样式属性,默认为[主题(Theme 类型说明)](../logicflow-instance/theme.zh.md)
|
|
167
|
+
|
|
168
|
+
```tsx | pure
|
|
169
|
+
class UserTaskModel extends RectNodeModel {
|
|
170
|
+
getAnchorLineStyle(anchorInfo) {
|
|
171
|
+
const style = super.getAnchorLineStyle();
|
|
172
|
+
style.stroke = "rgb(24, 125, 255)";
|
|
173
|
+
return style;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### getOutlineStyle
|
|
179
|
+
|
|
180
|
+
支持重写,自定义节点轮廓框的样式属性,默认为[主题(Theme 类型说明)](../logicflow-instance/theme.zh.md)
|
|
181
|
+
|
|
182
|
+
```tsx | pure
|
|
183
|
+
class UserTaskModel extends RectNodeModel {
|
|
184
|
+
getOutlineStyle() {
|
|
185
|
+
const style = super.getOutlineStyle();
|
|
186
|
+
style.stroke = "red";
|
|
187
|
+
style.hover.stroke = "red";
|
|
188
|
+
return style;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### initNodeData
|
|
194
|
+
|
|
195
|
+
支持重写,初始化节点数据,将传入的图数据(data)转换为节点属性, 所以需要调用`super.initNodeData`触发转换方法。
|
|
196
|
+
|
|
197
|
+
- 在`super.initNodeData`之前,对图数据进行处理。
|
|
198
|
+
- 在`super.initNodeData`之后,对节点属性进行初始化。
|
|
199
|
+
|
|
200
|
+
```tsx | pure
|
|
201
|
+
class UserTaskModel extends RectResize.model {
|
|
202
|
+
initNodeData(data) {
|
|
203
|
+
// 可以在super之前,强制设置节点文本位置不居中,而且在节点下面
|
|
204
|
+
if (!data.text || typeof data.text === "string") {
|
|
205
|
+
data.text = {
|
|
206
|
+
value: data.text || "",
|
|
207
|
+
x: data.x,
|
|
208
|
+
y: data.y + 40,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
super.initNodeData(data);
|
|
212
|
+
this.width = 100;
|
|
213
|
+
this.height = 80;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
:::info{title=提示}
|
|
219
|
+
initNodeData 和 setAttributes 都可以对 nodeModel 的属性进行赋值,但是两者的区别在于:<br>
|
|
220
|
+
|
|
221
|
+
- `initNodeData`只在节点初始化的时候调用,用于初始化节点的属性。
|
|
222
|
+
- `setAttributes`除了初始化调用外,还会在 properties 发生变化了调用。
|
|
223
|
+
:::
|
|
224
|
+
|
|
225
|
+
以上面代码为例,由于节点缩放的时候,会更新 properties 中的缩放后的大小,也就会触发`setAttributes`
|
|
226
|
+
。如果在`setAttributes`中定义节点的初始大小的话,会导致节点无法缩放。
|
|
227
|
+
|
|
228
|
+
### setAttributes
|
|
229
|
+
|
|
230
|
+
设置 model 形状属性,每次 properties 发生变化会触发
|
|
231
|
+
|
|
232
|
+
```tsx | pure
|
|
233
|
+
class UserTaskModel extends RectNodeModel {
|
|
234
|
+
setAttributes() {
|
|
235
|
+
const size = this.properties.scale || 1;
|
|
236
|
+
this.width = 100 * size;
|
|
237
|
+
this.height = 80 * size;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### createId
|
|
243
|
+
|
|
244
|
+
支持重写,自定义节点 id 的生成规则.
|
|
245
|
+
|
|
246
|
+
:::warning{title=注意}
|
|
247
|
+
|
|
248
|
+
1. 请保证此方法返回 id 的唯一性。<br>
|
|
249
|
+
2. 此方法为同步方法,如果想要异步修改节点 id,
|
|
250
|
+
请参考 <a href="https://github.com/didi/LogicFlow/issues/272" target="_blank">issues</a>。
|
|
251
|
+
:::
|
|
252
|
+
|
|
253
|
+
```tsx | pure
|
|
254
|
+
import { v4 as uuidv4 } from "uuid";
|
|
255
|
+
|
|
256
|
+
class UserTaskModel extends RectNodeModel {
|
|
257
|
+
createId() {
|
|
258
|
+
return uuidv4();
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### formatText
|
|
264
|
+
|
|
265
|
+
初始化文本
|
|
266
|
+
|
|
267
|
+
参数 `data: LogicFlow.NodeConfig`
|
|
268
|
+
|
|
269
|
+
```tsx | pure
|
|
270
|
+
class UserTaskModel extends RectNodeModel {
|
|
271
|
+
formatText(data: LogicFlow.NodeConfig) {
|
|
272
|
+
console.log('data', data);
|
|
273
|
+
const defaultText = {
|
|
274
|
+
value: '',
|
|
275
|
+
x: data.x,
|
|
276
|
+
y: data.y,
|
|
277
|
+
draggable: false,
|
|
278
|
+
editable: true,
|
|
279
|
+
}
|
|
280
|
+
if (!data.text) {
|
|
281
|
+
data.text = { ...defaultText }
|
|
282
|
+
} else {
|
|
283
|
+
if (typeof data.text === 'string') {
|
|
284
|
+
data.text = {
|
|
285
|
+
...defaultText,
|
|
286
|
+
value: data.text,
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
// ...
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### getData
|
|
296
|
+
|
|
297
|
+
获取被保存时返回的数据。LogicFlow 有固定节点数据格式。如果期望在保存数据上添加数据,请添加到 properties
|
|
298
|
+
上。
|
|
299
|
+
|
|
300
|
+
不支持重写此方法
|
|
301
|
+
|
|
302
|
+
```tsx | pure
|
|
303
|
+
const nodeModel = lf.getNodeModelById("node_1");
|
|
304
|
+
const nodeData = nodeModel.getData();
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### getProperties
|
|
308
|
+
|
|
309
|
+
获取节点属性
|
|
310
|
+
|
|
311
|
+
不支持重写此方法
|
|
312
|
+
|
|
313
|
+
```tsx | pure
|
|
314
|
+
const nodeModel = lf.getNodeModelById("node_1");
|
|
315
|
+
const properties = nodeModel.getProperties();
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### getDefaultAnchor
|
|
319
|
+
|
|
320
|
+
重新设置默认锚点, 可以给锚点加上 id 等自定义属性,用于对锚点的验证。
|
|
321
|
+
|
|
322
|
+
```tsx | pure
|
|
323
|
+
class cNode extends RectNodeModel {
|
|
324
|
+
// 定义节点只有左右两个锚点. 锚点位置通过中心点和宽度算出来。
|
|
325
|
+
getDefaultAnchor() {
|
|
326
|
+
const { width, height, x, y, id } = this;
|
|
327
|
+
return [
|
|
328
|
+
{
|
|
329
|
+
x: x - width / 2,
|
|
330
|
+
y,
|
|
331
|
+
name: 'left',
|
|
332
|
+
id: `${id}_0`
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
x: x + width / 2,
|
|
336
|
+
y,
|
|
337
|
+
name: 'right',
|
|
338
|
+
id: `${id}_1`,
|
|
339
|
+
edgeAddable: false
|
|
340
|
+
},
|
|
341
|
+
]
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
锚点属性
|
|
347
|
+
|
|
348
|
+
| 名称 | 类型 | 是否必须 | 描述 |
|
|
349
|
+
|:------------|:--------|:-----|:-----------------------|
|
|
350
|
+
| x | number | ✅ | 锚点 x 坐标 |
|
|
351
|
+
| y | number | ✅ | 锚点 y 坐标 |
|
|
352
|
+
| id | string | ✅ | 锚点 id |
|
|
353
|
+
| edgeAddable | boolean | ✅ | 是否允许此锚点手动创建连线,默认为 true |
|
|
354
|
+
|
|
355
|
+
### getConnectedSourceRules
|
|
356
|
+
|
|
357
|
+
获取当前节点作为边的起始节点规则。
|
|
358
|
+
|
|
359
|
+
支持重写,重写的时候,可以自定义添加额外规则。所有的规则中,有任一规则不满足,则禁止连线。
|
|
360
|
+
|
|
361
|
+
```tsx | pure
|
|
362
|
+
class EndNodeModel extends CircleNodeModel {
|
|
363
|
+
getConnectedSourceRules(): ConnectRule[] {
|
|
364
|
+
const rules = super.getConnectedSourceRules();
|
|
365
|
+
const geteWayOnlyAsTarget = {
|
|
366
|
+
message: "结束节点只能连入,不能连出!",
|
|
367
|
+
validate: (
|
|
368
|
+
source: BaseNodeModel,
|
|
369
|
+
target: BaseNodeModel,
|
|
370
|
+
sourceAnchor,
|
|
371
|
+
targetAnchor
|
|
372
|
+
) => {
|
|
373
|
+
let isValid = true;
|
|
374
|
+
if (source) {
|
|
375
|
+
isValid = false;
|
|
376
|
+
}
|
|
377
|
+
return isValid;
|
|
378
|
+
},
|
|
379
|
+
};
|
|
380
|
+
rules.push(geteWayOnlyAsTarget);
|
|
381
|
+
return rules;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### getConnectedTargetRules
|
|
387
|
+
|
|
388
|
+
获取当前节点作为边的目标节点规则。
|
|
389
|
+
|
|
390
|
+
支持重写,重写的时候,可以自定义添加额外规则。所有的规则中,有任一规则不满足,则禁止连线。
|
|
391
|
+
|
|
392
|
+
```tsx | pure
|
|
393
|
+
class StartEventModel extends CircleNodeModel {
|
|
394
|
+
getConnectedTargetRules() {
|
|
395
|
+
const rules = super.getConnectedTargetRules();
|
|
396
|
+
const notAsTarget = {
|
|
397
|
+
message: "起始节点不能作为边的终点",
|
|
398
|
+
validate: () => false,
|
|
399
|
+
};
|
|
400
|
+
rules.push(notAsTarget);
|
|
401
|
+
return rules;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
### isAllowMoveNode
|
|
407
|
+
|
|
408
|
+
是否允许移动节点
|
|
409
|
+
|
|
410
|
+
参数 `deltaX: number, deltaY: number`
|
|
411
|
+
|
|
412
|
+
返回值 `boolean | Model.IsAllowMove`
|
|
413
|
+
|
|
414
|
+
```tsx | pure
|
|
415
|
+
class UserTaskModel extends RectNodeModel {
|
|
416
|
+
isAllowMoveNode(deltaX: number, deltaY: number) {
|
|
417
|
+
let isAllowMoveX = true
|
|
418
|
+
let isAllowMoveY = true
|
|
419
|
+
// 处理
|
|
420
|
+
return {
|
|
421
|
+
x: isAllowMoveX,
|
|
422
|
+
y: isAllowMoveY,
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
### isAllowConnectedAsSource
|
|
430
|
+
|
|
431
|
+
在连接边时,是否允许这个节点为 source 节点,边到 target 节点
|
|
432
|
+
|
|
433
|
+
参数
|
|
434
|
+
| 名称 | 类型 | 是否必填 | 描述 |
|
|
435
|
+
| ------| -------------- | --- | -- |
|
|
436
|
+
| target | `BaseNodeModel` | ✅ | 目标节点 |
|
|
437
|
+
| sourceAnchor | `Model.AnchorConfig` | ✅ | 源锚点 |
|
|
438
|
+
| targetAnchor | `Model.AnchorConfig` | ✅ | 目标锚点 |
|
|
439
|
+
| edgeId | `string` | - | 调整后边的 id |
|
|
440
|
+
|
|
441
|
+
返回值 `LogicFlow.ConnectRuleResult` <a href="https://github.com/didi/LogicFlow/issues/926#issuecomment-1371823306" target="_blank">详见issues</a>
|
|
442
|
+
|
|
443
|
+
### isAllowConnectedAsTarget
|
|
444
|
+
|
|
445
|
+
在连线时,判断是否允许这个节点为 target 节点
|
|
446
|
+
|
|
447
|
+
参数
|
|
448
|
+
| 名称 | 类型 | 是否必填 | 描述 |
|
|
449
|
+
| ------| -------------- | --- | -- |
|
|
450
|
+
| source | `BaseNodeModel` | ✅ | 源节点 |
|
|
451
|
+
| sourceAnchor | `Model.AnchorConfig` | ✅ | 源锚点 |
|
|
452
|
+
| targetAnchor | `Model.AnchorConfig` | ✅ | 目标锚点 |
|
|
453
|
+
| edgeId | `string` | - | 调整后边的 id |
|
|
454
|
+
|
|
455
|
+
返回值 `LogicFlow.ConnectRuleResult`
|
|
456
|
+
<a href="https://github.com/didi/LogicFlow/issues/926#issuecomment-1371823306" target="_blank">详见issues</a>
|
|
457
|
+
|
|
458
|
+
### getRotateControlStyle
|
|
459
|
+
|
|
460
|
+
获取当前节点旋转控制点的样式
|
|
461
|
+
|
|
462
|
+
```tsx | pure
|
|
463
|
+
getRotateControlStyle()
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
### getTargetAnchor
|
|
467
|
+
|
|
468
|
+
获取目标锚点
|
|
469
|
+
|
|
470
|
+
入参:`position: LogicFlow.Point`
|
|
471
|
+
|
|
472
|
+
返回值:`BaseNodeModel.AnchorInfo`
|
|
473
|
+
|
|
474
|
+
### anchors
|
|
475
|
+
|
|
476
|
+
获取锚点
|
|
477
|
+
|
|
478
|
+
返回值: `LogicFlow.Point[]`
|
|
479
|
+
|
|
480
|
+
```tsx | pure
|
|
481
|
+
const { anchors } = node
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
### getAnchorInfo
|
|
485
|
+
|
|
486
|
+
获取锚点信息
|
|
487
|
+
|
|
488
|
+
入参:`anchorId?: string`
|
|
489
|
+
|
|
490
|
+
### updateText
|
|
491
|
+
|
|
492
|
+
修改节点文本内容
|
|
493
|
+
|
|
494
|
+
参数
|
|
495
|
+
|
|
496
|
+
| 名称 | 类型 | 必传 | 默认值 | 描述 |
|
|
497
|
+
|:------|:-------|:-----|:----|:----|
|
|
498
|
+
| value | string | true | 无 | 文本值 |
|
|
499
|
+
|
|
500
|
+
```tsx | pure
|
|
501
|
+
const nodeModel = lf.getNodeModelById("node_1");
|
|
502
|
+
nodeModel.updateText("hello world");
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
### setZIndex
|
|
506
|
+
|
|
507
|
+
设置节点 zIndex
|
|
508
|
+
|
|
509
|
+
```tsx | pure
|
|
510
|
+
const nodeModel = lf.getNodeModelById("node_1");
|
|
511
|
+
nodeModel.setZIndex(999);
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
### setProperties
|
|
515
|
+
|
|
516
|
+
设置节点 properties
|
|
517
|
+
|
|
518
|
+
```tsx | pure
|
|
519
|
+
lf.on("node:click", ({ data }) => {
|
|
520
|
+
lf.getNodeModelById(data.id).setProperties({
|
|
521
|
+
disabled: !data.properties.disabled,
|
|
522
|
+
scale: 2,
|
|
523
|
+
});
|
|
524
|
+
});
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
### setProperty
|
|
528
|
+
|
|
529
|
+
设置节点 property
|
|
530
|
+
|
|
531
|
+
入参 `key: string, value: unknown`
|
|
532
|
+
|
|
533
|
+
### deleteProperty
|
|
534
|
+
|
|
535
|
+
删除节点的某个属性
|
|
536
|
+
|
|
537
|
+
```tsx | pure
|
|
538
|
+
lf.on("node:click", ({ data }) => {
|
|
539
|
+
lf.getNodeModelById(data.id).deleteProperty("disabled");
|
|
540
|
+
lf.getNodeModelById(data.id).deleteProperty("scale");
|
|
541
|
+
});
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
### moveText
|
|
545
|
+
|
|
546
|
+
移动文本
|
|
547
|
+
|
|
548
|
+
入参:`deltaX: number, deltaY: number`
|
|
549
|
+
|
|
550
|
+
### moveTo
|
|
551
|
+
|
|
552
|
+
移动到
|
|
553
|
+
|
|
554
|
+
入参:`x: number, y: number, isIgnoreRule: boolean = false`
|
|
555
|
+
|
|
556
|
+
返回值:`boolean`
|
|
557
|
+
|
|
558
|
+
```tsx | pure
|
|
559
|
+
this.node.moveTo(200, 100)
|
|
560
|
+
```
|
|
561
|
+
|
|
562
|
+
### move
|
|
563
|
+
|
|
564
|
+
移动
|
|
565
|
+
|
|
566
|
+
入参:`deltaX: number, deltaY: number, isIgnoreRule: boolean = false`
|
|
567
|
+
|
|
568
|
+
返回值:`boolean`
|
|
569
|
+
|
|
570
|
+
```tsx | pure
|
|
571
|
+
this.move(0, 24 / 2);
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
### getMoveDistance
|
|
575
|
+
|
|
576
|
+
获取移动距离
|
|
577
|
+
|
|
578
|
+
入参:`deltaX: number, deltaY: number, isIgnoreRule: boolean = false`
|
|
579
|
+
|
|
580
|
+
返回值:`Model.VectorType`
|
|
581
|
+
|
|
582
|
+
### setSelected
|
|
583
|
+
|
|
584
|
+
设置 Selected
|
|
585
|
+
|
|
586
|
+
入参:`isSelected: boolean = true`
|
|
587
|
+
|
|
588
|
+
```tsx | pure
|
|
589
|
+
this.node.setSelected(true);
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
### setHovered
|
|
593
|
+
|
|
594
|
+
设置 Hovered
|
|
595
|
+
|
|
596
|
+
入参:`isHovered: boolean = true`
|
|
597
|
+
|
|
598
|
+
### setHittable
|
|
599
|
+
|
|
600
|
+
设置 Hittable
|
|
601
|
+
|
|
602
|
+
入参:`isHittable: boolean`
|
|
603
|
+
|
|
604
|
+
### setIsShowAnchor
|
|
605
|
+
|
|
606
|
+
设置是否显示锚点
|
|
607
|
+
|
|
608
|
+
入参:`isShowAnchor: boolean = true`
|
|
609
|
+
|
|
610
|
+
### updateAttributes
|
|
611
|
+
|
|
612
|
+
更新属性
|
|
613
|
+
|
|
614
|
+
入参:`attributes: LogicFlow.AttributesType`
|
|
615
|
+
|
|
616
|
+
### setElementState
|
|
617
|
+
|
|
618
|
+
设置 Node | Edge 等 model 的状态
|
|
619
|
+
|
|
620
|
+
入参:`state: ElementState, additionStateData?: Model.AdditionStateDataType | undefined,`
|
|
621
|
+
|
|
622
|
+
### setStyle
|
|
623
|
+
|
|
624
|
+
设置 Style
|
|
625
|
+
|
|
626
|
+
入参:`key: string, value: unknown`
|
|
627
|
+
|
|
628
|
+
### setStyles
|
|
629
|
+
|
|
630
|
+
设置 Styles
|
|
631
|
+
|
|
632
|
+
入参:`styles: LogicFlow.CommonTheme`
|
|
633
|
+
|
|
634
|
+
### updateStyles
|
|
635
|
+
|
|
636
|
+
更新 Styles
|
|
637
|
+
|
|
638
|
+
入参:`styles: LogicFlow.CommonTheme`
|
|
639
|
+
|
|
640
|
+
### setEnableRotate
|
|
641
|
+
|
|
642
|
+
设置启用旋转
|
|
643
|
+
|
|
644
|
+
入参:`flag: boolean`
|