@mui/codemod 6.0.0-beta.3 → 6.0.0-beta.3-dev.20240725-084532-7340f56bef

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 CHANGED
@@ -1117,6 +1117,63 @@ npx @mui/codemod@next deprecations/list-item-props <path>
1117
1117
  npx @mui/codemod@next deprecations/grid-props <path>
1118
1118
  ```
1119
1119
 
1120
+ #### `image-list-item-bar-classes`
1121
+
1122
+ JS transforms:
1123
+
1124
+ ```diff
1125
+ import { imageListItemBarClasses } from '@mui/material/ImageListItemBar';
1126
+
1127
+ MuiImageListItemBar: {
1128
+ styleOverrides: {
1129
+ root: {
1130
+ - [`& .${imageListItemBarClasses.titleWrapBelow}`]: {
1131
+ + [`&.${imageListItemBarClasses.positionBelow} > .${imageListItemBarClasses.titleWrap}`]: {
1132
+ color: 'red',
1133
+ },
1134
+ - [`& .${imageListItemBarClasses.titleWrapActionPosLeft}`]: {
1135
+ + [`&.${imageListItemBarClasses.actionPositionLeft} > .${imageListItemBarClasses.titleWrap}`]: {
1136
+ color: 'red',
1137
+ },
1138
+ - [`& .${imageListItemBarClasses.titleWrapActionPosRight}`]: {
1139
+ + [`&.${imageListItemBarClasses.actionPositionRight} > .${imageListItemBarClasses.titleWrap}`]: {
1140
+ color: 'red',
1141
+ },
1142
+ - [`& .${imageListItemBarClasses.actionIconActionPosLeft}`]: {
1143
+ + [`&.${imageListItemBarClasses.actionPositionLeft} > .${imageListItemBarClasses.actionIcon}`]: {
1144
+ color: 'red',
1145
+ },
1146
+ },
1147
+ },
1148
+ },
1149
+ ```
1150
+
1151
+ CSS transforms:
1152
+
1153
+ ```diff
1154
+ - .MuiImageListItemBar-titleWrapBelow
1155
+ +.MuiImageListItemBar-positionBelow > .MuiImageListItemBar-titleWrap
1156
+ ```
1157
+
1158
+ ```diff
1159
+ - .MuiImageListItemBar-titleWrapActionPosLeft
1160
+ +.MuiImageListItemBar-actionPositionLeft > .MuiImageListItemBar-titleWrap
1161
+ ```
1162
+
1163
+ ```diff
1164
+ - .MuiImageListItemBar-titleWrapActionPosRight
1165
+ +.MuiImageListItemBar-actionPositionRight > .MuiImageListItemBar-titleWrap
1166
+ ```
1167
+
1168
+ ```diff
1169
+ - .MuiImageListItemBar-actionIconActionPosLeft
1170
+ +.MuiImageListItemBar-actionPositionLeft > .MuiImageListItemBar-actionIcon
1171
+ ```
1172
+
1173
+ ```bash
1174
+ npx @mui/codemod@next deprecations/image-list-item-bar-classes <path>
1175
+ ```
1176
+
1120
1177
  #### `input-base-props`
1121
1178
 
1122
1179
  ```diff
@@ -18,6 +18,7 @@ var _dividerProps = _interopRequireDefault(require("../divider-props"));
18
18
  var _filledInputProps = _interopRequireDefault(require("../filled-input-props"));
19
19
  var _formControlLabelProps = _interopRequireDefault(require("../form-control-label-props"));
20
20
  var _gridProps = _interopRequireDefault(require("../grid-props"));
21
+ var _imageListItemBarClasses = _interopRequireDefault(require("../image-list-item-bar-classes"));
21
22
  var _inputBaseProps = _interopRequireDefault(require("../input-base-props"));
22
23
  var _inputProps = _interopRequireDefault(require("../input-props"));
23
24
  var _modalProps = _interopRequireDefault(require("../modal-props"));
@@ -47,6 +48,7 @@ function deprecationsAll(file, api, options) {
47
48
  file.source = (0, _filledInputProps.default)(file, api, options);
48
49
  file.source = (0, _formControlLabelProps.default)(file, api, options);
49
50
  file.source = (0, _gridProps.default)(file, api, options);
51
+ file.source = (0, _imageListItemBarClasses.default)(file, api, options);
50
52
  file.source = (0, _inputBaseProps.default)(file, api, options);
51
53
  file.source = (0, _inputProps.default)(file, api, options);
52
54
  file.source = (0, _modalProps.default)(file, api, options);
@@ -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\/ImageListItemBar$/)).forEach(path => {
22
+ path.node.specifiers.forEach(specifier => {
23
+ if (specifier.type === 'ImportSpecifier' && specifier.imported.name === 'imageListItemBarClasses') {
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('MuiImageListItemBar-', '').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 _imageListItemBarClasses.default;
11
+ }
12
+ });
13
+ var _imageListItemBarClasses = _interopRequireDefault(require("./image-list-item-bar-classes"));
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ const classes = [{
4
+ deprecatedClass: ' .MuiImageListItemBar-titleWrapBelow',
5
+ replacementSelector: '.MuiImageListItemBar-positionBelow > .MuiImageListItemBar-titleWrap'
6
+ }, {
7
+ deprecatedClass: ' .MuiImageListItemBar-titleWrapActionPosLeft',
8
+ replacementSelector: '.MuiImageListItemBar-actionPositionLeft > .MuiImageListItemBar-titleWrap'
9
+ }, {
10
+ deprecatedClass: ' .MuiImageListItemBar-titleWrapActionPosRight',
11
+ replacementSelector: '.MuiImageListItemBar-actionPositionRight > .MuiImageListItemBar-titleWrap'
12
+ }, {
13
+ deprecatedClass: ' .MuiImageListItemBar-actionIconActionPosLeft',
14
+ replacementSelector: '.MuiImageListItemBar-actionPositionLeft > .MuiImageListItemBar-actionIcon'
15
+ }];
16
+ const plugin = () => {
17
+ return {
18
+ postcssPlugin: `Replace deprecated ImageListItemBar classes with new classes`,
19
+ Rule(rule) {
20
+ const {
21
+ selector
22
+ } = rule;
23
+ classes.forEach(({
24
+ deprecatedClass,
25
+ replacementSelector
26
+ }) => {
27
+ const selectorRegex = new RegExp(`${deprecatedClass}$`);
28
+ if (selector.match(selectorRegex)) {
29
+ rule.selector = selector.replace(selectorRegex, replacementSelector);
30
+ }
31
+ });
32
+ }
33
+ };
34
+ };
35
+ plugin.postcss = true;
36
+ module.exports = {
37
+ plugin,
38
+ classes
39
+ };
@@ -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,11 @@
1
+ "use strict";
2
+
3
+ var _ImageListItemBar = require("@mui/material/ImageListItemBar");
4
+ '& .MuiImageListItemBar-titleWrapBelow';
5
+ '& .MuiImageListItemBar-titleWrapActionPosLeft';
6
+ '& .MuiImageListItemBar-titleWrapActionPosRight';
7
+ '& .MuiImageListItemBar-actionIconActionPosLeft';
8
+ `& .${_ImageListItemBar.imageListItemBarClasses.titleWrapBelow}`;
9
+ `& .${_ImageListItemBar.imageListItemBarClasses.titleWrapActionPosLeft}`;
10
+ `& .${_ImageListItemBar.imageListItemBarClasses.titleWrapActionPosRight}`;
11
+ `& .${_ImageListItemBar.imageListItemBarClasses.actionIconActionPosLeft}`;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ var _ImageListItemBar = require("@mui/material/ImageListItemBar");
4
+ "&.MuiImageListItemBar-positionBelow > .MuiImageListItemBar-titleWrap";
5
+ "&.MuiImageListItemBar-actionPositionLeft > .MuiImageListItemBar-titleWrap";
6
+ "&.MuiImageListItemBar-actionPositionRight > .MuiImageListItemBar-titleWrap";
7
+ "&.MuiImageListItemBar-actionPositionLeft > .MuiImageListItemBar-actionIcon";
8
+ `&.${_ImageListItemBar.imageListItemBarClasses.positionBelow} > .${_ImageListItemBar.imageListItemBarClasses.titleWrap}`;
9
+ `&.${_ImageListItemBar.imageListItemBarClasses.actionPositionLeft} > .${_ImageListItemBar.imageListItemBarClasses.titleWrap}`;
10
+ `&.${_ImageListItemBar.imageListItemBarClasses.actionPositionRight} > .${_ImageListItemBar.imageListItemBarClasses.titleWrap}`;
11
+ `&.${_ImageListItemBar.imageListItemBarClasses.actionPositionLeft} > .${_ImageListItemBar.imageListItemBarClasses.actionIcon}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/codemod",
3
- "version": "6.0.0-beta.3",
3
+ "version": "6.0.0-beta.3-dev.20240725-084532-7340f56bef",
4
4
  "bin": "./codemod.js",
5
5
  "private": false,
6
6
  "author": "MUI Team",