@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.
Files changed (126) hide show
  1. package/README.md +609 -180
  2. package/codemod.js +0 -2
  3. package/node/deprecations/all/deprecations-all.js +34 -22
  4. package/node/deprecations/all/postcss.config.js +7 -1
  5. package/node/deprecations/autocomplete-props/autocomplete-props.js +0 -32
  6. package/node/deprecations/autocomplete-props/test-cases/actual.js +13 -35
  7. package/node/deprecations/autocomplete-props/test-cases/expected.js +13 -41
  8. package/node/deprecations/autocomplete-props/test-cases/theme.actual.js +0 -18
  9. package/node/deprecations/autocomplete-props/test-cases/theme.expected.js +0 -22
  10. package/node/deprecations/avatar-group-props/avatar-group-props.js +87 -0
  11. package/node/deprecations/avatar-group-props/index.js +13 -0
  12. package/node/deprecations/avatar-group-props/test-cases/actual.js +56 -0
  13. package/node/deprecations/avatar-group-props/test-cases/expected.js +58 -0
  14. package/node/deprecations/avatar-group-props/test-cases/theme.actual.js +48 -0
  15. package/node/deprecations/avatar-group-props/test-cases/theme.expected.js +50 -0
  16. package/node/deprecations/backdrop-props/backdrop-props.js +3 -5
  17. package/node/deprecations/backdrop-props/test-cases/actual.js +30 -14
  18. package/node/deprecations/backdrop-props/test-cases/expected.js +23 -13
  19. package/node/deprecations/backdrop-props/test-cases/theme.actual.js +32 -6
  20. package/node/deprecations/backdrop-props/test-cases/theme.expected.js +27 -5
  21. package/node/deprecations/filled-input-props/filled-input-props.js +22 -0
  22. package/node/deprecations/filled-input-props/index.js +13 -0
  23. package/node/deprecations/filled-input-props/test-cases/actual.js +60 -0
  24. package/node/deprecations/filled-input-props/test-cases/expected.js +52 -0
  25. package/node/deprecations/filled-input-props/test-cases/theme.actual.js +73 -0
  26. package/node/deprecations/filled-input-props/test-cases/theme.expected.js +65 -0
  27. package/node/deprecations/grid-props/grid-props.js +51 -0
  28. package/node/deprecations/grid-props/index.js +13 -0
  29. package/node/deprecations/grid-props/test-cases/actual.js +25 -0
  30. package/node/deprecations/grid-props/test-cases/expected.js +23 -0
  31. package/node/deprecations/grid-props/test-cases/theme.actual.js +24 -0
  32. package/node/deprecations/grid-props/test-cases/theme.expected.js +23 -0
  33. package/node/deprecations/input-base-props/index.js +13 -0
  34. package/node/deprecations/input-base-props/input-base-props.js +22 -0
  35. package/node/deprecations/input-base-props/test-cases/actual.js +60 -0
  36. package/node/deprecations/input-base-props/test-cases/expected.js +52 -0
  37. package/node/deprecations/input-base-props/test-cases/theme.actual.js +73 -0
  38. package/node/deprecations/input-base-props/test-cases/theme.expected.js +65 -0
  39. package/node/deprecations/input-props/index.js +13 -0
  40. package/node/deprecations/input-props/input-props.js +22 -0
  41. package/node/deprecations/input-props/test-cases/actual.js +60 -0
  42. package/node/deprecations/input-props/test-cases/expected.js +52 -0
  43. package/node/deprecations/input-props/test-cases/theme.actual.js +73 -0
  44. package/node/deprecations/input-props/test-cases/theme.expected.js +65 -0
  45. package/node/deprecations/list-item-props/index.js +13 -0
  46. package/node/deprecations/list-item-props/list-item-props.js +22 -0
  47. package/node/deprecations/list-item-props/test-cases/actual.js +43 -0
  48. package/node/deprecations/list-item-props/test-cases/expected.js +40 -0
  49. package/node/deprecations/list-item-props/test-cases/theme.actual.js +56 -0
  50. package/node/deprecations/list-item-props/test-cases/theme.expected.js +53 -0
  51. package/node/deprecations/modal-props/index.js +13 -0
  52. package/node/deprecations/modal-props/modal-props.js +22 -0
  53. package/node/deprecations/modal-props/test-cases/actual.js +43 -0
  54. package/node/deprecations/modal-props/test-cases/expected.js +40 -0
  55. package/node/deprecations/modal-props/test-cases/theme.actual.js +56 -0
  56. package/node/deprecations/modal-props/test-cases/theme.expected.js +53 -0
  57. package/node/deprecations/outlined-input-props/index.js +13 -0
  58. package/node/deprecations/outlined-input-props/outlined-input-props.js +22 -0
  59. package/node/deprecations/outlined-input-props/test-cases/actual.js +60 -0
  60. package/node/deprecations/outlined-input-props/test-cases/expected.js +52 -0
  61. package/node/deprecations/outlined-input-props/test-cases/theme.actual.js +73 -0
  62. package/node/deprecations/outlined-input-props/test-cases/theme.expected.js +65 -0
  63. package/node/deprecations/popper-props/index.js +13 -0
  64. package/node/deprecations/popper-props/popper-props.js +22 -0
  65. package/node/deprecations/popper-props/test-cases/actual.js +27 -0
  66. package/node/deprecations/popper-props/test-cases/expected.js +24 -0
  67. package/node/deprecations/popper-props/test-cases/theme.actual.js +32 -0
  68. package/node/deprecations/popper-props/test-cases/theme.expected.js +29 -0
  69. package/node/deprecations/step-label-props/step-label-props.js +0 -14
  70. package/node/deprecations/step-label-props/test-cases/actual.js +0 -23
  71. package/node/deprecations/step-label-props/test-cases/expected.js +0 -27
  72. package/node/deprecations/step-label-props/test-cases/theme.actual.js +0 -22
  73. package/node/deprecations/step-label-props/test-cases/theme.expected.js +0 -28
  74. package/node/deprecations/tab-classes/index.js +13 -0
  75. package/node/deprecations/tab-classes/postcss-plugin.js +30 -0
  76. package/node/deprecations/tab-classes/postcss.config.js +8 -0
  77. package/node/deprecations/tab-classes/tab-classes.js +53 -0
  78. package/node/deprecations/tab-classes/test-cases/actual.js +5 -0
  79. package/node/deprecations/tab-classes/test-cases/expected.js +5 -0
  80. package/node/deprecations/table-sort-label-classes/index.js +13 -0
  81. package/node/deprecations/table-sort-label-classes/postcss-plugin.js +33 -0
  82. package/node/deprecations/table-sort-label-classes/postcss.config.js +8 -0
  83. package/node/deprecations/table-sort-label-classes/table-sort-label-classes.js +77 -0
  84. package/node/deprecations/table-sort-label-classes/test-cases/actual.js +7 -0
  85. package/node/deprecations/table-sort-label-classes/test-cases/expected.js +7 -0
  86. package/node/deprecations/tooltip-props/index.js +13 -0
  87. package/node/deprecations/tooltip-props/test-cases/actual.js +92 -0
  88. package/node/deprecations/tooltip-props/test-cases/expected.js +84 -0
  89. package/node/deprecations/tooltip-props/test-cases/theme.actual.js +73 -0
  90. package/node/deprecations/tooltip-props/test-cases/theme.expected.js +65 -0
  91. package/node/deprecations/tooltip-props/tooltip-props.js +22 -0
  92. package/node/util/migrateToVariants.js +244 -138
  93. package/node/v5.0.0/theme-spacing.test/large-actual.js +1 -1
  94. package/node/v5.0.0/theme-spacing.test/large-expected.js +1 -1
  95. package/node/v6.0.0/grid-v2-props/grid-v2-props.js +149 -0
  96. package/node/v6.0.0/grid-v2-props/index.js +13 -0
  97. package/node/v6.0.0/grid-v2-props/test-cases/actual.js +85 -0
  98. package/node/v6.0.0/grid-v2-props/test-cases/custom-breakpoints.actual.js +18 -0
  99. package/node/v6.0.0/grid-v2-props/test-cases/custom-breakpoints.expected.js +22 -0
  100. package/node/v6.0.0/grid-v2-props/test-cases/expected.js +97 -0
  101. package/node/v6.0.0/styled/test-cases/ConditionalStyled.expected.js +9 -22
  102. package/node/v6.0.0/styled/test-cases/DynamicPropsStyled.actual.js +39 -0
  103. package/node/v6.0.0/styled/test-cases/DynamicPropsStyled.expected.js +65 -0
  104. package/node/v6.0.0/styled/test-cases/LogicalStyled.actual.js +31 -1
  105. package/node/v6.0.0/styled/test-cases/LogicalStyled.expected.js +39 -1
  106. package/node/v6.0.0/styled/test-cases/NestedSpread.expected.js +11 -13
  107. package/node/v6.0.0/sx-prop/index.js +13 -0
  108. package/node/v6.0.0/sx-prop/sx-v6.js +405 -0
  109. package/node/v6.0.0/sx-prop/test-cases/basic-sx.actual.js +36 -0
  110. package/node/v6.0.0/sx-prop/test-cases/basic-sx.expected.js +46 -0
  111. package/node/v6.0.0/sx-prop/test-cases/sx-css-vars.actual.js +55 -0
  112. package/node/v6.0.0/sx-prop/test-cases/sx-css-vars.expected.js +88 -0
  113. package/node/v6.0.0/sx-prop/test-cases/sx-dynamic.actual.js +107 -0
  114. package/node/v6.0.0/sx-prop/test-cases/sx-dynamic.expected.js +120 -0
  115. package/node/v6.0.0/sx-prop/test-cases/sx-dynamic2.actual.js +49 -0
  116. package/node/v6.0.0/sx-prop/test-cases/sx-dynamic2.expected.js +64 -0
  117. package/node/v6.0.0/sx-prop/test-cases/sx-line-break.actual.js +69 -0
  118. package/node/v6.0.0/sx-prop/test-cases/sx-line-break.expected.js +69 -0
  119. package/node/v6.0.0/sx-prop/test-cases/sx-value-callback.actual.js +102 -0
  120. package/node/v6.0.0/sx-prop/test-cases/sx-value-callback.expected.js +111 -0
  121. package/node/v6.0.0/system-props/index.js +13 -0
  122. package/node/v6.0.0/system-props/removeSystemProps.js +242 -0
  123. package/node/v6.0.0/system-props/test-cases/system-props.actual.js +79 -0
  124. package/node/v6.0.0/system-props/test-cases/system-props.expected.js +92 -0
  125. package/node/v6.0.0/theme-v6/theme-v6.js +2 -2
  126. 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
- * @param {any[]} styles
17
+ * @returns
12
18
  */
13
- function migrateToVariants(j, styles) {
14
- function createBuildStyle(key, upperBuildStyle, applyStylesMode) {
15
- if (applyStylesMode) {
16
- upperBuildStyle = styleExpression => j.objectExpression([j.spreadElement(j.callExpression(j.memberExpression(j.identifier('theme'), j.identifier('applyStyles')), [j.stringLiteral(applyStylesMode), styleExpression]))]);
17
- }
18
- return function buildStyle(styleExpression) {
19
- if (key) {
20
- if (key.type === 'Identifier' || key.type === 'StringLiteral') {
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
- return upperBuildStyle ? upperBuildStyle(styleExpression) : styleExpression;
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
- * @param {import('ast-types').namedTypes.MemberExpression | import('ast-types').namedTypes.Identifier} node
37
- */
38
- function getIdentifierKey(node) {
39
- if (node.type === 'MemberExpression') {
40
- return node.property;
41
- }
42
- return node;
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
- * @param {import('ast-types').namedTypes.UnaryExpression | import('ast-types').namedTypes.MemberExpression | import('ast-types').namedTypes.Identifier} node
48
- */
49
- function getObjectKey(node) {
50
- let tempNode = {
51
- ...node
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
- * @param {import('ast-types').namedTypes.ObjectExpression} objectExpression
65
- * @param {import('ast-types').namedTypes.BinaryExpression} addtional
66
- */
67
- function objectToArrowFunction(objectExpression, addtional) {
68
- const paramKeys = new Set();
69
- let left;
70
- objectExpression.properties.forEach((prop, index) => {
71
- paramKeys.add(prop.key.name);
72
- const result = j.binaryExpression('===', prop.key, prop.value);
73
- if (index === 0) {
74
- left = result;
75
- } else {
76
- left = j.logicalExpression('&&', left, result);
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
- return buildArrowFunctionAST(paramKeys, addtional ? j.logicalExpression('&&', left, addtional) : left);
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('ast-types').namedTypes.Identifier | import('ast-types').namedTypes.BinaryExpression | import('ast-types').namedTypes.UnaryExpression | import('ast-types').namedTypes.MemberExpression} node
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 buildArrowFunctionAST(params, body) {
134
- return j.arrowFunctionExpression([j.objectPattern([...params].map(k => ({
135
- ...j.objectProperty(j.identifier(k), j.identifier(k)),
136
- shorthand: true
137
- })))], body);
138
- }
139
-
140
- /**
141
- *
142
- * @param {{ properties: any[] }} node
143
- * @param {Record<string, any[] | import('ast-types').namedTypes.ObjectExpression>} modeStyles
144
- */
145
- function appendPaletteModeStyles(node, modeStyles) {
146
- Object.entries(modeStyles).forEach(([mode, objectStyles]) => {
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('ast-types').namedTypes.LogicalExpression | import('ast-types').namedTypes.BinaryExpression | import('ast-types').namedTypes.UnaryExpression | import('ast-types').namedTypes.MemberExpression} node
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
- parameters.add(prop.key.name);
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
- let objectExpression = style.body;
246
- let counter = 0;
247
- while (objectExpression.type !== 'ObjectExpression' && counter < MAX_DEPTH) {
248
- counter += 1;
249
- if (objectExpression.type === 'BlockStatement') {
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
- recurseObjectExpression({
254
- node: objectExpression,
255
- buildStyle: createBuildStyle()
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
- // create another variant with inverted condition
404
- let props2 = buildProps(inverseBinaryExpression(data.node.test));
405
- if (data.props) {
406
- props2 = mergeProps(data.props, props2);
407
- }
408
- const styleVal2 = data.buildStyle(data.node.alternate);
409
- const variant2 = {
410
- props: props2,
411
- style: styleVal2
412
- };
413
- variants.push(buildObjectAST(variant2));
414
- if (((_data$parentNode = data.parentNode) == null ? void 0 : _data$parentNode.type) === 'ObjectExpression') {
415
- removeProperty(data.parentNode, data.node);
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$replaceValue;
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$replaceValue = data.replaceValue) == null || _data$replaceValue.call(data, data.node.alternate);
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/src/modules/utils/i18n");
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/src/modules/utils/i18n");
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");