Skip to content

Commit 27d5d38

Browse files
committed
Add JSONCanvas types and interfaces
1 parent 2c4df28 commit 27d5d38

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

src/index.ts

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
export type JSONCanvasColor = string | JSONCanvasColorPreset;
2+
export type JSONCanvasColorPreset = 1 | 2 | 3 | 4 | 5 | 6;
3+
export type JSONCanvasEdgeSide = "top" | "right" | "bottom" | "left";
4+
export type JSONCanvasEdgeEnd = "none" | "arrow";
5+
export type JSONCanvasNode =
6+
| JSONCanvasNodeType
7+
| JSONCanvasTextNode
8+
| JSONCanvasFileNode
9+
| JSONCanvasLinkNode
10+
| JSONCanvasGroupNode;
11+
12+
export interface JsonCanvas {
13+
required?: true;
14+
edges?: JSONCanvasEdge[];
15+
nodes?: JSONCanvasNode[];
16+
[k: string]: unknown;
17+
}
18+
export interface JSONCanvasEdge {
19+
color?: JSONCanvasColor;
20+
fromNode: string;
21+
fromSide?: JSONCanvasEdgeSide;
22+
id: string;
23+
label?: string;
24+
toEnd?: JSONCanvasEdgeEnd;
25+
toNode: string;
26+
toSide?: JSONCanvasEdgeSide;
27+
}
28+
export interface JSONCanvasNodeType {
29+
color?: JSONCanvasColor;
30+
height: number;
31+
id: string;
32+
type: "text" | "file" | "link" | "group";
33+
width: number;
34+
x: number;
35+
y: number;
36+
}
37+
export interface JSONCanvasTextNode {
38+
color?: JSONCanvasColor;
39+
height: number;
40+
id: string;
41+
text: string;
42+
type: "text";
43+
width: number;
44+
x: number;
45+
y: number;
46+
}
47+
export interface JSONCanvasFileNode {
48+
color?: JSONCanvasColor;
49+
file: string;
50+
height: number;
51+
id: string;
52+
subpath?: string;
53+
type: "file";
54+
width: number;
55+
x: number;
56+
y: number;
57+
}
58+
export interface JSONCanvasLinkNode {
59+
color?: JSONCanvasColor;
60+
height: number;
61+
id: string;
62+
type: "link";
63+
url: string;
64+
width: number;
65+
x: number;
66+
y: number;
67+
}
68+
export interface JSONCanvasGroupNode {
69+
background?: string;
70+
backgroundStyle?: "cover" | "ratio" | "repeat";
71+
color?: JSONCanvasColor;
72+
height: number;
73+
id: string;
74+
label?: string;
75+
type: "group";
76+
width: number;
77+
x: number;
78+
y: number;
79+
}

0 commit comments

Comments
 (0)