@logicflow/core 0.7.15 → 1.0.0-alpha.10

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.
Files changed (54) hide show
  1. package/README.md +1 -1
  2. package/dist/logic-flow.js +2 -11
  3. package/dist/style/index.css +1 -1
  4. package/package.json +6 -3
  5. package/types/LogicFlow.d.ts +341 -137
  6. package/types/constant/DefaultTheme.d.ts +260 -171
  7. package/types/constant/constant.d.ts +7 -1
  8. package/types/keyboard/index.d.ts +1 -5
  9. package/types/model/BaseModel.d.ts +60 -1
  10. package/types/model/EditConfigModel.d.ts +6 -16
  11. package/types/model/GraphModel.d.ts +279 -63
  12. package/types/model/SnaplineModel.d.ts +6 -2
  13. package/types/model/TransformModel.d.ts +8 -2
  14. package/types/model/edge/BaseEdgeModel.d.ts +92 -43
  15. package/types/model/edge/BezierEdgeModel.d.ts +10 -2
  16. package/types/model/edge/LineEdgeModel.d.ts +6 -1
  17. package/types/model/edge/PolylineEdgeModel.d.ts +8 -3
  18. package/types/model/node/BaseNodeModel.d.ts +113 -48
  19. package/types/model/node/CircleNodeModel.d.ts +12 -4
  20. package/types/model/node/DiamondNodeModel.d.ts +7 -4
  21. package/types/model/node/EllipseNodeModel.d.ts +6 -2
  22. package/types/model/node/HtmlNodeModel.d.ts +0 -2
  23. package/types/model/node/PolygonNodeModel.d.ts +11 -2
  24. package/types/model/node/RectNodeModel.d.ts +9 -2
  25. package/types/model/node/TextNodeModel.d.ts +8 -4
  26. package/types/options.d.ts +78 -12
  27. package/types/type/index.d.ts +50 -37
  28. package/types/util/edge.d.ts +3 -3
  29. package/types/util/graph.d.ts +1 -1
  30. package/types/util/node.d.ts +1 -1
  31. package/types/util/theme.d.ts +2 -173
  32. package/types/view/Anchor.d.ts +0 -2
  33. package/types/view/Graph.d.ts +1 -3
  34. package/types/view/basic-shape/Path.d.ts +1 -9
  35. package/types/view/basic-shape/Rect.d.ts +1 -5
  36. package/types/view/behavior/DnD.d.ts +0 -4
  37. package/types/view/edge/AdjustPoint.d.ts +1 -3
  38. package/types/view/edge/Arrow.d.ts +3 -3
  39. package/types/view/edge/BaseEdge.d.ts +2 -20
  40. package/types/view/edge/BezierEdge.d.ts +0 -12
  41. package/types/view/edge/LineEdge.d.ts +0 -13
  42. package/types/view/edge/PolylineEdge.d.ts +0 -12
  43. package/types/view/node/BaseNode.d.ts +1 -36
  44. package/types/view/node/CircleNode.d.ts +0 -37
  45. package/types/view/node/DiamondNode.d.ts +0 -37
  46. package/types/view/node/EllipseNode.d.ts +0 -26
  47. package/types/view/node/HtmlNode.d.ts +20 -0
  48. package/types/view/node/PolygonNode.d.ts +1 -19
  49. package/types/view/node/RectNode.d.ts +0 -37
  50. package/types/view/node/TextNode.d.ts +1 -0
  51. package/types/view/overlay/BackgroundOverlay.d.ts +18 -29
  52. package/types/view/overlay/CanvasOverlay.d.ts +0 -2
  53. package/types/view/overlay/OutlineOverlay.d.ts +1 -1
  54. package/types/view/text/BaseText.d.ts +0 -2
@@ -88,9 +88,9 @@ export declare type IBezierPoints = {
88
88
  export declare const getBezierPoints: (path: string) => Point[];
89
89
  export declare const getEndTangent: (path: string) => Point[];
90
90
  /**
91
- * 获取移动连线后,文本位置距离连线上的最近的一点
92
- * @param point 连线上文本的位置
93
- * @param points 连线的各个拐点
91
+ * 获取移动边后,文本位置距离边上的最近的一点
92
+ * @param point 边上文本的位置
93
+ * @param points 边的各个拐点
94
94
  */
95
95
  export declare const getClosestPointOfPolyline: (point: Point, points: string) => Point;
96
96
  export declare const pickEdgeConfig: (data: any) => EdgeConfig;
@@ -9,4 +9,4 @@ export declare const isPointInArea: ([x, y]: [any, any], [leftTopX, leftTopY]: [
9
9
  /**
10
10
  * 判断鼠标点击选中元素的时候,是否为多选
11
11
  */
12
- export declare const isMultipleSelect: (e: MouseEvent, editConfig: any) => boolean;
12
+ export declare const isMultipleSelect: (e: MouseEvent, editConfigModel: any) => boolean;
@@ -58,7 +58,7 @@ export declare const getSvgTextWidthHeight: ({ rows, rowsLength, fontSize }: {
58
58
  height: number;
59
59
  };
60
60
  /**
61
- * @description 格式化连线校验信息
61
+ * @description 格式化边校验信息
62
62
  */
63
63
  export declare const formateAnchorConnectValidateData: (data: any) => any;
64
64
  export {};
@@ -1,173 +1,2 @@
1
- export declare const updateTheme: (style: any) => {
2
- rect: {
3
- width: number;
4
- height: number;
5
- radius: number;
6
- fill: string;
7
- stroke: string;
8
- strokeWidth: number;
9
- fillOpacity: number;
10
- strokeOpacity: number;
11
- opacity: number;
12
- outlineColor: string;
13
- outlineStrokeDashArray: string;
14
- hoverOutlineColor: string;
15
- hoverOutlineStrokeDashArray: string;
16
- };
17
- circle: {
18
- r: number;
19
- fill: string;
20
- stroke: string;
21
- strokeWidth: number;
22
- fillOpacity: number;
23
- strokeOpacity: number;
24
- opacity: number;
25
- outlineColor: string;
26
- outlineStrokeDashArray: string;
27
- hoverOutlineColor: string;
28
- hoverOutlineStrokeDashArray: string;
29
- };
30
- diamond: {
31
- rx: number;
32
- ry: number;
33
- fill: string;
34
- stroke: string;
35
- strokeWidth: number;
36
- fillOpacity: number;
37
- strokeOpacity: number;
38
- opacity: number;
39
- outlineColor: string;
40
- outlineStrokeDashArray: string;
41
- hoverOutlineColor: string;
42
- hoverOutlineStrokeDashArray: string;
43
- };
44
- ellipse: {
45
- rx: number;
46
- ry: number;
47
- fill: string;
48
- stroke: string;
49
- strokeWidth: number;
50
- fillOpacity: number;
51
- strokeOpacity: number;
52
- opacity: number;
53
- outlineColor: string;
54
- outlineStrokeDashArray: string;
55
- hoverOutlineColor: string;
56
- hoverOutlineStrokeDashArray: string;
57
- };
58
- polygon: {
59
- fill: string;
60
- stroke: string;
61
- strokeWidth: number;
62
- fillOpacity: number;
63
- strokeOpacity: number;
64
- opacity: number;
65
- outlineColor: string;
66
- outlineStrokeDashArray: string;
67
- hoverOutlineColor: string;
68
- hoverOutlineStrokeDashArray: string;
69
- };
70
- anchor: {
71
- stroke: string;
72
- strokeWidth: number;
73
- r: number;
74
- fill: string;
75
- fillOpacity: number;
76
- strokeOpacity: number;
77
- opacity: number;
78
- outlineColor: string;
79
- outlineStrokeDashArray: string;
80
- hoverOutlineColor: string;
81
- hoverOutlineStrokeDashArray: string;
82
- };
83
- text: {
84
- color: string;
85
- fontSize: number;
86
- fontWeight: string;
87
- fontFamily: string;
88
- };
89
- nodeText: {
90
- autoWrap: boolean;
91
- lineHeight: number;
92
- wrapPadding: string;
93
- color: string;
94
- fontSize: number;
95
- fontWeight: string;
96
- fontFamily: string;
97
- };
98
- edgeText: {
99
- color: string;
100
- fontSize: number;
101
- fontWeight: string;
102
- fontFamily: string;
103
- background: {
104
- fill: string;
105
- height: number;
106
- stroke: string;
107
- radius: number;
108
- };
109
- hoverBackground: any;
110
- autoWrap: boolean;
111
- lineHeight: number;
112
- wrapPadding: string;
113
- };
114
- line: {
115
- stroke: string;
116
- strokeWidth: number;
117
- hoverStroke: string;
118
- selectedStroke: string;
119
- strokeDashArray: string;
120
- outlineColor: string;
121
- outlineStrokeDashArray: string;
122
- };
123
- polyline: {
124
- offset: number;
125
- stroke: string;
126
- strokeWidth: number;
127
- hoverStroke: string;
128
- selectedStroke: string;
129
- strokeDashArray: string;
130
- outlineColor: string;
131
- outlineStrokeDashArray: string;
132
- };
133
- bezier: {
134
- offset: number;
135
- adjustLineColor: string;
136
- adjustAnchorStroke: string;
137
- adjustAnchorFill: string;
138
- adjustAnchorFillOpacity: number;
139
- stroke: string;
140
- strokeWidth: number;
141
- hoverStroke: string;
142
- selectedStroke: string;
143
- strokeDashArray: string;
144
- outlineColor: string;
145
- outlineStrokeDashArray: string;
146
- };
147
- arrow: {
148
- offset: number;
149
- verticalLength: number;
150
- };
151
- anchorLine: {
152
- stroke: string;
153
- strokeWidth: number;
154
- strokeDasharray: string;
155
- };
156
- anchorHover: {
157
- fill: string;
158
- fillOpacity: number;
159
- stroke: string;
160
- strokeWidth: number;
161
- r: number;
162
- };
163
- snapline: {
164
- stroke: string;
165
- strokeWidth: number;
166
- };
167
- edgeAdjust: {
168
- r: number;
169
- fill: string;
170
- stroke: string;
171
- strokeWidth: string;
172
- };
173
- };
1
+ import { Theme } from '../constant/DefaultTheme';
2
+ export declare const updateTheme: (style: Theme) => Theme;
@@ -1,7 +1,6 @@
1
1
  import { h, Component } from 'preact';
2
2
  import BaseNodeModel, { ConnectRuleResult } from '../model/node/BaseNodeModel';
3
3
  import GraphModel from '../model/GraphModel';
4
- import EventEmitter from '../event/eventEmitter';
5
4
  import { AnchorConfig } from '../type';
6
5
  declare type TargetNodeId = string;
7
6
  interface IProps {
@@ -13,7 +12,6 @@ interface IProps {
13
12
  hoverStyle?: Record<string, any>;
14
13
  edgeStyle?: Record<string, any>;
15
14
  anchorIndex: number;
16
- eventCenter: EventEmitter;
17
15
  graphModel: GraphModel;
18
16
  nodeModel: BaseNodeModel;
19
17
  nodeDraging: boolean;
@@ -2,7 +2,6 @@ import { Component, h } from 'preact';
2
2
  import GraphModel from '../model/GraphModel';
3
3
  import Tool from '../tool';
4
4
  import * as Options from '../options';
5
- import EventEmitter from '../event/eventEmitter';
6
5
  import DnD from './behavior/DnD';
7
6
  import BaseEdgeModel from '../model/edge/BaseEdgeModel';
8
7
  import BaseNodeModel from '../model/node/BaseNodeModel';
@@ -11,13 +10,12 @@ declare type IProps = {
11
10
  getView: (type: string) => typeof Component;
12
11
  tool: Tool;
13
12
  options: Options.Definition;
14
- eventCenter: EventEmitter;
15
13
  dnd: DnD;
16
14
  snaplineModel: SnaplineModel;
17
15
  graphModel: GraphModel;
18
16
  };
19
17
  declare class Graph extends Component<IProps> {
20
- getComponent(model: BaseEdgeModel | BaseNodeModel, graphModel: GraphModel, eventCenter: EventEmitter, overlay?: string): h.JSX.Element;
18
+ getComponent(model: BaseEdgeModel | BaseNodeModel, graphModel: GraphModel, overlay?: string): h.JSX.Element;
21
19
  render(): h.JSX.Element;
22
20
  }
23
21
  export default Graph;
@@ -1,15 +1,7 @@
1
1
  import { h } from 'preact';
2
2
  declare type IProps = {
3
3
  d: string;
4
- strokeWidth: number;
5
- stroke: string;
6
- fill: string;
7
- strokeDasharray?: string;
4
+ [key: string]: any;
8
5
  };
9
6
  declare function Path(props: IProps): h.JSX.Element;
10
- declare namespace Path {
11
- var defaultProps: {
12
- strokeDasharray: string;
13
- };
14
- }
15
7
  export default Path;
@@ -3,16 +3,12 @@ import * as type from '../../type';
3
3
  declare type IProps = {
4
4
  className?: string;
5
5
  radius?: number;
6
- stroke?: string;
7
- strokeDasharray?: string;
8
6
  } & type.Point & type.Size;
9
7
  declare function Rect(props: IProps): h.JSX.Element;
10
8
  declare namespace Rect {
11
9
  var defaultProps: {
12
- radius: number;
13
- stroke: string;
14
- strokeDasharray: string;
15
10
  className: string;
11
+ radius: string;
16
12
  };
17
13
  }
18
14
  export default Rect;
@@ -1,9 +1,6 @@
1
1
  import LogicFlow from '../../LogicFlow';
2
2
  import { BaseNodeModel } from '../../model';
3
3
  import { TextConfig } from '../../type';
4
- export declare type DndOptions = {
5
- validate: () => boolean;
6
- };
7
4
  export declare type NewNodeConfig = {
8
5
  type: string;
9
6
  text?: TextConfig | string;
@@ -12,7 +9,6 @@ export declare type NewNodeConfig = {
12
9
  export default class Dnd {
13
10
  nodeConfig: NewNodeConfig;
14
11
  lf: LogicFlow;
15
- options: DndOptions;
16
12
  fakerNode: BaseNodeModel;
17
13
  constructor(params: any);
18
14
  clientToLocalPoint({ x, y }: {
@@ -1,5 +1,4 @@
1
1
  import { h, Component } from 'preact';
2
- import EventEmitter from '../../event/eventEmitter';
3
2
  import { BaseEdgeModel } from '../../model/edge';
4
3
  import GraphModel from '../../model/GraphModel';
5
4
  import { Point } from '../../type';
@@ -8,7 +7,6 @@ interface IProps {
8
7
  y: number;
9
8
  type: AdjustType;
10
9
  id?: string;
11
- eventCenter: EventEmitter;
12
10
  graphModel: GraphModel;
13
11
  edgeModel: BaseEdgeModel;
14
12
  }
@@ -37,7 +35,7 @@ export default class AdjustPoint extends Component<IProps, IState> {
37
35
  }) => void;
38
36
  onDragEnd: () => void;
39
37
  recoveryEdge: () => void;
40
- getAdjustPointStyle: () => any;
38
+ getAdjustPointStyle: () => import("../../constant/DefaultTheme").CircleTheme;
41
39
  render(): h.JSX.Element;
42
40
  }
43
41
  export {};
@@ -1,8 +1,8 @@
1
1
  import { h, Component } from 'preact';
2
2
  import { ArrowInfo } from '../../type/index';
3
- declare type ArrowStyle = {
4
- stroke: string;
5
- fill: string;
3
+ export declare type ArrowStyle = {
4
+ stroke?: string;
5
+ fill?: string;
6
6
  strokeWidth?: number;
7
7
  offset: number;
8
8
  verticalLength: number;
@@ -1,39 +1,21 @@
1
1
  import { h, Component } from 'preact';
2
+ import { ArrowStyle } from './Arrow';
2
3
  import BaseEdgeModel from '../../model/edge/BaseEdgeModel';
3
4
  import GraphModel from '../../model/GraphModel';
4
- import EventEmitter from '../../event/eventEmitter';
5
5
  import { ArrowInfo } from '../../type/index';
6
6
  declare type IProps = {
7
7
  model: BaseEdgeModel;
8
8
  graphModel: GraphModel;
9
- eventCenter: EventEmitter;
10
9
  };
11
10
  export default class BaseEdge extends Component<IProps> {
12
11
  startTime: number;
13
12
  contextMenuTime: number;
14
13
  clickTimer: number;
15
- getAttributes(): {
16
- stroke: string;
17
- strokeWidth: number;
18
- strokeOpacity: number;
19
- strokeDashArray: string;
20
- isSelected: boolean;
21
- isHovered: boolean;
22
- hoverStroke: string;
23
- selectedStroke: string;
24
- properties: {};
25
- };
26
14
  getShape(): void;
27
15
  getTextStyle(): void;
28
16
  getText(): "" | h.JSX.Element;
29
17
  getArrowInfo(): ArrowInfo;
30
- getArrowStyle(): {
31
- stroke: string;
32
- strokeWidth: number;
33
- fill: string;
34
- offset: any;
35
- verticalLength: any;
36
- };
18
+ getArrowStyle(): ArrowStyle;
37
19
  getArrow(): h.JSX.Element;
38
20
  getAdjustPoints(): h.JSX.Element;
39
21
  getAppendWidth(): h.JSX.Element;
@@ -2,18 +2,6 @@ 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
- getAttributes(): {
6
- path: string;
7
- stroke: string;
8
- strokeWidth: number;
9
- strokeOpacity: number;
10
- strokeDashArray: string;
11
- isSelected: boolean;
12
- isHovered: boolean;
13
- hoverStroke: string;
14
- selectedStroke: string;
15
- properties: {};
16
- };
17
5
  getEdge(): h.JSX.Element;
18
6
  getShape(): h.JSX.Element;
19
7
  getAppendWidth(): h.JSX.Element;
@@ -1,19 +1,6 @@
1
1
  import { h } from 'preact';
2
2
  import BaseEdge from './BaseEdge';
3
3
  export default class LineEdge extends BaseEdge {
4
- getAttributes(): {
5
- startPoint: any;
6
- endPoint: any;
7
- stroke: string;
8
- strokeWidth: number;
9
- strokeOpacity: number;
10
- strokeDashArray: string;
11
- isSelected: boolean;
12
- isHovered: boolean;
13
- hoverStroke: string;
14
- selectedStroke: string;
15
- properties: {};
16
- };
17
4
  getEdge(): h.JSX.Element;
18
5
  getShape(): h.JSX.Element;
19
6
  getAppendWidth(): h.JSX.Element;
@@ -22,18 +22,6 @@ export default class PolylineEdge extends BaseEdge {
22
22
  onDragEnd: () => void;
23
23
  beforeDragStart: (e: any, appendInfo: any) => void;
24
24
  getIsDraging: () => boolean;
25
- getAttributes(): {
26
- points: string;
27
- stroke: string;
28
- strokeWidth: number;
29
- strokeOpacity: number;
30
- strokeDashArray: string;
31
- isSelected: boolean;
32
- isHovered: boolean;
33
- hoverStroke: string;
34
- selectedStroke: string;
35
- properties: {};
36
- };
37
25
  getEdge(): h.JSX.Element;
38
26
  getShape(): h.JSX.Element;
39
27
  getArrowInfo(): ArrowInfo;
@@ -1,43 +1,15 @@
1
1
  import { h, Component } from 'preact';
2
2
  import GraphModel from '../../model/GraphModel';
3
3
  import BaseNodeModel from '../../model/node/BaseNodeModel';
4
- import EventEmitter from '../../event/eventEmitter';
5
4
  import { StepDrag } from '../../util/drag';
6
5
  declare type IProps = {
7
6
  model: BaseNodeModel;
8
7
  graphModel: GraphModel;
9
- eventCenter: EventEmitter;
10
8
  };
11
9
  declare type Istate = {
12
10
  isHovered: boolean;
11
+ isDraging?: boolean;
13
12
  };
14
- declare type StyleAttribute = {
15
- width: number;
16
- height: number;
17
- fill: string;
18
- fillOpacity?: number;
19
- strokeWidth?: number;
20
- stroke: string;
21
- strokeOpacity?: number;
22
- opacity?: number;
23
- outlineColor?: string;
24
- [key: string]: any;
25
- };
26
- export declare type NodeAttributes = {
27
- id: string;
28
- properties: Record<string, any>;
29
- type: string;
30
- x: number;
31
- y: number;
32
- isSelected: boolean;
33
- isHovered: boolean;
34
- text: {
35
- x: number;
36
- y: number;
37
- value: string;
38
- [key: string]: any;
39
- };
40
- } & StyleAttribute;
41
13
  export default abstract class BaseNode extends Component<IProps, Istate> {
42
14
  static getModel(defaultModel: any): any;
43
15
  stepDrag: StepDrag;
@@ -46,14 +18,7 @@ export default abstract class BaseNode extends Component<IProps, Istate> {
46
18
  clickTimer: number;
47
19
  constructor(props: any);
48
20
  abstract getShape(): any;
49
- getShapeStyle(): StyleAttribute;
50
- getAttributes(): NodeAttributes;
51
- getProperties(): Record<string, any>;
52
- getAnchorStyle(): Record<string, any>;
53
- getAnchorHoverStyle(): Record<string, any>;
54
- getNewEdgeStyle(): Record<string, any>;
55
21
  getAnchors(): h.JSX.Element[];
56
- getTextStyle(): any;
57
22
  getText(): "" | h.JSX.Element;
58
23
  getStateClassName(): string;
59
24
  onDraging: ({ deltaX, deltaY }: {
@@ -1,42 +1,5 @@
1
1
  import { h } from 'preact';
2
2
  import BaseNode from './BaseNode';
3
3
  export default class CircleNode extends BaseNode {
4
- getShapeStyle(): {
5
- r: number;
6
- width: number;
7
- height: number;
8
- fill: string;
9
- fillOpacity?: number;
10
- strokeWidth?: number;
11
- stroke: string;
12
- strokeOpacity?: number;
13
- opacity?: number;
14
- outlineColor?: string;
15
- };
16
- getAttributes(): {
17
- r: number;
18
- width: number;
19
- height: number;
20
- fill: string;
21
- fillOpacity?: number;
22
- strokeWidth?: number;
23
- stroke: string;
24
- strokeOpacity?: number;
25
- opacity?: number;
26
- outlineColor?: string;
27
- id: string;
28
- properties: Record<string, any>;
29
- type: string;
30
- x: number;
31
- y: number;
32
- isSelected: boolean;
33
- isHovered: boolean;
34
- text: {
35
- [key: string]: any;
36
- x: number;
37
- y: number;
38
- value: string;
39
- };
40
- };
41
4
  getShape(): h.JSX.Element;
42
5
  }
@@ -1,42 +1,5 @@
1
1
  import { h } from 'preact';
2
2
  import BaseNode from './BaseNode';
3
3
  export default class DiamondNode extends BaseNode {
4
- getShapeStyle(): {
5
- points: import("../..").PointTuple[];
6
- width: number;
7
- height: number;
8
- fill: string;
9
- fillOpacity?: number;
10
- strokeWidth?: number;
11
- stroke: string;
12
- strokeOpacity?: number;
13
- opacity?: number;
14
- outlineColor?: string;
15
- };
16
- getAttributes(): {
17
- points: import("../..").PointTuple[];
18
- width: number;
19
- height: number;
20
- fill: string;
21
- fillOpacity?: number;
22
- strokeWidth?: number;
23
- stroke: string;
24
- strokeOpacity?: number;
25
- opacity?: number;
26
- outlineColor?: string;
27
- id: string;
28
- properties: Record<string, any>;
29
- type: string;
30
- x: number;
31
- y: number;
32
- isSelected: boolean;
33
- isHovered: boolean;
34
- text: {
35
- [key: string]: any;
36
- x: number;
37
- y: number;
38
- value: string;
39
- };
40
- };
41
4
  getShape(): h.JSX.Element;
42
5
  }
@@ -1,31 +1,5 @@
1
1
  import { h } from 'preact';
2
2
  import BaseNode from './BaseNode';
3
3
  export default class EllipseNode extends BaseNode {
4
- getAttributes(): {
5
- rx: number;
6
- ry: number;
7
- id: string;
8
- properties: Record<string, any>;
9
- type: string;
10
- x: number;
11
- y: number;
12
- isSelected: boolean;
13
- isHovered: boolean;
14
- text: {
15
- [key: string]: any;
16
- x: number;
17
- y: number;
18
- value: string;
19
- };
20
- width: number;
21
- height: number;
22
- fill: string;
23
- fillOpacity?: number;
24
- strokeWidth?: number;
25
- stroke: string;
26
- strokeOpacity?: number;
27
- opacity?: number;
28
- outlineColor?: string;
29
- };
30
4
  getShape(): h.JSX.Element;
31
5
  }
@@ -2,9 +2,29 @@ import { h } from 'preact';
2
2
  import BaseNode from './BaseNode';
3
3
  export default class HtmlNode extends BaseNode {
4
4
  ref: HTMLElement;
5
+ currrentProperties: string;
5
6
  setRef: (dom: any) => void;
6
7
  get rootEl(): HTMLElement;
8
+ /**
9
+ * @overridable 支持重写
10
+ * 自定义HTML节点内容
11
+ * @param {HTMLElement} rootEl 自定义HTML节点内容可以挂载的dom节点
12
+ * @example
13
+ * class CustomHtmlNode extends HtmlNode {
14
+ * setHtml(rootEl) {
15
+ * const input = document.createElement('input');
16
+ * rootEl.appendChild(input)
17
+ * }
18
+ * }
19
+ */
7
20
  setHtml(rootEl: HTMLElement): void;
21
+ /**
22
+ * @overridable 支持重写
23
+ * 和react的shouldComponentUpdate类似,都是为了避免出发不必要的render.
24
+ * 但是这里不一样的地方在于,setHtml方法,我们只在properties发生变化了后再触发。
25
+ * 而x,y等这些坐标相关的方法发生了变化,不会再重新触发setHtml.
26
+ */
27
+ shouldUpdate(): boolean;
8
28
  componentDidMount(): void;
9
29
  componentDidUpdate(): void;
10
30
  getShape(): h.JSX.Element;
@@ -1,23 +1,5 @@
1
1
  import { h } from 'preact';
2
- import BaseNode, { NodeAttributes } from './BaseNode';
3
- import { PointTuple } from '../../type';
4
- declare type PolygonNodeAttributes = {
5
- points: PointTuple[];
6
- } & NodeAttributes;
2
+ import BaseNode from './BaseNode';
7
3
  export default class PolygonNode extends BaseNode {
8
- getShapeStyle(): {
9
- points: PointTuple[];
10
- width: number;
11
- height: number;
12
- fill: string;
13
- fillOpacity?: number;
14
- strokeWidth?: number;
15
- stroke: string;
16
- strokeOpacity?: number;
17
- opacity?: number;
18
- outlineColor?: string;
19
- };
20
- getAttributes(): PolygonNodeAttributes;
21
4
  getShape(): h.JSX.Element;
22
5
  }
23
- export {};