-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreplace-column-align-with-justify-self.js
88 lines (74 loc) · 2.34 KB
/
replace-column-align-with-justify-self.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
import { getSpreadObjectProperty, isLiteral, replaceKey } from "./utils";
const names = {
columnAlignProp: "columnAlign",
justifySelfProp: "justifySelf",
};
export function replaceColumnAlignWithJustifySelf(j, columnNode) {
const spreadAttributes = j(columnNode).find(j.JSXSpreadAttribute);
if (spreadAttributes.size()) {
spreadAttributes.forEach((spreadObject) => {
const columnAlignProperty = getSpreadObjectProperty(j, spreadObject, names.columnAlignProp);
if (!columnAlignProperty) {
return;
}
const typeOfSpreadAttributeObject = spreadObject.get(
"argument",
"type"
).value;
if (typeOfSpreadAttributeObject === "ObjectExpression") {
if (columnAlignProperty.length) {
const columnAlignValue = columnAlignProperty.get(
"value",
"value"
).value;
replaceKey(j, columnAlignProperty, names.justifySelfProp);
columnAlignProperty
.get("value")
.replace(
j.literal(convertColumnAlignToJustifySelf(columnAlignValue))
);
}
}
});
}
const columnAlignAttr = j(columnNode).findJSXAttribute(names.columnAlignProp);
if (columnAlignAttr.length) {
const columnAlignValue = columnAlignAttr.get("value", "value").value;
const columnAlignValueType = columnAlignAttr.get("value", "type").value;
columnAlignAttr.get("name").replace(names.justifySelfProp);
if (isLiteral(columnAlignValueType)) {
columnAlignAttr
.get("value")
.replace(j.literal(convertColumnAlignToJustifySelf(columnAlignValue)));
} else {
const expressionType = columnAlignAttr.get(
"value",
"expression",
"type"
).value;
if (isLiteral(expressionType)) {
const columnAlignExpressionLiteralValue = columnAlignAttr.get(
"value",
"expression",
"value"
).value;
columnAlignAttr.get("value").replace(
j.literal(convertColumnAlignToJustifySelf(columnAlignExpressionLiteralValue))
);
}
}
}
}
function convertColumnAlignToJustifySelf(columnAlign) {
switch (columnAlign) {
case "left":
return "start";
case "right":
return "end";
case "center":
case "middle":
return "center";
default:
return undefined;
}
}