@logicflow/core 1.2.0-next.4 → 1.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logicflow/core",
3
- "version": "1.2.0-next.4",
3
+ "version": "1.2.0",
4
4
  "description": "LogicFlow core, to quickly build flowchart editor",
5
5
  "main": "dist/entry.js",
6
6
  "module": "dist/logic-flow.js",
@@ -3,13 +3,15 @@ import { TextConfig, AdditionData } from '../type';
3
3
  interface IBaseModel {
4
4
  /**
5
5
  * 节点或者边的id.
6
+ *
6
7
  * 默认情况下,使用uuidv4生成。
7
8
  * 如果想要自定义,可以重写createId生成。
8
9
  */
9
10
  id: string;
10
11
  /**
11
- * 不可自定义
12
12
  * model对应的图形外观类型(eg: 圆形、矩形、多边形等)
13
+ *
14
+ * 不可自定义
13
15
  * 用于logicflow内部计算使用。
14
16
  */
15
17
  modelType: string;
@@ -29,6 +31,7 @@ interface IBaseModel {
29
31
  type: string;
30
32
  /**
31
33
  * 元素状态
34
+ *
32
35
  * 不同的状态对应着元素显示效果。
33
36
  * 请勿直接修改。
34
37
  * logicflow内部将元素状态分为5种:
@@ -42,6 +45,7 @@ interface IBaseModel {
42
45
  additionStateData: AdditionData;
43
46
  /**
44
47
  * 元素上的文本
48
+ *
45
49
  * logicflow中存在两种文本
46
50
  * 一种是脱离边和节点单独存在的文本
47
51
  * 一种是必须和边、节点关联的文本。
@@ -68,6 +72,7 @@ interface IBaseModel {
68
72
  zIndex: number;
69
73
  /**
70
74
  * 创建节点ID
75
+ *
71
76
  * 默认情况下,logicflow内部使用uuidv4生成id。
72
77
  * 在自定义节点的时候,可以重写此方法基于自己的规则生成id。
73
78
  * 注意,此方法必须是同步的。
@@ -2,7 +2,7 @@ import { IBaseModel } from '../BaseModel';
2
2
  import GraphModel from '../GraphModel';
3
3
  import { Point, AdditionData, EdgeData, MenuConfig, EdgeConfig, ShapeStyleAttribute } from '../../type/index';
4
4
  import { ModelType, ElementType } from '../../constant/constant';
5
- import { OutlineTheme } from '../../constant/DefaultTheme';
5
+ import { ArrowTheme, OutlineTheme } from '../../constant/DefaultTheme';
6
6
  declare class BaseEdgeModel implements IBaseModel {
7
7
  id: string;
8
8
  type: string;
@@ -27,6 +27,7 @@ declare class BaseEdgeModel implements IBaseModel {
27
27
  visible: boolean;
28
28
  virtual: boolean;
29
29
  isAnimation: boolean;
30
+ isShowAdjustPoint: boolean;
30
31
  graphModel: GraphModel;
31
32
  zIndex: number;
32
33
  readonly BaseType = ElementType.EDGE;
@@ -37,7 +38,6 @@ declare class BaseEdgeModel implements IBaseModel {
37
38
  targetAnchorId: string;
38
39
  menu?: MenuConfig[];
39
40
  customTextPosition: boolean;
40
- animationData: import("../../constant/DefaultAnimation").Animation;
41
41
  style: ShapeStyleAttribute;
42
42
  arrowConfig: {
43
43
  markerEnd: string;
@@ -46,63 +46,99 @@ declare class BaseEdgeModel implements IBaseModel {
46
46
  [propName: string]: any;
47
47
  constructor(data: EdgeConfig, graphModel: GraphModel);
48
48
  /**
49
- * @overridable 支持重写
50
49
  * 初始化边数据
50
+ * @overridable 支持重写
51
51
  * initNodeData和setAttributes的区别在于
52
52
  * initNodeData只在节点初始化的时候调用,用于初始化节点的所有属性。
53
- * setAttributes除了初始化调用外,还会在properties发生变化了调用。
53
+ * setAttributes除了初始化调用外,还会在properties发生变化后调用。
54
54
  */
55
55
  initEdgeData(data: any): void;
56
56
  /**
57
- * 设置model属性,每次properties发生变化会触发
57
+ * 设置model属性
58
58
  * @overridable 支持重写
59
+ * 每次properties发生变化会触发
59
60
  */
60
61
  setAttributes(): void;
62
+ createId(): string;
61
63
  /**
62
- * @overridable 支持重写,自定义此类型节点默认生成方式
63
- * @returns string
64
+ * 自定义边样式
65
+ *
66
+ * @overridable 支持重写
67
+ * @returns 自定义边样式
64
68
  */
65
- createId(): any;
69
+ getEdgeStyle(): ShapeStyleAttribute;
66
70
  /**
71
+ * 自定义边调整点样式
72
+ *
67
73
  * @overridable 支持重写
68
- * 获取当前节点样式
69
- * @returns 自定义边样式
74
+ * 在isShowAdjustPoint为true时会显示调整点。
70
75
  */
71
- getEdgeStyle(): {
76
+ getAdjustPointStyle(): {
72
77
  [x: string]: any;
78
+ r?: number;
73
79
  fill?: string;
74
80
  stroke?: string;
75
81
  strokeWidth?: number;
76
82
  };
77
83
  /**
84
+ * 自定义边文本样式
85
+ *
78
86
  * @overridable 支持重写
79
- * 获取当前节点文本样式
80
87
  */
81
88
  getTextStyle(): import("../../constant/DefaultTheme").EdgeTextTheme;
82
89
  /**
90
+ * 自定义边动画样式
91
+ *
83
92
  * @overridable 支持重写
84
- * 获取当前边的动画样式
85
- * @returns 自定义边动画样式
93
+ * @example
94
+ * getEdgeAnimationStyle() {
95
+ * const style = super.getEdgeAnimationStyle();
96
+ * style.stroke = 'blue'
97
+ * style.animationDuration = '30s'
98
+ * style.animationDirection = 'reverse'
99
+ * return style
100
+ * }
86
101
  */
87
- getAnimation(): import("../../constant/DefaultAnimation").Animation;
102
+ getEdgeAnimationStyle(): import("../../constant/DefaultTheme").EdgeAnimation;
88
103
  /**
104
+ * 自定义边箭头样式
105
+ *
89
106
  * @overridable 支持重写
90
- * 获取当前边的动画样式
91
- * @returns 自定义边动画样式
107
+ * @example
108
+ * getArrowStyle() {
109
+ * const style = super.getArrowStyle();
110
+ * style.stroke = 'green';
111
+ * return style;
112
+ * }
92
113
  */
93
- getEdgeAnimationStyle(): import("../../constant/DefaultTheme").EdgeAnimation;
114
+ getArrowStyle(): ArrowTheme;
94
115
  /**
116
+ * 自定义边被选中时展示其范围的矩形框样式
117
+ *
95
118
  * @overridable 支持重写
96
- * 获取outline样式,重写可以定义此类型边outline样式, 默认使用主题样式
97
- * @returns 自定义outline样式
119
+ * @example
120
+ * // 隐藏outline
121
+ * getOutlineStyle() {
122
+ * const style = super.getOutlineStyle();
123
+ * style.stroke = "none";
124
+ * style.hover.stroke = "none";
125
+ * return style;
126
+ * }
98
127
  */
99
128
  getOutlineStyle(): OutlineTheme;
100
129
  /**
101
- * @overridable 支持重新,重新自定义文本位置
102
- * @returns 文本位置
130
+ * 重新自定义文本位置
131
+ *
132
+ * @overridable 支持重写
103
133
  */
104
134
  getTextPosition(): Point;
135
+ /**
136
+ * 边的前一个节点
137
+ */
105
138
  get sourceNode(): import("..").BaseNodeModel;
139
+ /**
140
+ * 边的后一个节点
141
+ */
106
142
  get targetNode(): import("..").BaseNodeModel;
107
143
  get textPosition(): Point;
108
144
  /**
@@ -119,20 +155,54 @@ declare class BaseEdgeModel implements IBaseModel {
119
155
  getProperties(): Record<string, any>;
120
156
  /**
121
157
  * 获取被保存时返回的数据
158
+ *
159
+ * @overridable 支持重写
122
160
  */
123
161
  getData(): EdgeData;
124
162
  /**
125
- * 用于在历史记录时获取节点数据,
163
+ * 获取边的数据
164
+ *
165
+ * @overridable 支持重写
166
+ * 用于在历史记录时获取节点数据。
126
167
  * 在某些情况下,如果希望某个属性变化不引起history的变化,
127
168
  * 可以重写此方法。
128
169
  */
129
170
  getHistoryData(): EdgeData;
171
+ /**
172
+ * 设置边的属性,会触发重新渲染
173
+ * @param key 属性名
174
+ * @param val 属性值
175
+ */
130
176
  setProperty(key: any, val: any): void;
177
+ /**
178
+ * 删除边的属性,会触发重新渲染
179
+ * @param key 属性名
180
+ */
131
181
  deleteProperty(key: string): void;
182
+ /**
183
+ * 设置边的属性,会触发重新渲染
184
+ * @param key 属性名
185
+ * @param val 属性值
186
+ */
132
187
  setProperties(properties: any): void;
188
+ /**
189
+ * 修改边的id
190
+ */
133
191
  changeEdgeId(id: string): void;
134
- setStyle(key: any, val: any): void;
192
+ /**
193
+ * 设置边样式,用于插件开发时跳过自定义边的渲染。大多数情况下,不需要使用此方法。
194
+ * 如果需要设置边的样式,请使用 getEdgeStyle 方法自定义边样式。
195
+ */
196
+ setStyle(key: string, val: any): void;
197
+ /**
198
+ * 设置边样式,用于插件开发时跳过自定义边的渲染。大多数情况下,不需要使用此方法。
199
+ * 如果需要设置边的样式,请使用 getEdgeStyle 方法自定义边样式。
200
+ */
135
201
  setStyles(styles: any): void;
202
+ /**
203
+ * 设置边样式,用于插件开发时跳过自定义边的渲染。大多数情况下,不需要使用此方法。
204
+ * 如果需要设置边的样式,请使用 getEdgeStyle 方法自定义边样式。
205
+ */
136
206
  updateStyles(styles: any): void;
137
207
  /**
138
208
  * 内部方法,处理初始化文本格式
@@ -21,7 +21,6 @@ export default class TextEdit extends Component<IProps, IState> {
21
21
  id: string;
22
22
  };
23
23
  constructor();
24
- componentDidMount(): void;
25
24
  static getDerivedStateFromProps(props: any): {
26
25
  style: any;
27
26
  };
@@ -8,6 +8,7 @@ interface IProps {
8
8
  y: number;
9
9
  type: AdjustType;
10
10
  id?: string;
11
+ getAdjustPointShape: Function;
11
12
  graphModel: GraphModel;
12
13
  edgeModel: BaseEdgeModel;
13
14
  }
@@ -1,5 +1,4 @@
1
1
  import { h, Component } from 'preact';
2
- import { ArrowStyle } from './Arrow';
3
2
  import BaseEdgeModel from '../../model/edge/BaseEdgeModel';
4
3
  import GraphModel from '../../model/GraphModel';
5
4
  import { ArrowInfo } from '../../type/index';
@@ -12,26 +11,129 @@ export default class BaseEdge extends Component<IProps> {
12
11
  contextMenuTime: number;
13
12
  clickTimer: number;
14
13
  textRef: import("preact").RefObject<any>;
15
- getShape(): void;
14
+ /**
15
+ * 不支持重写,请使用getEdge
16
+ */
17
+ getShape(): h.JSX.Element;
18
+ /**
19
+ * @deprecated 请使用model.getTextStyle
20
+ */
16
21
  getTextStyle(): void;
17
- getText(): "" | h.JSX.Element;
22
+ /**
23
+ * @overridable 可重写,自定义边文本DOM
24
+ */
25
+ getText(): h.JSX.Element | null;
26
+ /**
27
+ * @deprecated
28
+ */
18
29
  getArrowInfo(): ArrowInfo;
19
- getArrowStyle(): ArrowStyle;
20
- getArrow(): h.JSX.Element | null;
30
+ /**
31
+ * @deprecated 请使用model.getArrowStyle
32
+ */
33
+ getArrowStyle(): any;
34
+ /**
35
+ * 定义边的箭头,不支持重写。请使用getStartArrow和getEndArrow
36
+ */
37
+ private getArrow;
38
+ /**
39
+ * @overridable 可重写,自定义边起点箭头形状。
40
+ * @example
41
+ * getStartArrow() {
42
+ * const { model } = this.props;
43
+ * const { stroke, strokeWidth, offset, verticalLength } = model.getArrowStyle();
44
+ * return (
45
+ * h('path', {
46
+ * d: ''
47
+ * })
48
+ * )
49
+ * }
50
+ */
21
51
  getStartArrow(): h.JSX.Element | null;
52
+ /**
53
+ * @overridable 可重写,自定义边终点箭头形状。
54
+ * @example
55
+ * getEndArrow() {
56
+ * const { model } = this.props;
57
+ * const { stroke, strokeWidth, offset, verticalLength } = model.getArrowStyle();
58
+ * return (
59
+ * h('path', {
60
+ * d: ''
61
+ * })
62
+ * )
63
+ * }
64
+ */
22
65
  getEndArrow(): h.JSX.Element | null;
23
- getAdjustPoints(): h.JSX.Element;
66
+ /**
67
+ * @overridable 可重写,自定义调整边连接节点形状。在开启了adjustEdgeStartAndEnd的时候,会显示调整点。
68
+ * @param x 调整点x坐标
69
+ * @param y 调整点y坐标
70
+ * @example
71
+ * getAdjustPointShape(x, y) {
72
+ * const { model } = this.props;
73
+ * const style = model.getAdjustPointStyle();
74
+ * return (
75
+ * h('circle', {
76
+ * ...style,
77
+ * x,
78
+ * y
79
+ * })
80
+ * )
81
+ * }
82
+ */
83
+ getAdjustPointShape: (x: any, y: any) => h.JSX.Element | null;
84
+ /**
85
+ * 不支持重写。请使用getAdjustPointShape
86
+ */
87
+ private getAdjustPoints;
88
+ /**
89
+ * @deprecated
90
+ */
24
91
  getAnimation(): void;
92
+ /**
93
+ * @overridable 可重写,在完全自定义边的时候,可以重写此方法,来自定义边的选区。
94
+ */
25
95
  getAppendWidth(): h.JSX.Element;
96
+ /**
97
+ * 不建议重写,此方法为扩大边选区,方便用户点击选中边。
98
+ * 如果需要自定义边选区,请使用getAppendWidth。
99
+ */
26
100
  getAppend(): h.JSX.Element;
101
+ /**
102
+ * 不支持重写,如果想要基于hover状态设置不同的样式,请在model中使用isHovered属性。
103
+ */
27
104
  handleHover: (hovered: any, ev: any) => void;
105
+ /**
106
+ * 不支持重写,如果想要基于hover状态设置不同的样式,请在model中使用isHovered属性。
107
+ */
28
108
  setHoverON: (ev: any) => void;
109
+ /**
110
+ * 不支持重写,如果想要基于hover状态设置不同的样式,请在model中使用isHovered属性。
111
+ */
29
112
  setHoverOFF: (ev: any) => void;
113
+ /**
114
+ * 不支持重写,如果想要基于contextmenu事件做处理,请监听edge:contextmenu事件。
115
+ */
30
116
  handleContextMenu: (ev: MouseEvent) => void;
117
+ /**
118
+ * 不支持重写
119
+ */
31
120
  handleMouseDown: (e: any) => void;
121
+ /**
122
+ * 不支持重写
123
+ */
32
124
  handleMouseUp: (e: MouseEvent) => void;
33
- getIsDragging: () => boolean;
125
+ /**
126
+ * @overridable 支持重写, 此方法为获取边的形状,如果需要自定义边的形状,请重写此方法。
127
+ * @example https://docs.logic-flow.cn/docs/#/zh/guide/basic/edge?id=%e5%9f%ba%e4%ba%8e-react-%e7%bb%84%e4%bb%b6%e8%87%aa%e5%ae%9a%e4%b9%89%e8%be%b9
128
+ */
129
+ getEdge(): h.JSX.Element | null;
130
+ /**
131
+ * @overridable 支持重写, 此方法为边在被选中时将其置顶,如果不需要此功能,可以重写此方法。
132
+ */
34
133
  toFront(): void;
134
+ /**
135
+ * 不建议重写,如果要自定义边的形状,请重写getEdge方法。
136
+ */
35
137
  render(): h.JSX.Element;
36
138
  }
37
139
  export {};
@@ -2,9 +2,17 @@ import { h } from 'preact';
2
2
  import BaseEdge from './BaseEdge';
3
3
  import { ArrowInfo } from '../../type/index';
4
4
  export default class BezierEdge extends BaseEdge {
5
+ /**
6
+ * @overridable 支持重写, 此方法为获取边的形状,如果需要自定义边的形状,请重写此方法。
7
+ * @example https://docs.logic-flow.cn/docs/#/zh/guide/basic/edge?id=%e5%9f%ba%e4%ba%8e-react-%e7%bb%84%e4%bb%b6%e8%87%aa%e5%ae%9a%e4%b9%89%e8%be%b9
8
+ */
5
9
  getEdge(): h.JSX.Element;
6
- getShape(): h.JSX.Element;
7
- getAnimation(): h.JSX.Element;
10
+ /**
11
+ * @overridable 可重写,在完全自定义边的时候,可以重写此方法,来自定义边的选区。
12
+ */
8
13
  getAppendWidth(): h.JSX.Element;
14
+ /**
15
+ * @deprecated
16
+ */
9
17
  getArrowInfo(): ArrowInfo;
10
18
  }
@@ -1,8 +1,13 @@
1
1
  import { h } from 'preact';
2
2
  import BaseEdge from './BaseEdge';
3
3
  export default class LineEdge extends BaseEdge {
4
+ /**
5
+ * @overridable 支持重写, 此方法为获取边的形状,如果需要自定义边的形状,请重写此方法。
6
+ * @example https://docs.logic-flow.cn/docs/#/zh/guide/basic/edge?id=%e5%9f%ba%e4%ba%8e-react-%e7%bb%84%e4%bb%b6%e8%87%aa%e5%ae%9a%e4%b9%89%e8%be%b9
7
+ */
4
8
  getEdge(): h.JSX.Element;
5
- getShape(): h.JSX.Element;
6
- getAnimation(): h.JSX.Element;
9
+ /**
10
+ * @overridable 可重写,在完全自定义边的时候,可以重写此方法,来自定义边的选区。
11
+ */
7
12
  getAppendWidth(): h.JSX.Element;
8
13
  }
@@ -1,33 +1,44 @@
1
1
  import { h } from 'preact';
2
2
  import BaseEdge from './BaseEdge';
3
3
  import { AppendInfo, ArrowInfo } from '../../type/index';
4
- declare type AppendAttributesType = {
5
- d: string;
6
- fill: string;
7
- stroke: string;
8
- strokeWidth: number;
9
- strokeDasharray: string;
10
- };
11
4
  export default class PolylineEdge extends BaseEdge {
12
5
  drag: any;
13
6
  isDragging: boolean;
7
+ isShowAdjustPointTemp: boolean;
14
8
  appendInfo: AppendInfo;
15
- dragHandler: (ev: MouseEvent) => void;
16
9
  constructor();
10
+ /**
11
+ * 不支持重写
12
+ */
17
13
  onDragStart: () => void;
14
+ /**
15
+ * 不支持重写
16
+ */
18
17
  onDragging: ({ deltaX, deltaY }: {
19
18
  deltaX: any;
20
19
  deltaY: any;
21
20
  }) => void;
21
+ /**
22
+ * 不支持重写
23
+ */
22
24
  onDragEnd: () => void;
25
+ /**
26
+ * 不支持重写
27
+ */
23
28
  beforeDragStart: (e: any, appendInfo: any) => void;
24
- getIsDragging: () => boolean;
29
+ /**
30
+ * @overridable 支持重写, 此方法为获取边的形状,如果需要自定义边的形状,请重写此方法。
31
+ * @example https://docs.logic-flow.cn/docs/#/zh/guide/basic/edge?id=%e5%9f%ba%e4%ba%8e-react-%e7%bb%84%e4%bb%b6%e8%87%aa%e5%ae%9a%e4%b9%89%e8%be%b9
32
+ */
25
33
  getEdge(): h.JSX.Element;
26
- getShape(): h.JSX.Element;
27
- getAnimation(): h.JSX.Element;
34
+ /**
35
+ * @deprecated
36
+ */
28
37
  getArrowInfo(): ArrowInfo;
29
- getAppendAttributes(appendInfo: AppendInfo): AppendAttributesType;
30
- getAppendShape(appendInfo: AppendInfo): h.JSX.Element;
38
+ private getAppendAttributes;
39
+ private getAppendShape;
40
+ /**
41
+ * @overridable 可重写,在完全自定义边的时候,可以重写此方法,来自定义边的选区。
42
+ */
31
43
  getAppendWidth(): h.JSX.Element;
32
44
  }
33
- export {};
@@ -5,11 +5,13 @@ declare type IProps = {
5
5
  tool: any;
6
6
  };
7
7
  export default class ToolOverlay extends Component<IProps> {
8
- setToolOverlayRef: (element: any) => void;
8
+ componentDidMount(): void;
9
+ componentDidUpdate(): void;
9
10
  /**
10
11
  * 外部传入的一般是HTMLElement
11
12
  */
12
13
  getTools(): any;
14
+ triggerToolRender(): void;
13
15
  render(): h.JSX.Element;
14
16
  }
15
17
  export {};