@logicflow/core 2.0.11 → 2.0.12
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 +2 -2
- package/.turbo/turbo-build.log +7 -7
- package/CHANGELOG.md +9 -0
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/es/constant/index.d.ts +2 -0
- package/es/constant/index.js +2 -0
- package/es/event/eventArgs.d.ts +8 -0
- package/es/model/GraphModel.js +3 -0
- package/es/model/edge/BezierEdgeModel.js +3 -0
- package/es/model/edge/PolylineEdgeModel.js +3 -0
- package/es/view/Anchor.js +15 -2
- package/es/view/Control.d.ts +1 -0
- package/es/view/Control.js +4 -0
- package/es/view/Graph.d.ts +3 -0
- package/es/view/Graph.js +7 -3
- package/es/view/overlay/ToolOverlay.d.ts +3 -1
- package/es/view/overlay/ToolOverlay.js +39 -2
- package/lib/constant/index.d.ts +2 -0
- package/lib/constant/index.js +2 -0
- package/lib/event/eventArgs.d.ts +8 -0
- package/lib/model/GraphModel.js +3 -0
- package/lib/model/edge/BezierEdgeModel.js +3 -0
- package/lib/model/edge/PolylineEdgeModel.js +3 -0
- package/lib/view/Anchor.js +15 -2
- package/lib/view/Control.d.ts +1 -0
- package/lib/view/Control.js +4 -0
- package/lib/view/Graph.d.ts +3 -0
- package/lib/view/Graph.js +6 -2
- package/lib/view/overlay/ToolOverlay.d.ts +3 -1
- package/lib/view/overlay/ToolOverlay.js +39 -2
- package/package.json +1 -1
- package/src/constant/index.ts +2 -0
- package/src/event/eventArgs.ts +8 -0
- package/src/model/GraphModel.ts +1 -1
- package/src/model/edge/BezierEdgeModel.ts +1 -1
- package/src/model/edge/PolylineEdgeModel.ts +1 -1
- package/src/view/Anchor.tsx +15 -4
- package/src/view/Control.tsx +5 -0
- package/src/view/Graph.tsx +15 -3
- package/src/view/overlay/ToolOverlay.tsx +17 -2
- package/stats.html +1 -1
package/es/constant/index.d.ts
CHANGED
|
@@ -64,6 +64,8 @@ export declare enum EventType {
|
|
|
64
64
|
EDGE_CONTEXTMENU = "edge:contextmenu",
|
|
65
65
|
EDGE_ADJUST = "edge:adjust",
|
|
66
66
|
EDGE_EXCHANGE_NODE = "edge:exchange-node",
|
|
67
|
+
ANCHOR_CLICK = "anchor:click",
|
|
68
|
+
ANCHOR_MOUSEDOWN = "anchor:mousedown",
|
|
67
69
|
ANCHOR_DRAGSTART = "anchor:dragstart",
|
|
68
70
|
ANCHOR_DRAG = "anchor:drag",
|
|
69
71
|
ANCHOR_DROP = "anchor:drop",
|
package/es/constant/index.js
CHANGED
|
@@ -72,6 +72,8 @@ export var EventType;
|
|
|
72
72
|
EventType["EDGE_ADJUST"] = "edge:adjust";
|
|
73
73
|
EventType["EDGE_EXCHANGE_NODE"] = "edge:exchange-node";
|
|
74
74
|
// Anchor events
|
|
75
|
+
EventType["ANCHOR_CLICK"] = "anchor:click";
|
|
76
|
+
EventType["ANCHOR_MOUSEDOWN"] = "anchor:mousedown";
|
|
75
77
|
EventType["ANCHOR_DRAGSTART"] = "anchor:dragstart";
|
|
76
78
|
EventType["ANCHOR_DRAG"] = "anchor:drag";
|
|
77
79
|
EventType["ANCHOR_DROP"] = "anchor:drop";
|
package/es/event/eventArgs.d.ts
CHANGED
|
@@ -382,6 +382,14 @@ type AnchorEventArgsPick<T extends 'data' | 'e' | 'nodeModel' | 'edgeModel'> = P
|
|
|
382
382
|
* 锚点事件
|
|
383
383
|
*/
|
|
384
384
|
interface AnchorEventArgs {
|
|
385
|
+
/**
|
|
386
|
+
* anchor 锚点 click
|
|
387
|
+
*/
|
|
388
|
+
'anchor:click': AnchorEventArgsPick<'data' | 'e' | 'nodeModel'>;
|
|
389
|
+
/**
|
|
390
|
+
* anchor 锚点 mousedown
|
|
391
|
+
*/
|
|
392
|
+
'anchor:mousedown': AnchorEventArgsPick<'data' | 'e' | 'nodeModel'>;
|
|
385
393
|
/**
|
|
386
394
|
* 开始拖拽锚点
|
|
387
395
|
*/
|
package/es/model/GraphModel.js
CHANGED
|
@@ -1464,6 +1464,9 @@ var GraphModel = /** @class */ (function () {
|
|
|
1464
1464
|
__decorate([
|
|
1465
1465
|
observable
|
|
1466
1466
|
], GraphModel.prototype, "height", void 0);
|
|
1467
|
+
__decorate([
|
|
1468
|
+
observable
|
|
1469
|
+
], GraphModel.prototype, "theme", void 0);
|
|
1467
1470
|
__decorate([
|
|
1468
1471
|
observable
|
|
1469
1472
|
], GraphModel.prototype, "grid", void 0);
|
|
@@ -208,6 +208,9 @@ var BezierEdgeModel = /** @class */ (function (_super) {
|
|
|
208
208
|
this.pointsList = [startPoint, sNext, ePre, endPoint];
|
|
209
209
|
this.initPoints();
|
|
210
210
|
};
|
|
211
|
+
__decorate([
|
|
212
|
+
observable
|
|
213
|
+
], BezierEdgeModel.prototype, "offset", void 0);
|
|
211
214
|
__decorate([
|
|
212
215
|
observable
|
|
213
216
|
], BezierEdgeModel.prototype, "path", void 0);
|
|
@@ -553,6 +553,9 @@ var PolylineEdgeModel = /** @class */ (function (_super) {
|
|
|
553
553
|
}, sourceNode, targetNode, this.offset || 0);
|
|
554
554
|
this.initPoints();
|
|
555
555
|
};
|
|
556
|
+
__decorate([
|
|
557
|
+
observable
|
|
558
|
+
], PolylineEdgeModel.prototype, "offset", void 0);
|
|
556
559
|
__decorate([
|
|
557
560
|
observable
|
|
558
561
|
], PolylineEdgeModel.prototype, "dbClickPosition", void 0);
|
package/es/view/Anchor.js
CHANGED
|
@@ -294,10 +294,23 @@ var Anchor = /** @class */ (function (_super) {
|
|
|
294
294
|
Anchor.prototype.render = function () {
|
|
295
295
|
var _this = this;
|
|
296
296
|
var _a = this.state, startX = _a.startX, startY = _a.startY, endX = _a.endX, endY = _a.endY;
|
|
297
|
-
var _b = this.props,
|
|
297
|
+
var _b = this.props, anchorData = _b.anchorData, edgeStyle = _b.edgeStyle, nodeModel = _b.nodeModel, graphModel = _b.graphModel;
|
|
298
|
+
var edgeAddable = anchorData.edgeAddable;
|
|
298
299
|
return (
|
|
299
300
|
// className="lf-anchor" 作为下载时,需要将锚点删除的依据,不要修改类名
|
|
300
|
-
_jsxs("g", { className: "lf-anchor", children: [_jsx("g", {
|
|
301
|
+
_jsxs("g", { className: "lf-anchor", children: [_jsx("g", { onClick: function (ev) {
|
|
302
|
+
ev.stopPropagation();
|
|
303
|
+
graphModel.eventCenter.emit(EventType.ANCHOR_CLICK, {
|
|
304
|
+
data: anchorData,
|
|
305
|
+
e: ev,
|
|
306
|
+
nodeModel: nodeModel,
|
|
307
|
+
});
|
|
308
|
+
}, onMouseDown: function (ev) {
|
|
309
|
+
graphModel.eventCenter.emit(EventType.ANCHOR_MOUSEDOWN, {
|
|
310
|
+
data: anchorData,
|
|
311
|
+
e: ev,
|
|
312
|
+
nodeModel: nodeModel,
|
|
313
|
+
});
|
|
301
314
|
if (edgeAddable !== false) {
|
|
302
315
|
_this.dragHandler.handleMouseDown(ev);
|
|
303
316
|
}
|
package/es/view/Control.d.ts
CHANGED
|
@@ -43,6 +43,7 @@ export declare class ResizeControl extends Component<IResizeControlProps, IResiz
|
|
|
43
43
|
*/
|
|
44
44
|
recalcResizeInfo: (index: ResizeControlIndex, resizeInfo: ResizeInfo, pct?: number, freezeWidth?: boolean, freezeHeight?: boolean) => ResizeInfo;
|
|
45
45
|
resizeNode: ({ deltaX, deltaY }: VectorData) => void;
|
|
46
|
+
onDragStart: () => void;
|
|
46
47
|
onDragging: ({ deltaX, deltaY }: IDragParams) => void;
|
|
47
48
|
onDragEnd: () => void;
|
|
48
49
|
render(): h.JSX.Element;
|
package/es/view/Control.js
CHANGED
|
@@ -280,6 +280,9 @@ var ResizeControl = /** @class */ (function (_super) {
|
|
|
280
280
|
// // 触发 resize 事件
|
|
281
281
|
// this.triggerResizeEvent(preNodeData, curNodeData, deltaX, deltaY, this.index, this.nodeModel)
|
|
282
282
|
};
|
|
283
|
+
_this.onDragStart = function () {
|
|
284
|
+
_this.graphModel.selectNodeById(_this.nodeModel.id);
|
|
285
|
+
};
|
|
283
286
|
_this.onDragging = function (_a) {
|
|
284
287
|
var deltaX = _a.deltaX, deltaY = _a.deltaY;
|
|
285
288
|
var transformModel = _this.graphModel.transformModel;
|
|
@@ -309,6 +312,7 @@ var ResizeControl = /** @class */ (function (_super) {
|
|
|
309
312
|
_this.graphModel = graphModel;
|
|
310
313
|
// 初始化拖拽工具
|
|
311
314
|
_this.dragHandler = new StepDrag({
|
|
315
|
+
onDragStart: _this.onDragStart,
|
|
312
316
|
onDragging: _this.onDragging,
|
|
313
317
|
onDragEnd: _this.onDragEnd,
|
|
314
318
|
step: graphModel.gridSize,
|
package/es/view/Graph.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Component, ComponentType } from 'preact/compat';
|
|
2
|
+
import { CanvasOverlay } from './overlay';
|
|
2
3
|
import DnD from './behavior/dnd';
|
|
3
4
|
import Tool from '../tool';
|
|
4
5
|
import { Options as LFOptions } from '../options';
|
|
@@ -12,6 +13,8 @@ type IGraphProps = {
|
|
|
12
13
|
graphModel: GraphModel;
|
|
13
14
|
};
|
|
14
15
|
declare class Graph extends Component<IGraphProps> {
|
|
16
|
+
canvasOverlayRef: import("preact").RefObject<CanvasOverlay>;
|
|
17
|
+
getCanvasOverlay: () => CanvasOverlay | null;
|
|
15
18
|
private handleResize;
|
|
16
19
|
private throttleResize;
|
|
17
20
|
componentDidMount(): void;
|
package/es/view/Graph.js
CHANGED
|
@@ -45,7 +45,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
45
45
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
46
46
|
};
|
|
47
47
|
import { jsx as _jsx, jsxs as _jsxs } from "preact/jsx-runtime";
|
|
48
|
-
import { Component } from 'preact/compat';
|
|
48
|
+
import { Component, createRef } from 'preact/compat';
|
|
49
49
|
import { map, throttle } from 'lodash-es';
|
|
50
50
|
import { CanvasOverlay, ToolOverlay, BackgroundOverlay, Grid, SnaplineOverlay, OutlineOverlay, BezierAdjustOverlay, ModificationOverlay, } from './overlay';
|
|
51
51
|
import { observer } from '..';
|
|
@@ -54,6 +54,10 @@ var Graph = /** @class */ (function (_super) {
|
|
|
54
54
|
__extends(Graph, _super);
|
|
55
55
|
function Graph() {
|
|
56
56
|
var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;
|
|
57
|
+
_this.canvasOverlayRef = createRef();
|
|
58
|
+
_this.getCanvasOverlay = function () {
|
|
59
|
+
return _this.canvasOverlayRef.current;
|
|
60
|
+
};
|
|
57
61
|
_this.handleResize = function () {
|
|
58
62
|
var _a = _this.props, graphModel = _a.graphModel, options = _a.options;
|
|
59
63
|
var width = graphModel.width, height = graphModel.height, isContainerWidth = graphModel.isContainerWidth, isContainerHeight = graphModel.isContainerHeight;
|
|
@@ -110,9 +114,9 @@ var Graph = /** @class */ (function (_super) {
|
|
|
110
114
|
}
|
|
111
115
|
var fakeNode = graphModel.fakeNode, editConfigModel = graphModel.editConfigModel, background = graphModel.background;
|
|
112
116
|
var adjustEdge = editConfigModel.adjustEdge;
|
|
113
|
-
return (_jsxs("div", { className: "lf-graph", "flow-id": graphModel.flowId, style: style, children: [_jsxs(CanvasOverlay, { graphModel: graphModel, dnd: dnd, children: [_jsx("g", { className: "lf-base", children: map(graphModel.sortElements, function (nodeModel) {
|
|
117
|
+
return (_jsxs("div", { className: "lf-graph", "flow-id": graphModel.flowId, style: style, children: [_jsxs(CanvasOverlay, { ref: this.canvasOverlayRef, graphModel: graphModel, dnd: dnd, children: [_jsx("g", { className: "lf-base", children: map(graphModel.sortElements, function (nodeModel) {
|
|
114
118
|
return _this.getComponent(nodeModel, graphModel);
|
|
115
|
-
}) }), fakeNode ? this.getComponent(fakeNode, graphModel) : ''] }), _jsxs(ModificationOverlay, { graphModel: graphModel, children: [_jsx(OutlineOverlay, { graphModel: graphModel }), adjustEdge ? _jsx(BezierAdjustOverlay, { graphModel: graphModel }) : '', options.snapline !== false ? (_jsx(SnaplineOverlay, { snaplineModel: snaplineModel })) : ('')] }), _jsx(ToolOverlay, { graphModel: graphModel, tool: tool }), background && _jsx(BackgroundOverlay, { background: background }), _jsx(Grid, { graphModel: graphModel })] }));
|
|
119
|
+
}) }), fakeNode ? this.getComponent(fakeNode, graphModel) : ''] }), _jsxs(ModificationOverlay, { graphModel: graphModel, children: [_jsx(OutlineOverlay, { graphModel: graphModel }), adjustEdge ? _jsx(BezierAdjustOverlay, { graphModel: graphModel }) : '', options.snapline !== false ? (_jsx(SnaplineOverlay, { snaplineModel: snaplineModel })) : ('')] }), _jsx(ToolOverlay, { graphModel: graphModel, tool: tool, getCanvasOverlay: this.getCanvasOverlay }), background && _jsx(BackgroundOverlay, { background: background }), _jsx(Grid, { graphModel: graphModel })] }));
|
|
116
120
|
};
|
|
117
121
|
Graph = __decorate([
|
|
118
122
|
observer
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createElement as h, Component } from 'preact/compat';
|
|
2
|
-
import { OutlineOverlay } from '.';
|
|
2
|
+
import { CanvasOverlay, OutlineOverlay } from '.';
|
|
3
3
|
import { GraphModel } from '../../model';
|
|
4
4
|
import { Tool } from '../../tool';
|
|
5
5
|
type IProps = {
|
|
6
6
|
graphModel: GraphModel;
|
|
7
7
|
tool: Tool;
|
|
8
|
+
getCanvasOverlay: () => CanvasOverlay | null;
|
|
8
9
|
};
|
|
9
10
|
export declare class ToolOverlay extends Component<IProps> {
|
|
10
11
|
componentDidMount(): void;
|
|
@@ -14,6 +15,7 @@ export declare class ToolOverlay extends Component<IProps> {
|
|
|
14
15
|
*/
|
|
15
16
|
getTools(): import("preact").VNode<import("../..").IToolProps>[];
|
|
16
17
|
triggerToolRender(): void;
|
|
18
|
+
zoomHandler: (e: WheelEvent) => void;
|
|
17
19
|
render(): h.JSX.Element;
|
|
18
20
|
}
|
|
19
21
|
export default OutlineOverlay;
|
|
@@ -19,6 +19,31 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
19
19
|
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;
|
|
20
20
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
21
21
|
};
|
|
22
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
23
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
24
|
+
if (!m) return o;
|
|
25
|
+
var i = m.call(o), r, ar = [], e;
|
|
26
|
+
try {
|
|
27
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
28
|
+
}
|
|
29
|
+
catch (error) { e = { error: error }; }
|
|
30
|
+
finally {
|
|
31
|
+
try {
|
|
32
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
33
|
+
}
|
|
34
|
+
finally { if (e) throw e.error; }
|
|
35
|
+
}
|
|
36
|
+
return ar;
|
|
37
|
+
};
|
|
38
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
39
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
40
|
+
if (ar || !(i in from)) {
|
|
41
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
42
|
+
ar[i] = from[i];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
46
|
+
};
|
|
22
47
|
import { jsx as _jsx } from "preact/jsx-runtime";
|
|
23
48
|
import { createElement as h, Component } from 'preact/compat';
|
|
24
49
|
import { OutlineOverlay } from '.';
|
|
@@ -26,7 +51,13 @@ import { observer } from '../..';
|
|
|
26
51
|
var ToolOverlay = /** @class */ (function (_super) {
|
|
27
52
|
__extends(ToolOverlay, _super);
|
|
28
53
|
function ToolOverlay() {
|
|
29
|
-
|
|
54
|
+
var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;
|
|
55
|
+
_this.zoomHandler = function (e) {
|
|
56
|
+
var _a;
|
|
57
|
+
// TODO 是否应该使用 dispatchEvent 来触发事件
|
|
58
|
+
(_a = _this.props.getCanvasOverlay()) === null || _a === void 0 ? void 0 : _a.zoomHandler(e);
|
|
59
|
+
};
|
|
60
|
+
return _this;
|
|
30
61
|
}
|
|
31
62
|
// 在react严格模式下,useEffect会执行两次,但是在LogicFlow内部,则只会触发一次componentDidMount和componentDidUpdate。
|
|
32
63
|
// 其中第一次componentDidMount对应的graphModel为被丢弃的graphModel, 所以不应该生效。
|
|
@@ -64,7 +95,13 @@ var ToolOverlay = /** @class */ (function (_super) {
|
|
|
64
95
|
};
|
|
65
96
|
ToolOverlay.prototype.render = function () {
|
|
66
97
|
var graphModel = this.props.graphModel;
|
|
67
|
-
return (_jsx("div", { className: "lf-tool-overlay", id: "ToolOverlay_".concat(graphModel.flowId),
|
|
98
|
+
return (_jsx("div", { className: "lf-tool-overlay", id: "ToolOverlay_".concat(graphModel.flowId),
|
|
99
|
+
/*
|
|
100
|
+
* 默认情况下该容器设置了 pointer-events: none,不会触发这些事件
|
|
101
|
+
* 只会在容器取消 pointer-events: none 后触发,用于缩放、滚动画布等操作
|
|
102
|
+
* 目前只在 selection-select 插件中使用。为了能在元素内部进行框选,在开启选区后会关闭事件透传。需要手动触发事件
|
|
103
|
+
*/
|
|
104
|
+
onWheel: this.zoomHandler, children: this.getTools() }));
|
|
68
105
|
};
|
|
69
106
|
ToolOverlay = __decorate([
|
|
70
107
|
observer
|
package/lib/constant/index.d.ts
CHANGED
|
@@ -64,6 +64,8 @@ export declare enum EventType {
|
|
|
64
64
|
EDGE_CONTEXTMENU = "edge:contextmenu",
|
|
65
65
|
EDGE_ADJUST = "edge:adjust",
|
|
66
66
|
EDGE_EXCHANGE_NODE = "edge:exchange-node",
|
|
67
|
+
ANCHOR_CLICK = "anchor:click",
|
|
68
|
+
ANCHOR_MOUSEDOWN = "anchor:mousedown",
|
|
67
69
|
ANCHOR_DRAGSTART = "anchor:dragstart",
|
|
68
70
|
ANCHOR_DRAG = "anchor:drag",
|
|
69
71
|
ANCHOR_DROP = "anchor:drop",
|
package/lib/constant/index.js
CHANGED
|
@@ -75,6 +75,8 @@ var EventType;
|
|
|
75
75
|
EventType["EDGE_ADJUST"] = "edge:adjust";
|
|
76
76
|
EventType["EDGE_EXCHANGE_NODE"] = "edge:exchange-node";
|
|
77
77
|
// Anchor events
|
|
78
|
+
EventType["ANCHOR_CLICK"] = "anchor:click";
|
|
79
|
+
EventType["ANCHOR_MOUSEDOWN"] = "anchor:mousedown";
|
|
78
80
|
EventType["ANCHOR_DRAGSTART"] = "anchor:dragstart";
|
|
79
81
|
EventType["ANCHOR_DRAG"] = "anchor:drag";
|
|
80
82
|
EventType["ANCHOR_DROP"] = "anchor:drop";
|
package/lib/event/eventArgs.d.ts
CHANGED
|
@@ -382,6 +382,14 @@ type AnchorEventArgsPick<T extends 'data' | 'e' | 'nodeModel' | 'edgeModel'> = P
|
|
|
382
382
|
* 锚点事件
|
|
383
383
|
*/
|
|
384
384
|
interface AnchorEventArgs {
|
|
385
|
+
/**
|
|
386
|
+
* anchor 锚点 click
|
|
387
|
+
*/
|
|
388
|
+
'anchor:click': AnchorEventArgsPick<'data' | 'e' | 'nodeModel'>;
|
|
389
|
+
/**
|
|
390
|
+
* anchor 锚点 mousedown
|
|
391
|
+
*/
|
|
392
|
+
'anchor:mousedown': AnchorEventArgsPick<'data' | 'e' | 'nodeModel'>;
|
|
385
393
|
/**
|
|
386
394
|
* 开始拖拽锚点
|
|
387
395
|
*/
|
package/lib/model/GraphModel.js
CHANGED
|
@@ -1470,6 +1470,9 @@ var GraphModel = /** @class */ (function () {
|
|
|
1470
1470
|
__decorate([
|
|
1471
1471
|
mobx_1.observable
|
|
1472
1472
|
], GraphModel.prototype, "height", void 0);
|
|
1473
|
+
__decorate([
|
|
1474
|
+
mobx_1.observable
|
|
1475
|
+
], GraphModel.prototype, "theme", void 0);
|
|
1473
1476
|
__decorate([
|
|
1474
1477
|
mobx_1.observable
|
|
1475
1478
|
], GraphModel.prototype, "grid", void 0);
|
|
@@ -214,6 +214,9 @@ var BezierEdgeModel = /** @class */ (function (_super) {
|
|
|
214
214
|
this.pointsList = [startPoint, sNext, ePre, endPoint];
|
|
215
215
|
this.initPoints();
|
|
216
216
|
};
|
|
217
|
+
__decorate([
|
|
218
|
+
mobx_1.observable
|
|
219
|
+
], BezierEdgeModel.prototype, "offset", void 0);
|
|
217
220
|
__decorate([
|
|
218
221
|
mobx_1.observable
|
|
219
222
|
], BezierEdgeModel.prototype, "path", void 0);
|
|
@@ -556,6 +556,9 @@ var PolylineEdgeModel = /** @class */ (function (_super) {
|
|
|
556
556
|
}, sourceNode, targetNode, this.offset || 0);
|
|
557
557
|
this.initPoints();
|
|
558
558
|
};
|
|
559
|
+
__decorate([
|
|
560
|
+
mobx_1.observable
|
|
561
|
+
], PolylineEdgeModel.prototype, "offset", void 0);
|
|
559
562
|
__decorate([
|
|
560
563
|
mobx_1.observable
|
|
561
564
|
], PolylineEdgeModel.prototype, "dbClickPosition", void 0);
|
package/lib/view/Anchor.js
CHANGED
|
@@ -296,10 +296,23 @@ var Anchor = /** @class */ (function (_super) {
|
|
|
296
296
|
Anchor.prototype.render = function () {
|
|
297
297
|
var _this = this;
|
|
298
298
|
var _a = this.state, startX = _a.startX, startY = _a.startY, endX = _a.endX, endY = _a.endY;
|
|
299
|
-
var _b = this.props,
|
|
299
|
+
var _b = this.props, anchorData = _b.anchorData, edgeStyle = _b.edgeStyle, nodeModel = _b.nodeModel, graphModel = _b.graphModel;
|
|
300
|
+
var edgeAddable = anchorData.edgeAddable;
|
|
300
301
|
return (
|
|
301
302
|
// className="lf-anchor" 作为下载时,需要将锚点删除的依据,不要修改类名
|
|
302
|
-
(0, jsx_runtime_1.jsxs)("g", { className: "lf-anchor", children: [(0, jsx_runtime_1.jsx)("g", {
|
|
303
|
+
(0, jsx_runtime_1.jsxs)("g", { className: "lf-anchor", children: [(0, jsx_runtime_1.jsx)("g", { onClick: function (ev) {
|
|
304
|
+
ev.stopPropagation();
|
|
305
|
+
graphModel.eventCenter.emit(constant_1.EventType.ANCHOR_CLICK, {
|
|
306
|
+
data: anchorData,
|
|
307
|
+
e: ev,
|
|
308
|
+
nodeModel: nodeModel,
|
|
309
|
+
});
|
|
310
|
+
}, onMouseDown: function (ev) {
|
|
311
|
+
graphModel.eventCenter.emit(constant_1.EventType.ANCHOR_MOUSEDOWN, {
|
|
312
|
+
data: anchorData,
|
|
313
|
+
e: ev,
|
|
314
|
+
nodeModel: nodeModel,
|
|
315
|
+
});
|
|
303
316
|
if (edgeAddable !== false) {
|
|
304
317
|
_this.dragHandler.handleMouseDown(ev);
|
|
305
318
|
}
|
package/lib/view/Control.d.ts
CHANGED
|
@@ -43,6 +43,7 @@ export declare class ResizeControl extends Component<IResizeControlProps, IResiz
|
|
|
43
43
|
*/
|
|
44
44
|
recalcResizeInfo: (index: ResizeControlIndex, resizeInfo: ResizeInfo, pct?: number, freezeWidth?: boolean, freezeHeight?: boolean) => ResizeInfo;
|
|
45
45
|
resizeNode: ({ deltaX, deltaY }: VectorData) => void;
|
|
46
|
+
onDragStart: () => void;
|
|
46
47
|
onDragging: ({ deltaX, deltaY }: IDragParams) => void;
|
|
47
48
|
onDragEnd: () => void;
|
|
48
49
|
render(): h.JSX.Element;
|
package/lib/view/Control.js
CHANGED
|
@@ -283,6 +283,9 @@ var ResizeControl = /** @class */ (function (_super) {
|
|
|
283
283
|
// // 触发 resize 事件
|
|
284
284
|
// this.triggerResizeEvent(preNodeData, curNodeData, deltaX, deltaY, this.index, this.nodeModel)
|
|
285
285
|
};
|
|
286
|
+
_this.onDragStart = function () {
|
|
287
|
+
_this.graphModel.selectNodeById(_this.nodeModel.id);
|
|
288
|
+
};
|
|
286
289
|
_this.onDragging = function (_a) {
|
|
287
290
|
var deltaX = _a.deltaX, deltaY = _a.deltaY;
|
|
288
291
|
var transformModel = _this.graphModel.transformModel;
|
|
@@ -312,6 +315,7 @@ var ResizeControl = /** @class */ (function (_super) {
|
|
|
312
315
|
_this.graphModel = graphModel;
|
|
313
316
|
// 初始化拖拽工具
|
|
314
317
|
_this.dragHandler = new util_1.StepDrag({
|
|
318
|
+
onDragStart: _this.onDragStart,
|
|
315
319
|
onDragging: _this.onDragging,
|
|
316
320
|
onDragEnd: _this.onDragEnd,
|
|
317
321
|
step: graphModel.gridSize,
|
package/lib/view/Graph.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Component, ComponentType } from 'preact/compat';
|
|
2
|
+
import { CanvasOverlay } from './overlay';
|
|
2
3
|
import DnD from './behavior/dnd';
|
|
3
4
|
import Tool from '../tool';
|
|
4
5
|
import { Options as LFOptions } from '../options';
|
|
@@ -12,6 +13,8 @@ type IGraphProps = {
|
|
|
12
13
|
graphModel: GraphModel;
|
|
13
14
|
};
|
|
14
15
|
declare class Graph extends Component<IGraphProps> {
|
|
16
|
+
canvasOverlayRef: import("preact").RefObject<CanvasOverlay>;
|
|
17
|
+
getCanvasOverlay: () => CanvasOverlay | null;
|
|
15
18
|
private handleResize;
|
|
16
19
|
private throttleResize;
|
|
17
20
|
componentDidMount(): void;
|
package/lib/view/Graph.js
CHANGED
|
@@ -56,6 +56,10 @@ var Graph = /** @class */ (function (_super) {
|
|
|
56
56
|
__extends(Graph, _super);
|
|
57
57
|
function Graph() {
|
|
58
58
|
var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;
|
|
59
|
+
_this.canvasOverlayRef = (0, compat_1.createRef)();
|
|
60
|
+
_this.getCanvasOverlay = function () {
|
|
61
|
+
return _this.canvasOverlayRef.current;
|
|
62
|
+
};
|
|
59
63
|
_this.handleResize = function () {
|
|
60
64
|
var _a = _this.props, graphModel = _a.graphModel, options = _a.options;
|
|
61
65
|
var width = graphModel.width, height = graphModel.height, isContainerWidth = graphModel.isContainerWidth, isContainerHeight = graphModel.isContainerHeight;
|
|
@@ -112,9 +116,9 @@ var Graph = /** @class */ (function (_super) {
|
|
|
112
116
|
}
|
|
113
117
|
var fakeNode = graphModel.fakeNode, editConfigModel = graphModel.editConfigModel, background = graphModel.background;
|
|
114
118
|
var adjustEdge = editConfigModel.adjustEdge;
|
|
115
|
-
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) {
|
|
119
|
+
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, { ref: this.canvasOverlayRef, graphModel: graphModel, dnd: dnd, children: [(0, jsx_runtime_1.jsx)("g", { className: "lf-base", children: (0, lodash_es_1.map)(graphModel.sortElements, function (nodeModel) {
|
|
116
120
|
return _this.getComponent(nodeModel, graphModel);
|
|
117
|
-
}) }), 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 })] }));
|
|
121
|
+
}) }), 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, getCanvasOverlay: this.getCanvasOverlay }), background && (0, jsx_runtime_1.jsx)(overlay_1.BackgroundOverlay, { background: background }), (0, jsx_runtime_1.jsx)(overlay_1.Grid, { graphModel: graphModel })] }));
|
|
118
122
|
};
|
|
119
123
|
Graph = __decorate([
|
|
120
124
|
__1.observer
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createElement as h, Component } from 'preact/compat';
|
|
2
|
-
import { OutlineOverlay } from '.';
|
|
2
|
+
import { CanvasOverlay, OutlineOverlay } from '.';
|
|
3
3
|
import { GraphModel } from '../../model';
|
|
4
4
|
import { Tool } from '../../tool';
|
|
5
5
|
type IProps = {
|
|
6
6
|
graphModel: GraphModel;
|
|
7
7
|
tool: Tool;
|
|
8
|
+
getCanvasOverlay: () => CanvasOverlay | null;
|
|
8
9
|
};
|
|
9
10
|
export declare class ToolOverlay extends Component<IProps> {
|
|
10
11
|
componentDidMount(): void;
|
|
@@ -14,6 +15,7 @@ export declare class ToolOverlay extends Component<IProps> {
|
|
|
14
15
|
*/
|
|
15
16
|
getTools(): import("preact").VNode<import("../..").IToolProps>[];
|
|
16
17
|
triggerToolRender(): void;
|
|
18
|
+
zoomHandler: (e: WheelEvent) => void;
|
|
17
19
|
render(): h.JSX.Element;
|
|
18
20
|
}
|
|
19
21
|
export default OutlineOverlay;
|
|
@@ -20,6 +20,31 @@ 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
|
+
};
|
|
23
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
49
|
exports.ToolOverlay = void 0;
|
|
25
50
|
var jsx_runtime_1 = require("preact/jsx-runtime");
|
|
@@ -29,7 +54,13 @@ var __1 = require("../..");
|
|
|
29
54
|
var ToolOverlay = /** @class */ (function (_super) {
|
|
30
55
|
__extends(ToolOverlay, _super);
|
|
31
56
|
function ToolOverlay() {
|
|
32
|
-
|
|
57
|
+
var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;
|
|
58
|
+
_this.zoomHandler = function (e) {
|
|
59
|
+
var _a;
|
|
60
|
+
// TODO 是否应该使用 dispatchEvent 来触发事件
|
|
61
|
+
(_a = _this.props.getCanvasOverlay()) === null || _a === void 0 ? void 0 : _a.zoomHandler(e);
|
|
62
|
+
};
|
|
63
|
+
return _this;
|
|
33
64
|
}
|
|
34
65
|
// 在react严格模式下,useEffect会执行两次,但是在LogicFlow内部,则只会触发一次componentDidMount和componentDidUpdate。
|
|
35
66
|
// 其中第一次componentDidMount对应的graphModel为被丢弃的graphModel, 所以不应该生效。
|
|
@@ -67,7 +98,13 @@ var ToolOverlay = /** @class */ (function (_super) {
|
|
|
67
98
|
};
|
|
68
99
|
ToolOverlay.prototype.render = function () {
|
|
69
100
|
var graphModel = this.props.graphModel;
|
|
70
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "lf-tool-overlay", id: "ToolOverlay_".concat(graphModel.flowId),
|
|
101
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "lf-tool-overlay", id: "ToolOverlay_".concat(graphModel.flowId),
|
|
102
|
+
/*
|
|
103
|
+
* 默认情况下该容器设置了 pointer-events: none,不会触发这些事件
|
|
104
|
+
* 只会在容器取消 pointer-events: none 后触发,用于缩放、滚动画布等操作
|
|
105
|
+
* 目前只在 selection-select 插件中使用。为了能在元素内部进行框选,在开启选区后会关闭事件透传。需要手动触发事件
|
|
106
|
+
*/
|
|
107
|
+
onWheel: this.zoomHandler, children: this.getTools() }));
|
|
71
108
|
};
|
|
72
109
|
ToolOverlay = __decorate([
|
|
73
110
|
__1.observer
|
package/package.json
CHANGED
package/src/constant/index.ts
CHANGED
|
@@ -79,6 +79,8 @@ export enum EventType {
|
|
|
79
79
|
EDGE_EXCHANGE_NODE = 'edge:exchange-node',
|
|
80
80
|
|
|
81
81
|
// Anchor events
|
|
82
|
+
ANCHOR_CLICK = 'anchor:click',
|
|
83
|
+
ANCHOR_MOUSEDOWN = 'anchor:mousedown',
|
|
82
84
|
ANCHOR_DRAGSTART = 'anchor:dragstart',
|
|
83
85
|
ANCHOR_DRAG = 'anchor:drag',
|
|
84
86
|
ANCHOR_DROP = 'anchor:drop',
|
package/src/event/eventArgs.ts
CHANGED
|
@@ -469,6 +469,14 @@ type AnchorEventArgsPick<T extends 'data' | 'e' | 'nodeModel' | 'edgeModel'> =
|
|
|
469
469
|
* 锚点事件
|
|
470
470
|
*/
|
|
471
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'>
|
|
472
480
|
/**
|
|
473
481
|
* 开始拖拽锚点
|
|
474
482
|
*/
|
package/src/model/GraphModel.ts
CHANGED
|
@@ -13,7 +13,7 @@ import EdgeConfig = LogicFlow.EdgeConfig
|
|
|
13
13
|
export class BezierEdgeModel extends BaseEdgeModel {
|
|
14
14
|
modelType = ModelType.BEZIER_EDGE
|
|
15
15
|
|
|
16
|
-
offset!: number
|
|
16
|
+
@observable offset!: number
|
|
17
17
|
@observable path = ''
|
|
18
18
|
constructor(data: EdgeConfig, graphModel: GraphModel) {
|
|
19
19
|
super(data, graphModel)
|
|
@@ -30,7 +30,7 @@ import AnchorConfig = Model.AnchorConfig
|
|
|
30
30
|
export class PolylineEdgeModel extends BaseEdgeModel {
|
|
31
31
|
modelType = ModelType.POLYLINE_EDGE
|
|
32
32
|
draggingPointList: Point[] = []
|
|
33
|
-
offset?: number
|
|
33
|
+
@observable offset?: number
|
|
34
34
|
@observable dbClickPosition?: Point
|
|
35
35
|
|
|
36
36
|
initEdgeData(data: LogicFlow.EdgeConfig): void {
|
package/src/view/Anchor.tsx
CHANGED
|
@@ -361,15 +361,26 @@ class Anchor extends Component<IProps, IState> {
|
|
|
361
361
|
|
|
362
362
|
render() {
|
|
363
363
|
const { startX, startY, endX, endY } = this.state
|
|
364
|
-
const {
|
|
365
|
-
|
|
366
|
-
edgeStyle,
|
|
367
|
-
} = this.props
|
|
364
|
+
const { anchorData, edgeStyle, nodeModel, graphModel } = this.props
|
|
365
|
+
const { edgeAddable } = anchorData
|
|
368
366
|
return (
|
|
369
367
|
// className="lf-anchor" 作为下载时,需要将锚点删除的依据,不要修改类名
|
|
370
368
|
<g className="lf-anchor">
|
|
371
369
|
<g
|
|
370
|
+
onClick={(ev) => {
|
|
371
|
+
ev.stopPropagation()
|
|
372
|
+
graphModel.eventCenter.emit(EventType.ANCHOR_CLICK, {
|
|
373
|
+
data: anchorData,
|
|
374
|
+
e: ev!,
|
|
375
|
+
nodeModel,
|
|
376
|
+
})
|
|
377
|
+
}}
|
|
372
378
|
onMouseDown={(ev) => {
|
|
379
|
+
graphModel.eventCenter.emit(EventType.ANCHOR_MOUSEDOWN, {
|
|
380
|
+
data: anchorData,
|
|
381
|
+
e: ev!,
|
|
382
|
+
nodeModel,
|
|
383
|
+
})
|
|
373
384
|
if (edgeAddable !== false) {
|
|
374
385
|
this.dragHandler.handleMouseDown(ev)
|
|
375
386
|
}
|
package/src/view/Control.tsx
CHANGED
|
@@ -50,6 +50,7 @@ export class ResizeControl extends Component<
|
|
|
50
50
|
|
|
51
51
|
// 初始化拖拽工具
|
|
52
52
|
this.dragHandler = new StepDrag({
|
|
53
|
+
onDragStart: this.onDragStart,
|
|
53
54
|
onDragging: this.onDragging,
|
|
54
55
|
onDragEnd: this.onDragEnd,
|
|
55
56
|
step: graphModel.gridSize,
|
|
@@ -317,6 +318,10 @@ export class ResizeControl extends Component<
|
|
|
317
318
|
// this.triggerResizeEvent(preNodeData, curNodeData, deltaX, deltaY, this.index, this.nodeModel)
|
|
318
319
|
}
|
|
319
320
|
|
|
321
|
+
onDragStart = () => {
|
|
322
|
+
this.graphModel.selectNodeById(this.nodeModel.id)
|
|
323
|
+
}
|
|
324
|
+
|
|
320
325
|
onDragging = ({ deltaX, deltaY }: IDragParams) => {
|
|
321
326
|
const { transformModel } = this.graphModel
|
|
322
327
|
const [dx, dy] = transformModel.fixDeltaXY(deltaX, deltaY)
|