@vkontakte/vkui-codemods 0.0.7 → 1.0.0-beta.1

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 (100) hide show
  1. package/README.md +69 -21
  2. package/dist/autoDetectVKUIVersion.js +77 -0
  3. package/dist/cli.js +86 -30
  4. package/dist/codemod-helpers.js +76 -4
  5. package/dist/getAvailableCodemods.js +31 -4
  6. package/dist/index.js +57 -64
  7. package/dist/report.js +1 -2
  8. package/dist/testHelpers/testHelper.js +3 -3
  9. package/dist/transforms/{accordion.js → v6/accordion.js} +3 -3
  10. package/dist/transforms/{action-sheet-item.js → v6/action-sheet-item.js} +2 -2
  11. package/dist/transforms/{action-sheet.js → v6/action-sheet.js} +3 -3
  12. package/dist/transforms/{alert.js → v6/alert.js} +2 -2
  13. package/dist/transforms/{appearance-provider.js → v6/appearance-provider.js} +2 -2
  14. package/dist/transforms/{banner.js → v6/banner.js} +3 -3
  15. package/dist/transforms/{calendar-range.js → v6/calendar-range.js} +2 -2
  16. package/dist/transforms/{calendar.js → v6/calendar.js} +2 -2
  17. package/dist/transforms/{card-scroll.js → v6/card-scroll.js} +2 -2
  18. package/dist/transforms/{chip.js → v6/chip.js} +2 -2
  19. package/dist/transforms/{chips-input.js → v6/chips-input.js} +2 -2
  20. package/dist/transforms/{config-provider.js → v6/config-provider.js} +2 -2
  21. package/dist/transforms/{content-card.js → v6/content-card.js} +2 -2
  22. package/dist/transforms/{custom-scroll-view.js → v6/custom-scroll-view.js} +3 -3
  23. package/dist/transforms/{date-input.js → v6/date-input.js} +2 -2
  24. package/dist/transforms/{date-range-input.js → v6/date-range-input.js} +2 -2
  25. package/dist/transforms/{fixed-layout.js → v6/fixed-layout.js} +2 -2
  26. package/dist/transforms/{forbid-imports.js → v6/forbid-imports.js} +2 -2
  27. package/dist/transforms/{form-item.js → v6/form-item.js} +2 -2
  28. package/dist/transforms/{form-layout.js → v6/form-layout.js} +3 -3
  29. package/dist/transforms/{gallery.js → v6/gallery.js} +2 -2
  30. package/dist/transforms/{gradient-prop-change.js → v6/gradient-prop-change.js} +3 -3
  31. package/dist/transforms/{image-base.js → v6/image-base.js} +2 -2
  32. package/dist/transforms/{modal-card.js → v6/modal-card.js} +3 -3
  33. package/dist/transforms/{modal-page-header.js → v6/modal-page-header.js} +2 -2
  34. package/dist/transforms/{pagination.js → v6/pagination.js} +3 -3
  35. package/dist/transforms/{panel-header-content.js → v6/panel-header-content.js} +3 -3
  36. package/dist/transforms/{panel-header.js → v6/panel-header.js} +3 -3
  37. package/dist/transforms/{placeholder.js → v6/placeholder.js} +2 -2
  38. package/dist/transforms/{popout-wrapper.js → v6/popout-wrapper.js} +3 -3
  39. package/dist/transforms/{popover.js → v6/popover.js} +2 -2
  40. package/dist/transforms/{popper.js → v6/popper.js} +2 -2
  41. package/dist/transforms/{rich-tooltip.js → v6/rich-tooltip.js} +3 -3
  42. package/dist/transforms/{search.js → v6/search.js} +2 -2
  43. package/dist/transforms/{select.js → v6/select.js} +2 -2
  44. package/dist/transforms/{simple-cell.js → v6/simple-cell.js} +3 -3
  45. package/dist/transforms/{split-col.js → v6/split-col.js} +2 -2
  46. package/dist/transforms/{tabbar.js → v6/tabbar.js} +2 -2
  47. package/dist/transforms/{tappable.js → v6/tappable.js} +3 -3
  48. package/dist/transforms/{text-tooltip.js → v6/text-tooltip.js} +2 -2
  49. package/dist/transforms/{tooltip-container.js → v6/tooltip-container.js} +2 -2
  50. package/dist/transforms/{tooltip.js → v6/tooltip.js} +2 -2
  51. package/dist/transforms/{typography.js → v6/typography.js} +3 -3
  52. package/dist/transforms/{users-stack.js → v6/users-stack.js} +3 -3
  53. package/dist/transforms/v7/action-sheet.js +16 -0
  54. package/dist/transforms/v7/alert.js +16 -0
  55. package/dist/transforms/v7/appearance-provider.js +35 -0
  56. package/dist/transforms/v7/appearance.js +45 -0
  57. package/dist/transforms/v7/banner.js +47 -0
  58. package/dist/transforms/v7/card-grid.js +16 -0
  59. package/dist/transforms/v7/card-scroll.js +59 -0
  60. package/dist/transforms/v7/cell-button.js +49 -0
  61. package/dist/transforms/v7/cell.js +18 -0
  62. package/dist/transforms/v7/chips-select.js +20 -0
  63. package/dist/transforms/v7/common/remapSizePropValue.js +43 -0
  64. package/dist/transforms/v7/common/swapGapPropElements.js +25 -0
  65. package/dist/transforms/v7/config-provider.js +136 -0
  66. package/dist/transforms/v7/content-card.js +21 -0
  67. package/dist/transforms/v7/custom-scroll-view.js +21 -0
  68. package/dist/transforms/v7/custom-select.js +20 -0
  69. package/dist/transforms/v7/flex.js +18 -0
  70. package/dist/transforms/v7/form-item.js +128 -0
  71. package/dist/transforms/v7/form-status.js +18 -0
  72. package/dist/transforms/v7/header.js +28 -0
  73. package/dist/transforms/v7/horizontal-cell-show-more.js +58 -0
  74. package/dist/transforms/v7/horizontal-cell.js +16 -0
  75. package/dist/transforms/v7/horizontal-scroll.js +38 -0
  76. package/dist/transforms/v7/image-overlay.js +125 -0
  77. package/dist/transforms/v7/mini-info-cell.js +18 -0
  78. package/dist/transforms/v7/modal-card.js +29 -0
  79. package/dist/transforms/v7/onboarding-tooltip.js +16 -0
  80. package/dist/transforms/v7/panel-header-content.js +16 -0
  81. package/dist/transforms/v7/placeholder.js +19 -0
  82. package/dist/transforms/v7/rich-cell.js +20 -0
  83. package/dist/transforms/v7/screen-spinner.js +61 -0
  84. package/dist/transforms/v7/scroll-arrow.js +52 -0
  85. package/dist/transforms/v7/select.js +20 -0
  86. package/dist/transforms/v7/separator.js +18 -0
  87. package/dist/transforms/v7/simple-cell.js +18 -0
  88. package/dist/transforms/v7/simple-grid.js +18 -0
  89. package/dist/transforms/v7/spacing.js +26 -0
  90. package/dist/transforms/v7/spinner.js +29 -0
  91. package/dist/transforms/v7/subnavigation-bar.js +60 -0
  92. package/dist/transforms/v7/subnavigation-button.js +18 -0
  93. package/dist/transforms/v7/tabbar-item.js +16 -0
  94. package/dist/transforms/v7/tooltip.js +16 -0
  95. package/dist/transforms/v7/typography.js +79 -0
  96. package/dist/transforms/v7/users-stack.js +50 -0
  97. package/package.json +7 -7
  98. package/dist/transforms/{horizontal-cell-show-more.js → v6/horizontal-cell-show-more.js} +1 -1
  99. package/dist/transforms/{range-slider.js → v6/range-slider.js} +1 -1
  100. package/dist/transforms/{visually-hidden-input.js → v6/visually-hidden-input.js} +1 -1
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.remapSizePropValue = void 0;
4
+ var report_1 = require("../../../report");
5
+ var remapSizePropValue = function (_a) {
6
+ var j = _a.j, source = _a.source, sizesMap = _a.sizesMap, componentName = _a.componentName, api = _a.api;
7
+ source
8
+ .find(j.JSXOpeningElement)
9
+ .filter(function (path) { return path.value.name.type === 'JSXIdentifier' && path.value.name.name === componentName; })
10
+ .find(j.JSXAttribute)
11
+ .filter(function (attribute) {
12
+ var attributeName = attribute.node.name.name;
13
+ return attributeName === 'size';
14
+ })
15
+ .forEach(function (attribute) {
16
+ var _a, _b, _c, _d;
17
+ var nodeToReplaceValue;
18
+ if (((_a = attribute.node.value) === null || _a === void 0 ? void 0 : _a.type) !== 'JSXExpressionContainer' &&
19
+ ((_b = attribute.node.value) === null || _b === void 0 ? void 0 : _b.type) !== 'StringLiteral') {
20
+ return;
21
+ }
22
+ if (((_c = attribute.node.value) === null || _c === void 0 ? void 0 : _c.type) === 'JSXExpressionContainer') {
23
+ var expression = attribute.node.value.expression;
24
+ if (expression.type !== 'StringLiteral') {
25
+ return;
26
+ }
27
+ nodeToReplaceValue = expression;
28
+ }
29
+ if (((_d = attribute.node.value) === null || _d === void 0 ? void 0 : _d.type) === 'StringLiteral') {
30
+ nodeToReplaceValue = attribute.node.value;
31
+ }
32
+ if (nodeToReplaceValue) {
33
+ var newValue = sizesMap[nodeToReplaceValue.value];
34
+ if (newValue) {
35
+ nodeToReplaceValue.value = newValue;
36
+ }
37
+ }
38
+ else {
39
+ (0, report_1.report)(api, "Manual changes required for ".concat(componentName, "'s \"size\" prop."));
40
+ }
41
+ });
42
+ };
43
+ exports.remapSizePropValue = remapSizePropValue;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.swapGapPropElements = void 0;
4
+ var swapGapPropElements = function (j, source, componentName) {
5
+ source
6
+ .find(j.JSXOpeningElement)
7
+ .filter(function (path) { return path.value.name.type === 'JSXIdentifier' && path.value.name.name === componentName; })
8
+ .forEach(function (path) {
9
+ var attributes = path.node.attributes;
10
+ var gapAttribute = attributes === null || attributes === void 0 ? void 0 : attributes.find(function (attr) { return attr.type === 'JSXAttribute' && attr.name.name === 'gap'; });
11
+ if (gapAttribute &&
12
+ gapAttribute.value &&
13
+ gapAttribute.value.type === 'JSXExpressionContainer') {
14
+ var expression = gapAttribute.value.expression;
15
+ if (expression.type === 'ArrayExpression' && expression.elements.length === 2) {
16
+ // Меняем местами элементы массива
17
+ var _a = expression.elements, first = _a[0], second = _a[1];
18
+ if (first && second) {
19
+ expression.elements = [second, first];
20
+ }
21
+ }
22
+ }
23
+ });
24
+ };
25
+ exports.swapGapPropElements = swapGapPropElements;
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parser = void 0;
4
+ exports.default = transformer;
5
+ var codemod_helpers_1 = require("../../codemod-helpers");
6
+ var report_1 = require("../../report");
7
+ exports.parser = 'tsx';
8
+ var CONFIG_PROVIDER_NAME = 'ConfigProvider';
9
+ var CONFIG_PROVIDER_PROPS_NAME = 'ConfigProviderProps';
10
+ var CONFIG_PROVIDER_CONTEXT_NAME = 'ConfigProviderContext';
11
+ var USE_CONFIG_PROVIDER_NAME = 'useConfigProvider';
12
+ function transformer(file, api, options) {
13
+ var alias = options.alias;
14
+ var j = api.jscodeshift;
15
+ var source = j(file.source);
16
+ var configProviderName = (0, codemod_helpers_1.getImportInfo)(j, file, CONFIG_PROVIDER_NAME, alias).localName;
17
+ var configProviderPropsName = (0, codemod_helpers_1.getImportInfo)(j, file, CONFIG_PROVIDER_PROPS_NAME, alias).localName;
18
+ var configProviderContextName = (0, codemod_helpers_1.getImportInfo)(j, file, CONFIG_PROVIDER_CONTEXT_NAME, alias).localName;
19
+ var useConfigProviderName = (0, codemod_helpers_1.getImportInfo)(j, file, USE_CONFIG_PROVIDER_NAME, alias).localName;
20
+ if (!configProviderName &&
21
+ !configProviderPropsName &&
22
+ !configProviderContextName &&
23
+ !useConfigProviderName) {
24
+ return source.toSource();
25
+ }
26
+ if (configProviderName) {
27
+ handleConfigProvider(j, api, source, configProviderName);
28
+ }
29
+ if (configProviderContextName) {
30
+ handleConfigProviderContext(j, api, source, configProviderContextName);
31
+ }
32
+ if (useConfigProviderName) {
33
+ handleUseConfigProvider(j, api, source, useConfigProviderName);
34
+ }
35
+ if (configProviderPropsName) {
36
+ handleConfigProviderProps(j, api, source, configProviderPropsName);
37
+ }
38
+ return source.toSource();
39
+ }
40
+ function handleConfigProviderProps(j, api, source, localName) {
41
+ var showReport = function () {
42
+ (0, report_1.report)(api, ": \"".concat(localName, "\" has been changed. Manual changes required: perhaps need to rename \"appearance\" field to \"colorScheme\" in object."));
43
+ };
44
+ var types = source.find(j.TSTypeReference, {
45
+ typeName: { type: 'Identifier', name: localName },
46
+ });
47
+ if (types.length) {
48
+ showReport();
49
+ }
50
+ }
51
+ function handleUseConfigProvider(j, api, source, localName) {
52
+ var showReport = function () {
53
+ (0, report_1.report)(api, ": \"".concat(localName, "\" has been changed. Manual changes required: perhaps need to rename \"appearance\" field to \"colorScheme\" in result of hook."));
54
+ };
55
+ var identifiers = source.find(j.Identifier, {
56
+ name: localName,
57
+ });
58
+ if (identifiers.length) {
59
+ showReport();
60
+ }
61
+ }
62
+ function handleConfigProvider(j, api, source, localName) {
63
+ var showReport = function () {
64
+ (0, report_1.report)(api, ": \"".concat(localName, "\" has been changed. Manual changes required: perhaps need to rename \"appearance\" field to \"colorScheme\"."));
65
+ };
66
+ source
67
+ .find(j.JSXElement, {
68
+ openingElement: {
69
+ name: {
70
+ name: localName,
71
+ },
72
+ },
73
+ })
74
+ .forEach(function (path) {
75
+ var _a, _b;
76
+ var appearanceAttribute = (_a = path.node.openingElement.attributes) === null || _a === void 0 ? void 0 : _a.find(function (attr) { return attr.type === 'JSXAttribute' && attr.name && attr.name.name === 'appearance'; });
77
+ if (appearanceAttribute) {
78
+ appearanceAttribute.name = j.jsxIdentifier('colorScheme');
79
+ return;
80
+ }
81
+ var spreadAttribute = (_b = path.node.openingElement.attributes) === null || _b === void 0 ? void 0 : _b.find(function (attr) { return attr.type === 'JSXSpreadAttribute'; });
82
+ if (spreadAttribute) {
83
+ showReport();
84
+ return;
85
+ }
86
+ return;
87
+ });
88
+ }
89
+ function handleConfigProviderContext(j, api, source, localName) {
90
+ var showReport = function () {
91
+ (0, report_1.report)(api, ": \"".concat(localName, "\" has been changed. Manual changes required: perhaps need to rename \"appearance\" field to \"colorScheme\"."));
92
+ };
93
+ source
94
+ .find(j.JSXElement, {
95
+ openingElement: {
96
+ name: {
97
+ object: { name: localName },
98
+ property: { name: 'Provider' },
99
+ },
100
+ },
101
+ })
102
+ .forEach(function (path) {
103
+ var _a, _b;
104
+ var valueAttribute = (_a = path.node.openingElement.attributes) === null || _a === void 0 ? void 0 : _a.find(function (attr) { return attr.type === 'JSXAttribute' && attr.name && attr.name.name === 'value'; });
105
+ if (!valueAttribute) {
106
+ showReport();
107
+ return;
108
+ }
109
+ var valueExpression = ((_b = valueAttribute.value) === null || _b === void 0 ? void 0 : _b.type) === 'JSXExpressionContainer'
110
+ ? valueAttribute.value.expression
111
+ : undefined;
112
+ if (!valueExpression) {
113
+ showReport();
114
+ return;
115
+ }
116
+ if (valueExpression.type === 'Identifier') {
117
+ showReport();
118
+ return;
119
+ }
120
+ if (valueExpression.type === 'ObjectExpression') {
121
+ var appearanceProp = valueExpression.properties.find(function (prop) {
122
+ return prop.type === 'ObjectProperty' &&
123
+ prop.key.type === 'Identifier' &&
124
+ prop.key.name === 'appearance';
125
+ });
126
+ if (!appearanceProp) {
127
+ showReport();
128
+ return;
129
+ }
130
+ appearanceProp.key = j.identifier('colorScheme');
131
+ return;
132
+ }
133
+ showReport();
134
+ return;
135
+ });
136
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parser = void 0;
4
+ exports.default = transformer;
5
+ var codemod_helpers_1 = require("../../codemod-helpers");
6
+ exports.parser = 'tsx';
7
+ function transformer(file, api, options) {
8
+ var alias = options.alias;
9
+ var j = api.jscodeshift;
10
+ var source = j(file.source);
11
+ var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'ContentCard', alias).localName;
12
+ if (localName) {
13
+ (0, codemod_helpers_1.renameProp)(j, source, localName, {
14
+ subtitle: 'overTitle',
15
+ header: 'title',
16
+ text: 'description',
17
+ headerComponent: 'titleComponent',
18
+ });
19
+ }
20
+ return source.toSource();
21
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parser = void 0;
4
+ exports.default = transformer;
5
+ var codemod_helpers_1 = require("../../codemod-helpers");
6
+ exports.parser = 'tsx';
7
+ var PROPS_TO_REMOVE = ['windowResize', 'autoHideScrollbar', 'autoHideScrollbarDelay'];
8
+ function transformer(file, api, options) {
9
+ var alias = options.alias;
10
+ var j = api.jscodeshift;
11
+ var source = j(file.source);
12
+ var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'CustomScrollView', alias).localName;
13
+ if (!localName) {
14
+ return source.toSource();
15
+ }
16
+ (0, codemod_helpers_1.removeProps)(j, api, source, localName, PROPS_TO_REMOVE, function () {
17
+ return "need to remove props ".concat(PROPS_TO_REMOVE.join(', '));
18
+ });
19
+ (0, codemod_helpers_1.renameProp)(j, source, localName, { boxRef: 'getRootRef' });
20
+ return source.toSource();
21
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parser = void 0;
4
+ exports.default = transformer;
5
+ var codemod_helpers_1 = require("../../codemod-helpers");
6
+ exports.parser = 'tsx';
7
+ var PROPS_TO_REMOVE = ['autoHideScrollbar', 'autoHideScrollbarDelay'];
8
+ function transformer(file, api, options) {
9
+ var alias = options.alias;
10
+ var j = api.jscodeshift;
11
+ var source = j(file.source);
12
+ var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'CustomSelect', alias).localName;
13
+ if (!localName) {
14
+ return source.toSource();
15
+ }
16
+ (0, codemod_helpers_1.removeProps)(j, api, source, localName, PROPS_TO_REMOVE, function () {
17
+ return "need to remove props ".concat(PROPS_TO_REMOVE.join(', '));
18
+ });
19
+ return source.toSource();
20
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parser = void 0;
4
+ exports.default = transformer;
5
+ var swapGapPropElements_1 = require("./common/swapGapPropElements");
6
+ var codemod_helpers_1 = require("../../codemod-helpers");
7
+ exports.parser = 'tsx';
8
+ function transformer(file, api, options) {
9
+ var alias = options.alias;
10
+ var j = api.jscodeshift;
11
+ var source = j(file.source);
12
+ var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'Flex', alias).localName;
13
+ if (!localName) {
14
+ return source.toSource();
15
+ }
16
+ (0, swapGapPropElements_1.swapGapPropElements)(j, source, localName);
17
+ return source.toSource();
18
+ }
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parser = void 0;
4
+ exports.default = transformer;
5
+ var codemod_helpers_1 = require("../../codemod-helpers");
6
+ exports.parser = 'tsx';
7
+ function transformer(file, api, options) {
8
+ var alias = options.alias;
9
+ var j = api.jscodeshift;
10
+ var source = j(file.source);
11
+ var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'FormItem', alias).localName;
12
+ if (!localName) {
13
+ return source.toSource();
14
+ }
15
+ function processTopLabel(element) {
16
+ var _a, _b;
17
+ if (element.openingElement.name.type === 'JSXMemberExpression' &&
18
+ ((_a = element.openingElement.name.property) === null || _a === void 0 ? void 0 : _a.name) === 'TopLabel') {
19
+ var multilineValue_1;
20
+ element.openingElement.attributes = (_b = element.openingElement.attributes) === null || _b === void 0 ? void 0 : _b.filter(function (attr) {
21
+ var _a;
22
+ if (attr.type === 'JSXAttribute' && attr.name.name === 'multiline') {
23
+ if (!attr.value) {
24
+ multilineValue_1 = true;
25
+ }
26
+ else if (((_a = attr.value) === null || _a === void 0 ? void 0 : _a.type) === 'JSXExpressionContainer') {
27
+ multilineValue_1 = attr.value;
28
+ }
29
+ return false;
30
+ }
31
+ return true;
32
+ });
33
+ return multilineValue_1;
34
+ }
35
+ return undefined;
36
+ }
37
+ function findTopLabelRecursive(element) {
38
+ var result = processTopLabel(element);
39
+ if (result !== undefined) {
40
+ return result;
41
+ }
42
+ if (!element.children) {
43
+ return undefined;
44
+ }
45
+ for (var _i = 0, _a = element.children; _i < _a.length; _i++) {
46
+ var child = _a[_i];
47
+ if (child.type === 'JSXElement') {
48
+ result = findTopLabelRecursive(child);
49
+ if (result !== undefined) {
50
+ return result;
51
+ }
52
+ }
53
+ }
54
+ return undefined;
55
+ }
56
+ source.find(j.JSXElement, { openingElement: { name: { name: localName } } }).forEach(function (path) {
57
+ var formItem = path.node;
58
+ var topMultiline;
59
+ var topLabelMultiline;
60
+ var formItemAttributes = formItem.openingElement.attributes;
61
+ var prettifyTopMultilineAttribute = function () {
62
+ var _a;
63
+ // Избавляемся от лишнего:
64
+ // если topMultiline={false} можно убрать аттрибут
65
+ // если topMultiline={true} можно убрать {true}
66
+ if (topMultiline && (formItemAttributes === null || formItemAttributes === void 0 ? void 0 : formItemAttributes.includes(topMultiline))) {
67
+ if (((_a = topMultiline === null || topMultiline === void 0 ? void 0 : topMultiline.value) === null || _a === void 0 ? void 0 : _a.type) === 'JSXExpressionContainer' &&
68
+ topMultiline.value.expression.type === 'BooleanLiteral') {
69
+ if (topMultiline.value.expression.value) {
70
+ topMultiline.value = null;
71
+ }
72
+ else {
73
+ formItemAttributes.splice(formItemAttributes.indexOf(topMultiline), 1);
74
+ }
75
+ }
76
+ }
77
+ };
78
+ // Проверяем существующий topMultiline проп
79
+ formItemAttributes === null || formItemAttributes === void 0 ? void 0 : formItemAttributes.forEach(function (attr) {
80
+ if (attr.type === 'JSXAttribute' && attr.name.name === 'topMultiline') {
81
+ topMultiline = attr;
82
+ }
83
+ });
84
+ // Ищем FormItem.TopLabel в пропе top и topNode
85
+ formItemAttributes === null || formItemAttributes === void 0 ? void 0 : formItemAttributes.forEach(function (attr) {
86
+ var _a, _b;
87
+ if (attr.type === 'JSXAttribute' &&
88
+ (attr.name.name === 'top' || attr.name.name === 'topNode')) {
89
+ if (((_a = attr.value) === null || _a === void 0 ? void 0 : _a.type) === 'JSXElement') {
90
+ topLabelMultiline = findTopLabelRecursive(attr.value);
91
+ }
92
+ else if (((_b = attr.value) === null || _b === void 0 ? void 0 : _b.type) === 'JSXExpressionContainer' &&
93
+ attr.value.expression.type === 'JSXElement') {
94
+ topLabelMultiline = findTopLabelRecursive(attr.value.expression);
95
+ }
96
+ }
97
+ });
98
+ // Ищем FormItem.TopLabel в children
99
+ if (topLabelMultiline === undefined && formItem.children) {
100
+ for (var _i = 0, _a = formItem.children; _i < _a.length; _i++) {
101
+ var child = _a[_i];
102
+ if (child.type === 'JSXElement') {
103
+ topLabelMultiline = findTopLabelRecursive(child);
104
+ if (topLabelMultiline !== undefined) {
105
+ break;
106
+ }
107
+ }
108
+ }
109
+ }
110
+ if (!topLabelMultiline) {
111
+ prettifyTopMultilineAttribute();
112
+ return;
113
+ }
114
+ var newTopMultilineValue = topLabelMultiline === true ? null : topLabelMultiline;
115
+ // Обновляем или добавляем topMultiline проп
116
+ if (topMultiline) {
117
+ // Если у FormItem задан topMultiline -> переопределяем
118
+ topMultiline.value = newTopMultilineValue;
119
+ }
120
+ else if (topLabelMultiline) {
121
+ // Если у FormItem не задан topMultiline
122
+ // добавляем его в аргументы
123
+ formItemAttributes === null || formItemAttributes === void 0 ? void 0 : formItemAttributes.push(j.jsxAttribute(j.jsxIdentifier('topMultiline'), newTopMultilineValue));
124
+ }
125
+ prettifyTopMultilineAttribute();
126
+ });
127
+ return source.toSource();
128
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parser = void 0;
4
+ exports.default = transformer;
5
+ var codemod_helpers_1 = require("../../codemod-helpers");
6
+ exports.parser = 'tsx';
7
+ function transformer(file, api, options) {
8
+ var alias = options.alias;
9
+ var j = api.jscodeshift;
10
+ var source = j(file.source);
11
+ var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'FormStatus', alias).localName;
12
+ if (localName) {
13
+ (0, codemod_helpers_1.renameProp)(j, source, localName, {
14
+ header: 'title',
15
+ });
16
+ }
17
+ return source.toSource();
18
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parser = void 0;
4
+ exports.default = transformer;
5
+ var remapSizePropValue_1 = require("./common/remapSizePropValue");
6
+ var codemod_helpers_1 = require("../../codemod-helpers");
7
+ exports.parser = 'tsx';
8
+ function transformer(file, api, options) {
9
+ var alias = options.alias;
10
+ var j = api.jscodeshift;
11
+ var source = j(file.source);
12
+ var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'Header', alias).localName;
13
+ if (!localName) {
14
+ return source.toSource();
15
+ }
16
+ (0, remapSizePropValue_1.remapSizePropValue)({
17
+ j: j,
18
+ api: api,
19
+ source: source,
20
+ componentName: localName,
21
+ sizesMap: {
22
+ large: 'l',
23
+ regular: 'm',
24
+ },
25
+ });
26
+ (0, codemod_helpers_1.renameProp)(j, source, localName, { aside: 'after' });
27
+ return source.toSource();
28
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parser = void 0;
4
+ exports.default = transformer;
5
+ var codemod_helpers_1 = require("../../codemod-helpers");
6
+ var report_1 = require("../../report");
7
+ exports.parser = 'tsx';
8
+ var componentName = 'HorizontalCellShowMore';
9
+ function compensateLastCellIndentManipulator(api, attribute) {
10
+ var node = attribute.node;
11
+ if (!node.value) {
12
+ api.jscodeshift(attribute).remove();
13
+ }
14
+ else if (node.value.type === 'JSXExpressionContainer' &&
15
+ node.value.expression.type === 'BooleanLiteral') {
16
+ api.jscodeshift(attribute).remove();
17
+ }
18
+ else {
19
+ (0, report_1.report)(api, "Manual changes required for ".concat(componentName, "'s \"compensateLastCellIndent\" prop. You might not need it anymore."));
20
+ }
21
+ }
22
+ function sizeManipulator(api, attribute) {
23
+ var _a;
24
+ var node = attribute.node;
25
+ if (((_a = node.value) === null || _a === void 0 ? void 0 : _a.type) === 'StringLiteral') {
26
+ if (node.value.value !== 's') {
27
+ node.value = api.jscodeshift.stringLiteral('m');
28
+ }
29
+ }
30
+ else {
31
+ (0, report_1.report)(api, "Manual changes required for ".concat(componentName, "'s \"size\" prop. Use \"s\" or \"m\" value only."));
32
+ }
33
+ }
34
+ function transformer(file, api, options) {
35
+ var alias = options.alias;
36
+ var j = api.jscodeshift;
37
+ var source = j(file.source);
38
+ var localName = (0, codemod_helpers_1.getImportInfo)(j, file, componentName, alias).localName;
39
+ if (!localName) {
40
+ return source.toSource();
41
+ }
42
+ source
43
+ .find(j.JSXOpeningElement)
44
+ .filter(function (path) { return path.value.name.type === 'JSXIdentifier' && path.value.name.name === localName; })
45
+ .find(j.JSXAttribute, function (attribute) {
46
+ return attribute.name.name === 'compensateLastCellIndent' || attribute.name.name === 'size';
47
+ })
48
+ .forEach(function (attribute) {
49
+ var attributeName = attribute.node.name.name;
50
+ if (attributeName === 'compensateLastCellIndent') {
51
+ compensateLastCellIndentManipulator(api, attribute);
52
+ }
53
+ else if (attributeName === 'size') {
54
+ sizeManipulator(api, attribute);
55
+ }
56
+ });
57
+ return source.toSource();
58
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parser = void 0;
4
+ exports.default = transformer;
5
+ var codemod_helpers_1 = require("../../codemod-helpers");
6
+ exports.parser = 'tsx';
7
+ function transformer(file, api, options) {
8
+ var alias = options.alias;
9
+ var j = api.jscodeshift;
10
+ var source = j(file.source);
11
+ var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'HorizontalCell', alias).localName;
12
+ if (localName) {
13
+ (0, codemod_helpers_1.renameProp)(j, source, localName, { header: 'title' });
14
+ }
15
+ return source.toSource();
16
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parser = void 0;
4
+ exports.default = transformer;
5
+ var codemod_helpers_1 = require("../../codemod-helpers");
6
+ var report_1 = require("../../report");
7
+ exports.parser = 'tsx';
8
+ var componentName = 'HorizontalScroll';
9
+ function transformer(file, api, options) {
10
+ var alias = options.alias;
11
+ var j = api.jscodeshift;
12
+ var source = j(file.source);
13
+ var localName = (0, codemod_helpers_1.getImportInfo)(j, file, componentName, alias).localName;
14
+ if (!localName) {
15
+ return source.toSource();
16
+ }
17
+ source
18
+ .find(j.JSXOpeningElement)
19
+ .filter(function (path) { return path.value.name.type === 'JSXIdentifier' && path.value.name.name === localName; })
20
+ .find(j.JSXAttribute)
21
+ .filter(function (attribute) { return attribute.node.name.name === 'inline'; })
22
+ .forEach(function (attribute) {
23
+ var node = attribute.node;
24
+ if (!node.value) {
25
+ j(attribute).remove();
26
+ }
27
+ else if (node.value.type === 'JSXExpressionContainer' &&
28
+ node.value.expression.type === 'BooleanLiteral') {
29
+ if (node.value.expression.value) {
30
+ j(attribute).remove();
31
+ }
32
+ else {
33
+ (0, report_1.report)(api, "Manual changes required for ".concat(componentName, "'s \"inline\" prop."));
34
+ }
35
+ }
36
+ });
37
+ return source.toSource();
38
+ }