@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.
@@ -1,30 +1,45 @@
1
1
  import { Component } from 'preact/compat';
2
2
  import { GraphModel } from '../../model';
3
- export type GridOptions = {
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 default Grid;
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 {};
@@ -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
- var length = Math.min(Math.max(1.5, thickness), size / 2); // 2 < length < size /2
67
- var opacity = 1;
68
- if (!visible) {
69
- opacity = 0;
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
- var strokeWidth = Math.min(Math.max(1, thickness), size / 2); // 1 < strokeWidth < size /2
80
- var d = "M ".concat(size, " 0 H0 M0 0 V0 ").concat(size);
81
- var opacity = 1;
82
- if (!visible) {
83
- opacity = 0;
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
- // TODO 生成网格️️️✔、网格支持 options(size)✔
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.defaultProps = {
112
- size: constant_1.DEFAULT_GRID_SIZE,
113
- visible: true,
114
- type: 'dot',
115
- config: {
116
- color: '#ababab',
117
- thickness: 1,
118
- },
119
- };
120
- exports.default = Grid;
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":"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"}
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.0",
3
+ "version": "2.0.0-beta.1",
4
4
  "description": "LogicFlow, help you quickly create flowcharts",
5
- "main": "dist/index.js",
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 { DEFAULT_GRID_SIZE, OverlapMode } from './constant'
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 { grid, ...others } = options
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
  }
@@ -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 as any // TODO: fix type
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
- {options.grid && <Grid {...grid} graphModel={graphModel} />}
98
+ {grid && <Grid {...grid} graphModel={graphModel} />}
99
99
  </div>
100
100
  )
101
101
  }