@logicflow/core 2.1.3 → 2.2.0
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 +6 -6
- package/CHANGELOG.md +15 -0
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/es/LogicFlow.d.ts +2 -1
- package/es/LogicFlow.js +4 -1
- package/es/constant/index.d.ts +3 -1
- package/es/constant/index.js +2 -0
- package/es/model/EditConfigModel.d.ts +3 -1
- package/es/model/EditConfigModel.js +5 -0
- package/es/model/GraphModel.d.ts +9 -1
- package/es/model/GraphModel.js +35 -8
- package/es/model/edge/BaseEdgeModel.d.ts +2 -1
- package/es/model/edge/BaseEdgeModel.js +29 -5
- package/es/model/node/BaseNodeModel.d.ts +2 -1
- package/es/model/node/BaseNodeModel.js +29 -5
- package/es/tool/MultipleSelectTool.d.ts +1 -1
- package/es/tool/MultipleSelectTool.js +1 -1
- package/es/util/drag.d.ts +4 -4
- package/es/util/drag.js +12 -6
- package/es/view/Anchor.d.ts +3 -3
- package/es/view/Anchor.js +30 -4
- package/es/view/Control.js +1 -1
- package/es/view/Rotate.js +1 -1
- package/es/view/behavior/dnd.d.ts +4 -8
- package/es/view/behavior/dnd.js +50 -14
- package/es/view/edge/AdjustPoint.d.ts +1 -1
- package/es/view/edge/AdjustPoint.js +1 -1
- package/es/view/edge/BaseEdge.d.ts +2 -1
- package/es/view/edge/BaseEdge.js +18 -1
- package/es/view/edge/PolylineEdge.d.ts +1 -1
- package/es/view/edge/PolylineEdge.js +1 -1
- package/es/view/node/BaseNode.d.ts +2 -1
- package/es/view/node/BaseNode.js +30 -3
- package/es/view/overlay/BezierAdjustOverlay.js +1 -1
- package/es/view/overlay/CanvasOverlay.d.ts +12 -1
- package/es/view/overlay/CanvasOverlay.js +94 -15
- package/es/view/text/BaseText.d.ts +1 -1
- package/es/view/text/BaseText.js +1 -1
- package/lib/LogicFlow.d.ts +2 -1
- package/lib/LogicFlow.js +3 -0
- package/lib/constant/index.d.ts +3 -1
- package/lib/constant/index.js +2 -0
- package/lib/model/EditConfigModel.d.ts +3 -1
- package/lib/model/EditConfigModel.js +5 -0
- package/lib/model/GraphModel.d.ts +9 -1
- package/lib/model/GraphModel.js +35 -8
- package/lib/model/edge/BaseEdgeModel.d.ts +2 -1
- package/lib/model/edge/BaseEdgeModel.js +29 -5
- package/lib/model/node/BaseNodeModel.d.ts +2 -1
- package/lib/model/node/BaseNodeModel.js +29 -5
- package/lib/tool/MultipleSelectTool.d.ts +1 -1
- package/lib/tool/MultipleSelectTool.js +1 -1
- package/lib/util/drag.d.ts +4 -4
- package/lib/util/drag.js +12 -6
- package/lib/view/Anchor.d.ts +3 -3
- package/lib/view/Anchor.js +30 -4
- package/lib/view/Control.js +1 -1
- package/lib/view/Rotate.js +1 -1
- package/lib/view/behavior/dnd.d.ts +4 -8
- package/lib/view/behavior/dnd.js +50 -14
- package/lib/view/edge/AdjustPoint.d.ts +1 -1
- package/lib/view/edge/AdjustPoint.js +1 -1
- package/lib/view/edge/BaseEdge.d.ts +2 -1
- package/lib/view/edge/BaseEdge.js +18 -1
- package/lib/view/edge/PolylineEdge.d.ts +1 -1
- package/lib/view/edge/PolylineEdge.js +1 -1
- package/lib/view/node/BaseNode.d.ts +2 -1
- package/lib/view/node/BaseNode.js +30 -3
- package/lib/view/overlay/BezierAdjustOverlay.js +1 -1
- package/lib/view/overlay/CanvasOverlay.d.ts +12 -1
- package/lib/view/overlay/CanvasOverlay.js +94 -15
- package/lib/view/text/BaseText.d.ts +1 -1
- package/lib/view/text/BaseText.js +1 -1
- package/package.json +1 -1
- package/src/LogicFlow.tsx +9 -1
- package/src/constant/index.ts +2 -0
- package/src/model/EditConfigModel.ts +3 -0
- package/src/model/GraphModel.ts +37 -11
- package/src/model/edge/BaseEdgeModel.ts +32 -5
- package/src/model/node/BaseNodeModel.ts +30 -5
- package/src/tool/MultipleSelectTool.tsx +2 -2
- package/src/util/drag.ts +16 -12
- package/src/view/Anchor.tsx +32 -6
- package/src/view/Control.tsx +1 -1
- package/src/view/Rotate.tsx +1 -1
- package/src/view/behavior/dnd.ts +55 -16
- package/src/view/edge/AdjustPoint.tsx +2 -2
- package/src/view/edge/BaseEdge.tsx +23 -3
- package/src/view/edge/PolylineEdge.tsx +2 -2
- package/src/view/node/BaseNode.tsx +30 -4
- package/src/view/overlay/BezierAdjustOverlay.tsx +1 -1
- package/src/view/overlay/CanvasOverlay.tsx +110 -4
- package/src/view/text/BaseText.tsx +5 -2
- package/stats.html +1 -1
package/es/LogicFlow.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import Tool from './tool';
|
|
|
7
7
|
import History from './history';
|
|
8
8
|
import Keyboard from './keyboard';
|
|
9
9
|
import { EventCallback, CallbackArgs, EventArgs } from './event/eventEmitter';
|
|
10
|
-
import { EventType, SegmentDirection } from './constant';
|
|
10
|
+
import { EventType, OverlapMode, SegmentDirection } from './constant';
|
|
11
11
|
import { Grid } from './view/overlay';
|
|
12
12
|
import Extension = LogicFlow.Extension;
|
|
13
13
|
import ExtensionConfig = LogicFlow.ExtensionConfig;
|
|
@@ -430,6 +430,7 @@ export declare class LogicFlow {
|
|
|
430
430
|
* 清空画布
|
|
431
431
|
*/
|
|
432
432
|
clearData(): void;
|
|
433
|
+
setOverlapMode(mode: OverlapMode): void;
|
|
433
434
|
/*********************************************************
|
|
434
435
|
* LogicFlow Render方法
|
|
435
436
|
********************************************************/
|
package/es/LogicFlow.js
CHANGED
|
@@ -48,7 +48,7 @@ import { Dnd, snapline } from './view/behavior';
|
|
|
48
48
|
import Tool from './tool';
|
|
49
49
|
import History from './history';
|
|
50
50
|
import Keyboard, { initDefaultShortcut } from './keyboard';
|
|
51
|
-
import { ElementType, EventType } from './constant';
|
|
51
|
+
import { ElementType, EventType, } from './constant';
|
|
52
52
|
var pluginFlag = Symbol('plugin registered by Logicflow.use');
|
|
53
53
|
var LogicFlow = /** @class */ (function () {
|
|
54
54
|
function LogicFlow(options) {
|
|
@@ -933,6 +933,9 @@ var LogicFlow = /** @class */ (function () {
|
|
|
933
933
|
// 强制刷新数据, 让 preact 清除对已删除节点的引用
|
|
934
934
|
this.render({});
|
|
935
935
|
};
|
|
936
|
+
LogicFlow.prototype.setOverlapMode = function (mode) {
|
|
937
|
+
this.graphModel.setOverlapMode(mode);
|
|
938
|
+
};
|
|
936
939
|
/*********************************************************
|
|
937
940
|
* LogicFlow Render方法
|
|
938
941
|
********************************************************/
|
package/es/constant/index.d.ts
CHANGED
|
@@ -134,8 +134,10 @@ export declare enum EventType {
|
|
|
134
134
|
EDIT_CONFIG_CHANGED = "editConfig:changed"
|
|
135
135
|
}
|
|
136
136
|
export declare enum OverlapMode {
|
|
137
|
+
STATIC = -1,// 静态(元素层级不随点击变化)
|
|
137
138
|
DEFAULT = 0,// 默认
|
|
138
|
-
INCREASE = 1
|
|
139
|
+
INCREASE = 1,// 递增
|
|
140
|
+
EDGE_TOP = 2
|
|
139
141
|
}
|
|
140
142
|
export declare enum SegmentDirection {
|
|
141
143
|
HORIZONTAL = "horizontal",
|
package/es/constant/index.js
CHANGED
|
@@ -149,8 +149,10 @@ export var EventType;
|
|
|
149
149
|
})(EventType || (EventType = {}));
|
|
150
150
|
export var OverlapMode;
|
|
151
151
|
(function (OverlapMode) {
|
|
152
|
+
OverlapMode[OverlapMode["STATIC"] = -1] = "STATIC";
|
|
152
153
|
OverlapMode[OverlapMode["DEFAULT"] = 0] = "DEFAULT";
|
|
153
154
|
OverlapMode[OverlapMode["INCREASE"] = 1] = "INCREASE";
|
|
155
|
+
OverlapMode[OverlapMode["EDGE_TOP"] = 2] = "EDGE_TOP";
|
|
154
156
|
})(OverlapMode || (OverlapMode = {}));
|
|
155
157
|
export var SegmentDirection;
|
|
156
158
|
(function (SegmentDirection) {
|
|
@@ -114,6 +114,7 @@ export interface IEditConfigType {
|
|
|
114
114
|
nodeTextMode: TextMode;
|
|
115
115
|
edgeTextMode: TextMode;
|
|
116
116
|
snapGrid: boolean;
|
|
117
|
+
isPinching: boolean;
|
|
117
118
|
}
|
|
118
119
|
export type IConfigKeys = keyof IEditConfigType;
|
|
119
120
|
/**
|
|
@@ -129,6 +130,7 @@ export declare class EditConfigModel {
|
|
|
129
130
|
stopMoveGraph: boolean;
|
|
130
131
|
stopScrollGraph: boolean;
|
|
131
132
|
snapGrid: boolean;
|
|
133
|
+
isPinching: boolean;
|
|
132
134
|
/*********************************************************
|
|
133
135
|
* 文本相关配置(全局)
|
|
134
136
|
********************************************************/
|
|
@@ -170,7 +172,7 @@ export declare class EditConfigModel {
|
|
|
170
172
|
multipleSelectKey: string;
|
|
171
173
|
constructor(config: Partial<IEditConfigType>);
|
|
172
174
|
updateEditConfig(config: Partial<IEditConfigType>): void;
|
|
173
|
-
computeConfig(config: Partial<IEditConfigType>): Partial<IEditConfigType> & Pick<Partial<IEditConfigType>, "textMode" | "adjustEdgeStartAndEnd" | "edgeTextDraggable" | "edgeTextEdit" | "nodeTextDraggable" | "nodeTextEdit" | "adjustEdge" | "edgeTextMode" | "nodeTextMode" | "allowRotate" | "allowResize" | "isSilentMode" | "stopScrollGraph" | "stopZoomGraph" | "stopMoveGraph" | "textEdit" | "snapGrid" | "
|
|
175
|
+
computeConfig(config: Partial<IEditConfigType>): Partial<IEditConfigType> & Pick<Partial<IEditConfigType>, "textMode" | "adjustEdgeStartAndEnd" | "edgeTextDraggable" | "edgeTextEdit" | "nodeTextDraggable" | "nodeTextEdit" | "adjustEdge" | "edgeTextMode" | "nodeTextMode" | "allowRotate" | "allowResize" | "isSilentMode" | "stopScrollGraph" | "stopZoomGraph" | "stopMoveGraph" | "textEdit" | "snapGrid" | "adjustEdgeMiddle" | "adjustEdgeStart" | "adjustEdgeEnd" | "adjustNodePosition" | "hideAnchors" | "autoExpand" | "hoverOutline" | "nodeSelectedOutline" | "edgeSelectedOutline" | "textDraggable" | "multipleSelectKey" | "nodeTextMultiple" | "edgeTextMultiple" | "nodeTextVertical" | "edgeTextVertical" | "isPinching">;
|
|
174
176
|
updateTextMode(textMode: TextMode): void;
|
|
175
177
|
getConfig(): IEditConfigType;
|
|
176
178
|
}
|
|
@@ -62,6 +62,7 @@ var allKeys = [
|
|
|
62
62
|
'edgeTextMultiple', // 是否支持多个边文本
|
|
63
63
|
'nodeTextVertical', // 节点文本是否纵向显示
|
|
64
64
|
'edgeTextVertical', // 边文本是否纵向显示
|
|
65
|
+
'isPinching', //是否是双指捏合态
|
|
65
66
|
];
|
|
66
67
|
/**
|
|
67
68
|
* 页面编辑配置
|
|
@@ -76,6 +77,7 @@ var EditConfigModel = /** @class */ (function () {
|
|
|
76
77
|
this.stopMoveGraph = false;
|
|
77
78
|
this.stopScrollGraph = false;
|
|
78
79
|
this.snapGrid = false;
|
|
80
|
+
this.isPinching = false;
|
|
79
81
|
/*********************************************************
|
|
80
82
|
* 文本相关配置(全局)
|
|
81
83
|
********************************************************/
|
|
@@ -193,6 +195,9 @@ var EditConfigModel = /** @class */ (function () {
|
|
|
193
195
|
__decorate([
|
|
194
196
|
observable
|
|
195
197
|
], EditConfigModel.prototype, "snapGrid", void 0);
|
|
198
|
+
__decorate([
|
|
199
|
+
observable
|
|
200
|
+
], EditConfigModel.prototype, "isPinching", void 0);
|
|
196
201
|
__decorate([
|
|
197
202
|
observable
|
|
198
203
|
], EditConfigModel.prototype, "textMode", void 0);
|
package/es/model/GraphModel.d.ts
CHANGED
|
@@ -179,6 +179,14 @@ export declare class GraphModel {
|
|
|
179
179
|
* @param model
|
|
180
180
|
*/
|
|
181
181
|
getTextModel(model: BaseNodeModel): TextMode | undefined;
|
|
182
|
+
/**
|
|
183
|
+
* 内部保留方法,请勿直接使用
|
|
184
|
+
*/
|
|
185
|
+
/**
|
|
186
|
+
* 设置重叠模式
|
|
187
|
+
* @param mode 重叠模式
|
|
188
|
+
*/
|
|
189
|
+
setOverlapMode(mode: OverlapMode): void;
|
|
182
190
|
/**
|
|
183
191
|
* 更新元素的文本模式
|
|
184
192
|
* @param mode
|
|
@@ -449,7 +457,7 @@ export declare class GraphModel {
|
|
|
449
457
|
*/
|
|
450
458
|
clearData(): void;
|
|
451
459
|
/**
|
|
452
|
-
*
|
|
460
|
+
* 获取图形区域虚拟矩形的尺寸和中心坐标
|
|
453
461
|
* @returns
|
|
454
462
|
*/
|
|
455
463
|
getVirtualRectSize(): GraphModel.VirtualRectProps;
|
package/es/model/GraphModel.js
CHANGED
|
@@ -113,6 +113,7 @@ var GraphModel = /** @class */ (function () {
|
|
|
113
113
|
this.edgeType = options.edgeType || 'polyline';
|
|
114
114
|
this.animation = setupAnimation(animation);
|
|
115
115
|
this.overlapMode = options.overlapMode || OverlapMode.DEFAULT;
|
|
116
|
+
this.isMiniMap = options.isMiniMap || false;
|
|
116
117
|
this.width = (_a = options.width) !== null && _a !== void 0 ? _a : this.rootEl.getBoundingClientRect().width;
|
|
117
118
|
this.isContainerWidth = isNil(options.width);
|
|
118
119
|
this.height = (_b = options.height) !== null && _b !== void 0 ? _b : this.rootEl.getBoundingClientRect().height;
|
|
@@ -193,7 +194,11 @@ var GraphModel = /** @class */ (function () {
|
|
|
193
194
|
* todo: 性能优化
|
|
194
195
|
*/
|
|
195
196
|
get: function () {
|
|
196
|
-
var
|
|
197
|
+
var sortElement = function (list) {
|
|
198
|
+
return __spreadArray([], __read(list), false).sort(function (a, b) { return a.zIndex - b.zIndex; });
|
|
199
|
+
};
|
|
200
|
+
// 默认情况下节点与边按照 zIndex 排序
|
|
201
|
+
var elements = sortElement(__spreadArray(__spreadArray([], __read(this.nodes), false), __read(this.edges), false));
|
|
197
202
|
// 只显示可见区域的节点和边
|
|
198
203
|
var visibleElements = [];
|
|
199
204
|
// TODO: 缓存,优化计算效率 by xutao. So how?
|
|
@@ -637,6 +642,19 @@ var GraphModel = /** @class */ (function () {
|
|
|
637
642
|
return model.textMode || edgeTextMode || textMode || TextMode.TEXT;
|
|
638
643
|
}
|
|
639
644
|
};
|
|
645
|
+
/**
|
|
646
|
+
* 内部保留方法,请勿直接使用
|
|
647
|
+
*/
|
|
648
|
+
/**
|
|
649
|
+
* 设置重叠模式
|
|
650
|
+
* @param mode 重叠模式
|
|
651
|
+
*/
|
|
652
|
+
GraphModel.prototype.setOverlapMode = function (mode) {
|
|
653
|
+
this.overlapMode = mode;
|
|
654
|
+
this.eventCenter.emit('overlap:change', {
|
|
655
|
+
overlapMode: mode,
|
|
656
|
+
});
|
|
657
|
+
};
|
|
640
658
|
/**
|
|
641
659
|
* 更新元素的文本模式
|
|
642
660
|
* @param mode
|
|
@@ -679,14 +697,19 @@ var GraphModel = /** @class */ (function () {
|
|
|
679
697
|
var _a, _b, _c;
|
|
680
698
|
var element = ((_a = this.nodesMap[id]) === null || _a === void 0 ? void 0 : _a.model) || ((_b = this.edgesMap[id]) === null || _b === void 0 ? void 0 : _b.model);
|
|
681
699
|
if (element) {
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
this.topElement = element;
|
|
700
|
+
// 静态模式toFront不做处理
|
|
701
|
+
if (this.overlapMode === OverlapMode.STATIC) {
|
|
702
|
+
return;
|
|
686
703
|
}
|
|
704
|
+
// 递增模式下,将需指定元素zIndex设置为当前最大zIndex + 1
|
|
687
705
|
if (this.overlapMode === OverlapMode.INCREASE) {
|
|
688
706
|
this.setElementZIndex(id, 'top');
|
|
707
|
+
return;
|
|
689
708
|
}
|
|
709
|
+
// 默认模式(节点在上)和边在上模式下,将原置顶元素重新恢复原有层级,将需指定元素zIndex设置为最大zIndex
|
|
710
|
+
(_c = this.topElement) === null || _c === void 0 ? void 0 : _c.setZIndex();
|
|
711
|
+
element.setZIndex(ELEMENT_MAX_Z_INDEX);
|
|
712
|
+
this.topElement = element;
|
|
690
713
|
}
|
|
691
714
|
};
|
|
692
715
|
/**
|
|
@@ -1073,12 +1096,13 @@ var GraphModel = /** @class */ (function () {
|
|
|
1073
1096
|
var _a;
|
|
1074
1097
|
this.selectElements.forEach(function (element) {
|
|
1075
1098
|
element === null || element === void 0 ? void 0 : element.setSelected(false);
|
|
1099
|
+
element === null || element === void 0 ? void 0 : element.setHovered(false);
|
|
1076
1100
|
});
|
|
1077
1101
|
this.selectElements.clear();
|
|
1078
1102
|
/**
|
|
1079
1103
|
* 如果堆叠模式为默认模式,则将置顶元素重新恢复原有层级
|
|
1080
1104
|
*/
|
|
1081
|
-
if (
|
|
1105
|
+
if ([OverlapMode.DEFAULT, OverlapMode.EDGE_TOP].includes(this.overlapMode)) {
|
|
1082
1106
|
(_a = this.topElement) === null || _a === void 0 ? void 0 : _a.setZIndex();
|
|
1083
1107
|
}
|
|
1084
1108
|
};
|
|
@@ -1379,7 +1403,7 @@ var GraphModel = /** @class */ (function () {
|
|
|
1379
1403
|
this.elementsModelMap.clear();
|
|
1380
1404
|
};
|
|
1381
1405
|
/**
|
|
1382
|
-
*
|
|
1406
|
+
* 获取图形区域虚拟矩形的尺寸和中心坐标
|
|
1383
1407
|
* @returns
|
|
1384
1408
|
*/
|
|
1385
1409
|
GraphModel.prototype.getVirtualRectSize = function () {
|
|
@@ -1403,7 +1427,7 @@ var GraphModel = /** @class */ (function () {
|
|
|
1403
1427
|
var maxY = Math.max.apply(Math, __spreadArray([], __read(nodesY), false));
|
|
1404
1428
|
var virtualRectWidth = maxX - minX || 0;
|
|
1405
1429
|
var virtualRectHeight = maxY - minY || 0;
|
|
1406
|
-
//
|
|
1430
|
+
// 获取虚拟矩形的中心坐标
|
|
1407
1431
|
var virtualRectCenterPositionX = minX + virtualRectWidth / 2;
|
|
1408
1432
|
var virtualRectCenterPositionY = minY + virtualRectHeight / 2;
|
|
1409
1433
|
return {
|
|
@@ -1558,6 +1582,9 @@ var GraphModel = /** @class */ (function () {
|
|
|
1558
1582
|
__decorate([
|
|
1559
1583
|
computed
|
|
1560
1584
|
], GraphModel.prototype, "selectNodes", null);
|
|
1585
|
+
__decorate([
|
|
1586
|
+
action
|
|
1587
|
+
], GraphModel.prototype, "setOverlapMode", null);
|
|
1561
1588
|
__decorate([
|
|
1562
1589
|
action
|
|
1563
1590
|
], GraphModel.prototype, "setTextMode", null);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseNodeModel, GraphModel, Model } from '..';
|
|
2
2
|
import LogicFlow from '../../LogicFlow';
|
|
3
|
-
import { ElementState, ElementType, ModelType, TextMode } from '../../constant';
|
|
3
|
+
import { ElementState, ElementType, ModelType, OverlapMode, TextMode } from '../../constant';
|
|
4
4
|
import Point = LogicFlow.Point;
|
|
5
5
|
import EdgeData = LogicFlow.EdgeData;
|
|
6
6
|
import EdgeConfig = LogicFlow.EdgeConfig;
|
|
@@ -271,5 +271,6 @@ export declare class BaseEdgeModel<P extends PropertiesType = PropertiesType> im
|
|
|
271
271
|
getAdjustStart(): LogicFlow.Point;
|
|
272
272
|
getAdjustEnd(): LogicFlow.Point;
|
|
273
273
|
updateAfterAdjustStartAndEnd({ startPoint, endPoint, }: Record<'startPoint' | 'endPoint', Point>): void;
|
|
274
|
+
updateZIndexByOverlap(overlapMode: OverlapMode, defaultZIndex: any): void;
|
|
274
275
|
}
|
|
275
276
|
export default BaseEdgeModel;
|
|
@@ -73,6 +73,7 @@ var BaseEdgeModel = /** @class */ (function () {
|
|
|
73
73
|
* setAttributes除了初始化调用外,还会在properties发生变化后调用。
|
|
74
74
|
*/
|
|
75
75
|
BaseEdgeModel.prototype.initEdgeData = function (data) {
|
|
76
|
+
var _this = this;
|
|
76
77
|
if (!data.properties) {
|
|
77
78
|
data.properties = {};
|
|
78
79
|
}
|
|
@@ -88,10 +89,8 @@ var BaseEdgeModel = /** @class */ (function () {
|
|
|
88
89
|
var adjustEdgeStartAndEnd = this.graphModel.editConfigModel.adjustEdgeStartAndEnd;
|
|
89
90
|
this.isShowAdjustPoint = adjustEdgeStartAndEnd;
|
|
90
91
|
assign(this, pickEdgeConfig(data));
|
|
91
|
-
var
|
|
92
|
-
|
|
93
|
-
this.zIndex = data.zIndex || getZIndex();
|
|
94
|
-
}
|
|
92
|
+
var _a = this.graphModel, overlapMode = _a.overlapMode, eventCenter = _a.eventCenter;
|
|
93
|
+
this.updateZIndexByOverlap(overlapMode, data.zIndex || getZIndex());
|
|
95
94
|
// 设置边的 anchors,也就是边的两个端点
|
|
96
95
|
// 端点依赖于 edgeData 的 sourceNode 和 targetNode
|
|
97
96
|
this.setAnchors();
|
|
@@ -99,6 +98,10 @@ var BaseEdgeModel = /** @class */ (function () {
|
|
|
99
98
|
this.initPoints();
|
|
100
99
|
// 文本位置依赖于边上的所有拐点
|
|
101
100
|
this.formatText(data);
|
|
101
|
+
eventCenter.on('overlap:change', function (data) {
|
|
102
|
+
var newMode = data.overlapMode;
|
|
103
|
+
_this.updateZIndexByOverlap(newMode, _this.zIndex || getZIndex());
|
|
104
|
+
});
|
|
102
105
|
};
|
|
103
106
|
/**
|
|
104
107
|
* 设置model属性
|
|
@@ -322,7 +325,9 @@ var BaseEdgeModel = /** @class */ (function () {
|
|
|
322
325
|
startPoint: assign({}, this.startPoint),
|
|
323
326
|
endPoint: assign({}, this.endPoint),
|
|
324
327
|
};
|
|
325
|
-
|
|
328
|
+
// 因为默认模式和边在上模式下,对节点的zIndex要求不高(因为渲染的时候会按照模式对所有元素进行排序)
|
|
329
|
+
// 所以只在递增模式和静态模式下设置zIndex
|
|
330
|
+
if ([OverlapMode.INCREASE, OverlapMode.STATIC].includes(this.graphModel.overlapMode)) {
|
|
326
331
|
data.zIndex = this.zIndex;
|
|
327
332
|
}
|
|
328
333
|
var _a = this.text, x = _a.x, y = _a.y, value = _a.value;
|
|
@@ -586,6 +591,22 @@ var BaseEdgeModel = /** @class */ (function () {
|
|
|
586
591
|
this.updateStartPoint({ x: startPoint.x, y: startPoint.y });
|
|
587
592
|
this.updateEndPoint({ x: endPoint.x, y: endPoint.y });
|
|
588
593
|
};
|
|
594
|
+
// 堆叠模式变化时,更新zIndex
|
|
595
|
+
BaseEdgeModel.prototype.updateZIndexByOverlap = function (overlapMode, defaultZIndex) {
|
|
596
|
+
switch (overlapMode) {
|
|
597
|
+
case OverlapMode.DEFAULT:
|
|
598
|
+
this.zIndex = 0;
|
|
599
|
+
break;
|
|
600
|
+
case OverlapMode.EDGE_TOP:
|
|
601
|
+
this.zIndex = 1;
|
|
602
|
+
break;
|
|
603
|
+
case OverlapMode.INCREASE:
|
|
604
|
+
this.zIndex = defaultZIndex;
|
|
605
|
+
break;
|
|
606
|
+
default:
|
|
607
|
+
break;
|
|
608
|
+
}
|
|
609
|
+
};
|
|
589
610
|
BaseEdgeModel.BaseType = ElementType.EDGE;
|
|
590
611
|
__decorate([
|
|
591
612
|
observable
|
|
@@ -755,6 +776,9 @@ var BaseEdgeModel = /** @class */ (function () {
|
|
|
755
776
|
__decorate([
|
|
756
777
|
action
|
|
757
778
|
], BaseEdgeModel.prototype, "updateAfterAdjustStartAndEnd", null);
|
|
779
|
+
__decorate([
|
|
780
|
+
action
|
|
781
|
+
], BaseEdgeModel.prototype, "updateZIndexByOverlap", null);
|
|
758
782
|
return BaseEdgeModel;
|
|
759
783
|
}());
|
|
760
784
|
export { BaseEdgeModel };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GraphModel, Model } from '..';
|
|
2
2
|
import LogicFlow from '../../LogicFlow';
|
|
3
|
-
import { ElementState, ElementType, ModelType, TextMode } from '../../constant';
|
|
3
|
+
import { ElementState, ElementType, ModelType, OverlapMode, TextMode } from '../../constant';
|
|
4
4
|
import { ResizeControl } from '../../view/Control';
|
|
5
5
|
import AnchorConfig = Model.AnchorConfig;
|
|
6
6
|
import GraphElements = LogicFlow.GraphElements;
|
|
@@ -288,6 +288,7 @@ export declare class BaseNodeModel<P extends PropertiesType = PropertiesType> im
|
|
|
288
288
|
updateStyles(styles: Record<string, any>): void;
|
|
289
289
|
setZIndex(zIndex?: number): void;
|
|
290
290
|
updateAttributes(attributes: any): void;
|
|
291
|
+
updateZIndexByOverlap(overlapMode: OverlapMode, defaultZIndex: any): void;
|
|
291
292
|
}
|
|
292
293
|
export declare namespace BaseNodeModel {
|
|
293
294
|
type PointTuple = [number, number];
|
|
@@ -172,6 +172,7 @@ var BaseNodeModel = /** @class */ (function () {
|
|
|
172
172
|
* setAttributes 除了初始化调用外,还会在 properties 发生变化了调用。
|
|
173
173
|
*/
|
|
174
174
|
BaseNodeModel.prototype.initNodeData = function (data) {
|
|
175
|
+
var _this = this;
|
|
175
176
|
if (!data.properties) {
|
|
176
177
|
data.properties = {};
|
|
177
178
|
}
|
|
@@ -186,10 +187,12 @@ var BaseNodeModel = /** @class */ (function () {
|
|
|
186
187
|
// 在下面又将 NodeConfig 中的数据赋值给了 this,应该会触发 setAttributes,确认是否符合预期
|
|
187
188
|
// TODO: 确认 constructor 中赋值 properties 是否必要,此处将 NodeConfig 中所有属性赋值给 this,包括 rotate、rotatable,resizable 等
|
|
188
189
|
assign(this, pickNodeConfig(data));
|
|
189
|
-
var
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
190
|
+
var _a = this.graphModel, overlapMode = _a.overlapMode, eventCenter = _a.eventCenter;
|
|
191
|
+
this.updateZIndexByOverlap(overlapMode, data.zIndex || getZIndex());
|
|
192
|
+
eventCenter.on('overlap:change', function (data) {
|
|
193
|
+
var newMode = data.overlapMode;
|
|
194
|
+
_this.updateZIndexByOverlap(newMode, _this.zIndex || getZIndex());
|
|
195
|
+
});
|
|
193
196
|
};
|
|
194
197
|
/**
|
|
195
198
|
* 设置model属性,每次properties发生变化会触发
|
|
@@ -302,7 +305,9 @@ var BaseNodeModel = /** @class */ (function () {
|
|
|
302
305
|
if (this.rotate) {
|
|
303
306
|
data.rotate = this.rotate;
|
|
304
307
|
}
|
|
305
|
-
|
|
308
|
+
// 因为默认模式和节点在上模式下,对边的zIndex要求不高(因为渲染的时候会按照模式对所有元素进行排序)
|
|
309
|
+
// 所以只在递增模式和静态模式下设置zIndex
|
|
310
|
+
if ([OverlapMode.INCREASE, OverlapMode.STATIC].includes(this.graphModel.overlapMode)) {
|
|
306
311
|
data.zIndex = this.zIndex;
|
|
307
312
|
}
|
|
308
313
|
if (value) {
|
|
@@ -791,6 +796,22 @@ var BaseNodeModel = /** @class */ (function () {
|
|
|
791
796
|
BaseNodeModel.prototype.updateAttributes = function (attributes) {
|
|
792
797
|
assign(this, attributes);
|
|
793
798
|
};
|
|
799
|
+
// 堆叠模式变化时,更新zIndex
|
|
800
|
+
BaseNodeModel.prototype.updateZIndexByOverlap = function (overlapMode, defaultZIndex) {
|
|
801
|
+
switch (overlapMode) {
|
|
802
|
+
case OverlapMode.DEFAULT:
|
|
803
|
+
this.zIndex = 1;
|
|
804
|
+
break;
|
|
805
|
+
case OverlapMode.EDGE_TOP:
|
|
806
|
+
this.zIndex = 0;
|
|
807
|
+
break;
|
|
808
|
+
case OverlapMode.INCREASE:
|
|
809
|
+
this.zIndex = defaultZIndex;
|
|
810
|
+
break;
|
|
811
|
+
default:
|
|
812
|
+
break;
|
|
813
|
+
}
|
|
814
|
+
};
|
|
794
815
|
BaseNodeModel.BaseType = ElementType.NODE;
|
|
795
816
|
__decorate([
|
|
796
817
|
observable
|
|
@@ -945,6 +966,9 @@ var BaseNodeModel = /** @class */ (function () {
|
|
|
945
966
|
__decorate([
|
|
946
967
|
action
|
|
947
968
|
], BaseNodeModel.prototype, "updateAttributes", null);
|
|
969
|
+
__decorate([
|
|
970
|
+
action
|
|
971
|
+
], BaseNodeModel.prototype, "updateZIndexByOverlap", null);
|
|
948
972
|
return BaseNodeModel;
|
|
949
973
|
}());
|
|
950
974
|
export { BaseNodeModel };
|
|
@@ -5,7 +5,7 @@ export default class MultipleSelect extends Component<IToolProps> {
|
|
|
5
5
|
static toolName: string;
|
|
6
6
|
stepDrag: StepDrag;
|
|
7
7
|
constructor(props: IToolProps);
|
|
8
|
-
handleMouseDown: (ev:
|
|
8
|
+
handleMouseDown: (ev: PointerEvent) => void;
|
|
9
9
|
handleWheelEvent: (ev: WheelEvent) => void;
|
|
10
10
|
onDragging: ({ deltaX, deltaY }: IDragParams) => void;
|
|
11
11
|
handleContextMenu: (ev: MouseEvent) => void;
|
|
@@ -147,7 +147,7 @@ var MultipleSelect = /** @class */ (function (_super) {
|
|
|
147
147
|
height: "".concat(y1 - y + 20 * SCALE_Y, "px"),
|
|
148
148
|
'border-width': "".concat(2 * SCALE_X, "px"),
|
|
149
149
|
};
|
|
150
|
-
return (_jsx("div", { className: "lf-multiple-select", style: style,
|
|
150
|
+
return (_jsx("div", { className: "lf-multiple-select", style: style, onPointerDown: this.handleMouseDown, onContextMenu: this.handleContextMenu, onWheel: this.handleWheelEvent }));
|
|
151
151
|
};
|
|
152
152
|
MultipleSelect.toolName = 'multiple-select-tool';
|
|
153
153
|
MultipleSelect = __decorate([
|
package/es/util/drag.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import EventEmitter from '../event/eventEmitter';
|
|
|
3
3
|
export type IDragParams = {
|
|
4
4
|
deltaX: number;
|
|
5
5
|
deltaY: number;
|
|
6
|
-
event?:
|
|
6
|
+
event?: PointerEvent;
|
|
7
7
|
[key: string]: unknown;
|
|
8
8
|
};
|
|
9
9
|
export type ICreateDragParams = {
|
|
@@ -40,9 +40,9 @@ export declare class StepDrag {
|
|
|
40
40
|
constructor({ onDragStart, onDragging, onDragEnd, eventType, eventCenter, step, isStopPropagation, model, data, }: IStepperDragProps);
|
|
41
41
|
setStep(step: number): void;
|
|
42
42
|
setModel(model: Model.BaseModel): void;
|
|
43
|
-
handleMouseDown: (e:
|
|
44
|
-
handleMouseMove: (e:
|
|
45
|
-
handleMouseUp: (e:
|
|
43
|
+
handleMouseDown: (e: PointerEvent) => void;
|
|
44
|
+
handleMouseMove: (e: PointerEvent) => void;
|
|
45
|
+
handleMouseUp: (e: PointerEvent) => void;
|
|
46
46
|
cancelDrag: () => void;
|
|
47
47
|
destroy: () => void;
|
|
48
48
|
}
|
package/es/util/drag.js
CHANGED
|
@@ -23,11 +23,12 @@ var StepDrag = /** @class */ (function () {
|
|
|
23
23
|
return;
|
|
24
24
|
if (_this.isStopPropagation)
|
|
25
25
|
e.stopPropagation();
|
|
26
|
+
e.preventDefault();
|
|
26
27
|
_this.isStartDragging = true;
|
|
27
28
|
_this.startX = e.clientX;
|
|
28
29
|
_this.startY = e.clientY;
|
|
29
|
-
DOC.addEventListener('
|
|
30
|
-
DOC.addEventListener('
|
|
30
|
+
DOC.addEventListener('pointermove', _this.handleMouseMove, false);
|
|
31
|
+
DOC.addEventListener('pointerup', _this.handleMouseUp, false);
|
|
31
32
|
var elementData = (_a = _this.model) === null || _a === void 0 ? void 0 : _a.getData();
|
|
32
33
|
(_b = _this.eventCenter) === null || _b === void 0 ? void 0 : _b.emit(EventType["".concat(_this.eventType, "_MOUSEDOWN")], {
|
|
33
34
|
e: e,
|
|
@@ -39,6 +40,7 @@ var StepDrag = /** @class */ (function () {
|
|
|
39
40
|
var _a, _b;
|
|
40
41
|
if (_this.isStopPropagation)
|
|
41
42
|
e.stopPropagation();
|
|
43
|
+
e.preventDefault();
|
|
42
44
|
if (!_this.isStartDragging)
|
|
43
45
|
return;
|
|
44
46
|
_this.sumDeltaX += e.clientX - _this.startX;
|
|
@@ -94,11 +96,15 @@ var StepDrag = /** @class */ (function () {
|
|
|
94
96
|
_this.isStartDragging = false;
|
|
95
97
|
if (_this.isStopPropagation)
|
|
96
98
|
e.stopPropagation();
|
|
99
|
+
var target = e.target;
|
|
100
|
+
if (target && typeof target.releasePointerCapture === 'function') {
|
|
101
|
+
target.releasePointerCapture(e.pointerId);
|
|
102
|
+
}
|
|
97
103
|
// fix #568: 如果onDragging在下一个事件循环中触发,而drop在当前事件循环,会出现问题。
|
|
98
104
|
Promise.resolve().then(function () {
|
|
99
105
|
var _a, _b, _c;
|
|
100
|
-
DOC.removeEventListener('
|
|
101
|
-
DOC.removeEventListener('
|
|
106
|
+
DOC.removeEventListener('pointermove', _this.handleMouseMove, false);
|
|
107
|
+
DOC.removeEventListener('pointerup', _this.handleMouseUp, false);
|
|
102
108
|
var elementData = (_a = _this.model) === null || _a === void 0 ? void 0 : _a.getData();
|
|
103
109
|
(_b = _this.eventCenter) === null || _b === void 0 ? void 0 : _b.emit(EventType["".concat(_this.eventType, "_MOUSEUP")], {
|
|
104
110
|
e: e,
|
|
@@ -116,8 +122,8 @@ var StepDrag = /** @class */ (function () {
|
|
|
116
122
|
};
|
|
117
123
|
this.cancelDrag = function () {
|
|
118
124
|
var DOC = window === null || window === void 0 ? void 0 : window.document;
|
|
119
|
-
DOC.removeEventListener('
|
|
120
|
-
DOC.removeEventListener('
|
|
125
|
+
DOC.removeEventListener('pointermove', _this.handleMouseMove, false);
|
|
126
|
+
DOC.removeEventListener('pointerup', _this.handleMouseUp, false);
|
|
121
127
|
_this.onDragEnd({ event: undefined });
|
|
122
128
|
_this.isDragging = false;
|
|
123
129
|
};
|
package/es/view/Anchor.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ interface IProps {
|
|
|
13
13
|
anchorIndex: number;
|
|
14
14
|
graphModel: GraphModel;
|
|
15
15
|
nodeModel: BaseNodeModel;
|
|
16
|
-
setHoverOff: (e:
|
|
16
|
+
setHoverOff: (e: PointerEvent) => void;
|
|
17
17
|
}
|
|
18
18
|
interface IState {
|
|
19
19
|
startX: number;
|
|
@@ -38,8 +38,8 @@ declare class Anchor extends Component<IProps, IState> {
|
|
|
38
38
|
incomingEdgeList: import("../model").BaseEdgeModel<LogicFlow.PropertiesType>[];
|
|
39
39
|
outgoingEdgeList: import("../model").BaseEdgeModel<LogicFlow.PropertiesType>[];
|
|
40
40
|
};
|
|
41
|
-
checkEnd: (event:
|
|
42
|
-
moveAnchorEnd(endX: number, endY: number): void;
|
|
41
|
+
checkEnd: (event: PointerEvent | null | undefined) => import("../model").BaseEdgeModel<LogicFlow.PropertiesType> | null | undefined;
|
|
42
|
+
moveAnchorEnd(endX: number, endY: number, event?: PointerEvent): void;
|
|
43
43
|
isShowLine(): boolean;
|
|
44
44
|
render(): import("preact/compat").JSX.Element;
|
|
45
45
|
}
|
package/es/view/Anchor.js
CHANGED
|
@@ -103,7 +103,7 @@ var Anchor = /** @class */ (function (_super) {
|
|
|
103
103
|
endY: y1,
|
|
104
104
|
dragging: true,
|
|
105
105
|
});
|
|
106
|
-
_this.moveAnchorEnd(x1, y1);
|
|
106
|
+
_this.moveAnchorEnd(x1, y1, event);
|
|
107
107
|
if (nearBoundary.length > 0 && !stopMoveGraph && autoExpand) {
|
|
108
108
|
_this.t = createRaf(function () {
|
|
109
109
|
var _a = __read(nearBoundary, 2), translateX = _a[0], translateY = _a[1];
|
|
@@ -113,7 +113,7 @@ var Anchor = /** @class */ (function (_super) {
|
|
|
113
113
|
endX: endX - translateX,
|
|
114
114
|
endY: endY - translateY,
|
|
115
115
|
});
|
|
116
|
-
_this.moveAnchorEnd(endX - translateX, endY - translateY);
|
|
116
|
+
_this.moveAnchorEnd(endX - translateX, endY - translateY, event);
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
119
|
eventCenter.emit(EventType.ANCHOR_DRAG, {
|
|
@@ -139,6 +139,11 @@ var Anchor = /** @class */ (function (_super) {
|
|
|
139
139
|
_this.sourceRuleResults.clear();
|
|
140
140
|
_this.targetRuleResults.clear();
|
|
141
141
|
var _b = _this.props, graphModel = _b.graphModel, nodeModel = _b.nodeModel, anchorData = _b.anchorData;
|
|
142
|
+
// 拖拽结束清理:取消悬浮态
|
|
143
|
+
if (_this.preTargetNode) {
|
|
144
|
+
_this.preTargetNode.setHovered(false);
|
|
145
|
+
_this.preTargetNode = undefined;
|
|
146
|
+
}
|
|
142
147
|
graphModel.eventCenter.emit(EventType.ANCHOR_DRAGEND, {
|
|
143
148
|
data: anchorData,
|
|
144
149
|
e: event,
|
|
@@ -242,7 +247,7 @@ var Anchor = /** @class */ (function (_super) {
|
|
|
242
247
|
enumerable: false,
|
|
243
248
|
configurable: true
|
|
244
249
|
});
|
|
245
|
-
Anchor.prototype.moveAnchorEnd = function (endX, endY) {
|
|
250
|
+
Anchor.prototype.moveAnchorEnd = function (endX, endY, event) {
|
|
246
251
|
var _a, _b;
|
|
247
252
|
var _c = this.props, graphModel = _c.graphModel, nodeModel = _c.nodeModel, anchorData = _c.anchorData;
|
|
248
253
|
var info = targetNodeInfo({
|
|
@@ -279,11 +284,32 @@ var Anchor = /** @class */ (function (_super) {
|
|
|
279
284
|
else {
|
|
280
285
|
targetNode.setElementState(ElementState.NOT_ALLOW_CONNECT);
|
|
281
286
|
}
|
|
287
|
+
// 人工触发进入目标节点事件,同步设置 hovered 以驱动锚点显隐和样式
|
|
288
|
+
if (!targetNode.isHovered) {
|
|
289
|
+
var nodeData = targetNode.getData();
|
|
290
|
+
if (event) {
|
|
291
|
+
graphModel.eventCenter.emit(EventType.NODE_MOUSEENTER, {
|
|
292
|
+
data: nodeData,
|
|
293
|
+
e: event,
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
targetNode.setHovered(true);
|
|
297
|
+
}
|
|
282
298
|
}
|
|
283
299
|
else if (this.preTargetNode &&
|
|
284
300
|
this.preTargetNode.state !== ElementState.DEFAULT) {
|
|
285
301
|
// 为了保证鼠标离开的时候,将上一个节点状态重置为正常状态。
|
|
286
302
|
this.preTargetNode.setElementState(ElementState.DEFAULT);
|
|
303
|
+
// 未命中任何节点:人工派发离开事件并取消悬浮,避免状态残留
|
|
304
|
+
var prevData = this.preTargetNode.getData();
|
|
305
|
+
if (event) {
|
|
306
|
+
graphModel.eventCenter.emit(EventType.NODE_MOUSELEAVE, {
|
|
307
|
+
data: prevData,
|
|
308
|
+
e: event,
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
this.preTargetNode.setHovered(false);
|
|
312
|
+
this.preTargetNode = undefined;
|
|
287
313
|
}
|
|
288
314
|
};
|
|
289
315
|
Anchor.prototype.isShowLine = function () {
|
|
@@ -305,7 +331,7 @@ var Anchor = /** @class */ (function (_super) {
|
|
|
305
331
|
e: ev,
|
|
306
332
|
nodeModel: nodeModel,
|
|
307
333
|
});
|
|
308
|
-
},
|
|
334
|
+
}, onPointerDown: function (ev) {
|
|
309
335
|
graphModel.eventCenter.emit(EventType.ANCHOR_MOUSEDOWN, {
|
|
310
336
|
data: anchorData,
|
|
311
337
|
e: ev,
|
package/es/view/Control.js
CHANGED
|
@@ -346,7 +346,7 @@ var ResizeControl = /** @class */ (function (_super) {
|
|
|
346
346
|
ResizeControl.prototype.render = function () {
|
|
347
347
|
var _a = this.props, x = _a.x, y = _a.y, direction = _a.direction, model = _a.model;
|
|
348
348
|
var _b = model.getResizeControlStyle(), width = _b.width, height = _b.height, restStyle = __rest(_b, ["width", "height"]);
|
|
349
|
-
return (_jsxs("g", { className: "lf-resize-control lf-resize-control-".concat(direction), children: [_jsx(Rect, __assign({ className: "lf-resize-control-content", x: x, y: y, width: width !== null && width !== void 0 ? width : 7, height: height !== null && height !== void 0 ? height : 7 }, restStyle)), _jsx(Rect, { className: "lf-resize-control-content", x: x, y: y, width: 25, height: 25, fill: "transparent", stroke: "transparent",
|
|
349
|
+
return (_jsxs("g", { className: "lf-resize-control lf-resize-control-".concat(direction), children: [_jsx(Rect, __assign({ className: "lf-resize-control-content", x: x, y: y, width: width !== null && width !== void 0 ? width : 7, height: height !== null && height !== void 0 ? height : 7 }, restStyle)), _jsx(Rect, { className: "lf-resize-control-content", x: x, y: y, width: 25, height: 25, fill: "transparent", stroke: "transparent", onPointerDown: this.dragHandler.handleMouseDown })] }));
|
|
350
350
|
};
|
|
351
351
|
return ResizeControl;
|
|
352
352
|
}(Component));
|
package/es/view/Rotate.js
CHANGED
|
@@ -99,7 +99,7 @@ var RotateControlPoint = /** @class */ (function (_super) {
|
|
|
99
99
|
this.normal = new Vector(1, 0);
|
|
100
100
|
this.defaultAngle = this.normal.angle(new Vector(cx - x, cy - y));
|
|
101
101
|
nodeModel.defaultAngle = this.defaultAngle;
|
|
102
|
-
return (_jsx("g", { className: "lf-rotate-control", children: _jsx("g", {
|
|
102
|
+
return (_jsx("g", { className: "lf-rotate-control", children: _jsx("g", { onPointerDown: function (ev) {
|
|
103
103
|
_this.stepperDrag.handleMouseDown(ev);
|
|
104
104
|
}, children: _jsx(Circle, __assign({}, this.style, { cx: cx, cy: cy })) }) }));
|
|
105
105
|
};
|