@zohodesk/react-cli 1.0.3-exp.4 → 1.0.3-exp.5

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.
@@ -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']; // const avoidProps = [];
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);
@@ -89,6 +89,7 @@ function pxToCalc(value) {
89
89
  }
90
90
  });
91
91
  });
92
+ console.log(arr.join(' '));
92
93
  return arr.join(' ');
93
94
  }
94
95
 
@@ -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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zohodesk/react-cli",
3
- "version": "1.0.3-exp.4",
3
+ "version": "1.0.3-exp.5",
4
4
  "description": "A CLI tool for build modern web application and libraries",
5
5
  "scripts": {
6
6
  "init": "node ./lib/utils/init.js",