@logicflow/core 2.0.5 → 2.0.7
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/.turbo/turbo-build$colon$dev.log +10 -10
- package/.turbo/turbo-build.log +33 -33
- package/CHANGELOG.md +29 -0
- package/__tests__/algorithm/egde.test.ts +36 -23
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/es/algorithm/rotate.d.ts +31 -0
- package/es/algorithm/rotate.js +43 -0
- package/es/event/eventArgs.d.ts +23 -29
- package/es/model/BaseModel.d.ts +9 -0
- package/es/model/GraphModel.d.ts +17 -1
- package/es/model/GraphModel.js +37 -2
- package/es/model/edge/BaseEdgeModel.d.ts +1 -0
- package/es/model/node/BaseNodeModel.d.ts +7 -0
- package/es/model/node/BaseNodeModel.js +55 -2
- package/es/util/drag.d.ts +1 -0
- package/es/util/drag.js +11 -0
- package/es/util/graph.d.ts +1 -1
- package/es/util/resize.d.ts +23 -9
- package/es/util/resize.js +139 -16
- package/es/view/Anchor.js +6 -8
- package/es/view/Control.d.ts +1 -0
- package/es/view/Control.js +6 -1
- package/es/view/Graph.js +3 -15
- package/es/view/behavior/dnd.js +1 -0
- package/es/view/edge/BaseEdge.d.ts +3 -1
- package/es/view/edge/BaseEdge.js +8 -5
- package/es/view/overlay/BackgroundOverlay.d.ts +4 -14
- package/es/view/overlay/BackgroundOverlay.js +11 -1
- package/es/view/overlay/Grid.d.ts +4 -3
- package/es/view/overlay/Grid.js +8 -31
- package/es/view/text/BaseText.js +1 -1
- package/lib/algorithm/rotate.d.ts +31 -0
- package/lib/algorithm/rotate.js +50 -0
- package/lib/event/eventArgs.d.ts +23 -29
- package/lib/model/BaseModel.d.ts +9 -0
- package/lib/model/GraphModel.d.ts +17 -1
- package/lib/model/GraphModel.js +36 -1
- package/lib/model/edge/BaseEdgeModel.d.ts +1 -0
- package/lib/model/node/BaseNodeModel.d.ts +7 -0
- package/lib/model/node/BaseNodeModel.js +55 -2
- package/lib/util/drag.d.ts +1 -0
- package/lib/util/drag.js +11 -0
- package/lib/util/graph.d.ts +1 -1
- package/lib/util/resize.d.ts +23 -9
- package/lib/util/resize.js +141 -17
- package/lib/view/Anchor.js +6 -8
- package/lib/view/Control.d.ts +1 -0
- package/lib/view/Control.js +6 -1
- package/lib/view/Graph.js +3 -15
- package/lib/view/behavior/dnd.js +1 -0
- package/lib/view/edge/BaseEdge.d.ts +3 -1
- package/lib/view/edge/BaseEdge.js +8 -5
- package/lib/view/overlay/BackgroundOverlay.d.ts +4 -14
- package/lib/view/overlay/BackgroundOverlay.js +11 -1
- package/lib/view/overlay/Grid.d.ts +4 -3
- package/lib/view/overlay/Grid.js +8 -31
- package/lib/view/text/BaseText.js +1 -1
- package/package.json +1 -1
- package/src/algorithm/edge.ts +2 -4
- package/src/event/eventArgs.ts +23 -29
- package/src/model/BaseModel.ts +16 -0
- package/src/model/GraphModel.ts +25 -3
- package/src/model/edge/BaseEdgeModel.ts +1 -0
- package/src/model/node/BaseNodeModel.ts +33 -1
- package/src/model/node/HtmlNodeModel.ts +1 -1
- package/src/util/drag.ts +12 -0
- package/src/util/resize.ts +7 -1
- package/src/view/Anchor.tsx +7 -8
- package/src/view/Control.tsx +1 -1
- package/src/view/Graph.tsx +2 -3
- package/src/view/behavior/dnd.ts +1 -0
- package/src/view/edge/BaseEdge.tsx +8 -3
- package/src/view/overlay/Grid.tsx +13 -9
- package/src/view/text/BaseText.tsx +1 -1
- package/stats.html +1 -1
package/lib/util/resize.js
CHANGED
|
@@ -1,9 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.handleResize = exports.triggerResizeEvent = exports.updateEdgePointByAnchors = exports.recalcResizeInfo = void 0;
|
|
3
|
+
exports.calculateWidthAndHeight = exports.handleResize = exports.triggerResizeEvent = exports.updateEdgePointByAnchors = exports.recalcResizeInfo = void 0;
|
|
4
4
|
var Control_1 = require("../view/Control");
|
|
5
5
|
var lodash_es_1 = require("lodash-es");
|
|
6
6
|
var constant_1 = require("../constant");
|
|
7
|
+
var rotate_1 = require("../algorithm/rotate");
|
|
8
|
+
function recalcRotatedResizeInfo(pct, resizeInfo, rotate, controlX, controlY, oldCenterX, oldCenterY, freezeWidth, freezeHeight) {
|
|
9
|
+
if (freezeWidth === void 0) { freezeWidth = false; }
|
|
10
|
+
if (freezeHeight === void 0) { freezeHeight = false; }
|
|
11
|
+
// 假设我们触摸的点是右下角的control
|
|
12
|
+
var deltaX = resizeInfo.deltaX, deltaY = resizeInfo.deltaY, oldWidth = resizeInfo.width, oldHeight = resizeInfo.height;
|
|
13
|
+
var angle = (0, rotate_1.radianToAngle)(rotate);
|
|
14
|
+
// 右下角的control
|
|
15
|
+
var startZeroTouchControlPoint = {
|
|
16
|
+
x: controlX, // control锚点的坐标x
|
|
17
|
+
y: controlY, // control锚点的坐标y
|
|
18
|
+
};
|
|
19
|
+
var oldCenter = { x: oldCenterX, y: oldCenterY };
|
|
20
|
+
// 右下角的control坐标(transform后的-touchStartPoint)
|
|
21
|
+
var startRotatedTouchControlPoint = (0, rotate_1.calculatePointAfterRotateAngle)(startZeroTouchControlPoint, oldCenter, angle);
|
|
22
|
+
// 右下角的control坐标(transform后的-touchEndPoint)
|
|
23
|
+
var endRotatedTouchControlPoint = {
|
|
24
|
+
x: startRotatedTouchControlPoint.x + deltaX,
|
|
25
|
+
y: startRotatedTouchControlPoint.y + deltaY,
|
|
26
|
+
};
|
|
27
|
+
// 计算出新的宽度和高度以及新的中心点
|
|
28
|
+
var _a = calculateWidthAndHeight(startRotatedTouchControlPoint, endRotatedTouchControlPoint, oldCenter, angle, freezeWidth, freezeHeight, oldWidth, oldHeight), newWidth = _a.width, newHeight = _a.height, newCenter = _a.center;
|
|
29
|
+
// calculateWidthAndHeight()得到的是整个宽度,比如圆pct=0.5,此时newWidth等于整个圆直径
|
|
30
|
+
resizeInfo.width = newWidth * pct;
|
|
31
|
+
resizeInfo.height = newHeight * pct;
|
|
32
|
+
// BaseNodeModel.resize(deltaX/2, deltaY/2),因此这里要*2
|
|
33
|
+
resizeInfo.deltaX = (newCenter.x - oldCenter.x) * 2;
|
|
34
|
+
resizeInfo.deltaY = (newCenter.y - oldCenter.y) * 2;
|
|
35
|
+
return resizeInfo;
|
|
36
|
+
}
|
|
7
37
|
/**
|
|
8
38
|
* 计算 Control 拖动后,节点的高度信息
|
|
9
39
|
* @param index
|
|
@@ -12,10 +42,11 @@ var constant_1 = require("../constant");
|
|
|
12
42
|
* @param freezeWidth
|
|
13
43
|
* @param freezeHeight
|
|
14
44
|
*/
|
|
15
|
-
var recalcResizeInfo = function (index, resizeInfo, pct, freezeWidth, freezeHeight) {
|
|
45
|
+
var recalcResizeInfo = function (index, resizeInfo, pct, freezeWidth, freezeHeight, rotate, controlX, controlY, oldCenterX, oldCenterY) {
|
|
16
46
|
if (pct === void 0) { pct = 1; }
|
|
17
47
|
if (freezeWidth === void 0) { freezeWidth = false; }
|
|
18
48
|
if (freezeHeight === void 0) { freezeHeight = false; }
|
|
49
|
+
if (rotate === void 0) { rotate = 0; }
|
|
19
50
|
var nextResizeInfo = (0, lodash_es_1.cloneDeep)(resizeInfo);
|
|
20
51
|
var deltaX = nextResizeInfo.deltaX, deltaY = nextResizeInfo.deltaY;
|
|
21
52
|
var width = nextResizeInfo.width, height = nextResizeInfo.height, PCTResizeInfo = nextResizeInfo.PCTResizeInfo;
|
|
@@ -73,6 +104,14 @@ var recalcResizeInfo = function (index, resizeInfo, pct, freezeWidth, freezeHeig
|
|
|
73
104
|
}
|
|
74
105
|
return nextResizeInfo;
|
|
75
106
|
}
|
|
107
|
+
if (rotate % (2 * Math.PI) !== 0 &&
|
|
108
|
+
controlX !== undefined &&
|
|
109
|
+
controlY !== undefined) {
|
|
110
|
+
// 角度rotate不为0,则触发另外的计算修正resize的deltaX和deltaY
|
|
111
|
+
// 因为rotate不为0的时候,左上角的坐标一直在变化
|
|
112
|
+
// 角度rotate不为0得到的resizeInfo.deltaX仅仅代表中心点的变化,而不是宽度的变化
|
|
113
|
+
return recalcRotatedResizeInfo(pct, nextResizeInfo, rotate, controlX, controlY, oldCenterX, oldCenterY, freezeWidth, freezeHeight);
|
|
114
|
+
}
|
|
76
115
|
// 如果限制了宽/高不变,对应的 width/height 保持一致
|
|
77
116
|
switch (index) {
|
|
78
117
|
case Control_1.ResizeControlIndex.LEFT_TOP:
|
|
@@ -146,17 +185,10 @@ var triggerResizeEvent = function (preNodeData, curNodeData, deltaX, deltaY, ind
|
|
|
146
185
|
});
|
|
147
186
|
};
|
|
148
187
|
exports.triggerResizeEvent = triggerResizeEvent;
|
|
149
|
-
// TODO:确认 handleResize 函数的类型定义
|
|
150
|
-
// export type IHandleResizeParams = {
|
|
151
|
-
// deltaX: number
|
|
152
|
-
// deltaY: number
|
|
153
|
-
// index: ResizeControlIndex
|
|
154
|
-
// nodeModel: BaseNodeModel
|
|
155
|
-
// graphModel: GraphModel
|
|
156
|
-
// cancelCallback?: () => void
|
|
157
|
-
// }
|
|
158
188
|
/**
|
|
159
189
|
* 处理节点的 resize 事件,提出来放到 utils 中,方便在外面(extension)中使用
|
|
190
|
+
* @param x
|
|
191
|
+
* @param y
|
|
160
192
|
* @param deltaX
|
|
161
193
|
* @param deltaY
|
|
162
194
|
* @param index
|
|
@@ -165,11 +197,11 @@ exports.triggerResizeEvent = triggerResizeEvent;
|
|
|
165
197
|
* @param cancelCallback
|
|
166
198
|
*/
|
|
167
199
|
var handleResize = function (_a) {
|
|
168
|
-
var deltaX = _a.deltaX, deltaY = _a.deltaY, index = _a.index, nodeModel = _a.nodeModel, graphModel = _a.graphModel, cancelCallback = _a.cancelCallback;
|
|
200
|
+
var x = _a.x, y = _a.y, deltaX = _a.deltaX, deltaY = _a.deltaY, index = _a.index, nodeModel = _a.nodeModel, graphModel = _a.graphModel, cancelCallback = _a.cancelCallback;
|
|
169
201
|
var r = nodeModel.r, // circle
|
|
170
202
|
rx = nodeModel.rx, // ellipse/diamond
|
|
171
203
|
ry = nodeModel.ry, width = nodeModel.width, // rect/html
|
|
172
|
-
height = nodeModel.height, PCTResizeInfo = nodeModel.PCTResizeInfo, minWidth = nodeModel.minWidth, minHeight = nodeModel.minHeight, maxWidth = nodeModel.maxWidth, maxHeight = nodeModel.maxHeight;
|
|
204
|
+
height = nodeModel.height, PCTResizeInfo = nodeModel.PCTResizeInfo, minWidth = nodeModel.minWidth, minHeight = nodeModel.minHeight, maxWidth = nodeModel.maxWidth, maxHeight = nodeModel.maxHeight, rotate = nodeModel.rotate, oldCenterX = nodeModel.x, oldCenterY = nodeModel.y;
|
|
173
205
|
var isFreezeWidth = minWidth === maxWidth;
|
|
174
206
|
var isFreezeHeight = minHeight === maxHeight;
|
|
175
207
|
var resizeInfo = {
|
|
@@ -180,7 +212,9 @@ var handleResize = function (_a) {
|
|
|
180
212
|
PCTResizeInfo: PCTResizeInfo,
|
|
181
213
|
};
|
|
182
214
|
var pct = r || (rx && ry) ? 1 / 2 : 1;
|
|
183
|
-
var
|
|
215
|
+
var controlX = x;
|
|
216
|
+
var controlY = y;
|
|
217
|
+
var nextSize = (0, exports.recalcResizeInfo)(index, resizeInfo, pct, isFreezeWidth, isFreezeHeight, rotate, controlX, controlY, oldCenterX, oldCenterY);
|
|
184
218
|
// 限制放大缩小的最大最小范围
|
|
185
219
|
if (nextSize.width < minWidth ||
|
|
186
220
|
nextSize.width > maxWidth ||
|
|
@@ -190,14 +224,104 @@ var handleResize = function (_a) {
|
|
|
190
224
|
cancelCallback === null || cancelCallback === void 0 ? void 0 : cancelCallback();
|
|
191
225
|
return;
|
|
192
226
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
227
|
+
if (rotate % (2 * Math.PI) == 0 ||
|
|
228
|
+
PCTResizeInfo ||
|
|
229
|
+
controlX === undefined ||
|
|
230
|
+
controlY === undefined) {
|
|
231
|
+
// rotate!==0并且不是PCTResizeInfo时,即使是isFreezeWidth||isFreezeHeight
|
|
232
|
+
// recalcRotatedResizeInfo()计算出来的中心点会发生变化
|
|
233
|
+
// 如果限制了宽高不变,对应的 x/y 不产生位移
|
|
234
|
+
nextSize.deltaX = isFreezeWidth ? 0 : nextSize.deltaX;
|
|
235
|
+
nextSize.deltaY = isFreezeHeight ? 0 : nextSize.deltaY;
|
|
236
|
+
}
|
|
196
237
|
var preNodeData = nodeModel.getData();
|
|
197
238
|
var curNodeData = nodeModel.resize(nextSize);
|
|
239
|
+
// 检测preNodeData和curNodeData是否没变化
|
|
240
|
+
if (preNodeData.x === curNodeData.x && preNodeData.y === curNodeData.y) {
|
|
241
|
+
// 中心点x和y都没有变化,说明无法resize,阻止下面边的更新以及resize事件的emit
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
198
244
|
// 更新边
|
|
199
245
|
(0, exports.updateEdgePointByAnchors)(nodeModel, graphModel);
|
|
200
246
|
// 触发 resize 事件
|
|
201
247
|
(0, exports.triggerResizeEvent)(preNodeData, curNodeData, deltaX, deltaY, index, nodeModel, graphModel);
|
|
202
248
|
};
|
|
203
249
|
exports.handleResize = handleResize;
|
|
250
|
+
function calculateWidthAndHeight(startRotatedTouchControlPoint, endRotatedTouchControlPoint, oldCenter, angle, freezeWidth, freezeHeight, oldWidth, oldHeight) {
|
|
251
|
+
if (freezeWidth === void 0) { freezeWidth = false; }
|
|
252
|
+
if (freezeHeight === void 0) { freezeHeight = false; }
|
|
253
|
+
// 假设目前触摸的是右下角的control点
|
|
254
|
+
// 计算出来左上角的control坐标,resize过程左上角的control坐标保持不变
|
|
255
|
+
var freezePoint = {
|
|
256
|
+
x: oldCenter.x - (startRotatedTouchControlPoint.x - oldCenter.x),
|
|
257
|
+
y: oldCenter.y - (startRotatedTouchControlPoint.y - oldCenter.y),
|
|
258
|
+
};
|
|
259
|
+
// 【touchEndPoint】右下角 + freezePoint左上角 计算出新的中心点
|
|
260
|
+
var newCenter = (0, rotate_1.getNewCenter)(freezePoint, endRotatedTouchControlPoint);
|
|
261
|
+
// 得到【touchEndPoint】右下角-没有transform的坐标
|
|
262
|
+
var endZeroTouchControlPoint = (0, rotate_1.calculatePointAfterRotateAngle)(endRotatedTouchControlPoint, newCenter, -angle);
|
|
263
|
+
// ---------- 使用transform之前的坐标计算出新的width和height ----------
|
|
264
|
+
// 得到左上角---没有transform的坐标
|
|
265
|
+
var zeroFreezePoint = (0, rotate_1.calculatePointAfterRotateAngle)(freezePoint, newCenter, -angle);
|
|
266
|
+
if (freezeWidth) {
|
|
267
|
+
// 如果固定width,那么不能单纯使用endZeroTouchControlPoint.x=startZeroTouchControlPoint.x
|
|
268
|
+
// 因为去掉transform的左上角不一定是重合的,我们要保证的是transform后的左上角重合
|
|
269
|
+
var newWidth = Math.abs(endZeroTouchControlPoint.x - zeroFreezePoint.x);
|
|
270
|
+
var widthDx = newWidth - oldWidth;
|
|
271
|
+
// 点击的是左边锚点,是+widthDx/2,点击是右边锚点,是-widthDx/2
|
|
272
|
+
if (newCenter.x > endZeroTouchControlPoint.x) {
|
|
273
|
+
// 当前触摸的是左边锚点
|
|
274
|
+
newCenter.x = newCenter.x + widthDx / 2;
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
// 当前触摸的是右边锚点
|
|
278
|
+
newCenter.x = newCenter.x - widthDx / 2;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
if (freezeHeight) {
|
|
282
|
+
var newHeight = Math.abs(endZeroTouchControlPoint.y - zeroFreezePoint.y);
|
|
283
|
+
var heightDy = newHeight - oldHeight;
|
|
284
|
+
if (newCenter.y > endZeroTouchControlPoint.y) {
|
|
285
|
+
// 当前触摸的是上边锚点
|
|
286
|
+
newCenter.y = newCenter.y + heightDy / 2;
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
newCenter.y = newCenter.y - heightDy / 2;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
if (freezeWidth || freezeHeight) {
|
|
293
|
+
// 如果调整过transform之前的坐标,那么transform后的坐标也会改变,那么算出来的newCenter也得调整
|
|
294
|
+
// 由于无论如何rotate,中心点都是不变的,因此我们可以使用transform之前的坐标算出新的中心点
|
|
295
|
+
var nowFreezePoint = (0, rotate_1.calculatePointAfterRotateAngle)(zeroFreezePoint, newCenter, angle);
|
|
296
|
+
// 得到当前新rect的左上角与实际上transform后的左上角的偏移量
|
|
297
|
+
var dx = nowFreezePoint.x - freezePoint.x;
|
|
298
|
+
var dy = nowFreezePoint.y - freezePoint.y;
|
|
299
|
+
// 修正不使用transform的坐标: 左上角、右下角、center
|
|
300
|
+
newCenter.x = newCenter.x - dx;
|
|
301
|
+
newCenter.y = newCenter.y - dy;
|
|
302
|
+
zeroFreezePoint = (0, rotate_1.calculatePointAfterRotateAngle)(freezePoint, newCenter, -angle);
|
|
303
|
+
endZeroTouchControlPoint = {
|
|
304
|
+
x: newCenter.x - (zeroFreezePoint.x - newCenter.x),
|
|
305
|
+
y: newCenter.y - (zeroFreezePoint.y - newCenter.y),
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
// transform之前的坐标的左上角+右下角计算出宽度和高度
|
|
309
|
+
var width = Math.abs(endZeroTouchControlPoint.x - zeroFreezePoint.x);
|
|
310
|
+
var height = Math.abs(endZeroTouchControlPoint.y - zeroFreezePoint.y);
|
|
311
|
+
// ---------- 使用transform之前的坐标计算出新的width和height ----------
|
|
312
|
+
if (freezeWidth) {
|
|
313
|
+
// 理论计算出来的width应该等于oldWidth
|
|
314
|
+
// 但是有误差,比如oldWidth = 100; newWidth=100.000000000001
|
|
315
|
+
// 会在handleResize()限制放大缩小的最大最小范围中被阻止滑动
|
|
316
|
+
width = oldWidth;
|
|
317
|
+
}
|
|
318
|
+
if (freezeHeight) {
|
|
319
|
+
height = oldHeight;
|
|
320
|
+
}
|
|
321
|
+
return {
|
|
322
|
+
width: width,
|
|
323
|
+
height: height,
|
|
324
|
+
center: newCenter,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
exports.calculateWidthAndHeight = calculateWidthAndHeight;
|
package/lib/view/Anchor.js
CHANGED
|
@@ -141,14 +141,12 @@ var Anchor = /** @class */ (function (_super) {
|
|
|
141
141
|
_this.sourceRuleResults.clear();
|
|
142
142
|
_this.targetRuleResults.clear();
|
|
143
143
|
var _b = _this.props, graphModel = _b.graphModel, nodeModel = _b.nodeModel, anchorData = _b.anchorData;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
});
|
|
151
|
-
}
|
|
144
|
+
graphModel.eventCenter.emit(constant_1.EventType.ANCHOR_DRAGEND, {
|
|
145
|
+
data: anchorData,
|
|
146
|
+
e: event,
|
|
147
|
+
nodeModel: nodeModel,
|
|
148
|
+
edgeModel: edgeModel !== null && edgeModel !== void 0 ? edgeModel : undefined,
|
|
149
|
+
});
|
|
152
150
|
};
|
|
153
151
|
_this.checkEnd = function (event) {
|
|
154
152
|
var _a;
|
package/lib/view/Control.d.ts
CHANGED
|
@@ -30,6 +30,7 @@ export declare class ResizeControl extends Component<IResizeControlProps, IResiz
|
|
|
30
30
|
readonly graphModel: GraphModel;
|
|
31
31
|
readonly dragHandler: StepDrag;
|
|
32
32
|
constructor(props: IResizeControlProps);
|
|
33
|
+
componentWillUnmount(): void;
|
|
33
34
|
updateEdgePointByAnchors: () => void;
|
|
34
35
|
triggerResizeEvent: (preNodeData: ResizeNodeData, curNodeData: ResizeNodeData, deltaX: any, deltaY: any, index: any, nodeModel: BaseNodeModel) => void;
|
|
35
36
|
/**
|
package/lib/view/Control.js
CHANGED
|
@@ -213,9 +213,11 @@ var ResizeControl = /** @class */ (function (_super) {
|
|
|
213
213
|
_this.resizeNode = function (_a) {
|
|
214
214
|
var deltaX = _a.deltaX, deltaY = _a.deltaY;
|
|
215
215
|
var index = _this.index;
|
|
216
|
-
var _b = _this.props, model = _b.model, graphModel = _b.graphModel;
|
|
216
|
+
var _b = _this.props, model = _b.model, graphModel = _b.graphModel, x = _b.x, y = _b.y;
|
|
217
217
|
// DONE: 调用每个节点中更新缩放时的方法 updateNode 函数,用来各节点缩放的方法
|
|
218
218
|
(0, util_1.handleResize)({
|
|
219
|
+
x: x,
|
|
220
|
+
y: y,
|
|
219
221
|
deltaX: deltaX,
|
|
220
222
|
deltaY: deltaY,
|
|
221
223
|
index: index,
|
|
@@ -316,6 +318,9 @@ var ResizeControl = /** @class */ (function (_super) {
|
|
|
316
318
|
});
|
|
317
319
|
return _this;
|
|
318
320
|
}
|
|
321
|
+
ResizeControl.prototype.componentWillUnmount = function () {
|
|
322
|
+
this.dragHandler.destroy();
|
|
323
|
+
};
|
|
319
324
|
ResizeControl.prototype.render = function () {
|
|
320
325
|
var _a = this.props, x = _a.x, y = _a.y, direction = _a.direction, model = _a.model;
|
|
321
326
|
var _b = model.getResizeControlStyle(), width = _b.width, height = _b.height, restStyle = __rest(_b, ["width", "height"]);
|
package/lib/view/Graph.js
CHANGED
|
@@ -14,17 +14,6 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
14
14
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
15
|
};
|
|
16
16
|
})();
|
|
17
|
-
var __assign = (this && this.__assign) || function () {
|
|
18
|
-
__assign = Object.assign || function(t) {
|
|
19
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
-
s = arguments[i];
|
|
21
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
-
t[p] = s[p];
|
|
23
|
-
}
|
|
24
|
-
return t;
|
|
25
|
-
};
|
|
26
|
-
return __assign.apply(this, arguments);
|
|
27
|
-
};
|
|
28
17
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
29
18
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
30
19
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -104,12 +93,11 @@ var Graph = /** @class */ (function (_super) {
|
|
|
104
93
|
if (options.height) {
|
|
105
94
|
style.height = "".concat(graphModel.height, "px");
|
|
106
95
|
}
|
|
107
|
-
var
|
|
108
|
-
var fakeNode = graphModel.fakeNode, editConfigModel = graphModel.editConfigModel;
|
|
96
|
+
var fakeNode = graphModel.fakeNode, editConfigModel = graphModel.editConfigModel, background = graphModel.background;
|
|
109
97
|
var adjustEdge = editConfigModel.adjustEdge;
|
|
110
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "lf-graph", "flow-id": graphModel.flowId, children: [(0, jsx_runtime_1.jsxs)(overlay_1.CanvasOverlay, { graphModel: graphModel, dnd: dnd, children: [(0, jsx_runtime_1.jsx)("g", { className: "lf-base", children: (0, lodash_es_1.map)(graphModel.sortElements, function (nodeModel) {
|
|
98
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "lf-graph", "flow-id": graphModel.flowId, style: style, children: [(0, jsx_runtime_1.jsxs)(overlay_1.CanvasOverlay, { graphModel: graphModel, dnd: dnd, children: [(0, jsx_runtime_1.jsx)("g", { className: "lf-base", children: (0, lodash_es_1.map)(graphModel.sortElements, function (nodeModel) {
|
|
111
99
|
return _this.getComponent(nodeModel, graphModel);
|
|
112
|
-
}) }), fakeNode ? this.getComponent(fakeNode, graphModel) : ''] }), (0, jsx_runtime_1.jsxs)(overlay_1.ModificationOverlay, { graphModel: graphModel, children: [(0, jsx_runtime_1.jsx)(overlay_1.OutlineOverlay, { graphModel: graphModel }), adjustEdge ? (0, jsx_runtime_1.jsx)(overlay_1.BezierAdjustOverlay, { graphModel: graphModel }) : '', options.snapline !== false ? ((0, jsx_runtime_1.jsx)(overlay_1.SnaplineOverlay, { snaplineModel: snaplineModel })) : ('')] }), (0, jsx_runtime_1.jsx)(overlay_1.ToolOverlay, { graphModel: graphModel, tool: tool }),
|
|
100
|
+
}) }), fakeNode ? this.getComponent(fakeNode, graphModel) : ''] }), (0, jsx_runtime_1.jsxs)(overlay_1.ModificationOverlay, { graphModel: graphModel, children: [(0, jsx_runtime_1.jsx)(overlay_1.OutlineOverlay, { graphModel: graphModel }), adjustEdge ? (0, jsx_runtime_1.jsx)(overlay_1.BezierAdjustOverlay, { graphModel: graphModel }) : '', options.snapline !== false ? ((0, jsx_runtime_1.jsx)(overlay_1.SnaplineOverlay, { snaplineModel: snaplineModel })) : ('')] }), (0, jsx_runtime_1.jsx)(overlay_1.ToolOverlay, { graphModel: graphModel, tool: tool }), background && (0, jsx_runtime_1.jsx)(overlay_1.BackgroundOverlay, { background: background }), (0, jsx_runtime_1.jsx)(overlay_1.Grid, { graphModel: graphModel })] }));
|
|
113
101
|
};
|
|
114
102
|
Graph = __decorate([
|
|
115
103
|
__1.observer
|
package/lib/view/behavior/dnd.js
CHANGED
|
@@ -13,6 +13,7 @@ export type IEdgeState = {
|
|
|
13
13
|
export declare abstract class BaseEdge<P extends IProps> extends Component<P, IEdgeState> {
|
|
14
14
|
static isObserved: boolean;
|
|
15
15
|
static extendsKey?: string;
|
|
16
|
+
mouseUpDrag?: boolean;
|
|
16
17
|
startTime?: number;
|
|
17
18
|
contextMenuTime?: number;
|
|
18
19
|
clickTimer?: number;
|
|
@@ -127,10 +128,11 @@ export declare abstract class BaseEdge<P extends IProps> extends Component<P, IE
|
|
|
127
128
|
* 不支持重写
|
|
128
129
|
*/
|
|
129
130
|
handleMouseDown: (e: MouseEvent) => void;
|
|
131
|
+
handleMouseUp: () => void;
|
|
130
132
|
/**
|
|
131
133
|
* 不支持重写
|
|
132
134
|
*/
|
|
133
|
-
|
|
135
|
+
handleClick: (e: MouseEvent) => void;
|
|
134
136
|
/**
|
|
135
137
|
* @overridable 支持重写, 此方法为获取边的形状,如果需要自定义边的形状,请重写此方法。
|
|
136
138
|
* @example https://docs.logic-flow.cn/docs/#/zh/guide/basic/edge?id=%e5%9f%ba%e4%ba%8e-react-%e7%bb%84%e4%bb%b6%e8%87%aa%e5%ae%9a%e4%b9%89%e8%be%b9
|
|
@@ -149,15 +149,18 @@ var BaseEdge = /** @class */ (function (_super) {
|
|
|
149
149
|
e.stopPropagation();
|
|
150
150
|
_this.startTime = new Date().getTime();
|
|
151
151
|
};
|
|
152
|
+
_this.handleMouseUp = function () {
|
|
153
|
+
var model = _this.props.model;
|
|
154
|
+
_this.mouseUpDrag = model.isDragging;
|
|
155
|
+
};
|
|
152
156
|
/**
|
|
153
157
|
* 不支持重写
|
|
154
158
|
*/
|
|
155
|
-
_this.
|
|
159
|
+
_this.handleClick = function (e) {
|
|
156
160
|
if (!_this.startTime)
|
|
157
161
|
return;
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
return; // 事件大于200ms,认为是拖拽。
|
|
162
|
+
if (_this.mouseUpDrag)
|
|
163
|
+
return; // 如果是拖拽,不触发click事件。
|
|
161
164
|
var isRightClick = e.button === 2;
|
|
162
165
|
if (isRightClick)
|
|
163
166
|
return;
|
|
@@ -405,7 +408,7 @@ var BaseEdge = /** @class */ (function (_super) {
|
|
|
405
408
|
isSelected && 'lf-edge-selected',
|
|
406
409
|
]
|
|
407
410
|
.filter(Boolean)
|
|
408
|
-
.join(' '), onMouseDown: this.handleMouseDown, onMouseUp: this.handleMouseUp, onContextMenu: this.handleContextMenu, onMouseOver: this.setHoverOn, onMouseEnter: this.setHoverOn, onMouseLeave: this.setHoverOff, children: [this.getShape(), this.getAppend(), this.getText(), this.getArrow()] }), isShowAdjustPoint && isSelected ? this.getAdjustPoints() : ''] }));
|
|
411
|
+
.join(' '), onMouseDown: this.handleMouseDown, onMouseUp: this.handleMouseUp, onClick: this.handleClick, onContextMenu: this.handleContextMenu, onMouseOver: this.setHoverOn, onMouseEnter: this.setHoverOn, onMouseLeave: this.setHoverOff, children: [this.getShape(), this.getAppend(), this.getText(), this.getArrow()] }), isShowAdjustPoint && isSelected ? this.getAdjustPoints() : ''] }));
|
|
409
412
|
};
|
|
410
413
|
BaseEdge.isObserved = false;
|
|
411
414
|
return BaseEdge;
|
|
@@ -1,26 +1,16 @@
|
|
|
1
1
|
import { Component } from 'preact/compat';
|
|
2
|
+
import { Options as LFOptions } from '../../options';
|
|
2
3
|
/**
|
|
3
4
|
* 背景配置, 支持css属性配置
|
|
4
5
|
* https://developer.mozilla.org/zh-CN/docs/Web/CSS/background
|
|
5
6
|
* @example
|
|
6
7
|
* {
|
|
7
|
-
*
|
|
8
|
-
|
|
8
|
+
* backgroundImage: "url('./img/grid.svg')",
|
|
9
|
+
backgroundRepeat: 'repeat',
|
|
9
10
|
* }
|
|
10
11
|
*/
|
|
11
|
-
export type BackgroundConfig = {
|
|
12
|
-
/**
|
|
13
|
-
* 背景图片地址
|
|
14
|
-
*/
|
|
15
|
-
backgroundImage?: string;
|
|
16
|
-
/**
|
|
17
|
-
* 是否重复
|
|
18
|
-
*/
|
|
19
|
-
backgroundRepeat?: string;
|
|
20
|
-
[key: string]: any;
|
|
21
|
-
};
|
|
22
12
|
type IProps = {
|
|
23
|
-
background: BackgroundConfig;
|
|
13
|
+
background: boolean | LFOptions.BackgroundConfig;
|
|
24
14
|
};
|
|
25
15
|
export declare class BackgroundOverlay extends Component<IProps> {
|
|
26
16
|
render(): import("preact/compat").JSX.Element;
|
|
@@ -14,10 +14,17 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
14
14
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
15
|
};
|
|
16
16
|
})();
|
|
17
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
18
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
19
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
20
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
21
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
|
+
};
|
|
17
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
24
|
exports.BackgroundOverlay = void 0;
|
|
19
25
|
var jsx_runtime_1 = require("preact/jsx-runtime");
|
|
20
26
|
var compat_1 = require("preact/compat");
|
|
27
|
+
var __1 = require("../..");
|
|
21
28
|
var BackgroundOverlay = /** @class */ (function (_super) {
|
|
22
29
|
__extends(BackgroundOverlay, _super);
|
|
23
30
|
function BackgroundOverlay() {
|
|
@@ -25,8 +32,11 @@ var BackgroundOverlay = /** @class */ (function (_super) {
|
|
|
25
32
|
}
|
|
26
33
|
BackgroundOverlay.prototype.render = function () {
|
|
27
34
|
var background = this.props.background;
|
|
28
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "lf-background", children: (0, jsx_runtime_1.jsx)("div", { style: background, className: "lf-background-area" }) }));
|
|
35
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "lf-background", children: (0, jsx_runtime_1.jsx)("div", { style: typeof background === 'object' ? background : {}, className: "lf-background-area" }) }));
|
|
29
36
|
};
|
|
37
|
+
BackgroundOverlay = __decorate([
|
|
38
|
+
__1.observer
|
|
39
|
+
], BackgroundOverlay);
|
|
30
40
|
return BackgroundOverlay;
|
|
31
41
|
}(compat_1.Component));
|
|
32
42
|
exports.BackgroundOverlay = BackgroundOverlay;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Component } from 'preact/compat';
|
|
2
2
|
import { GraphModel } from '../../model';
|
|
3
|
-
|
|
4
|
-
type IProps = GridOptions & {
|
|
3
|
+
type IProps = {
|
|
5
4
|
graphModel: GraphModel;
|
|
6
5
|
};
|
|
7
6
|
export declare class Grid extends Component<IProps> {
|
|
7
|
+
gridOptions: Grid.GridOptions;
|
|
8
8
|
readonly id: string;
|
|
9
|
+
constructor(props: IProps);
|
|
9
10
|
renderDot(): import("preact/compat").JSX.Element;
|
|
10
11
|
renderMesh(): import("preact/compat").JSX.Element;
|
|
11
12
|
render(): import("preact/compat").JSX.Element;
|
|
@@ -30,7 +31,7 @@ export declare namespace Grid {
|
|
|
30
31
|
/**
|
|
31
32
|
* 网格的颜色
|
|
32
33
|
*/
|
|
33
|
-
color
|
|
34
|
+
color?: string;
|
|
34
35
|
/**
|
|
35
36
|
* 网格的宽度
|
|
36
37
|
* - 对于 `dot` 点状网格,表示点的大小
|
package/lib/view/overlay/Grid.js
CHANGED
|
@@ -20,31 +20,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
20
20
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
21
21
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
22
|
};
|
|
23
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
24
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
25
|
-
if (!m) return o;
|
|
26
|
-
var i = m.call(o), r, ar = [], e;
|
|
27
|
-
try {
|
|
28
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
29
|
-
}
|
|
30
|
-
catch (error) { e = { error: error }; }
|
|
31
|
-
finally {
|
|
32
|
-
try {
|
|
33
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
34
|
-
}
|
|
35
|
-
finally { if (e) throw e.error; }
|
|
36
|
-
}
|
|
37
|
-
return ar;
|
|
38
|
-
};
|
|
39
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
40
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
41
|
-
if (ar || !(i in from)) {
|
|
42
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
43
|
-
ar[i] = from[i];
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
47
|
-
};
|
|
48
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
24
|
exports.Grid = void 0;
|
|
50
25
|
var jsx_runtime_1 = require("preact/jsx-runtime");
|
|
@@ -55,14 +30,15 @@ var util_1 = require("../../util");
|
|
|
55
30
|
var constant_1 = require("../../constant");
|
|
56
31
|
var Grid = /** @class */ (function (_super) {
|
|
57
32
|
__extends(Grid, _super);
|
|
58
|
-
function Grid() {
|
|
59
|
-
var _this = _super.
|
|
33
|
+
function Grid(props) {
|
|
34
|
+
var _this = _super.call(this, props) || this;
|
|
60
35
|
_this.id = (0, util_1.createUuid)();
|
|
36
|
+
_this.gridOptions = _this.props.graphModel.grid;
|
|
61
37
|
return _this;
|
|
62
38
|
}
|
|
63
39
|
// 网格类型为点状
|
|
64
40
|
Grid.prototype.renderDot = function () {
|
|
65
|
-
var _a = this.
|
|
41
|
+
var _a = this.gridOptions, config = _a.config, _b = _a.size, size = _b === void 0 ? 1 : _b, visible = _a.visible;
|
|
66
42
|
var _c = config !== null && config !== void 0 ? config : {}, color = _c.color, _d = _c.thickness, thickness = _d === void 0 ? 2 : _d;
|
|
67
43
|
// 对于点状网格,点的半径不能大于网格大小的四分之一
|
|
68
44
|
var radius = Math.min(Math.max(2, thickness), size / 4);
|
|
@@ -72,16 +48,17 @@ var Grid = /** @class */ (function (_super) {
|
|
|
72
48
|
// 网格类型为交叉线
|
|
73
49
|
// todo: 采用背景缩放的方式,实现更好的体验
|
|
74
50
|
Grid.prototype.renderMesh = function () {
|
|
75
|
-
var _a = this.
|
|
51
|
+
var _a = this.gridOptions, config = _a.config, _b = _a.size, size = _b === void 0 ? 1 : _b, visible = _a.visible;
|
|
76
52
|
var _c = config !== null && config !== void 0 ? config : {}, color = _c.color, _d = _c.thickness, thickness = _d === void 0 ? 1 : _d;
|
|
77
53
|
// 对于交叉线网格,线的宽度不能大于网格大小的一半
|
|
78
54
|
var strokeWidth = Math.min(Math.max(1, thickness), size / 2);
|
|
79
55
|
var d = "M 0 0 H ".concat(size, " V ").concat(size, " H 0 Z");
|
|
80
56
|
var opacity = visible ? 1 : 0;
|
|
81
|
-
return ((0, jsx_runtime_1.jsx)("path", { d: d, stroke: color, strokeWidth: strokeWidth, opacity: opacity, fill: "transparent" }));
|
|
57
|
+
return ((0, jsx_runtime_1.jsx)("path", { d: d, stroke: color, strokeWidth: strokeWidth / 2, opacity: opacity, fill: "transparent" }));
|
|
82
58
|
};
|
|
83
59
|
Grid.prototype.render = function () {
|
|
84
|
-
var
|
|
60
|
+
var transformModel = this.props.graphModel.transformModel;
|
|
61
|
+
var _a = this.gridOptions, type = _a.type, _b = _a.size, size = _b === void 0 ? 1 : _b;
|
|
85
62
|
var SCALE_X = transformModel.SCALE_X, SKEW_Y = transformModel.SKEW_Y, SKEW_X = transformModel.SKEW_X, SCALE_Y = transformModel.SCALE_Y, TRANSLATE_X = transformModel.TRANSLATE_X, TRANSLATE_Y = transformModel.TRANSLATE_Y;
|
|
86
63
|
var matrixString = [
|
|
87
64
|
SCALE_X,
|
|
@@ -67,7 +67,7 @@ var BaseText = /** @class */ (function (_super) {
|
|
|
67
67
|
_this.onDragging = function (_a) {
|
|
68
68
|
var deltaX = _a.deltaX, deltaY = _a.deltaY;
|
|
69
69
|
var _b = _this.props, model = _b.model, transformModel = _b.graphModel.transformModel;
|
|
70
|
-
if (deltaX
|
|
70
|
+
if (deltaX || deltaY) {
|
|
71
71
|
var _c = __read(transformModel.fixDeltaXY(deltaX, deltaY), 2), curDeltaX = _c[0], curDeltaY = _c[1];
|
|
72
72
|
model.moveText(curDeltaX, curDeltaY);
|
|
73
73
|
}
|
package/package.json
CHANGED
package/src/algorithm/edge.ts
CHANGED
|
@@ -60,10 +60,8 @@ export const isInSegment = (point: Point, start: Point, end: Point) => {
|
|
|
60
60
|
const k = (endY - startY) / (endX - startX)
|
|
61
61
|
const b = startY - k * startX
|
|
62
62
|
return (
|
|
63
|
-
x >= startX &&
|
|
64
|
-
|
|
65
|
-
y >= startY &&
|
|
66
|
-
y <= endY &&
|
|
63
|
+
((x >= startX && x <= endX) || (x <= startX && x >= endX)) &&
|
|
64
|
+
((y >= startY && y <= endY) || (y <= startY && y >= endY)) &&
|
|
67
65
|
Math.abs(y - k * x + b) < Number.EPSILON
|
|
68
66
|
)
|
|
69
67
|
}
|
package/src/event/eventArgs.ts
CHANGED
|
@@ -140,7 +140,7 @@ interface NodeEventArgs {
|
|
|
140
140
|
/**
|
|
141
141
|
* 拖拽外部拖入节点
|
|
142
142
|
*/
|
|
143
|
-
'node:dnd-drag': NodeEventArgsPick<'data'>
|
|
143
|
+
'node:dnd-drag': NodeEventArgsPick<'data' | 'e'>
|
|
144
144
|
/**
|
|
145
145
|
* 开始拖拽节点
|
|
146
146
|
*/
|
|
@@ -167,6 +167,27 @@ interface NodeEventArgs {
|
|
|
167
167
|
'node:resize': NodeEventArgsPick<
|
|
168
168
|
'preData' | 'data' | 'model' | 'deltaX' | 'deltaY' | 'index'
|
|
169
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
|
+
}
|
|
170
191
|
}
|
|
171
192
|
|
|
172
193
|
type EdgeEventArgsPick<T extends 'data' | 'e' | 'position'> = Pick<
|
|
@@ -356,33 +377,6 @@ interface CommonEventArgs {
|
|
|
356
377
|
*/
|
|
357
378
|
position: ClientPosition
|
|
358
379
|
}
|
|
359
|
-
/**
|
|
360
|
-
* 元素的 properties 发生改变
|
|
361
|
-
*/
|
|
362
|
-
'properties:change': {
|
|
363
|
-
data: {
|
|
364
|
-
/**
|
|
365
|
-
* 元素的 id
|
|
366
|
-
*/
|
|
367
|
-
id: string
|
|
368
|
-
/**
|
|
369
|
-
* 元素的类型
|
|
370
|
-
*/
|
|
371
|
-
type: string
|
|
372
|
-
/**
|
|
373
|
-
* 改变的 properties 的 key
|
|
374
|
-
*/
|
|
375
|
-
keys: string[]
|
|
376
|
-
/**
|
|
377
|
-
* 改变前的 properties
|
|
378
|
-
*/
|
|
379
|
-
preProperties: Record<string, any>
|
|
380
|
-
/**
|
|
381
|
-
* 改变后的 properties
|
|
382
|
-
*/
|
|
383
|
-
properties: Record<string, any>
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
380
|
/**
|
|
387
381
|
* 进行画布平移或缩放等变化操作时触发
|
|
388
382
|
*/
|
|
@@ -440,7 +434,7 @@ type AnchorEventArgsPick<T extends 'data' | 'e' | 'nodeModel' | 'edgeModel'> =
|
|
|
440
434
|
/**
|
|
441
435
|
* 通过拖动锚点连线添加的边的数据
|
|
442
436
|
*/
|
|
443
|
-
edgeModel
|
|
437
|
+
edgeModel?: BaseEdgeModel
|
|
444
438
|
},
|
|
445
439
|
T
|
|
446
440
|
>
|