forked from MrBlenny/react-flow-chart
-
Notifications
You must be signed in to change notification settings - Fork 1
/
chart.ts
76 lines (71 loc) · 1.46 KB
/
chart.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import { IPosition, ISize } from './generics'
export type IChart<
ChartProps = undefined,
NodeProps = undefined,
LinkProps = undefined,
PortProps = undefined
> = {
offset: IPosition
nodes: {
[id: string]: INode<NodeProps, PortProps>;
}
links: {
[id: string]: ILink<LinkProps>;
}
scale: number
/** System Temp */
selected: ISelectedOrHovered
hovered: ISelectedOrHovered,
} & (ChartProps extends undefined ? {
properties?: any,
} : {
properties: ChartProps,
})
export interface ISelectedOrHovered {
type?: 'link' | 'node' | 'port'
id?: string
}
export type INode<NodeProps = undefined, PortProps = undefined> = {
id: string
type: string
position: IPosition
orientation?: number
readonly?: boolean
ports: {
[id: string]: IPort<PortProps>;
}
/** System Temp */
size?: ISize,
} & (NodeProps extends undefined ? {
properties?: any,
} : {
properties: NodeProps,
})
export type IPort<PortProps = undefined> = {
id: string
type: string
value?: string
/** System Temp */
position?: IPosition,
} & (PortProps extends undefined ? {
properties?: any,
} : {
properties: PortProps,
})
export type ILink<LinkProps = undefined> = {
id: string
from: {
nodeId: string
portId: string,
}
to: {
nodeId?: string;
portId?: string;
/** System Temp */
position?: IPosition;
},
} & (LinkProps extends undefined ? {
properties?: any,
} : {
properties: LinkProps,
})