@logicflow/core 2.2.0-alpha.7 → 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/package.json +6 -1
- package/.turbo/turbo-build$colon$dev.log +0 -10
- package/.turbo/turbo-build.log +0 -33
- package/CHANGELOG.md +0 -1901
- 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 -2017
- 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/constant/theme.ts +0 -708
- 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 -1824
- 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 -785
- package/src/model/edge/BezierEdgeModel.ts +0 -197
- package/src/model/edge/LineEdgeModel.ts +0 -36
- package/src/model/edge/PolylineEdgeModel.ts +0 -817
- package/src/model/edge/index.ts +0 -4
- package/src/model/index.ts +0 -9
- package/src/model/node/BaseNodeModel.ts +0 -959
- 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 -64
- package/src/model/node/PolygonNodeModel.ts +0 -152
- 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 -150
- package/src/style/index.less +0 -262
- package/src/style/raw.ts +0 -221
- package/src/tool/MultipleSelectTool.tsx +0 -140
- 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 -219
- package/src/util/edge.ts +0 -1094
- package/src/util/geometry.ts +0 -154
- 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 -84
- 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 -462
- package/src/view/Control.tsx +0 -510
- 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 -660
- package/src/view/edge/BezierEdge.tsx +0 -101
- package/src/view/edge/LineEdge.tsx +0 -81
- package/src/view/edge/PolylineEdge.tsx +0 -311
- package/src/view/edge/index.ts +0 -6
- package/src/view/index.ts +0 -8
- package/src/view/node/BaseNode.tsx +0 -585
- 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 -112
- 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 -290
- package/src/view/overlay/Grid.tsx +0 -319
- package/src/view/overlay/ModificationOverlay.tsx +0 -31
- package/src/view/overlay/OutlineOverlay.tsx +0 -158
- 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/gridConfig.ts +0 -103
- 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 -54
- package/src/view/shape/Polyline.tsx +0 -31
- package/src/view/shape/Rect.tsx +0 -44
- package/src/view/shape/Text.tsx +0 -168
- 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/event/event.md
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
# EventCenter
|
|
2
|
-
|
|
3
|
-
`eventCenter` 是 LogicFlow 内部的通讯中心,通过 `eventCenter` 来发布事件或者监听事件,以低耦合的方式使两个实例产生交互。
|
|
4
|
-
|
|
5
|
-
在开发过程中,使用 `eventCenter` 也需要遵循一些规范。
|
|
6
|
-
|
|
7
|
-
## 事件名
|
|
8
|
-
|
|
9
|
-
### 规范
|
|
10
|
-
|
|
11
|
-
命名遵循 `namespace:eventName` 的结构,同类 eventName 通过 namespace 来区分。
|
|
12
|
-
|
|
13
|
-
比如 node 和 edge 抛出的都是 click 事件,但是观察者可能是不同群体,通过 namespace 使得事件监听更精确,不容易出错。
|
|
14
|
-
|
|
15
|
-
目前 core 包中定义的 namespace 包括:
|
|
16
|
-
|
|
17
|
-
- `node`:节点事件
|
|
18
|
-
- `edge`:边事件
|
|
19
|
-
- `anchor`:锚点事件
|
|
20
|
-
- `blank`:画布空白区域事件
|
|
21
|
-
- `history`:历史记录事件
|
|
22
|
-
- `selection`:选区事件
|
|
23
|
-
|
|
24
|
-
### 开发注意
|
|
25
|
-
|
|
26
|
-
内部均通过 `eventCenter` 来抛出事件,包括以下两种情况:
|
|
27
|
-
|
|
28
|
-
- `graphModel` 中通过 `this.eventCenter` 调用 `eventCenter` 对象的 `emit` 方法抛出事件。
|
|
29
|
-
- 组件通过 `props` 获取到 `eventCenter` 实例对象,然后在组件内部调用 `eventCenter` 的 `emit` 方法来抛出事件。
|
|
30
|
-
- 部分组件会从 `props` 中直接获取 `eventCenter` 实例
|
|
31
|
-
- 而另一部分组件则需要从 `props` 中获取 `graphModel` 实例,然后通过 `graphModel.eventCenter` 获取 `eventCenter` 实例
|
|
32
|
-
|
|
33
|
-
用户可以通过 LogicFlow 的实例 `lf` 去监听我们抛出的事件。
|
|
34
|
-
|
|
35
|
-
如果组件内部监听了 `eventCenter` 事件,在组件销毁的时候,需要取消这些监听。
|
|
36
|
-
|
|
37
|
-
## 事件对象
|
|
38
|
-
|
|
39
|
-
在使用 `emit` 方法抛出事件时,可以传递一个对象作为第二个参数,该对象将作为对应的事件监听器的回调函数的入参。
|
|
40
|
-
|
|
41
|
-
事件对象可以包含任何与当前事件相关的信息,比如节点的 id,边的 id,原生鼠标事件对象等。
|
|
42
|
-
|
|
43
|
-
以 `node:click` 事件为例:
|
|
44
|
-
|
|
45
|
-
```ts
|
|
46
|
-
// 抛出 node:click 事件
|
|
47
|
-
eventCenter.emit('node:click', {
|
|
48
|
-
data: {
|
|
49
|
-
// 节点数据
|
|
50
|
-
},
|
|
51
|
-
e: MouseEvent,
|
|
52
|
-
position: {
|
|
53
|
-
// 鼠标点击的位置信息
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
// 监听 node:click 事件
|
|
58
|
-
eventCenter.on('node:click', (event) => {
|
|
59
|
-
console.log(event); // event 即为抛出事件时传递的对象
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
// 使用解构赋值可以便捷地获取事件对象中的信息
|
|
63
|
-
eventCenter.on('node:click', ({ data, e, position }) => {
|
|
64
|
-
console.log(data, e, position);
|
|
65
|
-
});
|
|
66
|
-
```
|
package/src/event/eventArgs.ts
DELETED
|
@@ -1,643 +0,0 @@
|
|
|
1
|
-
import LogicFlow, {
|
|
2
|
-
BaseNodeModel,
|
|
3
|
-
BaseEdgeModel,
|
|
4
|
-
Model,
|
|
5
|
-
GraphModel,
|
|
6
|
-
TransformData,
|
|
7
|
-
TransformType,
|
|
8
|
-
} from '..'
|
|
9
|
-
|
|
10
|
-
import NodeData = LogicFlow.NodeData
|
|
11
|
-
import EdgeData = LogicFlow.EdgeData
|
|
12
|
-
import GraphData = LogicFlow.GraphData
|
|
13
|
-
import AnchorConfig = Model.AnchorConfig
|
|
14
|
-
import ClientPosition = LogicFlow.ClientPosition
|
|
15
|
-
|
|
16
|
-
type ClickEventArgs = {
|
|
17
|
-
/**
|
|
18
|
-
* 点击后节点是否处于选中状态
|
|
19
|
-
*/
|
|
20
|
-
isSelected: boolean
|
|
21
|
-
/**
|
|
22
|
-
* 是否为多选状态
|
|
23
|
-
*/
|
|
24
|
-
isMultiple: boolean
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
type NodeEventArgsPick<
|
|
28
|
-
T extends
|
|
29
|
-
| 'preData'
|
|
30
|
-
| 'data'
|
|
31
|
-
| 'model'
|
|
32
|
-
| 'e'
|
|
33
|
-
| 'position'
|
|
34
|
-
| 'deltaX'
|
|
35
|
-
| 'deltaY'
|
|
36
|
-
| 'index',
|
|
37
|
-
> = Pick<
|
|
38
|
-
{
|
|
39
|
-
/**
|
|
40
|
-
* 上一个状态的节点数据
|
|
41
|
-
*/
|
|
42
|
-
preData: NodeData
|
|
43
|
-
/**
|
|
44
|
-
* 节点数据
|
|
45
|
-
*/
|
|
46
|
-
data: NodeData
|
|
47
|
-
/**
|
|
48
|
-
* 节点 model
|
|
49
|
-
*/
|
|
50
|
-
model: BaseNodeModel
|
|
51
|
-
/**
|
|
52
|
-
* 原生鼠标事件对象
|
|
53
|
-
*/
|
|
54
|
-
e: MouseEvent
|
|
55
|
-
/**
|
|
56
|
-
* 鼠标触发点相对于画布左上角的坐标
|
|
57
|
-
*/
|
|
58
|
-
position: ClientPosition
|
|
59
|
-
/**
|
|
60
|
-
* 鼠标 X轴移动的距离
|
|
61
|
-
*/
|
|
62
|
-
deltaX: number
|
|
63
|
-
/**
|
|
64
|
-
* 鼠标Y轴移动的距离
|
|
65
|
-
*/
|
|
66
|
-
deltaY: number
|
|
67
|
-
/**
|
|
68
|
-
* Resize 时调整的是哪个控制点
|
|
69
|
-
*/
|
|
70
|
-
index: number
|
|
71
|
-
},
|
|
72
|
-
T
|
|
73
|
-
>
|
|
74
|
-
|
|
75
|
-
type TextEventArgsPick<
|
|
76
|
-
T extends 'data' | 'e' | 'model' | 'element' | 'position',
|
|
77
|
-
> = Pick<
|
|
78
|
-
{
|
|
79
|
-
// 节点数据
|
|
80
|
-
data?: any
|
|
81
|
-
// 原生鼠标事件对象
|
|
82
|
-
e?: MouseEvent | FocusEvent
|
|
83
|
-
// 文本所在元素model
|
|
84
|
-
model?: BaseNodeModel | BaseEdgeModel | unknown
|
|
85
|
-
// 文本dom
|
|
86
|
-
element?: HTMLElement | null
|
|
87
|
-
// 文本位置
|
|
88
|
-
position?: {
|
|
89
|
-
x: number
|
|
90
|
-
y: number
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
T
|
|
94
|
-
>
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* 节点事件
|
|
98
|
-
*/
|
|
99
|
-
interface NodeEventArgs {
|
|
100
|
-
/**
|
|
101
|
-
* 单击节点
|
|
102
|
-
*/
|
|
103
|
-
'node:click': NodeEventArgsPick<'data' | 'e' | 'position'> & ClickEventArgs
|
|
104
|
-
/**
|
|
105
|
-
* 双击节点
|
|
106
|
-
*/
|
|
107
|
-
'node:dbclick': NodeEventArgsPick<'data' | 'e' | 'position'>
|
|
108
|
-
/**
|
|
109
|
-
* 鼠标按下节点
|
|
110
|
-
*/
|
|
111
|
-
'node:mousedown': NodeEventArgsPick<'data' | 'e'>
|
|
112
|
-
/**
|
|
113
|
-
* 鼠标抬起节点
|
|
114
|
-
*/
|
|
115
|
-
'node:mouseup': NodeEventArgsPick<'data' | 'e'>
|
|
116
|
-
/**
|
|
117
|
-
* 鼠标移动节点
|
|
118
|
-
*/
|
|
119
|
-
'node:mousemove': NodeEventArgsPick<'data' | 'e' | 'deltaX' | 'deltaY'>
|
|
120
|
-
/**
|
|
121
|
-
* 鼠标进入节点
|
|
122
|
-
*/
|
|
123
|
-
'node:mouseenter': NodeEventArgsPick<'data' | 'e'>
|
|
124
|
-
/**
|
|
125
|
-
* 鼠标离开节点
|
|
126
|
-
*/
|
|
127
|
-
'node:mouseleave': NodeEventArgsPick<'data' | 'e'>
|
|
128
|
-
/**
|
|
129
|
-
* 添加节点
|
|
130
|
-
*/
|
|
131
|
-
'node:add': NodeEventArgsPick<'data'>
|
|
132
|
-
/**
|
|
133
|
-
* 删除节点
|
|
134
|
-
*/
|
|
135
|
-
'node:delete': NodeEventArgsPick<'data' | 'model'>
|
|
136
|
-
/**
|
|
137
|
-
* 添加外部拖入节点
|
|
138
|
-
*/
|
|
139
|
-
'node:dnd-add': NodeEventArgsPick<'data'>
|
|
140
|
-
/**
|
|
141
|
-
* 拖拽外部拖入节点
|
|
142
|
-
*/
|
|
143
|
-
'node:dnd-drag': NodeEventArgsPick<'data' | 'e'>
|
|
144
|
-
/**
|
|
145
|
-
* 开始拖拽节点
|
|
146
|
-
*/
|
|
147
|
-
'node:dragstart': NodeEventArgsPick<'data' | 'e'>
|
|
148
|
-
/**
|
|
149
|
-
* 拖拽节点
|
|
150
|
-
*/
|
|
151
|
-
'node:drag': NodeEventArgsPick<'data' | 'e' | 'deltaX' | 'deltaY'>
|
|
152
|
-
/**
|
|
153
|
-
* 拖拽节点结束
|
|
154
|
-
*/
|
|
155
|
-
'node:drop': NodeEventArgsPick<'data' | 'e'>
|
|
156
|
-
/**
|
|
157
|
-
* 右键点击节点
|
|
158
|
-
*/
|
|
159
|
-
'node:contextmenu': NodeEventArgsPick<'data' | 'e' | 'position'>
|
|
160
|
-
/**
|
|
161
|
-
* 节点旋转
|
|
162
|
-
*/
|
|
163
|
-
'node:rotate': NodeEventArgsPick<'data' | 'e' | 'model'>
|
|
164
|
-
/**
|
|
165
|
-
* 节点缩放
|
|
166
|
-
*/
|
|
167
|
-
'node:resize': NodeEventArgsPick<
|
|
168
|
-
'preData' | 'data' | 'model' | 'deltaX' | 'deltaY' | 'index'
|
|
169
|
-
>
|
|
170
|
-
/**
|
|
171
|
-
* 元素的 properties 发生改变
|
|
172
|
-
*/
|
|
173
|
-
'node:properties-change': {
|
|
174
|
-
/**
|
|
175
|
-
* 元素的 id
|
|
176
|
-
*/
|
|
177
|
-
id: string
|
|
178
|
-
/**
|
|
179
|
-
* 改变的 properties 的 key
|
|
180
|
-
*/
|
|
181
|
-
keys: string[]
|
|
182
|
-
/**
|
|
183
|
-
* 改变前的 properties
|
|
184
|
-
*/
|
|
185
|
-
preProperties: Record<string, any>
|
|
186
|
-
/**
|
|
187
|
-
* 改变后的 properties
|
|
188
|
-
*/
|
|
189
|
-
properties: Record<string, any>
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* 节点获焦
|
|
193
|
-
*/
|
|
194
|
-
'node:focus': NodeEventArgsPick<'data'>
|
|
195
|
-
/**
|
|
196
|
-
* 节点失焦
|
|
197
|
-
*/
|
|
198
|
-
'node:blur': NodeEventArgsPick<'data'>
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
type EdgeEventArgsPick<T extends 'data' | 'e' | 'position'> = Pick<
|
|
202
|
-
{
|
|
203
|
-
/**
|
|
204
|
-
* 边数据
|
|
205
|
-
*/
|
|
206
|
-
data: EdgeData
|
|
207
|
-
/**
|
|
208
|
-
* 原生鼠标事件对象
|
|
209
|
-
*/
|
|
210
|
-
e: MouseEvent
|
|
211
|
-
/**
|
|
212
|
-
* 鼠标触发点相对于画布左上角的坐标
|
|
213
|
-
*/
|
|
214
|
-
position: ClientPosition
|
|
215
|
-
},
|
|
216
|
-
T
|
|
217
|
-
>
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* 边事件
|
|
221
|
-
*/
|
|
222
|
-
interface EdgeEventArgs {
|
|
223
|
-
/**
|
|
224
|
-
* 单击边
|
|
225
|
-
*/
|
|
226
|
-
'edge:click': EdgeEventArgsPick<'data' | 'e' | 'position'>
|
|
227
|
-
/**
|
|
228
|
-
* 双击边
|
|
229
|
-
*/
|
|
230
|
-
'edge:dbclick': EdgeEventArgsPick<'data' | 'e' | 'position'>
|
|
231
|
-
/**
|
|
232
|
-
* 鼠标进入边
|
|
233
|
-
*/
|
|
234
|
-
'edge:mouseenter': EdgeEventArgsPick<'data' | 'e'>
|
|
235
|
-
/**
|
|
236
|
-
* 鼠标离开边
|
|
237
|
-
*/
|
|
238
|
-
'edge:mouseleave': EdgeEventArgsPick<'data' | 'e'>
|
|
239
|
-
/**
|
|
240
|
-
* 添加边
|
|
241
|
-
*/
|
|
242
|
-
'edge:add': EdgeEventArgsPick<'data'>
|
|
243
|
-
/**
|
|
244
|
-
* 删除边
|
|
245
|
-
*/
|
|
246
|
-
'edge:delete': EdgeEventArgsPick<'data'>
|
|
247
|
-
/**
|
|
248
|
-
* 右键点击边
|
|
249
|
-
*/
|
|
250
|
-
'edge:contextmenu': EdgeEventArgsPick<'data' | 'e' | 'position'>
|
|
251
|
-
/**
|
|
252
|
-
* 拖拽调整边
|
|
253
|
-
*/
|
|
254
|
-
'edge:adjust': EdgeEventArgsPick<'data'>
|
|
255
|
-
/**
|
|
256
|
-
* 调整边的起点/终点
|
|
257
|
-
*/
|
|
258
|
-
'edge:exchange-node': {
|
|
259
|
-
data: {
|
|
260
|
-
/**
|
|
261
|
-
* 新的边的数据
|
|
262
|
-
*/
|
|
263
|
-
newEdge: EdgeData
|
|
264
|
-
/**
|
|
265
|
-
* 旧的边的数据
|
|
266
|
-
*/
|
|
267
|
-
oldEdge: EdgeData
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* 边获焦
|
|
272
|
-
*/
|
|
273
|
-
'edge:focus': EdgeEventArgsPick<'data'>
|
|
274
|
-
/**
|
|
275
|
-
* 边失焦
|
|
276
|
-
*/
|
|
277
|
-
'edge:blur': EdgeEventArgsPick<'data'>
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* 文本事件
|
|
282
|
-
*/
|
|
283
|
-
interface TextEventArgs {
|
|
284
|
-
// 鼠标按下文本
|
|
285
|
-
'text:mousedown': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
286
|
-
// 开始拖拽文本
|
|
287
|
-
'text:dragstart': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
288
|
-
// 文本拖拽
|
|
289
|
-
'text:drag': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
290
|
-
// 文本拖拽结束
|
|
291
|
-
'text:drop': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
292
|
-
// 文本单击
|
|
293
|
-
'text:click': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
294
|
-
// 文本双击
|
|
295
|
-
'text:dbclick': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
296
|
-
// 文本失焦
|
|
297
|
-
'text:blur': TextEventArgsPick<'data' | 'e' | 'model' | 'element'>
|
|
298
|
-
// 鼠标移动文本
|
|
299
|
-
'text:mousemove': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
300
|
-
// 鼠标抬起
|
|
301
|
-
'text:mouseup': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
302
|
-
// 文本获焦
|
|
303
|
-
'text:focus': TextEventArgsPick<'data' | 'e' | 'model' | 'element'>
|
|
304
|
-
// 文本新增
|
|
305
|
-
'text:add': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
306
|
-
// 文本更新
|
|
307
|
-
'text:update': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
308
|
-
// 文本清空
|
|
309
|
-
'text:clear': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
310
|
-
// 文本删除
|
|
311
|
-
'text:delete': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
312
|
-
// 不允许增加文本
|
|
313
|
-
'text:not-allowed-add': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
/**
|
|
317
|
-
* label插件文本事件
|
|
318
|
-
*/
|
|
319
|
-
interface TextEventArgs {
|
|
320
|
-
// 鼠标按下文本
|
|
321
|
-
'label:mousedown': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
322
|
-
// 开始拖拽文本
|
|
323
|
-
'label:dragstart': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
324
|
-
// 文本拖拽
|
|
325
|
-
'label:drag': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
326
|
-
// 文本拖拽结束
|
|
327
|
-
'label:drop': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
328
|
-
// 文本单击
|
|
329
|
-
'label:click': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
330
|
-
// 文本双击
|
|
331
|
-
'label:dbclick': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
332
|
-
// 文本失焦
|
|
333
|
-
'label:blur': TextEventArgsPick<'data' | 'e' | 'model' | 'element'>
|
|
334
|
-
// 鼠标移动文本
|
|
335
|
-
'label:mousemove': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
336
|
-
// 鼠标抬起
|
|
337
|
-
'label:mouseup': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
338
|
-
// 文本获焦
|
|
339
|
-
'label:focus': TextEventArgsPick<'data' | 'e' | 'model' | 'element'>
|
|
340
|
-
// 文本新增
|
|
341
|
-
'label:add': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
342
|
-
// 文本更新
|
|
343
|
-
'label:update': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
344
|
-
// 文本清空
|
|
345
|
-
'label:clear': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
346
|
-
// 文本删除
|
|
347
|
-
'label:delete': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
348
|
-
// 文本新增
|
|
349
|
-
'label:should-add': TextEventArgsPick<'data' | 'e' | 'model' | 'position'>
|
|
350
|
-
// 文本批量新增
|
|
351
|
-
'label:batch-add': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
352
|
-
// 文本更新
|
|
353
|
-
'label:should-update': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
354
|
-
// 文本删除
|
|
355
|
-
'label:should-delete': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
356
|
-
// 文本批量删除
|
|
357
|
-
'label:batch-delete': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
358
|
-
// 不允许增加文本
|
|
359
|
-
'label:not-allowed-add': TextEventArgsPick<'data' | 'e' | 'model'>
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
/**
|
|
363
|
-
* 连线事件
|
|
364
|
-
*/
|
|
365
|
-
interface ConnectionEventArgs {
|
|
366
|
-
'connection:not-allowed': {
|
|
367
|
-
/**
|
|
368
|
-
* 目标节点数据
|
|
369
|
-
*/
|
|
370
|
-
data: NodeData
|
|
371
|
-
/**
|
|
372
|
-
* 校验信息
|
|
373
|
-
*/
|
|
374
|
-
msg?: string
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
/**
|
|
379
|
-
* 公共事件
|
|
380
|
-
*/
|
|
381
|
-
interface CommonEventArgs {
|
|
382
|
-
'element:click': {
|
|
383
|
-
/**
|
|
384
|
-
* 点击元素的数据(节点/边)
|
|
385
|
-
*/
|
|
386
|
-
data: NodeData | EdgeData
|
|
387
|
-
/**
|
|
388
|
-
* 原生鼠标事件对象
|
|
389
|
-
*/
|
|
390
|
-
e: MouseEvent
|
|
391
|
-
/**
|
|
392
|
-
* 鼠标触发点相对于画布左上角的坐标
|
|
393
|
-
*/
|
|
394
|
-
position: ClientPosition
|
|
395
|
-
}
|
|
396
|
-
/**
|
|
397
|
-
* 进行画布平移或缩放等变化操作时触发
|
|
398
|
-
*/
|
|
399
|
-
'graph:transform': {
|
|
400
|
-
/**
|
|
401
|
-
* 变换操作类型
|
|
402
|
-
*/
|
|
403
|
-
type: TransformType
|
|
404
|
-
/**
|
|
405
|
-
* 变换操作后的数据
|
|
406
|
-
*/
|
|
407
|
-
transform: TransformData
|
|
408
|
-
}
|
|
409
|
-
/**
|
|
410
|
-
* 画布渲染数据后触发,即 `lf.render()` 方法被调用后触发。
|
|
411
|
-
*/
|
|
412
|
-
'graph:rendered': {
|
|
413
|
-
/**
|
|
414
|
-
* 渲染后的画布数据
|
|
415
|
-
*/
|
|
416
|
-
data: GraphData
|
|
417
|
-
/**
|
|
418
|
-
* 渲染后的画布 model
|
|
419
|
-
*/
|
|
420
|
-
graphModel: GraphModel
|
|
421
|
-
}
|
|
422
|
-
/**
|
|
423
|
-
* 画布重新更新后触发. 即 lf.render(graphData)方法被调用后或者改变画布(graphModel)上的属性后触发。
|
|
424
|
-
* 如果是主动修改某个特定属性导致画布更新,想要在画布更新后做一些操作,建议注册事件后在回调函数中及时注销该事件,或者使用once事件代替on事件。
|
|
425
|
-
* 因为其他属性也可能导致画布更新,触发该事件。
|
|
426
|
-
*/
|
|
427
|
-
'graph:updated': {
|
|
428
|
-
/**
|
|
429
|
-
* 更新后的画布数据
|
|
430
|
-
*/
|
|
431
|
-
data: GraphData
|
|
432
|
-
}
|
|
433
|
-
/**
|
|
434
|
-
* 画布容器大小发生变化触发,为了性能考虑对事件做了防抖处理,间隔为16ms
|
|
435
|
-
*/
|
|
436
|
-
'graph:resize': {
|
|
437
|
-
/**
|
|
438
|
-
* 更新后的画布数据
|
|
439
|
-
*/
|
|
440
|
-
target: HTMLElement
|
|
441
|
-
contentRect: DOMRectReadOnly
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
type AnchorEventArgsPick<T extends 'data' | 'e' | 'nodeModel' | 'edgeModel'> =
|
|
446
|
-
Pick<
|
|
447
|
-
{
|
|
448
|
-
/**
|
|
449
|
-
* 锚点数据
|
|
450
|
-
*/
|
|
451
|
-
data: AnchorConfig
|
|
452
|
-
/**
|
|
453
|
-
* 原生鼠标事件对象
|
|
454
|
-
*/
|
|
455
|
-
e: MouseEvent
|
|
456
|
-
/**
|
|
457
|
-
* 锚点所属节点的数据
|
|
458
|
-
*/
|
|
459
|
-
nodeModel: BaseNodeModel
|
|
460
|
-
/**
|
|
461
|
-
* 通过拖动锚点连线添加的边的数据
|
|
462
|
-
*/
|
|
463
|
-
edgeModel?: BaseEdgeModel
|
|
464
|
-
},
|
|
465
|
-
T
|
|
466
|
-
>
|
|
467
|
-
|
|
468
|
-
/**
|
|
469
|
-
* 锚点事件
|
|
470
|
-
*/
|
|
471
|
-
interface AnchorEventArgs {
|
|
472
|
-
/**
|
|
473
|
-
* anchor 锚点 click
|
|
474
|
-
*/
|
|
475
|
-
'anchor:click': AnchorEventArgsPick<'data' | 'e' | 'nodeModel'>
|
|
476
|
-
/**
|
|
477
|
-
* anchor 锚点 mousedown
|
|
478
|
-
*/
|
|
479
|
-
'anchor:mousedown': AnchorEventArgsPick<'data' | 'e' | 'nodeModel'>
|
|
480
|
-
/**
|
|
481
|
-
* 开始拖拽锚点
|
|
482
|
-
*/
|
|
483
|
-
'anchor:dragstart': AnchorEventArgsPick<'data' | 'e' | 'nodeModel'>
|
|
484
|
-
/**
|
|
485
|
-
* 拖拽锚点
|
|
486
|
-
*/
|
|
487
|
-
'anchor:drag': AnchorEventArgsPick<'data' | 'e' | 'nodeModel'>
|
|
488
|
-
/**
|
|
489
|
-
* 拖拽锚点结束,并成功添加边。
|
|
490
|
-
* 只有在创建连线成功时才触发。用于区分手动创建的连线和自动创建的连线 `edge:add`
|
|
491
|
-
*/
|
|
492
|
-
'anchor:drop': AnchorEventArgsPick<'data' | 'e' | 'nodeModel' | 'edgeModel'>
|
|
493
|
-
/**
|
|
494
|
-
* 拖拽锚点结束,不管是否成功添加边都会触发
|
|
495
|
-
*/
|
|
496
|
-
'anchor:dragend': AnchorEventArgsPick<
|
|
497
|
-
'data' | 'e' | 'nodeModel' | 'edgeModel'
|
|
498
|
-
>
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
type BlankEventArgsPick<T extends 'e' | 'position'> = Pick<
|
|
502
|
-
{
|
|
503
|
-
/**
|
|
504
|
-
* 原生鼠标事件对象
|
|
505
|
-
*/
|
|
506
|
-
e: MouseEvent
|
|
507
|
-
/**
|
|
508
|
-
* 鼠标触发点相对于画布左上角的坐标
|
|
509
|
-
*/
|
|
510
|
-
position: ClientPosition
|
|
511
|
-
},
|
|
512
|
-
T
|
|
513
|
-
>
|
|
514
|
-
|
|
515
|
-
/**
|
|
516
|
-
* 画布事件
|
|
517
|
-
*/
|
|
518
|
-
interface BlankEventArgs {
|
|
519
|
-
/**
|
|
520
|
-
* 鼠标按下画布
|
|
521
|
-
*/
|
|
522
|
-
'blank:mousedown': BlankEventArgsPick<'e'>
|
|
523
|
-
/**
|
|
524
|
-
* 鼠标抬起画布
|
|
525
|
-
*/
|
|
526
|
-
'blank:mouseup': BlankEventArgsPick<'e'>
|
|
527
|
-
/**
|
|
528
|
-
* 鼠标移动画布
|
|
529
|
-
*/
|
|
530
|
-
'blank:mousemove': BlankEventArgsPick<'e'>
|
|
531
|
-
/**
|
|
532
|
-
* 单击画布
|
|
533
|
-
*/
|
|
534
|
-
'blank:click': BlankEventArgsPick<'e'>
|
|
535
|
-
/**
|
|
536
|
-
* 右键点击画布
|
|
537
|
-
*/
|
|
538
|
-
'blank:contextmenu': BlankEventArgsPick<'e' | 'position'>
|
|
539
|
-
/**
|
|
540
|
-
* 开始拖拽画布
|
|
541
|
-
*/
|
|
542
|
-
'blank:dragstart': BlankEventArgsPick<'e'>
|
|
543
|
-
/**
|
|
544
|
-
* 拖拽画布
|
|
545
|
-
*/
|
|
546
|
-
'blank:drag': BlankEventArgsPick<'e'>
|
|
547
|
-
/**
|
|
548
|
-
* 拖拽画布结束
|
|
549
|
-
*/
|
|
550
|
-
'blank:drop': BlankEventArgsPick<'e'>
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
interface HistoryEventArgs {
|
|
554
|
-
/**
|
|
555
|
-
* 历史记录变化
|
|
556
|
-
*/
|
|
557
|
-
'history:change': {
|
|
558
|
-
/**
|
|
559
|
-
* 历史数据
|
|
560
|
-
*/
|
|
561
|
-
data: {
|
|
562
|
-
/**
|
|
563
|
-
* 可撤销的 graph 快照
|
|
564
|
-
*/
|
|
565
|
-
undos: GraphData[]
|
|
566
|
-
/**
|
|
567
|
-
* 可重做的 graph 快照
|
|
568
|
-
*/
|
|
569
|
-
redos: GraphData[]
|
|
570
|
-
/**
|
|
571
|
-
* 是否可以撤销
|
|
572
|
-
*/
|
|
573
|
-
undoAble: boolean
|
|
574
|
-
/**
|
|
575
|
-
* 是否可以重做
|
|
576
|
-
*/
|
|
577
|
-
redoAble: boolean
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
type SelectionEventArgsPick<T extends 'data' | 'e' | 'position'> = Pick<
|
|
583
|
-
{
|
|
584
|
-
/**
|
|
585
|
-
* 选中元素的数据(节点/边)
|
|
586
|
-
*/
|
|
587
|
-
data: GraphData
|
|
588
|
-
/**
|
|
589
|
-
* 原生鼠标事件对象
|
|
590
|
-
*/
|
|
591
|
-
e: MouseEvent
|
|
592
|
-
/**
|
|
593
|
-
* 鼠标触发点相对于画布左上角的坐标
|
|
594
|
-
*/
|
|
595
|
-
position: ClientPosition
|
|
596
|
-
},
|
|
597
|
-
T
|
|
598
|
-
>
|
|
599
|
-
|
|
600
|
-
/**
|
|
601
|
-
* 选区事件
|
|
602
|
-
*/
|
|
603
|
-
interface SelectionEventArgs {
|
|
604
|
-
/**
|
|
605
|
-
* 鼠标按下选区
|
|
606
|
-
*/
|
|
607
|
-
'selection:mousedown': SelectionEventArgsPick<'e'>
|
|
608
|
-
/**
|
|
609
|
-
* 开始拖拽选区
|
|
610
|
-
*/
|
|
611
|
-
'selection:dragstart': SelectionEventArgsPick<'e'>
|
|
612
|
-
/**
|
|
613
|
-
* 拖拽选区
|
|
614
|
-
*/
|
|
615
|
-
'selection:drag': SelectionEventArgsPick<'e'>
|
|
616
|
-
/**
|
|
617
|
-
* 拖拽选区结束
|
|
618
|
-
*/
|
|
619
|
-
'selection:drop': SelectionEventArgsPick<'e'>
|
|
620
|
-
/**
|
|
621
|
-
* 鼠标移动选区
|
|
622
|
-
*/
|
|
623
|
-
'selection:mousemove': SelectionEventArgsPick<'e' | 'position'>
|
|
624
|
-
/**
|
|
625
|
-
* 鼠标抬起选区
|
|
626
|
-
*/
|
|
627
|
-
'selection:mouseup': SelectionEventArgsPick<'e'>
|
|
628
|
-
/**
|
|
629
|
-
* 右键点击选区
|
|
630
|
-
*/
|
|
631
|
-
'selection:contextmenu': SelectionEventArgsPick<'data' | 'e' | 'position'>
|
|
632
|
-
}
|
|
633
|
-
|
|
634
|
-
// 此处主要是对事件参数进行聚合
|
|
635
|
-
export type EventArgs = NodeEventArgs &
|
|
636
|
-
EdgeEventArgs &
|
|
637
|
-
ConnectionEventArgs &
|
|
638
|
-
CommonEventArgs &
|
|
639
|
-
AnchorEventArgs &
|
|
640
|
-
BlankEventArgs &
|
|
641
|
-
HistoryEventArgs &
|
|
642
|
-
SelectionEventArgs &
|
|
643
|
-
TextEventArgs
|