@mui/codemod 6.0.0-alpha.8 → 6.0.0-beta.0
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.
- package/README.md +609 -180
- package/codemod.js +0 -2
- package/node/deprecations/all/deprecations-all.js +34 -22
- package/node/deprecations/all/postcss.config.js +7 -1
- package/node/deprecations/autocomplete-props/autocomplete-props.js +0 -32
- package/node/deprecations/autocomplete-props/test-cases/actual.js +13 -35
- package/node/deprecations/autocomplete-props/test-cases/expected.js +13 -41
- package/node/deprecations/autocomplete-props/test-cases/theme.actual.js +0 -18
- package/node/deprecations/autocomplete-props/test-cases/theme.expected.js +0 -22
- package/node/deprecations/avatar-group-props/avatar-group-props.js +87 -0
- package/node/deprecations/avatar-group-props/index.js +13 -0
- package/node/deprecations/avatar-group-props/test-cases/actual.js +56 -0
- package/node/deprecations/avatar-group-props/test-cases/expected.js +58 -0
- package/node/deprecations/avatar-group-props/test-cases/theme.actual.js +48 -0
- package/node/deprecations/avatar-group-props/test-cases/theme.expected.js +50 -0
- package/node/deprecations/backdrop-props/backdrop-props.js +3 -5
- package/node/deprecations/backdrop-props/test-cases/actual.js +30 -14
- package/node/deprecations/backdrop-props/test-cases/expected.js +23 -13
- package/node/deprecations/backdrop-props/test-cases/theme.actual.js +32 -6
- package/node/deprecations/backdrop-props/test-cases/theme.expected.js +27 -5
- package/node/deprecations/filled-input-props/filled-input-props.js +22 -0
- package/node/deprecations/filled-input-props/index.js +13 -0
- package/node/deprecations/filled-input-props/test-cases/actual.js +60 -0
- package/node/deprecations/filled-input-props/test-cases/expected.js +52 -0
- package/node/deprecations/filled-input-props/test-cases/theme.actual.js +73 -0
- package/node/deprecations/filled-input-props/test-cases/theme.expected.js +65 -0
- package/node/deprecations/grid-props/grid-props.js +51 -0
- package/node/deprecations/grid-props/index.js +13 -0
- package/node/deprecations/grid-props/test-cases/actual.js +25 -0
- package/node/deprecations/grid-props/test-cases/expected.js +23 -0
- package/node/deprecations/grid-props/test-cases/theme.actual.js +24 -0
- package/node/deprecations/grid-props/test-cases/theme.expected.js +23 -0
- package/node/deprecations/input-base-props/index.js +13 -0
- package/node/deprecations/input-base-props/input-base-props.js +22 -0
- package/node/deprecations/input-base-props/test-cases/actual.js +60 -0
- package/node/deprecations/input-base-props/test-cases/expected.js +52 -0
- package/node/deprecations/input-base-props/test-cases/theme.actual.js +73 -0
- package/node/deprecations/input-base-props/test-cases/theme.expected.js +65 -0
- package/node/deprecations/input-props/index.js +13 -0
- package/node/deprecations/input-props/input-props.js +22 -0
- package/node/deprecations/input-props/test-cases/actual.js +60 -0
- package/node/deprecations/input-props/test-cases/expected.js +52 -0
- package/node/deprecations/input-props/test-cases/theme.actual.js +73 -0
- package/node/deprecations/input-props/test-cases/theme.expected.js +65 -0
- package/node/deprecations/list-item-props/index.js +13 -0
- package/node/deprecations/list-item-props/list-item-props.js +22 -0
- package/node/deprecations/list-item-props/test-cases/actual.js +43 -0
- package/node/deprecations/list-item-props/test-cases/expected.js +40 -0
- package/node/deprecations/list-item-props/test-cases/theme.actual.js +56 -0
- package/node/deprecations/list-item-props/test-cases/theme.expected.js +53 -0
- package/node/deprecations/modal-props/index.js +13 -0
- package/node/deprecations/modal-props/modal-props.js +22 -0
- package/node/deprecations/modal-props/test-cases/actual.js +43 -0
- package/node/deprecations/modal-props/test-cases/expected.js +40 -0
- package/node/deprecations/modal-props/test-cases/theme.actual.js +56 -0
- package/node/deprecations/modal-props/test-cases/theme.expected.js +53 -0
- package/node/deprecations/outlined-input-props/index.js +13 -0
- package/node/deprecations/outlined-input-props/outlined-input-props.js +22 -0
- package/node/deprecations/outlined-input-props/test-cases/actual.js +60 -0
- package/node/deprecations/outlined-input-props/test-cases/expected.js +52 -0
- package/node/deprecations/outlined-input-props/test-cases/theme.actual.js +73 -0
- package/node/deprecations/outlined-input-props/test-cases/theme.expected.js +65 -0
- package/node/deprecations/popper-props/index.js +13 -0
- package/node/deprecations/popper-props/popper-props.js +22 -0
- package/node/deprecations/popper-props/test-cases/actual.js +27 -0
- package/node/deprecations/popper-props/test-cases/expected.js +24 -0
- package/node/deprecations/popper-props/test-cases/theme.actual.js +32 -0
- package/node/deprecations/popper-props/test-cases/theme.expected.js +29 -0
- package/node/deprecations/step-label-props/step-label-props.js +0 -14
- package/node/deprecations/step-label-props/test-cases/actual.js +0 -23
- package/node/deprecations/step-label-props/test-cases/expected.js +0 -27
- package/node/deprecations/step-label-props/test-cases/theme.actual.js +0 -22
- package/node/deprecations/step-label-props/test-cases/theme.expected.js +0 -28
- package/node/deprecations/tab-classes/index.js +13 -0
- package/node/deprecations/tab-classes/postcss-plugin.js +30 -0
- package/node/deprecations/tab-classes/postcss.config.js +8 -0
- package/node/deprecations/tab-classes/tab-classes.js +53 -0
- package/node/deprecations/tab-classes/test-cases/actual.js +5 -0
- package/node/deprecations/tab-classes/test-cases/expected.js +5 -0
- package/node/deprecations/table-sort-label-classes/index.js +13 -0
- package/node/deprecations/table-sort-label-classes/postcss-plugin.js +33 -0
- package/node/deprecations/table-sort-label-classes/postcss.config.js +8 -0
- package/node/deprecations/table-sort-label-classes/table-sort-label-classes.js +77 -0
- package/node/deprecations/table-sort-label-classes/test-cases/actual.js +7 -0
- package/node/deprecations/table-sort-label-classes/test-cases/expected.js +7 -0
- package/node/deprecations/tooltip-props/index.js +13 -0
- package/node/deprecations/tooltip-props/test-cases/actual.js +92 -0
- package/node/deprecations/tooltip-props/test-cases/expected.js +84 -0
- package/node/deprecations/tooltip-props/test-cases/theme.actual.js +73 -0
- package/node/deprecations/tooltip-props/test-cases/theme.expected.js +65 -0
- package/node/deprecations/tooltip-props/tooltip-props.js +22 -0
- package/node/util/migrateToVariants.js +244 -138
- package/node/v5.0.0/theme-spacing.test/large-actual.js +1 -1
- package/node/v5.0.0/theme-spacing.test/large-expected.js +1 -1
- package/node/v6.0.0/grid-v2-props/grid-v2-props.js +149 -0
- package/node/v6.0.0/grid-v2-props/index.js +13 -0
- package/node/v6.0.0/grid-v2-props/test-cases/actual.js +85 -0
- package/node/v6.0.0/grid-v2-props/test-cases/custom-breakpoints.actual.js +18 -0
- package/node/v6.0.0/grid-v2-props/test-cases/custom-breakpoints.expected.js +22 -0
- package/node/v6.0.0/grid-v2-props/test-cases/expected.js +97 -0
- package/node/v6.0.0/styled/test-cases/ConditionalStyled.expected.js +9 -22
- package/node/v6.0.0/styled/test-cases/DynamicPropsStyled.actual.js +39 -0
- package/node/v6.0.0/styled/test-cases/DynamicPropsStyled.expected.js +65 -0
- package/node/v6.0.0/styled/test-cases/LogicalStyled.actual.js +31 -1
- package/node/v6.0.0/styled/test-cases/LogicalStyled.expected.js +39 -1
- package/node/v6.0.0/styled/test-cases/NestedSpread.expected.js +11 -13
- package/node/v6.0.0/sx-prop/index.js +13 -0
- package/node/v6.0.0/sx-prop/sx-v6.js +405 -0
- package/node/v6.0.0/sx-prop/test-cases/basic-sx.actual.js +36 -0
- package/node/v6.0.0/sx-prop/test-cases/basic-sx.expected.js +46 -0
- package/node/v6.0.0/sx-prop/test-cases/sx-css-vars.actual.js +55 -0
- package/node/v6.0.0/sx-prop/test-cases/sx-css-vars.expected.js +88 -0
- package/node/v6.0.0/sx-prop/test-cases/sx-dynamic.actual.js +107 -0
- package/node/v6.0.0/sx-prop/test-cases/sx-dynamic.expected.js +120 -0
- package/node/v6.0.0/sx-prop/test-cases/sx-dynamic2.actual.js +49 -0
- package/node/v6.0.0/sx-prop/test-cases/sx-dynamic2.expected.js +64 -0
- package/node/v6.0.0/sx-prop/test-cases/sx-line-break.actual.js +69 -0
- package/node/v6.0.0/sx-prop/test-cases/sx-line-break.expected.js +69 -0
- package/node/v6.0.0/sx-prop/test-cases/sx-value-callback.actual.js +102 -0
- package/node/v6.0.0/sx-prop/test-cases/sx-value-callback.expected.js +111 -0
- package/node/v6.0.0/system-props/index.js +13 -0
- package/node/v6.0.0/system-props/removeSystemProps.js +242 -0
- package/node/v6.0.0/system-props/test-cases/system-props.actual.js +79 -0
- package/node/v6.0.0/system-props/test-cases/system-props.expected.js +92 -0
- package/node/v6.0.0/theme-v6/theme-v6.js +2 -2
- package/package.json +7 -7
|
@@ -4,87 +4,173 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = migrateToVariants;
|
|
7
|
+
exports.getCreateBuildStyle = exports.getBuildArrowFunctionAST = exports.getAppendPaletteModeStyles = void 0;
|
|
8
|
+
exports.getIdentifierKey = getIdentifierKey;
|
|
9
|
+
exports.getObjectKey = getObjectKey;
|
|
10
|
+
exports.getObjectToArrowFunction = void 0;
|
|
11
|
+
exports.isThemePaletteMode = isThemePaletteMode;
|
|
12
|
+
exports.removeProperty = removeProperty;
|
|
7
13
|
const MAX_DEPTH = 20;
|
|
14
|
+
|
|
8
15
|
/**
|
|
9
|
-
*
|
|
10
16
|
* @param {import('jscodeshift').API['j']} j
|
|
11
|
-
* @
|
|
17
|
+
* @returns
|
|
12
18
|
*/
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (key) {
|
|
20
|
-
|
|
21
|
-
return upperBuildStyle(j.objectExpression([j.objectProperty(key, styleExpression)]));
|
|
22
|
-
}
|
|
23
|
-
if (key.type === 'TemplateLiteral' || key.type === 'CallExpression') {
|
|
24
|
-
return upperBuildStyle(j.objectExpression([{
|
|
25
|
-
...j.objectProperty(key, styleExpression),
|
|
26
|
-
computed: true
|
|
27
|
-
}]));
|
|
28
|
-
}
|
|
19
|
+
const getCreateBuildStyle = j => function createBuildStyle(key, upperBuildStyle, applyStylesMode) {
|
|
20
|
+
if (applyStylesMode) {
|
|
21
|
+
upperBuildStyle = styleExpression => j.objectExpression([j.spreadElement(j.callExpression(j.memberExpression(j.identifier('theme'), j.identifier('applyStyles')), [j.stringLiteral(applyStylesMode), styleExpression]))]);
|
|
22
|
+
}
|
|
23
|
+
return function buildStyle(styleExpression) {
|
|
24
|
+
if (key) {
|
|
25
|
+
if (key.type === 'Identifier' || key.type === 'StringLiteral') {
|
|
26
|
+
return upperBuildStyle(j.objectExpression([j.objectProperty(key, styleExpression)]));
|
|
29
27
|
}
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
if (key.type === 'TemplateLiteral' || key.type === 'CallExpression') {
|
|
29
|
+
return upperBuildStyle(j.objectExpression([{
|
|
30
|
+
...j.objectProperty(key, styleExpression),
|
|
31
|
+
computed: true
|
|
32
|
+
}]));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return upperBuildStyle ? upperBuildStyle(styleExpression) : styleExpression;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @param {import('jscodeshift').API['j']} j
|
|
41
|
+
*/
|
|
42
|
+
exports.getCreateBuildStyle = getCreateBuildStyle;
|
|
43
|
+
const getAppendPaletteModeStyles = j =>
|
|
44
|
+
/**
|
|
45
|
+
*
|
|
46
|
+
* @param {{ properties: any[] }} node
|
|
47
|
+
* @param {Record<string, any[] | import('jscodeshift').ObjectExpression>} modeStyles
|
|
48
|
+
*/
|
|
49
|
+
function appendPaletteModeStyles(node, modeStyles) {
|
|
50
|
+
Object.entries(modeStyles).forEach(([mode, objectStyles]) => {
|
|
51
|
+
node.properties.push(j.spreadElement(j.callExpression(j.memberExpression(j.identifier('theme'), j.identifier('applyStyles')), [j.stringLiteral(mode), Array.isArray(objectStyles) ? j.objectExpression(objectStyles) : objectStyles])));
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
*
|
|
57
|
+
* @param {import('jscodeshift').MemberExpression | import('jscodeshift').Identifier} node
|
|
58
|
+
*/
|
|
59
|
+
exports.getAppendPaletteModeStyles = getAppendPaletteModeStyles;
|
|
60
|
+
function getIdentifierKey(node) {
|
|
61
|
+
if (node.type === 'MemberExpression') {
|
|
62
|
+
return node.property;
|
|
32
63
|
}
|
|
64
|
+
return node;
|
|
65
|
+
}
|
|
33
66
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
67
|
+
/**
|
|
68
|
+
*
|
|
69
|
+
* @param {import('jscodeshift').UnaryExpression | import('jscodeshift').MemberExpression | import('jscodeshift').Identifier} node
|
|
70
|
+
*/
|
|
71
|
+
function getObjectKey(node) {
|
|
72
|
+
let tempNode = {
|
|
73
|
+
...node
|
|
74
|
+
};
|
|
75
|
+
while (tempNode.type === 'UnaryExpression') {
|
|
76
|
+
tempNode = tempNode.argument;
|
|
43
77
|
}
|
|
78
|
+
while (tempNode.type === 'MemberExpression' || tempNode.type === 'OptionMemberExpression') {
|
|
79
|
+
tempNode = tempNode.object;
|
|
80
|
+
}
|
|
81
|
+
return tempNode;
|
|
82
|
+
}
|
|
44
83
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
while (tempNode.type === 'UnaryExpression') {
|
|
54
|
-
tempNode = tempNode.argument;
|
|
55
|
-
}
|
|
56
|
-
while (tempNode.type === 'MemberExpression') {
|
|
57
|
-
tempNode = tempNode.object;
|
|
84
|
+
/**
|
|
85
|
+
*
|
|
86
|
+
* @param {import('jscodeshift').ObjectExpression} node
|
|
87
|
+
*/
|
|
88
|
+
function removeProperty(parentNode, child) {
|
|
89
|
+
if (parentNode) {
|
|
90
|
+
if (parentNode.type === 'ObjectExpression') {
|
|
91
|
+
parentNode.properties = parentNode.properties.filter(prop => prop !== child && prop.value !== child);
|
|
58
92
|
}
|
|
59
|
-
return tempNode;
|
|
60
93
|
}
|
|
94
|
+
}
|
|
61
95
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
96
|
+
/**
|
|
97
|
+
* @param {import('jscodeshift').API['j']} j
|
|
98
|
+
*/
|
|
99
|
+
const getBuildArrowFunctionAST = j =>
|
|
100
|
+
/**
|
|
101
|
+
*
|
|
102
|
+
* @param {Set<string> | import('jscodeshift').Expression[]} params
|
|
103
|
+
* @param {import('jscodeshift').BlockStatement} body
|
|
104
|
+
* @returns
|
|
105
|
+
*/
|
|
106
|
+
function buildArrowFunctionAST(params, body) {
|
|
107
|
+
const destructured = [...params].every(param => typeof param === 'string');
|
|
108
|
+
return j.arrowFunctionExpression(destructured ? [j.objectPattern([...params].map(k => ({
|
|
109
|
+
...j.objectProperty(j.identifier(k), j.identifier(k)),
|
|
110
|
+
shorthand: true
|
|
111
|
+
})))] : params, body);
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @param {import('jscodeshift').API['j']} j
|
|
116
|
+
*/
|
|
117
|
+
exports.getBuildArrowFunctionAST = getBuildArrowFunctionAST;
|
|
118
|
+
const getObjectToArrowFunction = j => {
|
|
119
|
+
const buildArrowFunctionAST = getBuildArrowFunctionAST(j);
|
|
120
|
+
return (
|
|
121
|
+
/**
|
|
122
|
+
*
|
|
123
|
+
* @param {import('jscodeshift').ObjectExpression} objectExpression
|
|
124
|
+
* @param {import('jscodeshift').BinaryExpression} addtional
|
|
125
|
+
*/
|
|
126
|
+
function objectToArrowFunction(objectExpression, addtional) {
|
|
127
|
+
const paramKeys = new Set();
|
|
128
|
+
let left;
|
|
129
|
+
objectExpression.properties.forEach((prop, index) => {
|
|
130
|
+
paramKeys.add(prop.key.name);
|
|
131
|
+
const result = j.binaryExpression('===', prop.key, prop.value);
|
|
132
|
+
if (index === 0) {
|
|
133
|
+
left = result;
|
|
134
|
+
} else {
|
|
135
|
+
left = j.logicalExpression('&&', left, result);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
if (addtional) {
|
|
139
|
+
paramKeys.add(getObjectKey(addtional.left).name);
|
|
77
140
|
}
|
|
78
|
-
|
|
79
|
-
if (addtional) {
|
|
80
|
-
paramKeys.add(getObjectKey(addtional.left).name);
|
|
141
|
+
return buildArrowFunctionAST(paramKeys, addtional ? j.logicalExpression('&&', left, addtional) : left);
|
|
81
142
|
}
|
|
82
|
-
|
|
83
|
-
|
|
143
|
+
);
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
*
|
|
148
|
+
* @param {undefined | null | import('jscodeshift').Expression} node
|
|
149
|
+
*/
|
|
150
|
+
exports.getObjectToArrowFunction = getObjectToArrowFunction;
|
|
151
|
+
function isThemePaletteMode(node) {
|
|
152
|
+
return (node == null ? void 0 : node.type) === 'MemberExpression' && node.object.type === 'MemberExpression' && node.object.object.name === 'theme' && node.object.property.name === 'palette' && node.property.name === 'mode';
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
*
|
|
157
|
+
* @param {import('jscodeshift').API['j']} j
|
|
158
|
+
* @param {any[]} styles
|
|
159
|
+
*/
|
|
160
|
+
function migrateToVariants(j, styles) {
|
|
161
|
+
const createBuildStyle = getCreateBuildStyle(j);
|
|
162
|
+
const appendPaletteModeStyles = getAppendPaletteModeStyles(j);
|
|
163
|
+
const buildArrowFunctionAST = getBuildArrowFunctionAST(j);
|
|
164
|
+
const objectToArrowFunction = getObjectToArrowFunction(j);
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* A map of used variable with its original name
|
|
168
|
+
*/
|
|
169
|
+
const parameterMap = {};
|
|
84
170
|
|
|
85
171
|
/**
|
|
86
172
|
*
|
|
87
|
-
* @param {import('
|
|
173
|
+
* @param {import('jscodeshift').Identifier | import('jscodeshift').BinaryExpression | import('jscodeshift').UnaryExpression | import('jscodeshift').MemberExpression} node
|
|
88
174
|
*/
|
|
89
175
|
function inverseBinaryExpression(node) {
|
|
90
176
|
if (node.type === 'Identifier' || node.type === 'MemberExpression') {
|
|
@@ -111,18 +197,6 @@ function migrateToVariants(j, styles) {
|
|
|
111
197
|
}
|
|
112
198
|
return node;
|
|
113
199
|
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
*
|
|
117
|
-
* @param {import('ast-types').namedTypes.ObjectExpression} node
|
|
118
|
-
*/
|
|
119
|
-
function removeProperty(parentNode, child) {
|
|
120
|
-
if (parentNode) {
|
|
121
|
-
if (parentNode.type === 'ObjectExpression') {
|
|
122
|
-
parentNode.properties = parentNode.properties.filter(prop => prop !== child && prop.value !== child);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
200
|
function buildObjectAST(jsObject) {
|
|
127
201
|
const result = j.objectExpression([]);
|
|
128
202
|
Object.entries(jsObject).forEach(([key, value]) => {
|
|
@@ -130,27 +204,25 @@ function migrateToVariants(j, styles) {
|
|
|
130
204
|
});
|
|
131
205
|
return result;
|
|
132
206
|
}
|
|
133
|
-
function
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
node.properties.push(j.spreadElement(j.callExpression(j.memberExpression(j.identifier('theme'), j.identifier('applyStyles')), [j.stringLiteral(mode), Array.isArray(objectStyles) ? j.objectExpression(objectStyles) : objectStyles])));
|
|
148
|
-
});
|
|
207
|
+
function resolveParamName(name) {
|
|
208
|
+
if (typeof name !== 'string') {
|
|
209
|
+
if (name.type === 'Identifier' && parameterMap[name.name]) {
|
|
210
|
+
if (parameterMap[name.name].includes('-')) {
|
|
211
|
+
return j.stringLiteral(parameterMap[name.name]);
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
...name,
|
|
215
|
+
name: parameterMap[name.name]
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
return name;
|
|
219
|
+
}
|
|
220
|
+
return parameterMap[name] || name;
|
|
149
221
|
}
|
|
150
222
|
|
|
151
223
|
/**
|
|
152
224
|
*
|
|
153
|
-
* @param {import('
|
|
225
|
+
* @param {import('jscodeshift').LogicalExpression | import('jscodeshift').BinaryExpression | import('jscodeshift').UnaryExpression | import('jscodeshift').MemberExpression} node
|
|
154
226
|
*/
|
|
155
227
|
function buildProps(node) {
|
|
156
228
|
const properties = [];
|
|
@@ -161,25 +233,25 @@ function migrateToVariants(j, styles) {
|
|
|
161
233
|
};
|
|
162
234
|
function assignProperties(_node) {
|
|
163
235
|
if (_node.type === 'BinaryExpression') {
|
|
164
|
-
variables.add(getObjectKey(_node.left).name);
|
|
236
|
+
variables.add(resolveParamName(getObjectKey(_node.left).name));
|
|
165
237
|
if (_node.operator === '===') {
|
|
166
|
-
properties.push(j.objectProperty(getIdentifierKey(_node.left), _node.right));
|
|
238
|
+
properties.push(j.objectProperty(resolveParamName(getIdentifierKey(_node.left)), _node.right));
|
|
167
239
|
} else {
|
|
168
240
|
isAllEqual = false;
|
|
169
241
|
}
|
|
170
242
|
}
|
|
171
243
|
if (_node.type === 'MemberExpression' || _node.type === 'Identifier') {
|
|
172
244
|
isAllEqual = false;
|
|
173
|
-
variables.add(getObjectKey(_node).name);
|
|
245
|
+
variables.add(resolveParamName(getObjectKey(_node).name));
|
|
174
246
|
}
|
|
175
247
|
if (_node.type === 'UnaryExpression') {
|
|
176
248
|
isAllEqual = false;
|
|
177
249
|
if (_node.argument.type === 'UnaryExpression') {
|
|
178
250
|
// handle `!!variable`
|
|
179
|
-
variables.add(getObjectKey(_node.argument.argument).name);
|
|
251
|
+
variables.add(resolveParamName(getObjectKey(_node.argument.argument).name));
|
|
180
252
|
} else {
|
|
181
253
|
// handle `!variable`
|
|
182
|
-
variables.add(getObjectKey(_node.argument).name);
|
|
254
|
+
variables.add(resolveParamName(getObjectKey(_node.argument).name));
|
|
183
255
|
}
|
|
184
256
|
}
|
|
185
257
|
}
|
|
@@ -215,13 +287,10 @@ function migrateToVariants(j, styles) {
|
|
|
215
287
|
const currentArrow = currentProps.type === 'ObjectExpression' ? objectToArrowFunction(currentProps) : currentProps;
|
|
216
288
|
const variables = new Set();
|
|
217
289
|
[...parentArrow.params[0].properties, ...currentArrow.params[0].properties].forEach(param => {
|
|
218
|
-
variables.add(param.key.name);
|
|
290
|
+
variables.add(resolveParamName(param.key.name));
|
|
219
291
|
});
|
|
220
292
|
return buildArrowFunctionAST(variables, j.logicalExpression('&&', parentArrow.body, currentArrow.body));
|
|
221
293
|
}
|
|
222
|
-
function isThemePaletteMode(node) {
|
|
223
|
-
return node.type === 'MemberExpression' && node.object.type === 'MemberExpression' && node.object.object.name === 'theme' && node.object.property.name === 'palette' && node.property.name === 'mode';
|
|
224
|
-
}
|
|
225
294
|
|
|
226
295
|
// 2. Find logical spread expressions to convert to variants
|
|
227
296
|
styles.forEach(style => {
|
|
@@ -229,38 +298,65 @@ function migrateToVariants(j, styles) {
|
|
|
229
298
|
style.params.forEach(param => {
|
|
230
299
|
if (param.type === 'ObjectPattern') {
|
|
231
300
|
param.properties.forEach(prop => {
|
|
232
|
-
|
|
301
|
+
if (prop.type === 'ObjectProperty') {
|
|
302
|
+
let paramName;
|
|
303
|
+
if (prop.value.type === 'Identifier') {
|
|
304
|
+
paramName = prop.value.name;
|
|
305
|
+
}
|
|
306
|
+
if (prop.value.type === 'AssignmentPattern') {
|
|
307
|
+
paramName = prop.value.left.name;
|
|
308
|
+
}
|
|
309
|
+
if (paramName) {
|
|
310
|
+
parameters.add(paramName);
|
|
311
|
+
if (prop.key.type === 'Identifier') {
|
|
312
|
+
parameterMap[paramName] = prop.key.name;
|
|
313
|
+
}
|
|
314
|
+
if (prop.key.type === 'StringLiteral') {
|
|
315
|
+
parameterMap[paramName] = prop.key.value;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
233
319
|
});
|
|
234
320
|
}
|
|
321
|
+
if (param.type === 'Identifier') {
|
|
322
|
+
parameters.add(param.name);
|
|
323
|
+
}
|
|
235
324
|
});
|
|
236
325
|
const variants = [];
|
|
237
326
|
if (style.body.type === 'LogicalExpression') {
|
|
238
|
-
if (style.params[0] && style.params[0].type === 'ObjectPattern' && style.params[0].properties.some(prop => prop.key.name !== 'theme')) {
|
|
327
|
+
if (style.params[0] && (style.params[0].type === 'Identifier' || style.params[0].type === 'ObjectPattern' && style.params[0].properties.some(prop => prop.key.name !== 'theme'))) {
|
|
239
328
|
// case: ({ theme, ownerState }) => ownerState.variant === 'regular' && theme.mixins.toolbar
|
|
240
329
|
style.body = j.objectExpression([j.objectProperty(j.identifier('variants'), j.arrayExpression([j.objectExpression([j.objectProperty(j.identifier('props'), buildProps(style.body.left)), j.objectProperty(j.identifier('style'), style.body.right)])]))]);
|
|
241
330
|
}
|
|
242
331
|
} else if (style.body.type === 'ConditionalExpression') {
|
|
243
332
|
// skip ConditionalExpression
|
|
244
333
|
} else {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
objectExpression = objectExpression.body.find(item => item.type === 'ReturnStatement').argument;
|
|
251
|
-
}
|
|
334
|
+
const expressions = [];
|
|
335
|
+
if (style.body.type === 'ArrayExpression') {
|
|
336
|
+
expressions.push(...style.body.elements);
|
|
337
|
+
} else {
|
|
338
|
+
expressions.push(style.body);
|
|
252
339
|
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
340
|
+
expressions.forEach(objectExpression => {
|
|
341
|
+
let counter = 0;
|
|
342
|
+
while (objectExpression.type !== 'ObjectExpression' && counter < MAX_DEPTH) {
|
|
343
|
+
counter += 1;
|
|
344
|
+
if (objectExpression.type === 'BlockStatement') {
|
|
345
|
+
objectExpression = objectExpression.body.find(item => item.type === 'ReturnStatement').argument;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
recurseObjectExpression({
|
|
349
|
+
node: objectExpression,
|
|
350
|
+
buildStyle: createBuildStyle()
|
|
351
|
+
});
|
|
352
|
+
if (variants.length && objectExpression.type === 'ObjectExpression') {
|
|
353
|
+
objectExpression.properties.push(j.objectProperty(j.identifier('variants'), j.arrayExpression(variants.filter(variant => {
|
|
354
|
+
const props = variant.properties.find(prop => prop.key.name === 'props');
|
|
355
|
+
const styleVal = variant.properties.find(prop => prop.key.name === 'style');
|
|
356
|
+
return props && styleVal && (!styleVal.value.properties || styleVal.value.properties.length > 0) && (props.value.type === 'ArrowFunctionExpression' || props.value.properties.length > 0);
|
|
357
|
+
}))));
|
|
358
|
+
}
|
|
256
359
|
});
|
|
257
|
-
if (variants.length) {
|
|
258
|
-
objectExpression.properties.push(j.objectProperty(j.identifier('variants'), j.arrayExpression(variants.filter(variant => {
|
|
259
|
-
const props = variant.properties.find(prop => prop.key.name === 'props');
|
|
260
|
-
const styleVal = variant.properties.find(prop => prop.key.name === 'style');
|
|
261
|
-
return props && styleVal && (!styleVal.value.properties || styleVal.value.properties.length > 0) && (props.value.type === 'ArrowFunctionExpression' || props.value.properties.length > 0);
|
|
262
|
-
}))));
|
|
263
|
-
}
|
|
264
360
|
}
|
|
265
361
|
function recurseObjectExpression(data) {
|
|
266
362
|
if (data.node.type === 'ObjectExpression') {
|
|
@@ -388,7 +484,6 @@ function migrateToVariants(j, styles) {
|
|
|
388
484
|
leftName = (_getObjectKey5 = getObjectKey(data.node.test.argument)) == null ? void 0 : _getObjectKey5.name;
|
|
389
485
|
}
|
|
390
486
|
if (parameters.has(leftName) && leftName !== 'theme') {
|
|
391
|
-
var _data$parentNode;
|
|
392
487
|
let props = buildProps(data.node.test);
|
|
393
488
|
if (data.props) {
|
|
394
489
|
props = mergeProps(data.props, props);
|
|
@@ -399,32 +494,37 @@ function migrateToVariants(j, styles) {
|
|
|
399
494
|
style: styleVal
|
|
400
495
|
};
|
|
401
496
|
variants.push(buildObjectAST(variant));
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
497
|
+
if (data.node.consequent.type === 'ObjectExpression' && data.node.alternate.type === 'ObjectExpression') {
|
|
498
|
+
var _data$parentNode;
|
|
499
|
+
// create another variant with inverted condition
|
|
500
|
+
let props2 = buildProps(inverseBinaryExpression(data.node.test));
|
|
501
|
+
if (data.props) {
|
|
502
|
+
props2 = mergeProps(data.props, props2);
|
|
503
|
+
}
|
|
504
|
+
const styleVal2 = data.buildStyle(data.node.alternate);
|
|
505
|
+
const variant2 = {
|
|
506
|
+
props: props2,
|
|
507
|
+
style: styleVal2
|
|
508
|
+
};
|
|
509
|
+
variants.push(buildObjectAST(variant2));
|
|
510
|
+
if (((_data$parentNode = data.parentNode) == null ? void 0 : _data$parentNode.type) === 'ObjectExpression') {
|
|
511
|
+
removeProperty(data.parentNode, data.node);
|
|
512
|
+
}
|
|
513
|
+
} else {
|
|
514
|
+
var _data$replaceValue;
|
|
515
|
+
(_data$replaceValue = data.replaceValue) == null || _data$replaceValue.call(data, data.node.alternate);
|
|
416
516
|
}
|
|
417
517
|
}
|
|
418
518
|
if (leftName === 'theme' && ((_data$parentNode2 = data.parentNode) == null ? void 0 : _data$parentNode2.type) === 'ObjectExpression' && ((_data$node$test = data.node.test) == null ? void 0 : _data$node$test.type) === 'BinaryExpression' && isThemePaletteMode(data.node.test.left)) {
|
|
419
519
|
if (data.node.consequent.type !== 'ObjectExpression' && data.node.alternate.type !== 'ObjectExpression') {
|
|
420
|
-
var _data$
|
|
520
|
+
var _data$replaceValue2;
|
|
421
521
|
if (data.modeStyles) {
|
|
422
522
|
if (!data.modeStyles[data.node.test.right.value]) {
|
|
423
523
|
data.modeStyles[data.node.test.right.value] = [];
|
|
424
524
|
}
|
|
425
525
|
data.modeStyles[data.node.test.right.value].push(j.objectProperty(data.key, data.node.consequent));
|
|
426
526
|
}
|
|
427
|
-
(_data$
|
|
527
|
+
(_data$replaceValue2 = data.replaceValue) == null || _data$replaceValue2.call(data, data.node.alternate);
|
|
428
528
|
}
|
|
429
529
|
}
|
|
430
530
|
}
|
|
@@ -459,6 +559,12 @@ function migrateToVariants(j, styles) {
|
|
|
459
559
|
}
|
|
460
560
|
data.modeStyles[mode].push(j.objectProperty(data.key, clonedNode));
|
|
461
561
|
});
|
|
562
|
+
if (data.key) {
|
|
563
|
+
var _data$replaceValue3;
|
|
564
|
+
// to remove the arrow function
|
|
565
|
+
// { ...: theme => `1px solid...` } to { ...: `1px solid...` }
|
|
566
|
+
(_data$replaceValue3 = data.replaceValue) == null || _data$replaceValue3.call(data, data.node);
|
|
567
|
+
}
|
|
462
568
|
}
|
|
463
569
|
}
|
|
464
570
|
}
|
|
@@ -24,7 +24,7 @@ var _GlobalStyles = _interopRequireDefault(require("@mui/material/GlobalStyles")
|
|
|
24
24
|
var _styles = require("@mui/material/styles");
|
|
25
25
|
var _config = require("docs/config");
|
|
26
26
|
var _Link = _interopRequireDefault(require("docs/src/modules/components/Link"));
|
|
27
|
-
var _i18n = require("docs/
|
|
27
|
+
var _i18n = require("@mui/docs/i18n");
|
|
28
28
|
var _useLazyCSS = _interopRequireDefault(require("docs/src/modules/utils/useLazyCSS"));
|
|
29
29
|
var _getUrlProduct = _interopRequireDefault(require("docs/src/modules/utils/getUrlProduct"));
|
|
30
30
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -24,7 +24,7 @@ var _GlobalStyles = _interopRequireDefault(require("@mui/material/GlobalStyles")
|
|
|
24
24
|
var _styles = require("@mui/material/styles");
|
|
25
25
|
var _config = require("docs/config");
|
|
26
26
|
var _Link = _interopRequireDefault(require("docs/src/modules/components/Link"));
|
|
27
|
-
var _i18n = require("docs/
|
|
27
|
+
var _i18n = require("@mui/docs/i18n");
|
|
28
28
|
var _useLazyCSS = _interopRequireDefault(require("docs/src/modules/utils/useLazyCSS"));
|
|
29
29
|
var _getUrlProduct = _interopRequireDefault(require("docs/src/modules/utils/getUrlProduct"));
|
|
30
30
|
var _jsxRuntime = require("react/jsx-runtime");
|