/
get-styles-artboard.js
98 lines (82 loc) · 2.4 KB
/
get-styles-artboard.js
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
const URL = require('url');
const fetch = require('node-fetch');
const headers = new fetch.Headers();
const devToken = process.env.DEV_TOKEN;
headers.append('X-Figma-Token', devToken);
let type = process.argv[3] || 'files';
const getFiles = require('./get-files.js');
const getTeamsStyle = require('./get-teams-style.js')
const getFontStyles = require('./get-font-styles.js');
const getColorPlatte = require('./get-color-platte.js');
const getGrids = require('./get-grids.js');
const getEffect = require('./get-effect.js');
module.exports = async function (key, URLformat) {
let figmaTreeStructure;
let figmaId;
if (type === 'files') {
figmaId = key;
figmaTreeStructure = await getFiles(key, URLformat)
}
if (type === 'teams') {
figmaTreeStructure = await getTeamsStyle(key, URLformat)
}
const { styles } = figmaTreeStructure;
const stylesArr = Array.isArray(styles) ? styles : Object.keys(styles);
const baseTokeensJSON = {
color: {},
size: {
font: {},
grids: {}
},
font: {
family: {},
weight: {},
spacing: {},
lineheight: {}
},
grids: {},
effects: {}
};
for (const item of stylesArr) {
let node_id = item;
const styleType = type === 'files' ? styles[item].styleType : item.style_type;
if (type === 'teams') {
node_id = item.node_id;
figmaId = item.file_key;
}
if (styleType === 'TEXT') {
const fonts = await getFontStyles({
node_id: node_id,
file_key: figmaId
}, URLformat);
Object.assign(baseTokeensJSON.size.font, fonts.size.font);
Object.assign(baseTokeensJSON.font.family, fonts.font.family);
Object.assign(baseTokeensJSON.font.weight, fonts.font.weight);
Object.assign(baseTokeensJSON.font.spacing, fonts.font.spacing);
Object.assign(baseTokeensJSON.font.lineheight, fonts.font.lineheight);
}
if (styleType === 'FILL') {
const color = await getColorPlatte({
node_id: node_id,
file_key: figmaId
}, URLformat);
Object.assign(baseTokeensJSON.color, color);
}
if (styleType === 'GRID') {
const grids = await getGrids({
node_id: node_id,
file_key: figmaId
}, URLformat);
Object.assign(baseTokeensJSON.size.grids, grids.size.grids);
Object.assign(baseTokeensJSON.grids, grids.grids);
}
if (styleType === 'EFFECT') {
const effect = await getEffect({
node_id: node_id,
file_key: figmaId
}, URLformat);
Object.assign(baseTokeensJSON.effects, effect);
}
}
return baseTokeensJSON;
}