@logicflow/core 2.2.0 → 2.2.1
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/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 +6 -1
- 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
package/src/model/BaseModel.ts
DELETED
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
import GraphModel from './GraphModel'
|
|
2
|
-
import { BaseNodeModel } from './node'
|
|
3
|
-
import LogicFlow from '../LogicFlow'
|
|
4
|
-
import { ElementState } from '../constant'
|
|
5
|
-
|
|
6
|
-
export namespace Model {
|
|
7
|
-
import PropertiesType = LogicFlow.PropertiesType
|
|
8
|
-
export type AdditionStateDataType = Record<string, unknown>
|
|
9
|
-
export type PropertyType = Record<string, unknown>
|
|
10
|
-
export type VectorType = [number, number]
|
|
11
|
-
export type IsAllowMove = {
|
|
12
|
-
x: boolean
|
|
13
|
-
y: boolean
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export type AnchorConfig = {
|
|
17
|
-
id?: string
|
|
18
|
-
x: number
|
|
19
|
-
y: number
|
|
20
|
-
[key: string]: unknown
|
|
21
|
-
}
|
|
22
|
-
export type AnchorInfo = {
|
|
23
|
-
index: number
|
|
24
|
-
anchor: AnchorConfig
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export type ConnectRule = {
|
|
28
|
-
message: string
|
|
29
|
-
validate: (
|
|
30
|
-
source?: BaseNodeModel,
|
|
31
|
-
target?: BaseNodeModel,
|
|
32
|
-
sourceAnchor?: AnchorConfig,
|
|
33
|
-
targetAnchor?: AnchorConfig,
|
|
34
|
-
/**
|
|
35
|
-
* REMIND: 调整的边的 id
|
|
36
|
-
* 在开启 adjustEdgeStartAndEnd 后调整边连接的节点时会传入
|
|
37
|
-
* 详见:https://github.com/didi/LogicFlow/issues/926#issuecomment-1371823306
|
|
38
|
-
*/
|
|
39
|
-
edgeID?: string,
|
|
40
|
-
) => boolean | undefined
|
|
41
|
-
}
|
|
42
|
-
export type ConnectRuleResult = {
|
|
43
|
-
isAllPass: boolean
|
|
44
|
-
msg?: string
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* 限制节点移动规则
|
|
49
|
-
* model: 移动节点的 model
|
|
50
|
-
* deltaX: 移动的 X 轴距离
|
|
51
|
-
* deltaY: 移动的 Y 轴距离
|
|
52
|
-
*/
|
|
53
|
-
export type NodeMoveRule = (
|
|
54
|
-
model: BaseNodeModel,
|
|
55
|
-
deltaX: number,
|
|
56
|
-
deltaY: number,
|
|
57
|
-
) => boolean | IsAllowMove
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* 限制节点resize规则
|
|
61
|
-
* model: 移动节点的 model
|
|
62
|
-
* deltaX: 中心点移动的 X 轴距离
|
|
63
|
-
* deltaY: 中心点移动的 Y 轴距离
|
|
64
|
-
* width: 中心点新的width
|
|
65
|
-
* height: 中心点新的height
|
|
66
|
-
*/
|
|
67
|
-
export type NodeResizeRule = (
|
|
68
|
-
model: BaseNodeModel,
|
|
69
|
-
deltaX: number,
|
|
70
|
-
deltaY: number,
|
|
71
|
-
width: number,
|
|
72
|
-
height: number,
|
|
73
|
-
) => boolean
|
|
74
|
-
|
|
75
|
-
export type AdjustEdgeStartAndEndParams = {
|
|
76
|
-
startPoint: LogicFlow.Point
|
|
77
|
-
endPoint: LogicFlow.Point
|
|
78
|
-
sourceNode?: BaseNodeModel
|
|
79
|
-
targetNode?: BaseNodeModel
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// 定义边界数据结构,左上坐标 + 右下坐标定位一个矩形
|
|
83
|
-
// TODO: 在使用该类型的 API 中,都要做声明,返回值格式已更新
|
|
84
|
-
export type BoxBoundsPoint = {
|
|
85
|
-
minX: number // Left Top X
|
|
86
|
-
minY: number // Left Top Y
|
|
87
|
-
maxX: number // Right Bottom X
|
|
88
|
-
maxY: number // Right Bottom Y
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
export interface BoxBounds extends BoxBoundsPoint {
|
|
92
|
-
x: number
|
|
93
|
-
y: number
|
|
94
|
-
width: number
|
|
95
|
-
height: number
|
|
96
|
-
centerX: number
|
|
97
|
-
centerY: number
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export type OutlineInfo = {
|
|
101
|
-
x: number
|
|
102
|
-
y: number
|
|
103
|
-
x1: number
|
|
104
|
-
y1: number
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
export interface BoxBounds {
|
|
108
|
-
x: number
|
|
109
|
-
y: number
|
|
110
|
-
width: number
|
|
111
|
-
height: number
|
|
112
|
-
minX: number
|
|
113
|
-
minY: number
|
|
114
|
-
maxX: number
|
|
115
|
-
maxY: number
|
|
116
|
-
centerX: number
|
|
117
|
-
centerY: number
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
export interface BaseModel<P extends PropertiesType = PropertiesType> {
|
|
121
|
-
/**
|
|
122
|
-
* 节点或边对应的 ID.
|
|
123
|
-
*
|
|
124
|
-
* 默认情况下,使用 uuidV4 生成。如需自定义,可通过传入 createId 方法覆盖。
|
|
125
|
-
*/
|
|
126
|
-
id: string
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* model 对应的图形外观类型 (eg: 圆形、矩形、多边形等)
|
|
130
|
-
*
|
|
131
|
-
* 不可自定义,用于 LogicFlow 内部计算使用
|
|
132
|
-
*/
|
|
133
|
-
readonly modelType: string
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* 请勿直接修改属性,如果想要将一个节点类型修改为另一个类型。(直接禁止修改不就可以了 public readonly)
|
|
137
|
-
* `lf.graphModel.changeEdgeType` or `lf.graphModel.changeNodeType`
|
|
138
|
-
*
|
|
139
|
-
* 流程图元素类型,自定义元素时对应的标识
|
|
140
|
-
* 在 logicflow/core 中对应着 rect/circle/polyline 这种
|
|
141
|
-
* 在实际项目中,我们会基于业务类型进行自定义 type.
|
|
142
|
-
* 例如 BPMN 场景中,我们会定义开始节点的类型为 bpmn:start-event
|
|
143
|
-
*
|
|
144
|
-
* 与 modelType 的区别是,type 更多的是业务上的类型,而 modelType 则是外观上的类型。
|
|
145
|
-
* 例如 bpmn.js 的开始节点和结束节点 type 分别为 'bpmn:start-event' 和 'bpmn:end-event'。
|
|
146
|
-
* 但是他们的 modelType 都是 circle-node,因为他们的外观都是基于圆形自定义而来。
|
|
147
|
-
*/
|
|
148
|
-
readonly type: string
|
|
149
|
-
graphModel: GraphModel
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* 状态附加数据,例如显示菜单,菜单的位置信息
|
|
153
|
-
* @deprecated: 请勿使用,即将废弃
|
|
154
|
-
*/
|
|
155
|
-
additionStateData?: AdditionStateDataType
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Rule 相关配置,包括连入、连出、移动等
|
|
159
|
-
*/
|
|
160
|
-
targetRules?: ConnectRule[]
|
|
161
|
-
sourceRules?: ConnectRule[]
|
|
162
|
-
moveRules?: NodeMoveRule[]
|
|
163
|
-
hasSetTargetRules?: boolean
|
|
164
|
-
hasSetSourceRules?: boolean
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* 元素上的文本
|
|
168
|
-
*
|
|
169
|
-
* LogicFlow 中存在两种文本:1. 脱离边和节点单独存在的问题;2. 必须和边、节点关联的文本
|
|
170
|
-
* 此属性控制的是第二种。节点和边在删除、调整的同时,其关联的文本也会对应删除、调整。
|
|
171
|
-
*/
|
|
172
|
-
text: LogicFlow.TextConfig
|
|
173
|
-
properties: P
|
|
174
|
-
|
|
175
|
-
isSelected: boolean // 元素是否被选中
|
|
176
|
-
isHovered: boolean // 鼠标是否悬停在元素上
|
|
177
|
-
// TODO: 确认拼写 fix typo(兼容拼写错误的情况)
|
|
178
|
-
isHitable: boolean // TODO: 错误拼写,兼容拼写错误的情况 REMIND TO REMOVE
|
|
179
|
-
isHittable: boolean // 细粒度控制节点是否对用户操作进行反应
|
|
180
|
-
draggable: boolean // 是否可拖拽
|
|
181
|
-
visible: boolean // 元素是否显示
|
|
182
|
-
virtual: boolean // 元素是否可以通过 getGraphData 获取到
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* 元素堆叠的层级,默认情况下节点 zIndex 值为 1,边 zIndex 为 0
|
|
186
|
-
*/
|
|
187
|
-
zIndex: number
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* 元素状态: 不同状态不应不同元素的显示效果(无法直接修改)
|
|
191
|
-
*/
|
|
192
|
-
readonly state: ElementState
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* 创建节点 ID
|
|
196
|
-
*
|
|
197
|
-
* 默认情况下,LogicFlow 内部使用 uuidV4 生成 id。在自定义节点的时候,可以重写此方法,
|
|
198
|
-
* 基于自己的规则生成 id。
|
|
199
|
-
* 注意 📢:此方法必须是同步方法,如果想要异步修改 ID,建议删除此节点后在同一位置创建一个新的节点
|
|
200
|
-
* @overridable 可被重写
|
|
201
|
-
* @returns string
|
|
202
|
-
*/
|
|
203
|
-
createId: () => string | null
|
|
204
|
-
|
|
205
|
-
// Actions
|
|
206
|
-
isAllowMoveNode?: (deltaX: number, deltaY: number) => boolean | IsAllowMove
|
|
207
|
-
moveText: (deltaX: number, deltaY: number) => void
|
|
208
|
-
moveTo?: (x: number, y: number, isIgnoreRule: boolean) => boolean
|
|
209
|
-
getMoveDistance?: (
|
|
210
|
-
deltaX: number,
|
|
211
|
-
deltaY: number,
|
|
212
|
-
isIgnoreRule: boolean,
|
|
213
|
-
) => VectorType
|
|
214
|
-
move?: (x: number, y: number, isIgnoreRule: boolean) => boolean
|
|
215
|
-
updateText: (text: string) => void
|
|
216
|
-
|
|
217
|
-
setSelected: (isSelected: boolean) => void
|
|
218
|
-
setHovered: (isHovered: boolean) => void
|
|
219
|
-
setHitable: (isHittable: boolean) => void // TODO: 拼写错误 fix typo(兼容拼写错误的情况)
|
|
220
|
-
setHittable: (isHittable: boolean) => void
|
|
221
|
-
|
|
222
|
-
setZIndex: (zIndex?: number) => void
|
|
223
|
-
updateAttributes: (attributes: LogicFlow.AttributesType) => void
|
|
224
|
-
/**
|
|
225
|
-
* 设置 Node | Edge 等 model 的状态
|
|
226
|
-
* @param state 状态
|
|
227
|
-
* @param additionStateData 额外的参数
|
|
228
|
-
*/
|
|
229
|
-
setElementState: (
|
|
230
|
-
state: ElementState,
|
|
231
|
-
additionStateData?: AdditionStateDataType,
|
|
232
|
-
) => void
|
|
233
|
-
|
|
234
|
-
getData: () => Record<string, unknown>
|
|
235
|
-
getProperties: () => PropertyType
|
|
236
|
-
setProperty: (key: string, val: unknown) => void
|
|
237
|
-
setProperties: (properties: PropertyType) => void
|
|
238
|
-
deleteProperty: (key: string) => void
|
|
239
|
-
|
|
240
|
-
getNodeStyle?: () => LogicFlow.CommonTheme
|
|
241
|
-
getEdgeStyle?: () => LogicFlow.EdgeTheme
|
|
242
|
-
getTextStyle: () => LogicFlow.TextNodeTheme
|
|
243
|
-
getAnchorStyle?: () => LogicFlow.AnchorTheme
|
|
244
|
-
getAnchorLineStyle?: () => LogicFlow.AnchorLineTheme
|
|
245
|
-
getOutlineStyle: () => LogicFlow.OutlineTheme
|
|
246
|
-
setStyle: (key: string, val: LogicFlow.CommonThemePropTypes) => void
|
|
247
|
-
setStyles: (styles: LogicFlow.CommonTheme) => void
|
|
248
|
-
updateStyles: (styles: LogicFlow.CommonTheme) => void
|
|
249
|
-
}
|
|
250
|
-
}
|
|
@@ -1,334 +0,0 @@
|
|
|
1
|
-
import { assign, isBoolean, isUndefined, pick } from 'lodash-es'
|
|
2
|
-
import { observable, action } from 'mobx'
|
|
3
|
-
import { TextMode } from '../constant'
|
|
4
|
-
|
|
5
|
-
export interface IEditConfigType {
|
|
6
|
-
/**
|
|
7
|
-
* 是否为静默模式
|
|
8
|
-
*/
|
|
9
|
-
isSilentMode: boolean
|
|
10
|
-
/**
|
|
11
|
-
* 禁止缩放画布
|
|
12
|
-
*/
|
|
13
|
-
stopZoomGraph: boolean
|
|
14
|
-
/**
|
|
15
|
-
* 禁止鼠标滚动移动画布
|
|
16
|
-
*/
|
|
17
|
-
stopScrollGraph: boolean
|
|
18
|
-
/**
|
|
19
|
-
* 禁止拖动画布,默认为false
|
|
20
|
-
* - true:完全禁止移动
|
|
21
|
-
* - vertical: 禁止垂直方向拖动
|
|
22
|
-
* - horizontal:禁止水平方向拖动
|
|
23
|
-
* - [number, number, number, number]:[minX, minY, maxX, maxY] 画布可拖动范围
|
|
24
|
-
*/
|
|
25
|
-
stopMoveGraph:
|
|
26
|
-
| boolean
|
|
27
|
-
| 'vertical'
|
|
28
|
-
| 'horizontal'
|
|
29
|
-
| [number, number, number, number]
|
|
30
|
-
/**
|
|
31
|
-
* 允许调整边
|
|
32
|
-
*/
|
|
33
|
-
adjustEdge: boolean
|
|
34
|
-
/**
|
|
35
|
-
* 允许调整边的中间点
|
|
36
|
-
*/
|
|
37
|
-
adjustEdgeMiddle: boolean
|
|
38
|
-
/**
|
|
39
|
-
* 允许调整边起点和终点
|
|
40
|
-
*/
|
|
41
|
-
adjustEdgeStartAndEnd: boolean
|
|
42
|
-
/**
|
|
43
|
-
* 允许调整边起点
|
|
44
|
-
*/
|
|
45
|
-
adjustEdgeStart: boolean
|
|
46
|
-
/**
|
|
47
|
-
* 允许调整边的终点
|
|
48
|
-
*/
|
|
49
|
-
adjustEdgeEnd: boolean
|
|
50
|
-
/**
|
|
51
|
-
* 允许拖动节点
|
|
52
|
-
*/
|
|
53
|
-
adjustNodePosition: boolean
|
|
54
|
-
/**
|
|
55
|
-
* 隐藏节点所有锚点
|
|
56
|
-
*/
|
|
57
|
-
hideAnchors: boolean
|
|
58
|
-
/**
|
|
59
|
-
* 是否允许节点旋转(旋转点的显隐)
|
|
60
|
-
*/
|
|
61
|
-
allowRotate: boolean
|
|
62
|
-
/**
|
|
63
|
-
* 是否允许节点缩放(缩放调整点的显隐)
|
|
64
|
-
*/
|
|
65
|
-
allowResize: boolean
|
|
66
|
-
/**
|
|
67
|
-
* 是否自动展开
|
|
68
|
-
*/
|
|
69
|
-
autoExpand: boolean
|
|
70
|
-
/**
|
|
71
|
-
* 显示节点悬浮时的外框
|
|
72
|
-
*/
|
|
73
|
-
hoverOutline: boolean
|
|
74
|
-
/**
|
|
75
|
-
* 节点被选中时是否显示outline
|
|
76
|
-
*/
|
|
77
|
-
nodeSelectedOutline: boolean
|
|
78
|
-
/**
|
|
79
|
-
* 边被选中时是否显示outline
|
|
80
|
-
*/
|
|
81
|
-
edgeSelectedOutline: boolean
|
|
82
|
-
/**
|
|
83
|
-
* 允许文本可编辑
|
|
84
|
-
*/
|
|
85
|
-
textEdit: boolean
|
|
86
|
-
/**
|
|
87
|
-
* 允许节点文本可以编辑
|
|
88
|
-
*/
|
|
89
|
-
nodeTextEdit: boolean
|
|
90
|
-
/**
|
|
91
|
-
* 允许边文本可以编辑
|
|
92
|
-
*/
|
|
93
|
-
edgeTextEdit: boolean
|
|
94
|
-
/**
|
|
95
|
-
* 允许文本可拖拽(文本包括Text、Label)
|
|
96
|
-
*/
|
|
97
|
-
textDraggable: boolean
|
|
98
|
-
/**
|
|
99
|
-
* 允许节点文本可以拖拽
|
|
100
|
-
*/
|
|
101
|
-
nodeTextDraggable: boolean
|
|
102
|
-
/**
|
|
103
|
-
* 允许边文本可以拖拽
|
|
104
|
-
*/
|
|
105
|
-
edgeTextDraggable: boolean
|
|
106
|
-
/**
|
|
107
|
-
* 多选按键, 支持meta(cmd)、shift、alt
|
|
108
|
-
* 不支持ctrl,ctrl会触发contextmenu
|
|
109
|
-
*/
|
|
110
|
-
multipleSelectKey: string
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* 2.0.0 新增配置,启用 Label 后生效
|
|
114
|
-
* 是否支持多文本,文本文字是否垂直展示
|
|
115
|
-
* 当前文本类型
|
|
116
|
-
*/
|
|
117
|
-
nodeTextMultiple: boolean
|
|
118
|
-
edgeTextMultiple: boolean
|
|
119
|
-
nodeTextVertical: boolean
|
|
120
|
-
edgeTextVertical: boolean
|
|
121
|
-
textMode: TextMode
|
|
122
|
-
// 节点文本类型
|
|
123
|
-
nodeTextMode: TextMode
|
|
124
|
-
// 边文本类型
|
|
125
|
-
edgeTextMode: TextMode
|
|
126
|
-
// 开启网格对齐
|
|
127
|
-
snapGrid: boolean
|
|
128
|
-
isPinching: boolean
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
export type IConfigKeys = keyof IEditConfigType
|
|
132
|
-
|
|
133
|
-
const silentModeConfig = {
|
|
134
|
-
// SilentMode 下允许用户操作画布
|
|
135
|
-
stopZoomGraph: false,
|
|
136
|
-
stopScrollGraph: false,
|
|
137
|
-
stopMoveGraph: false,
|
|
138
|
-
// 节点 & 边相关配置
|
|
139
|
-
adjustEdge: false,
|
|
140
|
-
adjustEdgeStartAndEnd: false,
|
|
141
|
-
adjustNodePosition: false,
|
|
142
|
-
hideAnchors: true,
|
|
143
|
-
allowRotate: false,
|
|
144
|
-
allowResize: false,
|
|
145
|
-
nodeSelectedOutline: true,
|
|
146
|
-
// 文本相关配置
|
|
147
|
-
textEdit: false,
|
|
148
|
-
nodeTextEdit: false,
|
|
149
|
-
edgeTextEdit: false,
|
|
150
|
-
textDraggable: false,
|
|
151
|
-
nodeTextDraggable: false,
|
|
152
|
-
edgeTextDraggable: false,
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
const allKeys = [
|
|
156
|
-
'isSilentMode', // 是否为静默模式
|
|
157
|
-
'stopZoomGraph', // 禁止缩放画布
|
|
158
|
-
'stopScrollGraph', // 禁止鼠标滚动移动画布
|
|
159
|
-
'stopMoveGraph', // 禁止拖动画布
|
|
160
|
-
'snapGrid', // 是否开启网格对齐
|
|
161
|
-
'adjustEdge', // 允许调整边
|
|
162
|
-
'adjustEdgeMiddle', // 允许调整边中点
|
|
163
|
-
'adjustEdgeStartAndEnd', // 允许调整边起点和终点
|
|
164
|
-
'adjustEdgeStart', // 允许调整边起点
|
|
165
|
-
'adjustEdgeEnd', // 允许调整边终点
|
|
166
|
-
'adjustNodePosition', // 允许拖动节点
|
|
167
|
-
'hideAnchors', // 隐藏节点所有锚点
|
|
168
|
-
'allowRotate', // 是否允许节点旋转
|
|
169
|
-
'allowResize', // 是否允许节点缩放
|
|
170
|
-
'autoExpand', // 是否自动展开
|
|
171
|
-
'hoverOutline', // 显示节点悬浮时的外框
|
|
172
|
-
'nodeSelectedOutline', // 节点被选中时是否显示 outline
|
|
173
|
-
'edgeSelectedOutline', // 边被选中时是否显示 outline
|
|
174
|
-
'textEdit', // 是否允许文本可编辑(全局)
|
|
175
|
-
'nodeTextEdit', // 允许节点文本可以编辑
|
|
176
|
-
'edgeTextEdit', // 允许边文本可以编辑
|
|
177
|
-
'textDraggable', // 是否允许文本可拖拽(全局)
|
|
178
|
-
'nodeTextDraggable', // 允许节点文本可以拖拽
|
|
179
|
-
'edgeTextDraggable', // 允许边文本可以拖拽
|
|
180
|
-
'multipleSelectKey', // 多选按键
|
|
181
|
-
|
|
182
|
-
// 2.0.0 新增配置
|
|
183
|
-
'textMode', // 文本模式(全局)
|
|
184
|
-
'nodeTextMode', // 节点文本模式
|
|
185
|
-
'edgeTextMode', // 边文本模式
|
|
186
|
-
'nodeTextMultiple', // 是否支持多个节点文本
|
|
187
|
-
'edgeTextMultiple', // 是否支持多个边文本
|
|
188
|
-
'nodeTextVertical', // 节点文本是否纵向显示
|
|
189
|
-
'edgeTextVertical', // 边文本是否纵向显示
|
|
190
|
-
'isPinching', //是否是双指捏合态
|
|
191
|
-
] as const
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* 页面编辑配置
|
|
195
|
-
*/
|
|
196
|
-
export class EditConfigModel {
|
|
197
|
-
stagedConfig?: Partial<IEditConfigType> // 暂存「设置为静默模式之前」的配置,在取消静默模式后恢复
|
|
198
|
-
|
|
199
|
-
/*********************************************************
|
|
200
|
-
* 画布相关配置
|
|
201
|
-
********************************************************/
|
|
202
|
-
@observable isSilentMode = false
|
|
203
|
-
@observable stopZoomGraph = false
|
|
204
|
-
@observable stopMoveGraph = false
|
|
205
|
-
@observable stopScrollGraph = false
|
|
206
|
-
@observable snapGrid = false
|
|
207
|
-
@observable isPinching = false
|
|
208
|
-
/*********************************************************
|
|
209
|
-
* 文本相关配置(全局)
|
|
210
|
-
********************************************************/
|
|
211
|
-
@observable textMode = TextMode.TEXT // 全局的 textMode 设置
|
|
212
|
-
@observable textEdit = true
|
|
213
|
-
@observable textDraggable = false
|
|
214
|
-
// 节点
|
|
215
|
-
@observable nodeTextEdit = true
|
|
216
|
-
@observable nodeTextDraggable = false
|
|
217
|
-
@observable nodeTextMultiple = false // 是否支持多个节点文本
|
|
218
|
-
@observable nodeTextVertical = false // 节点文本朝向是否是纵向
|
|
219
|
-
@observable nodeTextMode = TextMode.TEXT // 节点文本模式
|
|
220
|
-
// 边
|
|
221
|
-
@observable edgeTextMode = TextMode.TEXT // 边文本模式
|
|
222
|
-
@observable edgeTextEdit = true
|
|
223
|
-
@observable edgeTextDraggable = false
|
|
224
|
-
@observable edgeTextMultiple = false // 是否支持多个边文本
|
|
225
|
-
@observable edgeTextVertical = false // 边文本朝向是否是纵向
|
|
226
|
-
/*********************************************************
|
|
227
|
-
* 节点相关配置
|
|
228
|
-
********************************************************/
|
|
229
|
-
@observable hideAnchors = false
|
|
230
|
-
@observable allowRotate = false
|
|
231
|
-
@observable allowResize = false
|
|
232
|
-
@observable hoverOutline = true
|
|
233
|
-
@observable nodeSelectedOutline = true
|
|
234
|
-
@observable adjustNodePosition = true
|
|
235
|
-
@observable autoExpand = false
|
|
236
|
-
/*********************************************************
|
|
237
|
-
* 边相关配置
|
|
238
|
-
********************************************************/
|
|
239
|
-
@observable adjustEdge = true
|
|
240
|
-
@observable adjustEdgeMiddle = false
|
|
241
|
-
@observable adjustEdgeStartAndEnd = false
|
|
242
|
-
@observable adjustEdgeStart = false
|
|
243
|
-
@observable adjustEdgeEnd = false
|
|
244
|
-
@observable edgeSelectedOutline = true
|
|
245
|
-
/*********************************************************
|
|
246
|
-
* 其他
|
|
247
|
-
********************************************************/
|
|
248
|
-
multipleSelectKey = ''
|
|
249
|
-
|
|
250
|
-
constructor(config: Partial<IEditConfigType>) {
|
|
251
|
-
assign(this, this.computeConfig(config))
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
@action
|
|
255
|
-
updateEditConfig(config: Partial<IEditConfigType>) {
|
|
256
|
-
const newConfig = this.computeConfig(config)
|
|
257
|
-
assign(this, newConfig)
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
// TODO: 确认一下这个函数的逻辑,是否会有误合并的问题
|
|
261
|
-
computeConfig(config: Partial<IEditConfigType>) {
|
|
262
|
-
const {
|
|
263
|
-
isSilentMode,
|
|
264
|
-
textDraggable,
|
|
265
|
-
textMode,
|
|
266
|
-
textEdit,
|
|
267
|
-
adjustEdgeStartAndEnd,
|
|
268
|
-
} = config
|
|
269
|
-
const conf: Partial<IEditConfigType> = {}
|
|
270
|
-
|
|
271
|
-
// false 表示从静默模式恢复
|
|
272
|
-
if (isSilentMode === false) {
|
|
273
|
-
assign(conf, this.stagedConfig)
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
// 如果不传,默认 undefined 表示非静默模式
|
|
277
|
-
if (isSilentMode === true && isSilentMode !== this.isSilentMode) {
|
|
278
|
-
// https://github.com/didi/LogicFlow/issues/1180
|
|
279
|
-
// 如果重复调用 isSilentMode=true 多次,会导致 this.stagedConfig 状态保存错误:保存为修改之后的 Config
|
|
280
|
-
// 因此需要阻止重复赋值为 true,使用 config.isSilentMode !== this.isSilentMode
|
|
281
|
-
const silentConfig = pick(silentModeConfig, allKeys)
|
|
282
|
-
// 暂存修改之前的所有配置项
|
|
283
|
-
this.stagedConfig = pick(this, allKeys)
|
|
284
|
-
|
|
285
|
-
assign(conf, silentConfig)
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
// 如果不传,默认undefined表示允许文本编辑
|
|
289
|
-
if (!isUndefined(textEdit)) {
|
|
290
|
-
assign(conf, {
|
|
291
|
-
nodeTextEdit: textEdit,
|
|
292
|
-
edgeTextEdit: textEdit,
|
|
293
|
-
})
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
if (!isUndefined(textDraggable)) {
|
|
297
|
-
assign(conf, {
|
|
298
|
-
nodeTextDraggable: textDraggable,
|
|
299
|
-
edgeTextDraggable: textDraggable,
|
|
300
|
-
})
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
if (textMode) {
|
|
304
|
-
assign(conf, {
|
|
305
|
-
nodeTextMode: textMode,
|
|
306
|
-
edgeTextMode: textMode,
|
|
307
|
-
})
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
if (isBoolean(adjustEdgeStartAndEnd)) {
|
|
311
|
-
assign(conf, {
|
|
312
|
-
adjustEdgeStart: adjustEdgeStartAndEnd,
|
|
313
|
-
adjustEdgeEnd: adjustEdgeStartAndEnd,
|
|
314
|
-
})
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
const userConfig = pick(config, allKeys)
|
|
318
|
-
return assign(conf, userConfig)
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
@action
|
|
322
|
-
updateTextMode(textMode: TextMode) {
|
|
323
|
-
// 如果更新全局 textMode,同时更新节点和边的 textMode
|
|
324
|
-
this.textMode = textMode
|
|
325
|
-
this.edgeTextMode = textMode
|
|
326
|
-
this.nodeTextMode = textMode
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
getConfig(): IEditConfigType {
|
|
330
|
-
return pick(this, allKeys)
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
export default EditConfigModel
|