@logicflow/core 1.0.0-alpha.2 → 1.0.0-alpha.6

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 +11 -2
  3. package/dist/style/index.css +1 -1
  4. package/package.json +2 -4
  5. package/types/LogicFlow.d.ts +341 -137
  6. package/types/constant/DefaultTheme.d.ts +271 -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 +7 -7
  10. package/types/model/EditConfigModel.d.ts +6 -16
  11. package/types/model/GraphModel.d.ts +262 -53
  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 +36 -11
  15. package/types/model/edge/BezierEdgeModel.d.ts +9 -0
  16. package/types/model/edge/LineEdgeModel.d.ts +6 -0
  17. package/types/model/edge/PolylineEdgeModel.d.ts +7 -0
  18. package/types/model/node/BaseNodeModel.d.ts +40 -19
  19. package/types/model/node/CircleNodeModel.d.ts +7 -2
  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 +6 -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 +84 -10
  27. package/types/type/index.d.ts +29 -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 +0 -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/dist/logic-flow.es.js +0 -74
@@ -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,44 +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
  isDraging: boolean;
13
11
  isHovered: boolean;
14
12
  };
15
- declare type StyleAttribute = {
16
- width: number;
17
- height: number;
18
- fill: string;
19
- fillOpacity?: number;
20
- strokeWidth?: number;
21
- stroke: string;
22
- strokeOpacity?: number;
23
- opacity?: number;
24
- outlineColor?: string;
25
- [key: string]: any;
26
- };
27
- export declare type NodeAttributes = {
28
- id: string;
29
- properties: Record<string, any>;
30
- type: string;
31
- x: number;
32
- y: number;
33
- isSelected: boolean;
34
- isHovered: boolean;
35
- text: {
36
- x: number;
37
- y: number;
38
- value: string;
39
- [key: string]: any;
40
- };
41
- } & StyleAttribute;
42
13
  export default abstract class BaseNode extends Component<IProps, Istate> {
43
14
  static getModel(defaultModel: any): any;
44
15
  stepDrag: StepDrag;
@@ -47,14 +18,7 @@ export default abstract class BaseNode extends Component<IProps, Istate> {
47
18
  clickTimer: number;
48
19
  constructor(props: any);
49
20
  abstract getShape(): any;
50
- getShapeStyle(): StyleAttribute;
51
- getAttributes(): NodeAttributes;
52
- getProperties(): Record<string, any>;
53
- getAnchorStyle(): Record<string, any>;
54
- getAnchorHoverStyle(): Record<string, any>;
55
- getNewEdgeStyle(): Record<string, any>;
56
21
  getAnchors(): h.JSX.Element[];
57
- getTextStyle(): any;
58
22
  getText(): "" | h.JSX.Element;
59
23
  getStateClassName(): string;
60
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 {};
@@ -1,42 +1,5 @@
1
1
  import { h } from 'preact';
2
2
  import BaseNode from './BaseNode';
3
3
  export default class RectNode extends BaseNode {
4
- getShapeStyle(): {
5
- radius: 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
- radius: 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
  }
@@ -2,5 +2,6 @@ import { h } from 'preact';
2
2
  import BaseNode from './BaseNode';
3
3
  export default class TextNode extends BaseNode {
4
4
  getBackgroud(): h.JSX.Element;
5
+ getText(): any;
5
6
  getShape(): h.JSX.Element;
6
7
  }
@@ -1,39 +1,28 @@
1
1
  import { h, Component } from 'preact';
2
+ /**
3
+ * 背景配置, 支持css属性配置
4
+ * https://developer.mozilla.org/zh-CN/docs/Web/CSS/background
5
+ * @example
6
+ * {
7
+ * backgroundImage: "url('./img/grid.svg')",
8
+ backgroundRepeat: 'repeat',
9
+ * }
10
+ */
2
11
  export declare type BackgroundConfig = {
3
- image?: string;
4
- color?: string;
5
- repeat?: string;
6
- position?: string;
7
- size?: string;
8
- opacity?: number;
12
+ /**
13
+ * 背景图片地址
14
+ */
15
+ backgroundImage?: string;
16
+ /**
17
+ * 是否重复
18
+ */
19
+ backgroundRepeat?: string;
20
+ [key: string]: any;
9
21
  };
10
22
  declare type IProps = {
11
23
  background: BackgroundConfig;
12
24
  };
13
25
  export default class BackgroundOverlay extends Component<IProps> {
14
- getAttributes(): {
15
- color: string;
16
- opacity: number;
17
- image: string;
18
- repeat?: undefined;
19
- position?: undefined;
20
- size?: undefined;
21
- } | {
22
- image: string;
23
- repeat: string;
24
- position: string;
25
- size: string;
26
- opacity: number;
27
- color?: undefined;
28
- } | {
29
- color?: undefined;
30
- opacity?: undefined;
31
- image?: undefined;
32
- repeat?: undefined;
33
- position?: undefined;
34
- size?: undefined;
35
- };
36
- getShape(): h.JSX.Element;
37
26
  render(): h.JSX.Element;
38
27
  }
39
28
  export {};
@@ -1,11 +1,9 @@
1
1
  import { h, Component } from 'preact';
2
2
  import GraphModel from '../../model/GraphModel';
3
3
  import { StepDrag } from '../../util/drag';
4
- import EventEmitter from '../../event/eventEmitter';
5
4
  import Dnd from '../behavior/DnD';
6
5
  declare type IProps = {
7
6
  graphModel: GraphModel;
8
- eventCenter: EventEmitter;
9
7
  dnd: Dnd;
10
8
  };
11
9
  declare type Istate = {
@@ -7,7 +7,7 @@ declare type IProps = {
7
7
  graphModel: GraphModel;
8
8
  };
9
9
  export default class OutlineOverlay extends Component<IProps> {
10
- getNodeOutline(): any[];
10
+ getNodesOutline(): any[];
11
11
  getEdgeOutline(): any[];
12
12
  getLineOutline(line: LineEdgeModel): h.JSX.Element;
13
13
  getPolylineOutline(polyline: PolylineEdgeModel): h.JSX.Element;
@@ -1,74 +0,0 @@
1
-
2
- /**
3
- * 由于logicflow本身基于preact、mobx、mobx-react编写。
4
- * 如果导出es module的形式,会在react项目中mobx-react会错误的使用react渲染。
5
- * 所以logicflow暂时不提供完善导出es module形式。
6
- */
7
- import {
8
- LogicFlow,
9
- LogicFlowUtil,
10
- h,
11
- observer,
12
- BaseNode,
13
- RectNode,
14
- CircleNode,
15
- PolygonNode,
16
- DiamondNode,
17
- EllipseNode,
18
- TextNode,
19
- HtmlNode,
20
- BaseEdge,
21
- LineEdge,
22
- PolylineEdge,
23
- BezierEdge,
24
- BaseEdgeModel,
25
- BezierEdgeModel,
26
- LineEdgeModel,
27
- PolylineEdgeModel,
28
- BaseNodeModel,
29
- CircleNodeModel,
30
- DiamondNodeModel,
31
- EllipseNodeModel,
32
- PolygonNodeModel,
33
- RectNodeModel,
34
- TextNodeModel,
35
- HtmlNodeModel,
36
- GraphModel,
37
- Arrow,
38
- Keyboard,
39
- } from './logic-flow';
40
-
41
- export {
42
- LogicFlow,
43
- LogicFlowUtil,
44
- h,
45
- observer,
46
- BaseNode,
47
- RectNode,
48
- CircleNode,
49
- PolygonNode,
50
- DiamondNode,
51
- EllipseNode,
52
- TextNode,
53
- HtmlNode,
54
- BaseEdge,
55
- LineEdge,
56
- PolylineEdge,
57
- BezierEdge,
58
- BaseEdgeModel,
59
- BezierEdgeModel,
60
- LineEdgeModel,
61
- PolylineEdgeModel,
62
- BaseNodeModel,
63
- CircleNodeModel,
64
- DiamondNodeModel,
65
- EllipseNodeModel,
66
- PolygonNodeModel,
67
- RectNodeModel,
68
- TextNodeModel,
69
- HtmlNodeModel,
70
- GraphModel,
71
- Arrow,
72
- Keyboard,
73
- }
74
- export default LogicFlow;