@logicflow/core 2.0.0-beta.0 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build$colon$dev.log +2 -2
- package/.turbo/turbo-build.log +15 -21
- package/dist/index.min.js +26 -0
- package/dist/index.min.js.map +1 -0
- package/es/model/edge/BaseEdgeModel.js.map +1 -1
- package/es/options.d.ts +5 -11
- package/es/options.js +1 -31
- package/es/options.js.map +1 -1
- package/es/view/Graph.js +2 -2
- package/es/view/Graph.js.map +1 -1
- package/es/view/overlay/Grid.d.ts +35 -20
- package/es/view/overlay/Grid.js +35 -26
- package/es/view/overlay/Grid.js.map +1 -1
- package/lib/model/edge/BaseEdgeModel.js.map +1 -1
- package/lib/options.d.ts +5 -11
- package/lib/options.js +1 -31
- package/lib/options.js.map +1 -1
- package/lib/view/Graph.js +2 -2
- package/lib/view/Graph.js.map +1 -1
- package/lib/view/overlay/Grid.d.ts +35 -20
- package/lib/view/overlay/Grid.js +35 -26
- package/lib/view/overlay/Grid.js.map +1 -1
- package/package.json +4 -4
- package/src/model/edge/BaseEdgeModel.ts +32 -0
- package/src/options.ts +8 -39
- package/src/view/Graph.tsx +2 -2
- package/src/view/overlay/Grid.tsx +75 -53
- package/dist/index.js +0 -26
- package/dist/index.js.map +0 -1
|
@@ -1,30 +1,45 @@
|
|
|
1
1
|
import { Component } from 'preact/compat';
|
|
2
2
|
import { GraphModel } from '../../model';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* 网格格子间距
|
|
6
|
-
*/
|
|
7
|
-
size?: number;
|
|
8
|
-
/**
|
|
9
|
-
* 网格是否可见
|
|
10
|
-
*/
|
|
11
|
-
visible?: boolean;
|
|
3
|
+
import GridOptions = Grid.GridOptions;
|
|
4
|
+
type IProps = GridOptions & {
|
|
12
5
|
graphModel: GraphModel;
|
|
13
|
-
/**
|
|
14
|
-
* 网格类型
|
|
15
|
-
* 'dot' || 'mesh'
|
|
16
|
-
*/
|
|
17
|
-
type?: string;
|
|
18
|
-
config?: {
|
|
19
|
-
color: string;
|
|
20
|
-
thickness?: number;
|
|
21
|
-
};
|
|
22
6
|
};
|
|
23
|
-
type IProps = GridOptions;
|
|
24
7
|
export declare class Grid extends Component<IProps> {
|
|
25
8
|
readonly id: string;
|
|
26
9
|
renderDot(): import("preact/compat").JSX.Element;
|
|
27
10
|
renderMesh(): import("preact/compat").JSX.Element;
|
|
28
11
|
render(): import("preact/compat").JSX.Element;
|
|
29
12
|
}
|
|
30
|
-
export
|
|
13
|
+
export declare namespace Grid {
|
|
14
|
+
type GridOptions = {
|
|
15
|
+
/**
|
|
16
|
+
* 网格格子间距
|
|
17
|
+
*/
|
|
18
|
+
size?: number;
|
|
19
|
+
/**
|
|
20
|
+
* 网格是否可见
|
|
21
|
+
*/
|
|
22
|
+
visible?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* 网格类型
|
|
25
|
+
* - `dot` 点状网格
|
|
26
|
+
* - `mesh` 交叉线网格
|
|
27
|
+
*/
|
|
28
|
+
type?: 'dot' | 'mesh';
|
|
29
|
+
config?: {
|
|
30
|
+
/**
|
|
31
|
+
* 网格的颜色
|
|
32
|
+
*/
|
|
33
|
+
color: string;
|
|
34
|
+
/**
|
|
35
|
+
* 网格的宽度
|
|
36
|
+
* - 对于 `dot` 点状网格,表示点的大小
|
|
37
|
+
* - 对于 `mesh` 交叉线网格,表示线的宽度
|
|
38
|
+
*/
|
|
39
|
+
thickness?: number;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
const defaultProps: GridOptions;
|
|
43
|
+
function getGridOptions(options: number | boolean | GridOptions): GridOptions;
|
|
44
|
+
}
|
|
45
|
+
export {};
|
package/lib/view/overlay/Grid.js
CHANGED
|
@@ -49,6 +49,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
49
49
|
exports.Grid = void 0;
|
|
50
50
|
var jsx_runtime_1 = require("preact/jsx-runtime");
|
|
51
51
|
var compat_1 = require("preact/compat");
|
|
52
|
+
var lodash_es_1 = require("lodash-es");
|
|
52
53
|
var __1 = require("../..");
|
|
53
54
|
var util_1 = require("../../util");
|
|
54
55
|
var constant_1 = require("../../constant");
|
|
@@ -63,30 +64,24 @@ var Grid = /** @class */ (function (_super) {
|
|
|
63
64
|
Grid.prototype.renderDot = function () {
|
|
64
65
|
var _a = this.props, config = _a.config, _b = _a.size, size = _b === void 0 ? 1 : _b, visible = _a.visible;
|
|
65
66
|
var _c = config !== null && config !== void 0 ? config : {}, color = _c.color, _d = _c.thickness, thickness = _d === void 0 ? 2 : _d;
|
|
66
|
-
|
|
67
|
-
var
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
/* eslint-disable-next-line */
|
|
72
|
-
return ((0, jsx_runtime_1.jsx)("rect", { width: length, height: length, rx: length / 2, ry: length / 2, fill: color, opacity: opacity }));
|
|
67
|
+
// 对于点状网格,点的半径不能大于网格大小的四分之一
|
|
68
|
+
var radius = Math.min(Math.max(2, thickness), size / 4);
|
|
69
|
+
var opacity = visible ? 1 : 0;
|
|
70
|
+
return ((0, jsx_runtime_1.jsxs)("g", { fill: color, opacity: opacity, children: [(0, jsx_runtime_1.jsx)("circle", { cx: 0, cy: 0, r: radius / 2 }), (0, jsx_runtime_1.jsx)("circle", { cx: 0, cy: size, r: radius / 2 }), (0, jsx_runtime_1.jsx)("circle", { cx: size, cy: 0, r: radius / 2 }), (0, jsx_runtime_1.jsx)("circle", { cx: size, cy: size, r: radius / 2 })] }));
|
|
73
71
|
};
|
|
74
72
|
// 网格类型为交叉线
|
|
75
73
|
// todo: 采用背景缩放的方式,实现更好的体验
|
|
76
74
|
Grid.prototype.renderMesh = function () {
|
|
77
75
|
var _a = this.props, config = _a.config, _b = _a.size, size = _b === void 0 ? 1 : _b, visible = _a.visible;
|
|
78
76
|
var _c = config !== null && config !== void 0 ? config : {}, color = _c.color, _d = _c.thickness, thickness = _d === void 0 ? 1 : _d;
|
|
79
|
-
|
|
80
|
-
var
|
|
81
|
-
var
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
return ((0, jsx_runtime_1.jsx)("path", { d: d, stroke: color, strokeWidth: strokeWidth, opacity: opacity }));
|
|
77
|
+
// 对于交叉线网格,线的宽度不能大于网格大小的一半
|
|
78
|
+
var strokeWidth = Math.min(Math.max(1, thickness), size / 2);
|
|
79
|
+
var d = "M 0 0 H ".concat(size, " V ").concat(size, " H 0 Z");
|
|
80
|
+
var opacity = visible ? 1 : 0;
|
|
81
|
+
return ((0, jsx_runtime_1.jsx)("path", { d: d, stroke: color, strokeWidth: strokeWidth, opacity: opacity, fill: "transparent" }));
|
|
86
82
|
};
|
|
87
83
|
Grid.prototype.render = function () {
|
|
88
|
-
|
|
89
|
-
var _a = this.props, type = _a.type, size = _a.size, transformModel = _a.graphModel.transformModel;
|
|
84
|
+
var _a = this.props, type = _a.type, _b = _a.size, size = _b === void 0 ? 1 : _b, transformModel = _a.graphModel.transformModel;
|
|
90
85
|
var SCALE_X = transformModel.SCALE_X, SKEW_Y = transformModel.SKEW_Y, SKEW_X = transformModel.SKEW_X, SCALE_Y = transformModel.SCALE_Y, TRANSLATE_X = transformModel.TRANSLATE_X, TRANSLATE_Y = transformModel.TRANSLATE_Y;
|
|
91
86
|
var matrixString = [
|
|
92
87
|
SCALE_X,
|
|
@@ -108,14 +103,28 @@ var Grid = /** @class */ (function (_super) {
|
|
|
108
103
|
return Grid;
|
|
109
104
|
}(compat_1.Component));
|
|
110
105
|
exports.Grid = Grid;
|
|
111
|
-
Grid
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
106
|
+
(function (Grid) {
|
|
107
|
+
Grid.defaultProps = {
|
|
108
|
+
size: constant_1.DEFAULT_GRID_SIZE,
|
|
109
|
+
visible: true,
|
|
110
|
+
type: 'dot',
|
|
111
|
+
config: {
|
|
112
|
+
color: '#ababab',
|
|
113
|
+
thickness: 1,
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
function getGridOptions(options) {
|
|
117
|
+
var defaultOptions = (0, lodash_es_1.cloneDeep)(Grid.defaultProps);
|
|
118
|
+
if (typeof options === 'number') {
|
|
119
|
+
return (0, lodash_es_1.assign)(defaultOptions, { size: options });
|
|
120
|
+
}
|
|
121
|
+
else if (typeof options === 'boolean') {
|
|
122
|
+
return (0, lodash_es_1.assign)(defaultOptions, { visible: options });
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
return (0, lodash_es_1.assign)(defaultOptions, options);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
Grid.getGridOptions = getGridOptions;
|
|
129
|
+
})(Grid || (exports.Grid = Grid = {}));
|
|
121
130
|
//# sourceMappingURL=Grid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grid.js","sourceRoot":"","sources":["../../../src/view/overlay/Grid.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wCAAyC;AACzC,2BAAgC;AAChC,mCAAuC;AAEvC,2CAAkD;
|
|
1
|
+
{"version":3,"file":"Grid.js","sourceRoot":"","sources":["../../../src/view/overlay/Grid.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@logicflow/core",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.1",
|
|
4
4
|
"description": "LogicFlow, help you quickly create flowcharts",
|
|
5
|
-
"main": "
|
|
5
|
+
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
7
7
|
"types": "lib/index.d.ts",
|
|
8
|
-
"unpkg": "dist/index.js",
|
|
9
|
-
"jsdelivr": "dist/index.js",
|
|
8
|
+
"unpkg": "dist/index.min.js",
|
|
9
|
+
"jsdelivr": "dist/index.min.js",
|
|
10
10
|
"homepage": "https://site.logic-flow.cn",
|
|
11
11
|
"repository": {
|
|
12
12
|
"type": "git",
|
|
@@ -107,6 +107,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
107
107
|
this.initEdgeData(data)
|
|
108
108
|
this.setAttributes()
|
|
109
109
|
}
|
|
110
|
+
|
|
110
111
|
/**
|
|
111
112
|
* 初始化边数据
|
|
112
113
|
* @overridable 支持重写
|
|
@@ -145,15 +146,18 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
145
146
|
// 文本位置依赖于边上的所有拐点
|
|
146
147
|
this.formatText(data)
|
|
147
148
|
}
|
|
149
|
+
|
|
148
150
|
/**
|
|
149
151
|
* 设置model属性
|
|
150
152
|
* @overridable 支持重写
|
|
151
153
|
* 每次properties发生变化会触发
|
|
152
154
|
*/
|
|
153
155
|
setAttributes() {}
|
|
156
|
+
|
|
154
157
|
createId(): string | null {
|
|
155
158
|
return null
|
|
156
159
|
}
|
|
160
|
+
|
|
157
161
|
/**
|
|
158
162
|
* 自定义边样式
|
|
159
163
|
*
|
|
@@ -166,6 +170,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
166
170
|
...this.style,
|
|
167
171
|
}
|
|
168
172
|
}
|
|
173
|
+
|
|
169
174
|
/**
|
|
170
175
|
* 自定义边调整点样式
|
|
171
176
|
*
|
|
@@ -177,6 +182,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
177
182
|
...this.graphModel.theme.edgeAdjust,
|
|
178
183
|
}
|
|
179
184
|
}
|
|
185
|
+
|
|
180
186
|
/**
|
|
181
187
|
* 自定义边文本样式
|
|
182
188
|
*
|
|
@@ -187,6 +193,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
187
193
|
const { edgeText } = this.graphModel.theme
|
|
188
194
|
return cloneDeep(edgeText)
|
|
189
195
|
}
|
|
196
|
+
|
|
190
197
|
/**
|
|
191
198
|
* 自定义边动画样式
|
|
192
199
|
*
|
|
@@ -204,6 +211,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
204
211
|
const { edgeAnimation } = this.graphModel.theme
|
|
205
212
|
return cloneDeep(edgeAnimation)
|
|
206
213
|
}
|
|
214
|
+
|
|
207
215
|
/**
|
|
208
216
|
* 自定义边箭头样式
|
|
209
217
|
*
|
|
@@ -229,6 +237,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
229
237
|
...arrow,
|
|
230
238
|
}
|
|
231
239
|
}
|
|
240
|
+
|
|
232
241
|
/**
|
|
233
242
|
* 自定义边被选中时展示其范围的矩形框样式
|
|
234
243
|
*
|
|
@@ -247,6 +256,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
247
256
|
const { outline } = graphModel.theme
|
|
248
257
|
return cloneDeep(outline)
|
|
249
258
|
}
|
|
259
|
+
|
|
250
260
|
/**
|
|
251
261
|
* 重新自定义文本位置
|
|
252
262
|
*
|
|
@@ -258,18 +268,21 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
258
268
|
y: 0,
|
|
259
269
|
}
|
|
260
270
|
}
|
|
271
|
+
|
|
261
272
|
/**
|
|
262
273
|
* 边的前一个节点
|
|
263
274
|
*/
|
|
264
275
|
@computed get sourceNode() {
|
|
265
276
|
return this.graphModel?.nodesMap[this.sourceNodeId]?.model
|
|
266
277
|
}
|
|
278
|
+
|
|
267
279
|
/**
|
|
268
280
|
* 边的后一个节点
|
|
269
281
|
*/
|
|
270
282
|
@computed get targetNode() {
|
|
271
283
|
return this.graphModel?.nodesMap[this.targetNodeId]?.model
|
|
272
284
|
}
|
|
285
|
+
|
|
273
286
|
@computed get textPosition(): Point {
|
|
274
287
|
return this.getTextPosition()
|
|
275
288
|
}
|
|
@@ -346,12 +359,14 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
346
359
|
})
|
|
347
360
|
return position
|
|
348
361
|
}
|
|
362
|
+
|
|
349
363
|
/**
|
|
350
364
|
* 获取当前边的properties
|
|
351
365
|
*/
|
|
352
366
|
getProperties() {
|
|
353
367
|
return toJS(this.properties)
|
|
354
368
|
}
|
|
369
|
+
|
|
355
370
|
/**
|
|
356
371
|
* 获取被保存时返回的数据
|
|
357
372
|
*
|
|
@@ -380,6 +395,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
380
395
|
}
|
|
381
396
|
return data
|
|
382
397
|
}
|
|
398
|
+
|
|
383
399
|
/**
|
|
384
400
|
* 获取边的数据
|
|
385
401
|
*
|
|
@@ -391,6 +407,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
391
407
|
getHistoryData(): EdgeData {
|
|
392
408
|
return this.getData()
|
|
393
409
|
}
|
|
410
|
+
|
|
394
411
|
/**
|
|
395
412
|
* 设置边的属性,会触发重新渲染
|
|
396
413
|
* @param key 属性名
|
|
@@ -401,6 +418,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
401
418
|
this.properties[key] = formatData(val)
|
|
402
419
|
this.setAttributes()
|
|
403
420
|
}
|
|
421
|
+
|
|
404
422
|
/**
|
|
405
423
|
* 删除边的属性,会触发重新渲染
|
|
406
424
|
* @param key 属性名
|
|
@@ -410,6 +428,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
410
428
|
delete this.properties[key]
|
|
411
429
|
this.setAttributes()
|
|
412
430
|
}
|
|
431
|
+
|
|
413
432
|
/**
|
|
414
433
|
* 设置边的属性,会触发重新渲染
|
|
415
434
|
* @param key 属性名
|
|
@@ -423,6 +442,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
423
442
|
}
|
|
424
443
|
this.setAttributes()
|
|
425
444
|
}
|
|
445
|
+
|
|
426
446
|
/**
|
|
427
447
|
* 修改边的id
|
|
428
448
|
*/
|
|
@@ -437,6 +457,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
437
457
|
}
|
|
438
458
|
this.id = id
|
|
439
459
|
}
|
|
460
|
+
|
|
440
461
|
/**
|
|
441
462
|
* 设置边样式,用于插件开发时跳过自定义边的渲染。大多数情况下,不需要使用此方法。
|
|
442
463
|
* 如果需要设置边的样式,请使用 getEdgeStyle 方法自定义边样式。
|
|
@@ -448,6 +469,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
448
469
|
[key]: formatData(val),
|
|
449
470
|
}
|
|
450
471
|
}
|
|
472
|
+
|
|
451
473
|
/**
|
|
452
474
|
* 设置边样式,用于插件开发时跳过自定义边的渲染。大多数情况下,不需要使用此方法。
|
|
453
475
|
* 如果需要设置边的样式,请使用 getEdgeStyle 方法自定义边样式。
|
|
@@ -459,6 +481,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
459
481
|
...formatData(styles),
|
|
460
482
|
}
|
|
461
483
|
}
|
|
484
|
+
|
|
462
485
|
/**
|
|
463
486
|
* 设置边样式,用于插件开发时跳过自定义边的渲染。大多数情况下,不需要使用此方法。
|
|
464
487
|
* 如果需要设置边的样式,请使用 getEdgeStyle 方法自定义边样式。
|
|
@@ -497,6 +520,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
497
520
|
}
|
|
498
521
|
}
|
|
499
522
|
}
|
|
523
|
+
|
|
500
524
|
/**
|
|
501
525
|
* 重置文本位置
|
|
502
526
|
*/
|
|
@@ -505,6 +529,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
505
529
|
this.text.x = x
|
|
506
530
|
this.text.y = y
|
|
507
531
|
}
|
|
532
|
+
|
|
508
533
|
/**
|
|
509
534
|
* 移动边上的文本
|
|
510
535
|
*/
|
|
@@ -520,6 +545,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
520
545
|
}
|
|
521
546
|
}
|
|
522
547
|
}
|
|
548
|
+
|
|
523
549
|
/**
|
|
524
550
|
* 设置文本位置和值
|
|
525
551
|
*/
|
|
@@ -528,6 +554,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
528
554
|
assign(this.text, textConfig)
|
|
529
555
|
}
|
|
530
556
|
}
|
|
557
|
+
|
|
531
558
|
/**
|
|
532
559
|
* 更新文本的值
|
|
533
560
|
*/
|
|
@@ -537,6 +564,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
537
564
|
value,
|
|
538
565
|
}
|
|
539
566
|
}
|
|
567
|
+
|
|
540
568
|
/**
|
|
541
569
|
* 内部方法,计算边的起点和终点和其对于的锚点Id
|
|
542
570
|
*/
|
|
@@ -602,6 +630,7 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
602
630
|
setHitable(flag = true): void {
|
|
603
631
|
this.isHitable = flag
|
|
604
632
|
}
|
|
633
|
+
|
|
605
634
|
@action
|
|
606
635
|
setHittable(flag = true): void {
|
|
607
636
|
this.isHittable = flag
|
|
@@ -664,16 +693,19 @@ export class BaseEdgeModel implements IBaseEdgeModel {
|
|
|
664
693
|
updateAttributes(attributes) {
|
|
665
694
|
assign(this, attributes)
|
|
666
695
|
}
|
|
696
|
+
|
|
667
697
|
// 获取边调整的起点
|
|
668
698
|
@action
|
|
669
699
|
getAdjustStart() {
|
|
670
700
|
return this.startPoint
|
|
671
701
|
}
|
|
702
|
+
|
|
672
703
|
// 获取边调整的终点
|
|
673
704
|
@action
|
|
674
705
|
getAdjustEnd() {
|
|
675
706
|
return this.endPoint
|
|
676
707
|
}
|
|
708
|
+
|
|
677
709
|
// 起终点拖拽调整过程中,进行直线路径更新
|
|
678
710
|
@action
|
|
679
711
|
updateAfterAdjustStartAndEnd({
|
package/src/options.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { assign } from 'lodash-es'
|
|
2
2
|
import { createElement as h } from 'preact/compat'
|
|
3
3
|
import LogicFlow from './LogicFlow'
|
|
4
|
-
import { GraphModel } from './model'
|
|
5
4
|
import { KeyboardDef } from './keyboard'
|
|
6
|
-
import {
|
|
5
|
+
import { OverlapMode } from './constant'
|
|
6
|
+
import { Grid } from './view/overlay'
|
|
7
|
+
|
|
8
|
+
import GridOptions = Grid.GridOptions
|
|
7
9
|
|
|
8
10
|
export namespace Options {
|
|
9
11
|
import NodeData = LogicFlow.NodeData
|
|
@@ -25,19 +27,6 @@ export namespace Options {
|
|
|
25
27
|
// TODO: 根据具体情况添加各种自定义样式
|
|
26
28
|
[key: string]: any
|
|
27
29
|
}
|
|
28
|
-
export type GridOptions = {
|
|
29
|
-
// 网格格子间距
|
|
30
|
-
size?: number
|
|
31
|
-
// 网格是否可见
|
|
32
|
-
visible?: boolean
|
|
33
|
-
graphModel?: GraphModel
|
|
34
|
-
// 网格类型
|
|
35
|
-
type?: 'dot' | 'mesh'
|
|
36
|
-
config?: {
|
|
37
|
-
color: string
|
|
38
|
-
thickness?: number
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
30
|
|
|
42
31
|
export type AnimationConfig = {
|
|
43
32
|
node: boolean
|
|
@@ -68,6 +57,9 @@ export namespace Options {
|
|
|
68
57
|
width?: number
|
|
69
58
|
height?: number
|
|
70
59
|
background?: false | BackgroundConfig
|
|
60
|
+
/**
|
|
61
|
+
* Grid 网格配置
|
|
62
|
+
*/
|
|
71
63
|
grid?: number | boolean | GridOptions
|
|
72
64
|
|
|
73
65
|
partial?: boolean
|
|
@@ -117,7 +109,7 @@ export namespace Options {
|
|
|
117
109
|
|
|
118
110
|
export namespace Options {
|
|
119
111
|
export function get(options: Partial<Manual>) {
|
|
120
|
-
const {
|
|
112
|
+
const { ...others } = options
|
|
121
113
|
const container = options.container
|
|
122
114
|
if (container != null) {
|
|
123
115
|
if (options.width == null) {
|
|
@@ -134,29 +126,6 @@ export namespace Options {
|
|
|
134
126
|
|
|
135
127
|
const result = assign({}, defaults, others) as Options.Definition
|
|
136
128
|
|
|
137
|
-
const defaultGrid: GridOptions = {
|
|
138
|
-
size: DEFAULT_GRID_SIZE,
|
|
139
|
-
type: 'dot',
|
|
140
|
-
visible: true,
|
|
141
|
-
config: {
|
|
142
|
-
color: '#ababab',
|
|
143
|
-
thickness: 1,
|
|
144
|
-
},
|
|
145
|
-
}
|
|
146
|
-
if (typeof grid === 'number') {
|
|
147
|
-
result.grid = {
|
|
148
|
-
...defaultGrid,
|
|
149
|
-
size: grid,
|
|
150
|
-
}
|
|
151
|
-
} else if (typeof grid === 'boolean') {
|
|
152
|
-
result.grid = {
|
|
153
|
-
...defaultGrid,
|
|
154
|
-
visible: grid,
|
|
155
|
-
}
|
|
156
|
-
} else {
|
|
157
|
-
result.grid = { ...defaultGrid, ...grid }
|
|
158
|
-
}
|
|
159
|
-
|
|
160
129
|
return result
|
|
161
130
|
}
|
|
162
131
|
}
|
package/src/view/Graph.tsx
CHANGED
|
@@ -68,7 +68,7 @@ class Graph extends Component<IGraphProps> {
|
|
|
68
68
|
if (options.height) {
|
|
69
69
|
style.height = `${graphModel.height}px`
|
|
70
70
|
}
|
|
71
|
-
const grid = options.grid
|
|
71
|
+
const grid = options.grid && Grid.getGridOptions(options.grid)
|
|
72
72
|
const { fakeNode, editConfigModel } = graphModel
|
|
73
73
|
const { adjustEdge } = editConfigModel
|
|
74
74
|
|
|
@@ -95,7 +95,7 @@ class Graph extends Component<IGraphProps> {
|
|
|
95
95
|
{options.background && (
|
|
96
96
|
<BackgroundOverlay background={options.background} />
|
|
97
97
|
)}
|
|
98
|
-
{
|
|
98
|
+
{grid && <Grid {...grid} graphModel={graphModel} />}
|
|
99
99
|
</div>
|
|
100
100
|
)
|
|
101
101
|
}
|