@logicflow/core 0.4.1-alpha.1 → 0.4.1-alpha.2
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/README.md +171 -0
- package/dist/logic-flow-cjs.js +2 -0
- package/dist/logic-flow-cjs.js.LICENSE.txt +23 -0
- package/dist/logic-flow.js +2 -2
- package/dist/logic-flow.js.LICENSE.txt +23 -0
- package/dist/style/index.css +124 -8
- package/es/index.js +69 -0
- package/package.json +20 -5
- package/types/LogicFlow.d.ts +63 -19
- package/types/constant/DefaultTheme.d.ts +12 -0
- package/types/constant/constant.d.ts +13 -2
- package/types/event/eventEmitter.d.ts +8 -8
- package/types/model/BaseModel.d.ts +60 -1
- package/types/model/EditConfigModel.d.ts +74 -2
- package/types/model/GraphModel.d.ts +34 -6
- package/types/model/TransformModel.d.ts +16 -3
- package/types/model/edge/BaseEdgeModel.d.ts +19 -1
- package/types/model/edge/BezierEdgeModel.d.ts +11 -1
- package/types/model/edge/LineEdgeModel.d.ts +1 -1
- package/types/model/edge/PolylineEdgeModel.d.ts +19 -1
- package/types/model/node/BaseNodeModel.d.ts +71 -23
- package/types/model/node/CircleNodeModel.d.ts +5 -2
- package/types/model/node/HtmlNodeModel.d.ts +11 -0
- package/types/model/node/PolygonNodeModel.d.ts +5 -0
- package/types/model/node/index.d.ts +1 -0
- package/types/options.d.ts +79 -9
- package/types/tool/MultipleSelectTool.d.ts +2 -2
- package/types/tool/TextEditTool.d.ts +3 -4
- package/types/tool/index.d.ts +1 -0
- package/types/type/index.d.ts +74 -5
- package/types/util/drag.d.ts +2 -0
- package/types/util/edge.d.ts +2 -1
- package/types/util/graph.d.ts +4 -0
- package/types/util/node.d.ts +20 -2
- package/types/util/theme.d.ts +12 -0
- package/types/util/uuid.d.ts +5 -0
- package/types/util/zIndex.d.ts +2 -0
- package/types/view/Anchor.d.ts +6 -4
- package/types/view/Graph.d.ts +0 -4
- package/types/view/basic-shape/LinearGradient.d.ts +1 -0
- package/types/view/basic-shape/Polygon.d.ts +1 -9
- package/types/view/behavior/DnD.d.ts +1 -1
- package/types/view/edge/AdjustPoint.d.ts +43 -0
- package/types/view/edge/BaseEdge.d.ts +3 -1
- package/types/view/edge/PolylineEdge.d.ts +1 -0
- package/types/view/node/BaseNode.d.ts +11 -7
- package/types/view/node/CircleNode.d.ts +3 -1
- package/types/view/node/DiamondNode.d.ts +3 -1
- package/types/view/node/EllipseNode.d.ts +3 -1
- package/types/view/node/HtmlNode.d.ts +11 -0
- package/types/view/node/PolygonNode.d.ts +3 -1
- package/types/view/node/RectNode.d.ts +3 -1
- package/types/view/node/TextNode.d.ts +1 -0
- package/types/view/node/index.d.ts +2 -1
- package/types/view/overlay/CanvasOverlay.d.ts +30 -2
- package/types/view/overlay/Grid.d.ts +10 -0
- package/types/view/overlay/HtmlOverlay.d.ts +5 -46
- package/types/view/overlay/ModificationOverlay.d.ts +9 -0
- package/CHANGELOG.md +0 -415
- package/LICENSE +0 -433
- package/dist/style/background.css +0 -8
- package/dist/style/html-overlay.css +0 -33
- package/dist/style/tool.css +0 -29
|
@@ -1,14 +1,80 @@
|
|
|
1
1
|
export interface EditConfigInterface {
|
|
2
|
+
/**
|
|
3
|
+
* 是否为静默模式
|
|
4
|
+
*/
|
|
5
|
+
isSilentMode?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* 禁止缩放画布
|
|
8
|
+
*/
|
|
2
9
|
stopZoomGraph?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* 禁止鼠标滚动移动画布
|
|
12
|
+
*/
|
|
3
13
|
stopScrollGraph?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* 禁止拖动画布
|
|
16
|
+
*/
|
|
4
17
|
stopMoveGraph?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* 允许调整连线
|
|
20
|
+
*/
|
|
5
21
|
adjustEdge?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* 允许调整连线起点和终点
|
|
24
|
+
*/
|
|
25
|
+
adjustEdgeStartAndEnd?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* 允许拖动节点
|
|
28
|
+
*/
|
|
6
29
|
adjustNodePosition?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* 隐藏节点所有锚点
|
|
32
|
+
*/
|
|
7
33
|
hideAnchors?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* 显示节点悬浮时的外框
|
|
36
|
+
*/
|
|
37
|
+
hoverOutline?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* 节点被选中时是否显示outline
|
|
40
|
+
*/
|
|
41
|
+
nodeSelectedOutline?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* 连线被选中时是否显示outline
|
|
44
|
+
*/
|
|
45
|
+
edgeSelectedOutline?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* 允许节点文本可以编辑
|
|
48
|
+
*/
|
|
8
49
|
nodeTextEdit?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* 允许连线文本可以编辑
|
|
52
|
+
*/
|
|
9
53
|
edgeTextEdit?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* 允许文本编辑
|
|
56
|
+
*/
|
|
57
|
+
textEdit?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* 允许节点文本可以拖拽
|
|
60
|
+
*/
|
|
10
61
|
nodeTextDraggable?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* 允许连线文本可以拖拽
|
|
64
|
+
*/
|
|
11
65
|
edgeTextDraggable?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* 允许meta多选元素
|
|
68
|
+
*/
|
|
69
|
+
metaKeyMultipleSelected?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* 多选按键, 支持meta(cmd)、shift、alt
|
|
72
|
+
* 不支持ctrl,ctrl会出发contextmenu
|
|
73
|
+
*/
|
|
74
|
+
multipleSelectKey?: string;
|
|
75
|
+
/**
|
|
76
|
+
* 外部传入的额外配置, 待优化,这里不够易用。
|
|
77
|
+
*/
|
|
12
78
|
extraConf?: Record<string, string | number | object | boolean>;
|
|
13
79
|
}
|
|
14
80
|
/**
|
|
@@ -19,18 +85,24 @@ export default class EditConfigModel {
|
|
|
19
85
|
stopScrollGraph: boolean;
|
|
20
86
|
stopMoveGraph: boolean;
|
|
21
87
|
adjustEdge: boolean;
|
|
88
|
+
adjustEdgeMiddle: boolean;
|
|
89
|
+
adjustEdgeStartAndEnd: boolean;
|
|
22
90
|
adjustNodePosition: boolean;
|
|
23
91
|
hideAnchors: boolean;
|
|
24
92
|
hoverOutline: boolean;
|
|
93
|
+
nodeSelectedOutline: boolean;
|
|
94
|
+
edgeSelectedOutline: boolean;
|
|
25
95
|
nodeTextEdit: boolean;
|
|
26
96
|
edgeTextEdit: boolean;
|
|
27
97
|
nodeTextDraggable: boolean;
|
|
28
98
|
edgeTextDraggable: boolean;
|
|
29
99
|
metaKeyMultipleSelected: boolean;
|
|
100
|
+
multipleSelectKey: string;
|
|
30
101
|
extraConf: {};
|
|
31
|
-
|
|
32
|
-
constructor(
|
|
102
|
+
defaultConfig: {};
|
|
103
|
+
constructor(config: EditConfigInterface);
|
|
33
104
|
updateEditConfig(config: any): void;
|
|
105
|
+
getConfigDetail(config: any): Pick<any, string>;
|
|
34
106
|
getConfig(): Partial<this>;
|
|
35
107
|
}
|
|
36
108
|
export { EditConfigModel };
|
|
@@ -4,7 +4,7 @@ import EditConfigModel from './EditConfigModel';
|
|
|
4
4
|
import TransfromModel from './TransformModel';
|
|
5
5
|
import { IBaseModel } from './BaseModel';
|
|
6
6
|
import { ElementState, ModelType, ElementType } from '../constant/constant';
|
|
7
|
-
import { AdditionData, Point, NodeConfig, EdgeConfig, Style } from '../type';
|
|
7
|
+
import { AdditionData, Point, NodeConfig, EdgeConfig, Style, NodeMoveRule } from '../type';
|
|
8
8
|
import EventEmitter from '../event/eventEmitter';
|
|
9
9
|
declare type BaseNodeModelId = string;
|
|
10
10
|
declare type ElementModeId = string;
|
|
@@ -19,8 +19,8 @@ declare class GraphModel {
|
|
|
19
19
|
height: number;
|
|
20
20
|
topElement: BaseNodeModel | BaseEdgeModel;
|
|
21
21
|
selectElement: BaseNodeModel | BaseEdgeModel;
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
idGenerator: (type?: string) => number | string;
|
|
23
|
+
nodeMoveRules: NodeMoveRule[];
|
|
24
24
|
edgeType: string;
|
|
25
25
|
nodes: BaseNodeModel[];
|
|
26
26
|
activeElement: IBaseModel;
|
|
@@ -29,6 +29,7 @@ declare class GraphModel {
|
|
|
29
29
|
additionStateData: AdditionData;
|
|
30
30
|
edges: BaseEdgeModel[];
|
|
31
31
|
isSlient: boolean;
|
|
32
|
+
overlapMode: number;
|
|
32
33
|
plugins: any[];
|
|
33
34
|
tools: any[];
|
|
34
35
|
background: any;
|
|
@@ -55,6 +56,7 @@ declare class GraphModel {
|
|
|
55
56
|
* 当前编辑的元素,低频操作,先循环找吧。
|
|
56
57
|
*/
|
|
57
58
|
get textEditElement(): BaseNodeModel | BaseEdgeModel;
|
|
59
|
+
get selectElements(): Map<any, any>;
|
|
58
60
|
/**
|
|
59
61
|
* 获取指定区域内的所有元素
|
|
60
62
|
*/
|
|
@@ -101,11 +103,17 @@ declare class GraphModel {
|
|
|
101
103
|
edges: any[];
|
|
102
104
|
};
|
|
103
105
|
updateAttributes(id: string, attributes: object): void;
|
|
106
|
+
/**
|
|
107
|
+
* 修改指定节点id
|
|
108
|
+
*/
|
|
109
|
+
changeNodeId<T extends string>(oldId: any, newId?: T | string): false | T | string;
|
|
110
|
+
changeEdgeId<T extends string>(oldId: string, newId?: string): false | T | string;
|
|
104
111
|
setFakerNode(nodeModel: BaseNodeModel): void;
|
|
105
112
|
removeFakerNode(): void;
|
|
106
113
|
setModel(type: string, ModelClass: any): Map<any, any>;
|
|
107
114
|
updateEdgeByIndex(index: any, data: any): void;
|
|
108
115
|
toFront(id: any): void;
|
|
116
|
+
setElementZIndex(id: any, zIndex: any): void;
|
|
109
117
|
deleteNode(id: any): void;
|
|
110
118
|
addNode(nodeConfig: NodeConfig): any;
|
|
111
119
|
/**
|
|
@@ -114,12 +122,20 @@ declare class GraphModel {
|
|
|
114
122
|
*/
|
|
115
123
|
cloneNode(nodeId: string): BaseNodeModel;
|
|
116
124
|
/**
|
|
117
|
-
*
|
|
125
|
+
* 移动节点-相对位置
|
|
118
126
|
* @param nodeModel 节点Id
|
|
119
127
|
* @param deltaX X轴移动距离
|
|
120
128
|
* @param deltaY Y轴移动距离
|
|
129
|
+
* @param isignoreRule 是否忽略移动规则限制
|
|
130
|
+
*/
|
|
131
|
+
moveNode(nodeId: BaseNodeModelId, deltaX: number, deltaY: number, isignoreRule?: boolean): void;
|
|
132
|
+
/**
|
|
133
|
+
* 移动节点-绝对位置
|
|
134
|
+
* @param nodeModel 节点Id
|
|
135
|
+
* @param x X轴目标位置
|
|
136
|
+
* @param y Y轴目标位置
|
|
121
137
|
*/
|
|
122
|
-
|
|
138
|
+
moveNode2Coordinate(nodeId: BaseNodeModelId, x: number, y: number): void;
|
|
123
139
|
setTextEditable(id: ElementModeId): void;
|
|
124
140
|
createEdge(edgeConfig: EdgeConfig): EdgeConfig;
|
|
125
141
|
moveEdge(nodeId: BaseNodeModelId, deltaX: number, deltaY: number): void;
|
|
@@ -141,8 +157,20 @@ declare class GraphModel {
|
|
|
141
157
|
moveElements(elements: {
|
|
142
158
|
nodes: NodeConfig[];
|
|
143
159
|
}, deltaX: number, deltaY: number): void;
|
|
144
|
-
|
|
160
|
+
/**
|
|
161
|
+
* 批量移动节点,节点移动的时候,会动态计算所有节点与未移动节点的连线位置
|
|
162
|
+
* 移动的节点直接的连线会保持相对位置
|
|
163
|
+
*/
|
|
164
|
+
moveNodes(nodeIds: any, deltaX: any, deltaY: any, isignoreRule?: boolean): void;
|
|
165
|
+
/**
|
|
166
|
+
* 添加节点移动限制规则,在节点移动的时候触发。
|
|
167
|
+
* 如果方法返回false, 则会阻止节点移动。
|
|
168
|
+
* @param fn function
|
|
169
|
+
*/
|
|
170
|
+
addNodeMoveRules(fn: NodeMoveRule): void;
|
|
171
|
+
setDefaultEdgeType(type: string): void;
|
|
145
172
|
changeNodeType(id: any, type: string): void;
|
|
173
|
+
changeEdgeType(id: any, type: any): void;
|
|
146
174
|
setTheme(style: Style): void;
|
|
147
175
|
clearData(): void;
|
|
148
176
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import EventEmitter from '../event/eventEmitter';
|
|
2
|
+
import { PointTuple, ZoomParam } from '../type';
|
|
2
3
|
export interface TransfromInterface {
|
|
3
4
|
SCALE_X: number;
|
|
4
5
|
SKEW_Y: number;
|
|
@@ -9,10 +10,13 @@ export interface TransfromInterface {
|
|
|
9
10
|
ZOOM_SIZE: number;
|
|
10
11
|
MINI_SCALE_SIZE: number;
|
|
11
12
|
MAX_SCALE_SIZE: number;
|
|
12
|
-
zoom: (isZoomout:
|
|
13
|
+
zoom: (isZoomout: ZoomParam) => boolean;
|
|
13
14
|
HtmlPointToCanvasPoint: (point: PointTuple) => PointTuple;
|
|
14
15
|
CanvasPointToHtmlPoint: (point: PointTuple) => PointTuple;
|
|
15
16
|
moveCanvasPointByHtml: (point: PointTuple, x: number, y: number) => PointTuple;
|
|
17
|
+
getTransformStyle: () => {
|
|
18
|
+
transform: string;
|
|
19
|
+
};
|
|
16
20
|
}
|
|
17
21
|
export default class TransfromModel implements TransfromInterface {
|
|
18
22
|
MINI_SCALE_SIZE: number;
|
|
@@ -24,6 +28,8 @@ export default class TransfromModel implements TransfromInterface {
|
|
|
24
28
|
TRANSLATE_X: number;
|
|
25
29
|
TRANSLATE_Y: number;
|
|
26
30
|
ZOOM_SIZE: number;
|
|
31
|
+
eventCenter: EventEmitter;
|
|
32
|
+
constructor(eventCenter: any);
|
|
27
33
|
setZoomMiniSize(size: number): void;
|
|
28
34
|
setZoomMaxSize(size: number): void;
|
|
29
35
|
/**
|
|
@@ -50,7 +56,14 @@ export default class TransfromModel implements TransfromInterface {
|
|
|
50
56
|
* @param deltaY y轴距离变化
|
|
51
57
|
*/
|
|
52
58
|
fixDeltaXY(deltaX: number, deltaY: number): PointTuple;
|
|
53
|
-
|
|
59
|
+
/**
|
|
60
|
+
* 基于当前的缩放,获取画布渲染样式transform值
|
|
61
|
+
*/
|
|
62
|
+
getTransformStyle(): {
|
|
63
|
+
transform: string;
|
|
64
|
+
};
|
|
65
|
+
zoom(zoomSize?: ZoomParam, point?: PointTuple): boolean;
|
|
66
|
+
private emitGraphTransform;
|
|
54
67
|
resetZoom(): void;
|
|
55
68
|
translate(x: number, y: number): void;
|
|
56
69
|
/**
|
|
@@ -3,13 +3,17 @@ import GraphModel from '../GraphModel';
|
|
|
3
3
|
import { Point, AdditionData, EdgeAttribute, EdgeData, MenuConfig, EdgeConfig } from '../../type/index';
|
|
4
4
|
import { ElementState, ModelType, ElementType } from '../../constant/constant';
|
|
5
5
|
declare class BaseEdgeModel implements IBaseModel {
|
|
6
|
-
|
|
6
|
+
id: string;
|
|
7
7
|
readonly BaseType = ElementType.EDGE;
|
|
8
8
|
state: number;
|
|
9
9
|
modelType: ModelType;
|
|
10
10
|
additionStateData: AdditionData;
|
|
11
|
+
[propName: string]: any;
|
|
11
12
|
graphModel: GraphModel;
|
|
12
13
|
menu?: MenuConfig[];
|
|
14
|
+
sourceAnchorId: string;
|
|
15
|
+
targetAnchorId: string;
|
|
16
|
+
customTextPosition: boolean;
|
|
13
17
|
text: {
|
|
14
18
|
value: string;
|
|
15
19
|
x: number;
|
|
@@ -27,6 +31,7 @@ declare class BaseEdgeModel implements IBaseModel {
|
|
|
27
31
|
stroke: string;
|
|
28
32
|
strokeDashArray: string;
|
|
29
33
|
outlineColor: string;
|
|
34
|
+
hideOutline: boolean;
|
|
30
35
|
outlineStrokeDashArray: string;
|
|
31
36
|
strokeOpacity: number;
|
|
32
37
|
zIndex: number;
|
|
@@ -40,10 +45,16 @@ declare class BaseEdgeModel implements IBaseModel {
|
|
|
40
45
|
draggable: boolean;
|
|
41
46
|
constructor(data: EdgeConfig, graphModel: GraphModel, type: any);
|
|
42
47
|
initEdgeData(data: any): void;
|
|
48
|
+
createId(): any;
|
|
43
49
|
setAttributes(): void;
|
|
44
50
|
get sourceNode(): import("..").BaseNodeModel;
|
|
45
51
|
get targetNode(): import("..").BaseNodeModel;
|
|
46
52
|
get textPosition(): Point;
|
|
53
|
+
/**
|
|
54
|
+
* @override 重新自定义文本位置
|
|
55
|
+
* @returns 文本位置
|
|
56
|
+
*/
|
|
57
|
+
getTextPosition(): Point;
|
|
47
58
|
move(): void;
|
|
48
59
|
getBeginAnchor(sourceNode: any, targetNode: any): Point;
|
|
49
60
|
getEndAnchor(targetNode: any): Point;
|
|
@@ -53,6 +64,7 @@ declare class BaseEdgeModel implements IBaseModel {
|
|
|
53
64
|
setProperties(properties: any): void;
|
|
54
65
|
updateData(edgeAttribute: EdgeAttribute): void;
|
|
55
66
|
formatText(data: any): void;
|
|
67
|
+
resetTextPosition(): void;
|
|
56
68
|
moveText(deltaX: number, deltaY: number): void;
|
|
57
69
|
setText(textConfig: any): void;
|
|
58
70
|
updateText(value: string): void;
|
|
@@ -69,6 +81,12 @@ declare class BaseEdgeModel implements IBaseModel {
|
|
|
69
81
|
setZIndex(zindex?: number): void;
|
|
70
82
|
initPoints(): void;
|
|
71
83
|
updateAttributes(attributes: any): void;
|
|
84
|
+
getAdjustStart(): any;
|
|
85
|
+
getAdjustEnd(): any;
|
|
86
|
+
updateAfterAdjustStartAndEnd({ startPoint, endPoint }: {
|
|
87
|
+
startPoint: any;
|
|
88
|
+
endPoint: any;
|
|
89
|
+
}): void;
|
|
72
90
|
}
|
|
73
91
|
export { BaseEdgeModel };
|
|
74
92
|
export default BaseEdgeModel;
|
|
@@ -7,7 +7,7 @@ export default class BezierEdgeModel extends BaseEdgeModel {
|
|
|
7
7
|
offset: number;
|
|
8
8
|
path: string;
|
|
9
9
|
constructor(data: any, graphModel: any);
|
|
10
|
-
|
|
10
|
+
getTextPosition(): Point;
|
|
11
11
|
getData(): {
|
|
12
12
|
pointsList: {
|
|
13
13
|
x: any;
|
|
@@ -21,12 +21,22 @@ export default class BezierEdgeModel extends BaseEdgeModel {
|
|
|
21
21
|
endPoint: Point;
|
|
22
22
|
text?: import("../../type").TextConfig;
|
|
23
23
|
properties: Record<string, unknown>;
|
|
24
|
+
zIndex?: number;
|
|
24
25
|
};
|
|
25
26
|
private getControls;
|
|
26
27
|
private getPath;
|
|
27
28
|
initPoints(): void;
|
|
28
29
|
updatePoints(): void;
|
|
30
|
+
updatePath(): void;
|
|
29
31
|
updateStartPoint(anchor: any): void;
|
|
30
32
|
updateEndPoint(anchor: any): void;
|
|
31
33
|
updateAdjustAnchor(anchor: Point, type: string): void;
|
|
34
|
+
getAdjustStart(): any;
|
|
35
|
+
getAdjustEnd(): any;
|
|
36
|
+
updateAfterAdjustStartAndEnd({ startPoint, endPoint, sourceNode, targetNode }: {
|
|
37
|
+
startPoint: any;
|
|
38
|
+
endPoint: any;
|
|
39
|
+
sourceNode: any;
|
|
40
|
+
targetNode: any;
|
|
41
|
+
}): void;
|
|
32
42
|
}
|
|
@@ -9,7 +9,10 @@ export default class PolylineEdgeModel extends BaseEdgeModel {
|
|
|
9
9
|
draginngPointList: any;
|
|
10
10
|
dbClickPosition: Point;
|
|
11
11
|
constructor(data: any, graphModel: GraphModel);
|
|
12
|
-
|
|
12
|
+
getTextPosition(): {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
};
|
|
13
16
|
getAfterAnchor(direction: any, position: any, anchorList: any): any;
|
|
14
17
|
getCorssPoint(direction: any, start: any, end: any): any;
|
|
15
18
|
removeCrossPoints(startIndex: any, endIndex: any, pointList: any): any;
|
|
@@ -26,6 +29,13 @@ export default class PolylineEdgeModel extends BaseEdgeModel {
|
|
|
26
29
|
updateStartPoint(anchor: any): void;
|
|
27
30
|
updateEndPoint(anchor: any): void;
|
|
28
31
|
dragAppendStart(): void;
|
|
32
|
+
dragAppendSimple(appendInfo: any, dragInfo: any): {
|
|
33
|
+
start: any;
|
|
34
|
+
end: any;
|
|
35
|
+
startIndex: any;
|
|
36
|
+
endIndex: any;
|
|
37
|
+
direction: any;
|
|
38
|
+
};
|
|
29
39
|
dragAppend(appendInfo: any, dragInfo: any): {
|
|
30
40
|
start: any;
|
|
31
41
|
end: any;
|
|
@@ -35,4 +45,12 @@ export default class PolylineEdgeModel extends BaseEdgeModel {
|
|
|
35
45
|
};
|
|
36
46
|
dragAppendEnd(): void;
|
|
37
47
|
updatePointsAfterDrage(pointsList: any): void;
|
|
48
|
+
getAdjustStart(): any;
|
|
49
|
+
getAdjustEnd(): any;
|
|
50
|
+
updateAfterAdjustStartAndEnd({ startPoint, endPoint, sourceNode, targetNode }: {
|
|
51
|
+
startPoint: any;
|
|
52
|
+
endPoint: any;
|
|
53
|
+
sourceNode: any;
|
|
54
|
+
targetNode: any;
|
|
55
|
+
}): void;
|
|
38
56
|
}
|
|
@@ -1,31 +1,39 @@
|
|
|
1
1
|
import { ElementState, ModelType, ElementType } from '../../constant/constant';
|
|
2
|
-
import { AdditionData, NodeData,
|
|
2
|
+
import { AdditionData, NodeData, NodeAttribute, NodeConfig, NodeMoveRule, Bounds, AnchorConfig, PointAnchor, AnchorsOffsetItem } from '../../type';
|
|
3
3
|
import GraphModel from '../GraphModel';
|
|
4
4
|
import { IBaseModel } from '../BaseModel';
|
|
5
5
|
export declare type ConnectRule = {
|
|
6
6
|
message: string;
|
|
7
|
-
validate: (source: BaseNodeModel, target: BaseNodeModel) => boolean;
|
|
7
|
+
validate: (source: BaseNodeModel, target: BaseNodeModel, sourceAnchor: AnchorConfig, targetAnchor: AnchorConfig) => boolean;
|
|
8
8
|
};
|
|
9
9
|
export declare type ConnectRuleResult = {
|
|
10
10
|
isAllPass: boolean;
|
|
11
11
|
msg?: string;
|
|
12
12
|
};
|
|
13
|
+
interface IBaseNodeModel extends IBaseModel {
|
|
14
|
+
/**
|
|
15
|
+
* model基础类型,固定为node
|
|
16
|
+
*/
|
|
17
|
+
readonly BaseType: ElementType.NODE;
|
|
18
|
+
}
|
|
13
19
|
export { BaseNodeModel };
|
|
14
|
-
export default class BaseNodeModel implements
|
|
15
|
-
|
|
20
|
+
export default class BaseNodeModel implements IBaseNodeModel {
|
|
21
|
+
id: string;
|
|
16
22
|
readonly BaseType = ElementType.NODE;
|
|
17
23
|
modelType: ModelType;
|
|
18
24
|
additionStateData: AdditionData;
|
|
19
|
-
|
|
25
|
+
[propName: string]: any;
|
|
20
26
|
targetRules: ConnectRule[];
|
|
21
27
|
sourceRules: ConnectRule[];
|
|
28
|
+
moveRules: NodeMoveRule[];
|
|
22
29
|
hasSetTargetRules: boolean;
|
|
23
30
|
hasSetSourceRules: boolean;
|
|
24
|
-
properties:
|
|
31
|
+
properties: Record<string, any>;
|
|
25
32
|
type: string;
|
|
26
33
|
x: number;
|
|
27
34
|
y: number;
|
|
28
35
|
private _width;
|
|
36
|
+
graphModel: GraphModel;
|
|
29
37
|
get width(): number;
|
|
30
38
|
set width(value: number);
|
|
31
39
|
private _height;
|
|
@@ -38,6 +46,7 @@ export default class BaseNodeModel implements IBaseModel {
|
|
|
38
46
|
strokeOpacity: number;
|
|
39
47
|
opacity: number;
|
|
40
48
|
outlineColor: string;
|
|
49
|
+
hideOutline: boolean;
|
|
41
50
|
hoverOutlineColor: string;
|
|
42
51
|
outlineStrokeDashArray: string;
|
|
43
52
|
hoverOutlineStrokeDashArray: string;
|
|
@@ -45,7 +54,7 @@ export default class BaseNodeModel implements IBaseModel {
|
|
|
45
54
|
isHovered: boolean;
|
|
46
55
|
isHitable: boolean;
|
|
47
56
|
zIndex: number;
|
|
48
|
-
anchorsOffset:
|
|
57
|
+
anchorsOffset: AnchorsOffsetItem[];
|
|
49
58
|
state: number;
|
|
50
59
|
text: {
|
|
51
60
|
value: string;
|
|
@@ -56,18 +65,46 @@ export default class BaseNodeModel implements IBaseModel {
|
|
|
56
65
|
};
|
|
57
66
|
draggable: boolean;
|
|
58
67
|
constructor(data: NodeConfig, graphModel: GraphModel, type: any);
|
|
59
|
-
|
|
60
|
-
|
|
68
|
+
/**
|
|
69
|
+
* 初始化节点数据,不建议重写
|
|
70
|
+
* 可以重写setAttributes来实现修改初始化功能
|
|
71
|
+
* initNodeData和setAttributes的区别在于
|
|
72
|
+
* initNodeData需要
|
|
73
|
+
*/
|
|
74
|
+
protected initNodeData(data: any): void;
|
|
75
|
+
/**
|
|
76
|
+
* @overridable 支持重新
|
|
77
|
+
* @returns string
|
|
78
|
+
*/
|
|
79
|
+
createId(): string;
|
|
80
|
+
/**
|
|
81
|
+
* 初始化文本属性,对
|
|
82
|
+
*/
|
|
83
|
+
private formatText;
|
|
84
|
+
/**
|
|
85
|
+
* 设置model初始化属性
|
|
86
|
+
* 例如设置节点的宽度
|
|
87
|
+
* @example
|
|
88
|
+
*
|
|
89
|
+
* setAttributes () {
|
|
90
|
+
* this.width = 300
|
|
91
|
+
* this.height = 200
|
|
92
|
+
* }
|
|
93
|
+
*
|
|
94
|
+
* @overridable 支持重写
|
|
95
|
+
*/
|
|
61
96
|
setAttributes(): void;
|
|
62
97
|
/**
|
|
63
|
-
*
|
|
98
|
+
* 获取被保存时返回的数据
|
|
99
|
+
* @overridable 支持重写
|
|
100
|
+
* @returns NodeData
|
|
64
101
|
*/
|
|
65
102
|
getData(): NodeData;
|
|
66
|
-
getProperties():
|
|
103
|
+
getProperties(): Record<string, any>;
|
|
67
104
|
/**
|
|
68
105
|
* 在连线的时候,是否允许这个节点为source节点,连线到target节点。
|
|
69
106
|
*/
|
|
70
|
-
isAllowConnectedAsSource(target: BaseNodeModel): ConnectRuleResult;
|
|
107
|
+
isAllowConnectedAsSource(target: BaseNodeModel, soureAnchor: AnchorConfig, targetAnchor: AnchorConfig): ConnectRuleResult | Boolean;
|
|
71
108
|
/**
|
|
72
109
|
* 获取当前节点作为连接的起始节点规则。
|
|
73
110
|
*/
|
|
@@ -75,18 +112,29 @@ export default class BaseNodeModel implements IBaseModel {
|
|
|
75
112
|
/**
|
|
76
113
|
* 在连线的时候,是否允许这个节点未target节点
|
|
77
114
|
*/
|
|
78
|
-
isAllowConnectedAsTarget(source: BaseNodeModel): ConnectRuleResult;
|
|
115
|
+
isAllowConnectedAsTarget(source: BaseNodeModel, soureAnchor: AnchorConfig, targetAnchor: AnchorConfig): ConnectRuleResult | Boolean;
|
|
116
|
+
/**
|
|
117
|
+
* 是否允许移动节点到新的位置
|
|
118
|
+
*/
|
|
119
|
+
isAllowMoveNode(deltaX: any, deltaY: any): boolean;
|
|
79
120
|
getConnectedTargetRules(): ConnectRule[];
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
121
|
+
/**
|
|
122
|
+
* @overridable 子类重写此方法设置锚点
|
|
123
|
+
* @returns Point[] 锚点坐标构成的数组
|
|
124
|
+
*/
|
|
125
|
+
getAnchorsByOffset(): PointAnchor[];
|
|
126
|
+
/**
|
|
127
|
+
* 获取节点默认情况下的锚点
|
|
128
|
+
*/
|
|
129
|
+
getDetaultAnchor(): PointAnchor[];
|
|
130
|
+
/**
|
|
131
|
+
* 获取节点BBox
|
|
132
|
+
*/
|
|
133
|
+
getBounds(): Bounds;
|
|
134
|
+
get anchors(): PointAnchor[];
|
|
135
|
+
addNodeMoveRules(fn: NodeMoveRule): void;
|
|
136
|
+
move(deltaX: any, deltaY: any, isignoreRule?: boolean): void;
|
|
137
|
+
moveTo(x: any, y: any, isignoreRule?: boolean): void;
|
|
90
138
|
moveText(deltaX: any, deltaY: any): void;
|
|
91
139
|
updateText(value: string): void;
|
|
92
140
|
setSelected(flag?: boolean): void;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Point } from '../../type';
|
|
2
1
|
import BaseNodeModel from './BaseNodeModel';
|
|
3
2
|
import { ModelType } from '../../constant/constant';
|
|
4
3
|
import GraphModel from '../GraphModel';
|
|
@@ -8,7 +7,11 @@ declare class CircleNodeModel extends BaseNodeModel {
|
|
|
8
7
|
constructor(data: any, graphModel: GraphModel);
|
|
9
8
|
get width(): number;
|
|
10
9
|
get height(): number;
|
|
11
|
-
|
|
10
|
+
getDetaultAnchor(): {
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
id: string;
|
|
14
|
+
}[];
|
|
12
15
|
}
|
|
13
16
|
export { CircleNodeModel };
|
|
14
17
|
export default CircleNodeModel;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Point } from '../../type';
|
|
2
|
+
import BaseNodeModel from './BaseNodeModel';
|
|
3
|
+
import { ModelType } from '../../constant/constant';
|
|
4
|
+
import GraphModel from '../GraphModel';
|
|
5
|
+
declare class HtmlNodeModel extends BaseNodeModel {
|
|
6
|
+
modelType: ModelType;
|
|
7
|
+
constructor(data: any, graphModel: GraphModel);
|
|
8
|
+
get anchors(): Point[];
|
|
9
|
+
}
|
|
10
|
+
export { HtmlNodeModel };
|
|
11
|
+
export default HtmlNodeModel;
|
|
@@ -6,6 +6,11 @@ declare class PolygonNodeModel extends BaseNodeModel {
|
|
|
6
6
|
modelType: ModelType;
|
|
7
7
|
points: PointTuple[];
|
|
8
8
|
constructor(data: any, graphModel: GraphModel);
|
|
9
|
+
/**
|
|
10
|
+
* 由于大多数情况下,我们初始化拿到的多边形坐标都是基于原点的(例如绘图工具到处的svg)。
|
|
11
|
+
* 在logicflow中对多边形进行移动,我们不需要去更新points,
|
|
12
|
+
* 而是去更新多边形中心点即可。
|
|
13
|
+
*/
|
|
9
14
|
get pointsPosition(): Point[];
|
|
10
15
|
get width(): number;
|
|
11
16
|
get height(): number;
|