@mui/codemod 5.15.10 → 5.15.12

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 (49) hide show
  1. package/README.md +670 -7
  2. package/codemod.js +80 -7
  3. package/node/deprecations/accordion-summary-classes/accordion-summary-classes.js +55 -0
  4. package/node/deprecations/accordion-summary-classes/index.js +13 -0
  5. package/node/deprecations/accordion-summary-classes/postcss-plugin.js +28 -0
  6. package/node/deprecations/accordion-summary-classes/postcss.config.js +8 -0
  7. package/node/deprecations/accordion-summary-classes/test-cases/actual.js +54 -0
  8. package/node/deprecations/accordion-summary-classes/test-cases/expected.js +54 -0
  9. package/node/deprecations/alert-classes/alert-classes.js +58 -0
  10. package/node/deprecations/alert-classes/index.js +13 -0
  11. package/node/deprecations/alert-classes/postcss-plugin.js +38 -0
  12. package/node/deprecations/alert-classes/postcss.config.js +8 -0
  13. package/node/deprecations/alert-classes/test-cases/actual.js +27 -0
  14. package/node/deprecations/alert-classes/test-cases/expected.js +27 -0
  15. package/node/deprecations/alert-props/alert-props.js +22 -0
  16. package/node/deprecations/alert-props/index.js +13 -0
  17. package/node/deprecations/alert-props/test-cases/actual.js +43 -0
  18. package/node/deprecations/alert-props/test-cases/expected.js +33 -0
  19. package/node/deprecations/alert-props/test-cases/theme.actual.js +52 -0
  20. package/node/deprecations/alert-props/test-cases/theme.expected.js +42 -0
  21. package/node/deprecations/all/deprecations-all.js +10 -0
  22. package/node/deprecations/all/postcss.config.js +20 -0
  23. package/node/deprecations/button-classes/button-classes.js +69 -0
  24. package/node/deprecations/button-classes/index.js +13 -0
  25. package/node/deprecations/button-classes/postcss-plugin.js +126 -0
  26. package/node/deprecations/button-classes/postcss.config.js +8 -0
  27. package/node/deprecations/button-classes/test-cases/actual.js +69 -0
  28. package/node/deprecations/button-classes/test-cases/expected.js +69 -0
  29. package/node/deprecations/chip-classes/chip-classes.js +77 -0
  30. package/node/deprecations/chip-classes/index.js +13 -0
  31. package/node/deprecations/chip-classes/postcss-plugin.js +105 -0
  32. package/node/deprecations/chip-classes/postcss.config.js +8 -0
  33. package/node/deprecations/chip-classes/test-cases/actual.js +55 -0
  34. package/node/deprecations/chip-classes/test-cases/expected.js +55 -0
  35. package/node/deprecations/pagination-item-classes/index.js +13 -0
  36. package/node/deprecations/pagination-item-classes/pagination-item-classes.js +58 -0
  37. package/node/deprecations/pagination-item-classes/postcss-plugin.js +39 -0
  38. package/node/deprecations/pagination-item-classes/postcss.config.js +8 -0
  39. package/node/deprecations/pagination-item-classes/test-cases/actual.js +108 -0
  40. package/node/deprecations/pagination-item-classes/test-cases/expected.js +108 -0
  41. package/node/deprecations/slider-props/index.js +13 -0
  42. package/node/deprecations/slider-props/slider-props.js +22 -0
  43. package/node/deprecations/slider-props/test-cases/actual.js +43 -0
  44. package/node/deprecations/slider-props/test-cases/expected.js +33 -0
  45. package/node/deprecations/slider-props/test-cases/theme.actual.js +52 -0
  46. package/node/deprecations/slider-props/test-cases/theme.expected.js +42 -0
  47. package/node/deprecations/utils/replaceComponentsWithSlots.js +184 -0
  48. package/node/util/findComponentDefaultProps.js +30 -0
  49. package/package.json +4 -2
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ fn({
4
+ MuiAlert: {
5
+ defaultProps: {
6
+ slots: {
7
+ closeButton: ComponentsButton
8
+ },
9
+ slotProps: {
10
+ closeButton: componentsButtonProps
11
+ }
12
+ }
13
+ }
14
+ });
15
+ fn({
16
+ MuiAlert: {
17
+ defaultProps: {
18
+ slots: {
19
+ closeButton: ComponentsButton,
20
+ closeIcon: SlotsIcon
21
+ },
22
+ slotProps: {
23
+ closeButton: componentsButtonProps,
24
+ closeIcon: slotsIconProps
25
+ }
26
+ }
27
+ }
28
+ });
29
+ fn({
30
+ MuiAlert: {
31
+ defaultProps: {
32
+ slots: {
33
+ closeButton: SlotsButton,
34
+ closeIcon: SlotsIcon
35
+ },
36
+ slotProps: {
37
+ closeButton: slotsButtonProps,
38
+ closeIcon: slotsIconProps
39
+ }
40
+ }
41
+ }
42
+ });
@@ -8,6 +8,11 @@ exports.default = deprecationsAll;
8
8
  var _accordionProps = _interopRequireDefault(require("../accordion-props"));
9
9
  var _avatarProps = _interopRequireDefault(require("../avatar-props"));
10
10
  var _dividerProps = _interopRequireDefault(require("../divider-props"));
11
+ var _accordionSummaryClasses = _interopRequireDefault(require("../accordion-summary-classes"));
12
+ var _buttonClasses = _interopRequireDefault(require("../button-classes"));
13
+ var _chipClasses = _interopRequireDefault(require("../chip-classes"));
14
+ var _paginationItemClasses = _interopRequireDefault(require("../pagination-item-classes"));
15
+ var _alertClasses = _interopRequireDefault(require("../alert-classes"));
11
16
  /**
12
17
  * @param {import('jscodeshift').FileInfo} file
13
18
  * @param {import('jscodeshift').API} api
@@ -16,5 +21,10 @@ function deprecationsAll(file, api, options) {
16
21
  file.source = (0, _accordionProps.default)(file, api, options);
17
22
  file.source = (0, _avatarProps.default)(file, api, options);
18
23
  file.source = (0, _dividerProps.default)(file, api, options);
24
+ file.source = (0, _accordionSummaryClasses.default)(file, api, options);
25
+ file.source = (0, _buttonClasses.default)(file, api, options);
26
+ file.source = (0, _chipClasses.default)(file, api, options);
27
+ file.source = (0, _paginationItemClasses.default)(file, api, options);
28
+ file.source = (0, _alertClasses.default)(file, api, options);
19
29
  return file.source;
20
30
  }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ const {
4
+ plugin: accordionSummaryClassesPlugin
5
+ } = require('../accordion-summary-classes/postcss-plugin');
6
+ const {
7
+ plugin: alertClassesPlugin
8
+ } = require('../alert-classes/postcss-plugin');
9
+ const {
10
+ plugin: buttonClassesPlugin
11
+ } = require('../button-classes/postcss-plugin');
12
+ const {
13
+ plugin: chipClassesPlugin
14
+ } = require('../chip-classes/postcss-plugin');
15
+ const {
16
+ plugin: paginationItemClassesPlugin
17
+ } = require('../pagination-item-classes/postcss-plugin');
18
+ module.exports = {
19
+ plugins: [accordionSummaryClassesPlugin, alertClassesPlugin, buttonClassesPlugin, chipClassesPlugin, paginationItemClassesPlugin]
20
+ };
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = transformer;
7
+ var _postcssPlugin = require("./postcss-plugin");
8
+ /**
9
+ * @param {import('jscodeshift').FileInfo} file
10
+ * @param {import('jscodeshift').API} api
11
+ */
12
+ function transformer(file, api, options) {
13
+ const j = api.jscodeshift;
14
+ const root = j(file.source);
15
+ const printOptions = options.printOptions;
16
+ _postcssPlugin.classes.forEach(({
17
+ deprecatedClass,
18
+ replacementSelector
19
+ }) => {
20
+ const replacementSelectorPrefix = '&';
21
+ root.find(j.ImportDeclaration).filter(path => path.node.source.value.match(/^@mui\/material\/Button$/)).forEach(path => {
22
+ path.node.specifiers.forEach(specifier => {
23
+ if (specifier.type === 'ImportSpecifier' && specifier.imported.name === 'buttonClasses') {
24
+ const deprecatedAtomicClass = deprecatedClass.replace(`${deprecatedClass.split('-')[0]}-`, '');
25
+ root.find(j.MemberExpression, {
26
+ object: {
27
+ name: specifier.local.name
28
+ },
29
+ property: {
30
+ name: deprecatedAtomicClass
31
+ }
32
+ }).forEach(memberExpression => {
33
+ const parent = memberExpression.parentPath.parentPath.value;
34
+ if (parent.type === j.TemplateLiteral.name) {
35
+ const memberExpressionIndex = parent.expressions.findIndex(expression => expression === memberExpression.value);
36
+ const precedingTemplateElement = parent.quasis[memberExpressionIndex];
37
+ const atomicClasses = replacementSelector.replaceAll('MuiButton-', '').replaceAll(replacementSelectorPrefix, '').replaceAll(' > ', '').split('.').filter(Boolean);
38
+ if (precedingTemplateElement.value.raw.endsWith(deprecatedClass.startsWith(' ') ? `${replacementSelectorPrefix} .` : `${replacementSelectorPrefix}.`)) {
39
+ parent.expressions.splice(memberExpressionIndex, 1, j.memberExpression(memberExpression.value.object, j.identifier(atomicClasses[0])), j.memberExpression(memberExpression.value.object, j.identifier(atomicClasses[1])));
40
+ if (replacementSelector.includes(' > ')) {
41
+ parent.quasis.splice(memberExpressionIndex, 1, j.templateElement({
42
+ raw: precedingTemplateElement.value.raw.replace(' ', ''),
43
+ cooked: precedingTemplateElement.value.cooked.replace(' ', '')
44
+ }, false), j.templateElement({
45
+ raw: ' > .',
46
+ cooked: ' > .'
47
+ }, false));
48
+ } else {
49
+ parent.quasis.splice(memberExpressionIndex, 1, j.templateElement({
50
+ raw: precedingTemplateElement.value.raw,
51
+ cooked: precedingTemplateElement.value.cooked
52
+ }, false), j.templateElement({
53
+ raw: '.',
54
+ cooked: '.'
55
+ }, false));
56
+ }
57
+ }
58
+ }
59
+ });
60
+ }
61
+ });
62
+ });
63
+ const selectorRegex = new RegExp(`^${replacementSelectorPrefix}${deprecatedClass}`);
64
+ root.find(j.Literal, literal => typeof literal.value === 'string' && literal.value.match(selectorRegex)).forEach(path => {
65
+ path.replace(j.literal(path.value.value.replace(selectorRegex, `${replacementSelectorPrefix}${replacementSelector}`)));
66
+ });
67
+ });
68
+ return root.toSource(printOptions);
69
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "default", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _buttonClasses.default;
11
+ }
12
+ });
13
+ var _buttonClasses = _interopRequireDefault(require("./button-classes"));
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+
3
+ const classes = [{
4
+ deprecatedClass: '.MuiButton-textInherit',
5
+ replacementSelector: '.MuiButton-text.MuiButton-colorInherit'
6
+ }, {
7
+ deprecatedClass: '.MuiButton-textPrimary',
8
+ replacementSelector: '.MuiButton-text.MuiButton-colorPrimary'
9
+ }, {
10
+ deprecatedClass: '.MuiButton-textSecondary',
11
+ replacementSelector: '.MuiButton-text.MuiButton-colorSecondary'
12
+ }, {
13
+ deprecatedClass: '.MuiButton-textSuccess',
14
+ replacementSelector: '.MuiButton-text.MuiButton-colorSuccess'
15
+ }, {
16
+ deprecatedClass: '.MuiButton-textError',
17
+ replacementSelector: '.MuiButton-text.MuiButton-colorError'
18
+ }, {
19
+ deprecatedClass: '.MuiButton-textInfo',
20
+ replacementSelector: '.MuiButton-text.MuiButton-colorInfo'
21
+ }, {
22
+ deprecatedClass: '.MuiButton-textWarning',
23
+ replacementSelector: '.MuiButton-text.MuiButton-colorWarning'
24
+ }, {
25
+ deprecatedClass: '.MuiButton-outlinedInherit',
26
+ replacementSelector: '.MuiButton-outlined.MuiButton-colorInherit'
27
+ }, {
28
+ deprecatedClass: '.MuiButton-outlinedPrimary',
29
+ replacementSelector: '.MuiButton-outlined.MuiButton-colorPrimary'
30
+ }, {
31
+ deprecatedClass: '.MuiButton-outlinedSecondary',
32
+ replacementSelector: '.MuiButton-outlined.MuiButton-colorSecondary'
33
+ }, {
34
+ deprecatedClass: '.MuiButton-outlinedSuccess',
35
+ replacementSelector: '.MuiButton-outlined.MuiButton-colorSuccess'
36
+ }, {
37
+ deprecatedClass: '.MuiButton-outlinedError',
38
+ replacementSelector: '.MuiButton-outlined.MuiButton-colorError'
39
+ }, {
40
+ deprecatedClass: '.MuiButton-outlinedInfo',
41
+ replacementSelector: '.MuiButton-outlined.MuiButton-colorInfo'
42
+ }, {
43
+ deprecatedClass: '.MuiButton-outlinedWarning',
44
+ replacementSelector: '.MuiButton-outlined.MuiButton-colorWarning'
45
+ }, {
46
+ deprecatedClass: '.MuiButton-containedInherit',
47
+ replacementSelector: '.MuiButton-contained.MuiButton-colorInherit'
48
+ }, {
49
+ deprecatedClass: '.MuiButton-containedPrimary',
50
+ replacementSelector: '.MuiButton-contained.MuiButton-colorPrimary'
51
+ }, {
52
+ deprecatedClass: '.MuiButton-containedSecondary',
53
+ replacementSelector: '.MuiButton-contained.MuiButton-colorSecondary'
54
+ }, {
55
+ deprecatedClass: '.MuiButton-containedSuccess',
56
+ replacementSelector: '.MuiButton-contained.MuiButton-colorSuccess'
57
+ }, {
58
+ deprecatedClass: '.MuiButton-containedError',
59
+ replacementSelector: '.MuiButton-contained.MuiButton-colorError'
60
+ }, {
61
+ deprecatedClass: '.MuiButton-containedInfo',
62
+ replacementSelector: '.MuiButton-contained.MuiButton-colorInfo'
63
+ }, {
64
+ deprecatedClass: '.MuiButton-containedWarning',
65
+ replacementSelector: '.MuiButton-contained.MuiButton-colorWarning'
66
+ }, {
67
+ deprecatedClass: '.MuiButton-textSizeSmall',
68
+ replacementSelector: '.MuiButton-text.MuiButton-sizeSmall'
69
+ }, {
70
+ deprecatedClass: '.MuiButton-textSizeLarge',
71
+ replacementSelector: '.MuiButton-text.MuiButton-sizeLarge'
72
+ }, {
73
+ deprecatedClass: '.MuiButton-outlinedSizeSmall',
74
+ replacementSelector: '.MuiButton-outlined.MuiButton-sizeSmall'
75
+ }, {
76
+ deprecatedClass: '.MuiButton-outlinedSizeLarge',
77
+ replacementSelector: '.MuiButton-outlined.MuiButton-sizeLarge'
78
+ }, {
79
+ deprecatedClass: '.MuiButton-containedSizeSmall',
80
+ replacementSelector: '.MuiButton-contained.MuiButton-sizeSmall'
81
+ }, {
82
+ deprecatedClass: '.MuiButton-containedSizeLarge',
83
+ replacementSelector: '.MuiButton-contained.MuiButton-sizeLarge'
84
+ }, {
85
+ deprecatedClass: '.MuiButton-textSizeMedium',
86
+ replacementSelector: '.MuiButton-text.MuiButton-sizeMedium'
87
+ }, {
88
+ deprecatedClass: '.MuiButton-outlinedSizeMedium',
89
+ replacementSelector: '.MuiButton-outlined.MuiButton-sizeMedium'
90
+ }, {
91
+ deprecatedClass: '.MuiButton-containedSizeMedium',
92
+ replacementSelector: '.MuiButton-contained.MuiButton-sizeMedium'
93
+ }, {
94
+ deprecatedClass: ' .MuiButton-iconSizeSmall',
95
+ replacementSelector: '.MuiButton-sizeSmall > .MuiButton-icon'
96
+ }, {
97
+ deprecatedClass: ' .MuiButton-iconSizeMedium',
98
+ replacementSelector: '.MuiButton-sizeMedium > .MuiButton-icon'
99
+ }, {
100
+ deprecatedClass: ' .MuiButton-iconSizeLarge',
101
+ replacementSelector: '.MuiButton-sizeLarge > .MuiButton-icon'
102
+ }];
103
+ const plugin = () => {
104
+ return {
105
+ postcssPlugin: `Replace deperecated Button classes with new classes`,
106
+ Rule(rule) {
107
+ const {
108
+ selector
109
+ } = rule;
110
+ classes.forEach(({
111
+ deprecatedClass,
112
+ replacementSelector
113
+ }) => {
114
+ const selectorRegex = new RegExp(`${deprecatedClass}`);
115
+ if (selector.match(selectorRegex)) {
116
+ rule.selector = selector.replace(selectorRegex, replacementSelector);
117
+ }
118
+ });
119
+ }
120
+ };
121
+ };
122
+ plugin.postcss = true;
123
+ module.exports = {
124
+ plugin,
125
+ classes
126
+ };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ const {
4
+ plugin
5
+ } = require('./postcss-plugin');
6
+ module.exports = {
7
+ plugins: [plugin]
8
+ };
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ var _Button = require("@mui/material/Button");
4
+ '&.MuiButton-textInherit';
5
+ '&.MuiButton-textPrimary';
6
+ '&.MuiButton-textSecondary';
7
+ '&.MuiButton-textSuccess';
8
+ '&.MuiButton-textError';
9
+ '&.MuiButton-textInfo';
10
+ '&.MuiButton-textWarning';
11
+ '&.MuiButton-outlinedInherit';
12
+ '&.MuiButton-outlinedPrimary';
13
+ '&.MuiButton-outlinedSecondary';
14
+ '&.MuiButton-outlinedSuccess';
15
+ '&.MuiButton-outlinedError';
16
+ '&.MuiButton-outlinedInfo';
17
+ '&.MuiButton-outlinedWarning';
18
+ '&.MuiButton-containedInherit';
19
+ '&.MuiButton-containedPrimary';
20
+ '&.MuiButton-containedSecondary';
21
+ '&.MuiButton-containedSuccess';
22
+ '&.MuiButton-containedError';
23
+ '&.MuiButton-containedInfo';
24
+ '&.MuiButton-containedWarning';
25
+ '&.MuiButton-textSizeSmall';
26
+ '&.MuiButton-textSizeMedium';
27
+ '&.MuiButton-textSizeLarge';
28
+ '&.MuiButton-outlinedSizeSmall';
29
+ '&.MuiButton-outlinedSizeMedium';
30
+ '&.MuiButton-outlinedSizeLarge';
31
+ '&.MuiButton-containedSizeSmall';
32
+ '&.MuiButton-containedSizeMedium';
33
+ '&.MuiButton-containedSizeLarge';
34
+ '& .MuiButton-iconSizeSmall';
35
+ '& .MuiButton-iconSizeMedium';
36
+ '& .MuiButton-iconSizeLarge';
37
+ `&.${_Button.buttonClasses.textInherit}`;
38
+ `&.${_Button.buttonClasses.textPrimary}`;
39
+ `&.${_Button.buttonClasses.textSecondary}`;
40
+ `&.${_Button.buttonClasses.textSuccess}`;
41
+ `&.${_Button.buttonClasses.textError}`;
42
+ `&.${_Button.buttonClasses.textInfo}`;
43
+ `&.${_Button.buttonClasses.textWarning}`;
44
+ `&.${_Button.buttonClasses.outlinedInherit}`;
45
+ `&.${_Button.buttonClasses.outlinedPrimary}`;
46
+ `&.${_Button.buttonClasses.outlinedSecondary}`;
47
+ `&.${_Button.buttonClasses.outlinedSuccess}`;
48
+ `&.${_Button.buttonClasses.outlinedError}`;
49
+ `&.${_Button.buttonClasses.outlinedInfo}`;
50
+ `&.${_Button.buttonClasses.outlinedWarning}`;
51
+ `&.${_Button.buttonClasses.containedInherit}`;
52
+ `&.${_Button.buttonClasses.containedPrimary}`;
53
+ `&.${_Button.buttonClasses.containedSecondary}`;
54
+ `&.${_Button.buttonClasses.containedSuccess}`;
55
+ `&.${_Button.buttonClasses.containedError}`;
56
+ `&.${_Button.buttonClasses.containedInfo}`;
57
+ `&.${_Button.buttonClasses.containedWarning}`;
58
+ `&.${_Button.buttonClasses.textSizeSmall}`;
59
+ `&.${_Button.buttonClasses.textSizeMedium}`;
60
+ `&.${_Button.buttonClasses.textSizeLarge}`;
61
+ `&.${_Button.buttonClasses.outlinedSizeSmall}`;
62
+ `&.${_Button.buttonClasses.outlinedSizeMedium}`;
63
+ `&.${_Button.buttonClasses.outlinedSizeLarge}`;
64
+ `&.${_Button.buttonClasses.containedSizeSmall}`;
65
+ `&.${_Button.buttonClasses.containedSizeMedium}`;
66
+ `&.${_Button.buttonClasses.containedSizeLarge}`;
67
+ `& .${_Button.buttonClasses.iconSizeSmall}`;
68
+ `& .${_Button.buttonClasses.iconSizeMedium}`;
69
+ `& .${_Button.buttonClasses.iconSizeLarge}`;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ var _Button = require("@mui/material/Button");
4
+ "&.MuiButton-text.MuiButton-colorInherit";
5
+ "&.MuiButton-text.MuiButton-colorPrimary";
6
+ "&.MuiButton-text.MuiButton-colorSecondary";
7
+ "&.MuiButton-text.MuiButton-colorSuccess";
8
+ "&.MuiButton-text.MuiButton-colorError";
9
+ "&.MuiButton-text.MuiButton-colorInfo";
10
+ "&.MuiButton-text.MuiButton-colorWarning";
11
+ "&.MuiButton-outlined.MuiButton-colorInherit";
12
+ "&.MuiButton-outlined.MuiButton-colorPrimary";
13
+ "&.MuiButton-outlined.MuiButton-colorSecondary";
14
+ "&.MuiButton-outlined.MuiButton-colorSuccess";
15
+ "&.MuiButton-outlined.MuiButton-colorError";
16
+ "&.MuiButton-outlined.MuiButton-colorInfo";
17
+ "&.MuiButton-outlined.MuiButton-colorWarning";
18
+ "&.MuiButton-contained.MuiButton-colorInherit";
19
+ "&.MuiButton-contained.MuiButton-colorPrimary";
20
+ "&.MuiButton-contained.MuiButton-colorSecondary";
21
+ "&.MuiButton-contained.MuiButton-colorSuccess";
22
+ "&.MuiButton-contained.MuiButton-colorError";
23
+ "&.MuiButton-contained.MuiButton-colorInfo";
24
+ "&.MuiButton-contained.MuiButton-colorWarning";
25
+ "&.MuiButton-text.MuiButton-sizeSmall";
26
+ "&.MuiButton-text.MuiButton-sizeMedium";
27
+ "&.MuiButton-text.MuiButton-sizeLarge";
28
+ "&.MuiButton-outlined.MuiButton-sizeSmall";
29
+ "&.MuiButton-outlined.MuiButton-sizeMedium";
30
+ "&.MuiButton-outlined.MuiButton-sizeLarge";
31
+ "&.MuiButton-contained.MuiButton-sizeSmall";
32
+ "&.MuiButton-contained.MuiButton-sizeMedium";
33
+ "&.MuiButton-contained.MuiButton-sizeLarge";
34
+ "&.MuiButton-sizeSmall > .MuiButton-icon";
35
+ "&.MuiButton-sizeMedium > .MuiButton-icon";
36
+ "&.MuiButton-sizeLarge > .MuiButton-icon";
37
+ `&.${_Button.buttonClasses.text}.${_Button.buttonClasses.colorInherit}`;
38
+ `&.${_Button.buttonClasses.text}.${_Button.buttonClasses.colorPrimary}`;
39
+ `&.${_Button.buttonClasses.text}.${_Button.buttonClasses.colorSecondary}`;
40
+ `&.${_Button.buttonClasses.text}.${_Button.buttonClasses.colorSuccess}`;
41
+ `&.${_Button.buttonClasses.text}.${_Button.buttonClasses.colorError}`;
42
+ `&.${_Button.buttonClasses.text}.${_Button.buttonClasses.colorInfo}`;
43
+ `&.${_Button.buttonClasses.text}.${_Button.buttonClasses.colorWarning}`;
44
+ `&.${_Button.buttonClasses.outlined}.${_Button.buttonClasses.colorInherit}`;
45
+ `&.${_Button.buttonClasses.outlined}.${_Button.buttonClasses.colorPrimary}`;
46
+ `&.${_Button.buttonClasses.outlined}.${_Button.buttonClasses.colorSecondary}`;
47
+ `&.${_Button.buttonClasses.outlined}.${_Button.buttonClasses.colorSuccess}`;
48
+ `&.${_Button.buttonClasses.outlined}.${_Button.buttonClasses.colorError}`;
49
+ `&.${_Button.buttonClasses.outlined}.${_Button.buttonClasses.colorInfo}`;
50
+ `&.${_Button.buttonClasses.outlined}.${_Button.buttonClasses.colorWarning}`;
51
+ `&.${_Button.buttonClasses.contained}.${_Button.buttonClasses.colorInherit}`;
52
+ `&.${_Button.buttonClasses.contained}.${_Button.buttonClasses.colorPrimary}`;
53
+ `&.${_Button.buttonClasses.contained}.${_Button.buttonClasses.colorSecondary}`;
54
+ `&.${_Button.buttonClasses.contained}.${_Button.buttonClasses.colorSuccess}`;
55
+ `&.${_Button.buttonClasses.contained}.${_Button.buttonClasses.colorError}`;
56
+ `&.${_Button.buttonClasses.contained}.${_Button.buttonClasses.colorInfo}`;
57
+ `&.${_Button.buttonClasses.contained}.${_Button.buttonClasses.colorWarning}`;
58
+ `&.${_Button.buttonClasses.text}.${_Button.buttonClasses.sizeSmall}`;
59
+ `&.${_Button.buttonClasses.text}.${_Button.buttonClasses.sizeMedium}`;
60
+ `&.${_Button.buttonClasses.text}.${_Button.buttonClasses.sizeLarge}`;
61
+ `&.${_Button.buttonClasses.outlined}.${_Button.buttonClasses.sizeSmall}`;
62
+ `&.${_Button.buttonClasses.outlined}.${_Button.buttonClasses.sizeMedium}`;
63
+ `&.${_Button.buttonClasses.outlined}.${_Button.buttonClasses.sizeLarge}`;
64
+ `&.${_Button.buttonClasses.contained}.${_Button.buttonClasses.sizeSmall}`;
65
+ `&.${_Button.buttonClasses.contained}.${_Button.buttonClasses.sizeMedium}`;
66
+ `&.${_Button.buttonClasses.contained}.${_Button.buttonClasses.sizeLarge}`;
67
+ `&.${_Button.buttonClasses.sizeSmall} > .${_Button.buttonClasses.icon}`;
68
+ `&.${_Button.buttonClasses.sizeMedium} > .${_Button.buttonClasses.icon}`;
69
+ `&.${_Button.buttonClasses.sizeLarge} > .${_Button.buttonClasses.icon}`;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = transformer;
7
+ var _postcssPlugin = require("./postcss-plugin");
8
+ /**
9
+ * @param {import('jscodeshift').FileInfo} file
10
+ * @param {import('jscodeshift').API} api
11
+ */
12
+ function transformer(file, api, options) {
13
+ const j = api.jscodeshift;
14
+ const root = j(file.source);
15
+ const printOptions = options.printOptions;
16
+ _postcssPlugin.classes.forEach(({
17
+ deprecatedClass,
18
+ replacementSelector
19
+ }) => {
20
+ const replacementSelectorPrefix = '&';
21
+ root.find(j.ImportDeclaration).filter(path => path.node.source.value.match(/^@mui\/material\/Chip$/)).forEach(path => {
22
+ path.node.specifiers.forEach(specifier => {
23
+ if (specifier.type === 'ImportSpecifier' && specifier.imported.name === 'chipClasses') {
24
+ const deprecatedAtomicClass = deprecatedClass.replace(`${deprecatedClass.split('-')[0]}-`, '');
25
+ root.find(j.MemberExpression, {
26
+ object: {
27
+ name: specifier.local.name
28
+ },
29
+ property: {
30
+ name: deprecatedAtomicClass
31
+ }
32
+ }).forEach(memberExpression => {
33
+ const parent = memberExpression.parentPath.parentPath.value;
34
+ if (parent.type === j.TemplateLiteral.name) {
35
+ const memberExpressionIndex = parent.expressions.findIndex(expression => expression === memberExpression.value);
36
+ const precedingTemplateElement = parent.quasis[memberExpressionIndex];
37
+ const atomicClasses = replacementSelector.replaceAll('MuiChip-', '').replaceAll(replacementSelectorPrefix, '').replaceAll(' > ', '').split('.').filter(Boolean);
38
+ if (precedingTemplateElement.value.raw.endsWith(deprecatedClass.startsWith(' ') ? `${replacementSelectorPrefix} .` : `${replacementSelectorPrefix}.`)) {
39
+ const atomicClassesArgs = [memberExpressionIndex, 1, ...atomicClasses.map(atomicClass => j.memberExpression(memberExpression.value.object, j.identifier(atomicClass)))];
40
+ parent.expressions.splice(...atomicClassesArgs);
41
+ if (replacementSelector.includes(' > ')) {
42
+ const quasisArgs = [memberExpressionIndex, 1, j.templateElement({
43
+ raw: precedingTemplateElement.value.raw.replace(' ', ''),
44
+ cooked: precedingTemplateElement.value.cooked.replace(' ', '')
45
+ }, false), j.templateElement({
46
+ raw: ' > .',
47
+ cooked: ' > .'
48
+ }, false)];
49
+ if (atomicClasses.length === 3) {
50
+ quasisArgs.splice(3, 0, j.templateElement({
51
+ raw: '.',
52
+ cooked: '.'
53
+ }, false));
54
+ }
55
+ parent.quasis.splice(...quasisArgs);
56
+ } else {
57
+ parent.quasis.splice(memberExpressionIndex, 1, j.templateElement({
58
+ raw: precedingTemplateElement.value.raw,
59
+ cooked: precedingTemplateElement.value.cooked
60
+ }, false), j.templateElement({
61
+ raw: '.',
62
+ cooked: '.'
63
+ }, false));
64
+ }
65
+ }
66
+ }
67
+ });
68
+ }
69
+ });
70
+ });
71
+ const selectorRegex = new RegExp(`^${replacementSelectorPrefix}${deprecatedClass}`);
72
+ root.find(j.Literal, literal => typeof literal.value === 'string' && literal.value.match(selectorRegex)).forEach(path => {
73
+ path.replace(j.literal(path.value.value.replace(selectorRegex, `${replacementSelectorPrefix}${replacementSelector}`)));
74
+ });
75
+ });
76
+ return root.toSource(printOptions);
77
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "default", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _chipClasses.default;
11
+ }
12
+ });
13
+ var _chipClasses = _interopRequireDefault(require("./chip-classes"));
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ const classes = [{
4
+ deprecatedClass: '.MuiChip-clickableColorPrimary',
5
+ replacementSelector: '.MuiChip-clickable.MuiChip-colorPrimary'
6
+ }, {
7
+ deprecatedClass: '.MuiChip-clickableColorSecondary',
8
+ replacementSelector: '.MuiChip-clickable.MuiChip-colorSecondary'
9
+ }, {
10
+ deprecatedClass: '.MuiChip-deletableColorPrimary',
11
+ replacementSelector: '.MuiChip-deletable.MuiChip-colorPrimary'
12
+ }, {
13
+ deprecatedClass: '.MuiChip-deletableColorSecondary',
14
+ replacementSelector: '.MuiChip-deletable.MuiChip-colorSecondary'
15
+ }, {
16
+ deprecatedClass: '.MuiChip-outlinedPrimary',
17
+ replacementSelector: '.MuiChip-outlined.MuiChip-colorPrimary'
18
+ }, {
19
+ deprecatedClass: '.MuiChip-outlinedSecondary',
20
+ replacementSelector: '.MuiChip-outlined.MuiChip-colorSecondary'
21
+ }, {
22
+ deprecatedClass: '.MuiChip-filledPrimary',
23
+ replacementSelector: '.MuiChip-filled.MuiChip-colorPrimary'
24
+ }, {
25
+ deprecatedClass: '.MuiChip-filledSecondary',
26
+ replacementSelector: '.MuiChip-filled.MuiChip-colorSecondary'
27
+ }, {
28
+ deprecatedClass: ' .MuiChip-avatarSmall',
29
+ replacementSelector: '.MuiChip-sizeSmall > .MuiChip-avatar'
30
+ }, {
31
+ deprecatedClass: ' .MuiChip-avatarMedium',
32
+ replacementSelector: '.MuiChip-sizeMedium > .MuiChip-avatar'
33
+ }, {
34
+ deprecatedClass: ' .MuiChip-avatarColorPrimary',
35
+ replacementSelector: '.MuiChip-colorPrimary > .MuiChip-avatar'
36
+ }, {
37
+ deprecatedClass: ' .MuiChip-avatarColorSecondary',
38
+ replacementSelector: '.MuiChip-colorSecondary > .MuiChip-avatar'
39
+ }, {
40
+ deprecatedClass: ' .MuiChip-iconSmall',
41
+ replacementSelector: '.MuiChip-sizeSmall > .MuiChip-icon'
42
+ }, {
43
+ deprecatedClass: ' .MuiChip-iconMedium',
44
+ replacementSelector: '.MuiChip-sizeMedium > .MuiChip-icon'
45
+ }, {
46
+ deprecatedClass: ' .MuiChip-iconColorPrimary',
47
+ replacementSelector: '.MuiChip-colorPrimary > .MuiChip-icon'
48
+ }, {
49
+ deprecatedClass: ' .MuiChip-iconColorSecondary',
50
+ replacementSelector: '.MuiChip-colorSecondary > .MuiChip-icon'
51
+ }, {
52
+ deprecatedClass: ' .MuiChip-labelSmall',
53
+ replacementSelector: '.MuiChip-sizeSmall > .MuiChip-label'
54
+ }, {
55
+ deprecatedClass: ' .MuiChip-labelMedium',
56
+ replacementSelector: '.MuiChip-sizeMedium > .MuiChip-label'
57
+ }, {
58
+ deprecatedClass: ' .MuiChip-deleteIconSmall',
59
+ replacementSelector: '.MuiChip-sizeSmall > .MuiChip-deleteIcon'
60
+ }, {
61
+ deprecatedClass: ' .MuiChip-deleteIconMedium',
62
+ replacementSelector: '.MuiChip-sizeMedium > .MuiChip-deleteIcon'
63
+ }, {
64
+ deprecatedClass: ' .MuiChip-deleteIconColorPrimary',
65
+ replacementSelector: '.MuiChip-colorPrimary > .MuiChip-deleteIcon'
66
+ }, {
67
+ deprecatedClass: ' .MuiChip-deleteIconColorSecondary',
68
+ replacementSelector: '.MuiChip-colorSecondary > .MuiChip-deleteIcon'
69
+ }, {
70
+ deprecatedClass: ' .MuiChip-deleteIconOutlinedColorPrimary',
71
+ replacementSelector: '.MuiChip-outlined.MuiChip-colorPrimary > .MuiChip-deleteIcon'
72
+ }, {
73
+ deprecatedClass: ' .MuiChip-deleteIconOutlinedColorSecondary',
74
+ replacementSelector: '.MuiChip-outlined.MuiChip-colorSecondary > .MuiChip-deleteIcon'
75
+ }, {
76
+ deprecatedClass: ' .MuiChip-deleteIconFilledColorPrimary',
77
+ replacementSelector: '.MuiChip-filled.MuiChip-colorPrimary > .MuiChip-deleteIcon'
78
+ }, {
79
+ deprecatedClass: ' .MuiChip-deleteIconFilledColorSecondary',
80
+ replacementSelector: '.MuiChip-filled.MuiChip-colorSecondary > .MuiChip-deleteIcon'
81
+ }];
82
+ const plugin = () => {
83
+ return {
84
+ postcssPlugin: `Replace deperecated Chip classes with new classes`,
85
+ Rule(rule) {
86
+ const {
87
+ selector
88
+ } = rule;
89
+ classes.forEach(({
90
+ deprecatedClass,
91
+ replacementSelector
92
+ }) => {
93
+ const selectorRegex = new RegExp(`${deprecatedClass}`);
94
+ if (selector.match(selectorRegex)) {
95
+ rule.selector = selector.replace(selectorRegex, replacementSelector);
96
+ }
97
+ });
98
+ }
99
+ };
100
+ };
101
+ plugin.postcss = true;
102
+ module.exports = {
103
+ plugin,
104
+ classes
105
+ };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ const {
4
+ plugin
5
+ } = require('./postcss-plugin');
6
+ module.exports = {
7
+ plugins: [plugin]
8
+ };