@zohodesk/react-cli 1.0.3-exp.3 → 1.0.3-exp.5
Sign up to get free protection for your applications and to get access to all the features.
@@ -25,7 +25,38 @@ const {
|
|
25
25
|
errHandler
|
26
26
|
} = require('../postcss-plugins/variableModificationPlugin/index');
|
27
27
|
|
28
|
-
const supportedProps = ['font-size', 'margin', 'margin-top', 'margin-bottom', 'margin-left', 'margin-right', 'padding', 'padding-top', 'padding-bottom', 'padding-left', 'padding-right', '^top', '^right', '^bottom', '^left', '^width', 'min-width', 'max-width', '^height', 'min-height', 'max-height', 'text-indent', 'clip', 'flex-basis', 'row-gap', 'gap', 'column-gap', 'flex'];
|
28
|
+
const supportedProps = ['font-size', 'margin', 'margin-top', 'margin-bottom', 'margin-left', 'margin-right', 'padding', 'padding-top', 'padding-bottom', 'padding-left', 'padding-right', '^top', '^right', '^bottom', '^left', '^width', 'min-width', 'max-width', '^height', 'min-height', 'max-height', 'text-indent', 'clip', 'flex-basis', 'row-gap', 'gap', 'column-gap', 'flex'];
|
29
|
+
|
30
|
+
function convertCalcValue(pxReplacement, parsedValue) {
|
31
|
+
Object.keys(parsedValue).forEach(key => {
|
32
|
+
if (parsedValue[key].includes('px')) {
|
33
|
+
parsedValue[key] = pxReplacement.replace('$$', parsedValue[key].replace('px', ''));
|
34
|
+
}
|
35
|
+
});
|
36
|
+
return parsedValue;
|
37
|
+
}
|
38
|
+
|
39
|
+
function parseCalcValue(calcValue) {
|
40
|
+
// Remove "calc(" and ")" from the string
|
41
|
+
const value = calcValue.replace(/calc\(/gi, '').replace(/\)/gi, '').trim(); // Split the string by "*" or "/"
|
42
|
+
|
43
|
+
const parts = value.split(/[\\/*]/); // Parse the first part as a number
|
44
|
+
|
45
|
+
const num1 = parts[0].trim(); // Parse the second part as a number
|
46
|
+
|
47
|
+
const num2 = parts[1].trim();
|
48
|
+
return {
|
49
|
+
valOne: num1,
|
50
|
+
valTwo: num2
|
51
|
+
};
|
52
|
+
}
|
53
|
+
|
54
|
+
function convertToCalc(pxReplacement, value) {
|
55
|
+
const parsedValue = parseFloat(value, 10);
|
56
|
+
const sign = parsedValue < 0 ? '-' : '';
|
57
|
+
const varName = `${parsedValue < 0 ? parsedValue * -1 : parsedValue}`;
|
58
|
+
return `calc( ${pxReplacement.replace('$$', varName)} * ${sign}1 )`;
|
59
|
+
} // const avoidProps = [];
|
29
60
|
// -- is issue IO --
|
30
61
|
|
31
62
|
/*
|
@@ -39,6 +70,7 @@ comment :
|
|
39
70
|
do not execute when --zd_size comes as prop
|
40
71
|
*/
|
41
72
|
|
73
|
+
|
42
74
|
function isIgnoreValuePresent(ignoreVals, prop) {
|
43
75
|
let present = false;
|
44
76
|
ignoreVals.forEach(issue => {
|
@@ -89,6 +121,25 @@ function variableConvertor(rootOriginal, variables, settingsObject) {
|
|
89
121
|
const valArr = decl.value.split(' '); // single values are considered in the above array and converted below
|
90
122
|
|
91
123
|
valArr.forEach((value, index) => {
|
124
|
+
if (value.includes('px')) {
|
125
|
+
if (value.includes('calc')) {
|
126
|
+
const res = convertCalcValue(pxReplacement, parseCalcValue(value));
|
127
|
+
valArr[index] = `calc( ${res.valOne.trim()} * ${res.valTwo.trim()} )`;
|
128
|
+
return;
|
129
|
+
}
|
130
|
+
|
131
|
+
if (/-(\d+)/gi.test(value)) {
|
132
|
+
valArr[index] = convertToCalc(pxReplacement, value);
|
133
|
+
return;
|
134
|
+
}
|
135
|
+
|
136
|
+
const num = value.replace('px', '');
|
137
|
+
|
138
|
+
if (value) {
|
139
|
+
valArr[index] = pxReplacement.replace('$$', num);
|
140
|
+
}
|
141
|
+
}
|
142
|
+
|
92
143
|
if (value.includes('px')) {
|
93
144
|
const num = value.replace('px', '');
|
94
145
|
valArr[index] = pxReplacement.replace('$$', num);
|
@@ -38,6 +38,37 @@ function isIgnoreValuePresent(ignoreVals, prop) {
|
|
38
38
|
return present;
|
39
39
|
}
|
40
40
|
|
41
|
+
function convertCalcValue(pxReplacement, parsedValue) {
|
42
|
+
Object.keys(parsedValue).forEach(key => {
|
43
|
+
if (parsedValue[key].includes('px')) {
|
44
|
+
parsedValue[key] = pxReplacement.replace('$$', parsedValue[key].replace('px', ''));
|
45
|
+
}
|
46
|
+
});
|
47
|
+
return parsedValue;
|
48
|
+
}
|
49
|
+
|
50
|
+
function parseCalcValue(calcValue) {
|
51
|
+
// Remove "calc(" and ")" from the string
|
52
|
+
const value = calcValue.replace(/calc\(/gi, '').replace(/\)/gi, '').trim(); // Split the string by "*" or "/"
|
53
|
+
|
54
|
+
const parts = value.split(/[\\/*]/); // Parse the first part as a number
|
55
|
+
|
56
|
+
const num1 = parts[0].trim(); // Parse the second part as a number
|
57
|
+
|
58
|
+
const num2 = parts[1].trim();
|
59
|
+
return {
|
60
|
+
valOne: num1,
|
61
|
+
valTwo: num2
|
62
|
+
};
|
63
|
+
}
|
64
|
+
|
65
|
+
function convertToCalc(pxReplacement, value) {
|
66
|
+
const parsedValue = parseFloat(value, 10);
|
67
|
+
const sign = parsedValue < 0 ? '-' : '';
|
68
|
+
const varName = `${parsedValue < 0 ? parsedValue * -1 : parsedValue}`;
|
69
|
+
return `calc( ${pxReplacement.replace('$$', varName)} * ${sign}1 )`;
|
70
|
+
}
|
71
|
+
|
41
72
|
function variableConverter(rootOriginal, variables, settingsObject) {
|
42
73
|
rootOriginal.walkRules(rule => {
|
43
74
|
rule.nodes.forEach((decl, index) => {
|
@@ -63,6 +94,25 @@ function variableConverter(rootOriginal, variables, settingsObject) {
|
|
63
94
|
const valArr = decl.value.split(' '); // single values are considered in the above array and converted below
|
64
95
|
|
65
96
|
valArr.forEach((value, index) => {
|
97
|
+
if (value.includes('px')) {
|
98
|
+
if (value.includes('calc')) {
|
99
|
+
const res = convertCalcValue(pxReplacement, parseCalcValue(value));
|
100
|
+
valArr[index] = `calc( ${res.valOne.trim()} * ${res.valTwo.trim()} )`;
|
101
|
+
return;
|
102
|
+
}
|
103
|
+
|
104
|
+
if (/-(\d+)/gi.test(value)) {
|
105
|
+
valArr[index] = convertToCalc(pxReplacement, value);
|
106
|
+
return;
|
107
|
+
}
|
108
|
+
|
109
|
+
const num = value.replace('px', '');
|
110
|
+
|
111
|
+
if (value) {
|
112
|
+
valArr[index] = pxReplacement.replace('$$', num);
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
66
116
|
if (value.includes('px')) {
|
67
117
|
const num = value.replace('px', '');
|
68
118
|
valArr[index] = pxReplacement.replace('$$', num);
|
@@ -106,7 +156,6 @@ function watchHandler(fromPath, toPath) {
|
|
106
156
|
// strictMode
|
107
157
|
|
108
158
|
} = data;
|
109
|
-
const oldCode = rootOriginal.toString();
|
110
159
|
rootOriginal.walkRules(rule => {
|
111
160
|
rule.walkDecls(decl => {
|
112
161
|
decl.value.split(' ').forEach(val => {
|
@@ -131,24 +180,15 @@ function watchHandler(fromPath, toPath) {
|
|
131
180
|
return;
|
132
181
|
}
|
133
182
|
|
134
|
-
const convertedCode = variableConverter(rootOriginal, variables, settingsObject).toString();
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
} // console.log(convertedCode);
|
139
|
-
|
183
|
+
const convertedCode = variableConverter(rootOriginal, variables, settingsObject).toString(); // if (convertedCode.trim() !== '') {
|
184
|
+
// fs.writeFileSync(fromPath, convertedCode);
|
185
|
+
// }
|
186
|
+
// console.log(convertedCode);
|
140
187
|
|
141
|
-
postcss([postcssVariableConvertor(cssVariableOptions)]).process(
|
142
|
-
from:
|
143
|
-
to: toPath
|
188
|
+
postcss([postcssVariableConvertor(cssVariableOptions)]).process(convertedCode, {
|
189
|
+
from: undefined
|
144
190
|
}).then(result => {
|
145
191
|
fs.writeFileSync(toPath, result.css);
|
146
|
-
|
147
|
-
if (result.map) {
|
148
|
-
fs.writeFileSync(`${toPath}.map`, result.map);
|
149
|
-
}
|
150
|
-
}).then(() => {
|
151
|
-
fs.writeFileSync(fromPath, oldCode);
|
152
192
|
}); // console.log(variableOptions);
|
153
193
|
}
|
154
194
|
|