@zohodesk/react-cli 1.1.4 → 1.1.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.
- package/README.md +6 -0
- package/lib/loaderUtils/getCSSLoaders.js +4 -1
- package/lib/loaders/composeLoader.js +140 -14
- package/lib/utils/variableConverter.js +26 -11
- package/package.json +1 -1
package/README.md
CHANGED
@@ -62,7 +62,10 @@ const getCSSLoaders = optionsObj => {
|
|
62
62
|
|
63
63
|
return `${prefix} ${selector}`; // Make selectors like [dir=rtl] > .selector
|
64
64
|
}
|
65
|
-
}), plugins.combinerMediaQuery && require('postcss-combine-media-query')(), plugins.hoverActive && require('../postcss-plugins/hoverActivePlugin')(mediaQueryHoverActiveString), plugins.cssVariableReplacement && fs.existsSync(cssVariableReplacementConfig) && require('../postcss-plugins/variableModificationPlugin/index').plugin(cssVariableReplacementConfig)
|
65
|
+
}), plugins.combinerMediaQuery && require('postcss-combine-media-query')(), plugins.hoverActive && require('../postcss-plugins/hoverActivePlugin')(mediaQueryHoverActiveString), plugins.cssVariableReplacement && fs.existsSync(cssVariableReplacementConfig) && require('../postcss-plugins/variableModificationPlugin/index').plugin(cssVariableReplacementConfig) // ,
|
66
|
+
// plugins.composeMinification &&
|
67
|
+
// require('../postcss-plugins/composePlugin')()
|
68
|
+
].filter(Boolean);
|
66
69
|
return [cssSelectorZipPath && {
|
67
70
|
loader: require.resolve('../loaders/selectorMappingLoader')
|
68
71
|
}, {
|
@@ -4,12 +4,43 @@ var _path = _interopRequireDefault(require("path"));
|
|
4
4
|
|
5
5
|
var _postcss = _interopRequireDefault(require("postcss"));
|
6
6
|
|
7
|
+
var _classHandling = require("../../lib/plugins/utils/classHandling");
|
8
|
+
|
9
|
+
var _fileHandling = require("../plugins/utils/fileHandling");
|
10
|
+
|
11
|
+
var _utils = require("../utils");
|
12
|
+
|
13
|
+
var _ignore = _interopRequireDefault(require("ignore"));
|
14
|
+
|
7
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
8
16
|
|
9
|
-
const supportedProps = ['margin-top', 'margin-bottom', 'margin-left', 'margin-right',
|
10
|
-
'padding-top', 'padding-bottom', 'padding-left', 'padding-right', // 'padding',
|
11
|
-
'top', 'bottom', 'left', 'right', 'height', 'width', 'min-height', 'min-width', 'max-height', 'max-width'];
|
17
|
+
const supportedProps = ['margin-top', 'margin-bottom', 'margin-left', 'margin-right', 'margin', 'padding-top', 'padding-bottom', 'padding-left', 'padding-right', 'padding', 'top', 'bottom', 'left', 'right', 'height', 'width', 'min-height', 'min-width', 'max-height', 'max-width', 'float', 'overflow', 'position', 'display', 'text-align', 'white-space', 'visibility'];
|
12
18
|
const renameProps = {
|
19
|
+
position: {
|
20
|
+
cls: 'posn'
|
21
|
+
},
|
22
|
+
display: {
|
23
|
+
cls: 'disp'
|
24
|
+
},
|
25
|
+
float: {
|
26
|
+
cls: 'flo'
|
27
|
+
},
|
28
|
+
overflow: {
|
29
|
+
cls: 'over'
|
30
|
+
},
|
31
|
+
'text-align': {
|
32
|
+
cls: 'txtAlgn'
|
33
|
+
},
|
34
|
+
'white-space': {
|
35
|
+
cls: 'whSpc'
|
36
|
+
},
|
37
|
+
visibility: {
|
38
|
+
cls: 'vis'
|
39
|
+
},
|
40
|
+
'font-size': {
|
41
|
+
pos: 'fs',
|
42
|
+
neg: 'fs_'
|
43
|
+
},
|
13
44
|
'margin-top': {
|
14
45
|
pos: 'mt',
|
15
46
|
neg: 'mt_'
|
@@ -96,11 +127,48 @@ function objToClassName(prop, data) {
|
|
96
127
|
return renameProps[prop] ? data < 0 ? renameProps[prop].neg ? `${renameProps[prop].neg}${data * -1}` : `undef${data * -1}` : renameProps[prop].pos ? `${renameProps[prop].pos}${data}` : `undef${data}` : `undef${data}`;
|
97
128
|
}
|
98
129
|
|
130
|
+
function objtoClassNameString(prop, data) {
|
131
|
+
let temp = data.toString().replace(/-/gi, '');
|
132
|
+
return `${renameProps[prop].cls}_${temp.replace(/\s*/gi, '')}`;
|
133
|
+
}
|
134
|
+
|
135
|
+
const multipleClassName = {
|
136
|
+
margin: ['margin-top', 'margin-right', 'margin-bottom', 'margin-left'],
|
137
|
+
padding: ['padding-top', 'padding-right', 'padding-bottom', 'padding-left']
|
138
|
+
};
|
139
|
+
|
140
|
+
function objToClassNameMultiple(prop, data) {
|
141
|
+
data = data.trim().replace(/\s+/gi, ' ');
|
142
|
+
let dataArr = data.split(' ');
|
143
|
+
|
144
|
+
if (dataArr.length === 3) {
|
145
|
+
dataArr[3] = dataArr[1];
|
146
|
+
}
|
147
|
+
|
148
|
+
if (dataArr.length === 2) {
|
149
|
+
dataArr[3] = dataArr[1];
|
150
|
+
dataArr[2] = dataArr[0];
|
151
|
+
}
|
152
|
+
|
153
|
+
if (dataArr.length === 1) {
|
154
|
+
dataArr[3] = dataArr[0];
|
155
|
+
dataArr[2] = dataArr[0];
|
156
|
+
dataArr[1] = dataArr[0];
|
157
|
+
}
|
158
|
+
|
159
|
+
let composeClasses = '';
|
160
|
+
dataArr.forEach((data, index) => composeClasses += `${objToClassName(multipleClassName[prop][index], parseInt(data, 10))} `);
|
161
|
+
composeClasses = composeClasses.substring(0, composeClasses.length - 1);
|
162
|
+
return composeClasses;
|
163
|
+
}
|
164
|
+
|
99
165
|
const commonFilePath = {
|
166
|
+
margin: 'src/common/css/margin.css',
|
100
167
|
'margin-left': 'src/common/css/margin.css',
|
101
168
|
'margin-right': 'src/common/css/margin.css',
|
102
169
|
'margin-top': 'src/common/css/margin.css',
|
103
170
|
'margin-bottom': 'src/common/css/margin.css',
|
171
|
+
padding: 'src/common/css/padding.css',
|
104
172
|
'padding-left': 'src/common/css/padding.css',
|
105
173
|
'padding-right': 'src/common/css/padding.css',
|
106
174
|
'padding-top': 'src/common/css/padding.css',
|
@@ -114,8 +182,37 @@ const commonFilePath = {
|
|
114
182
|
'min-height': 'src/common/css/height.css',
|
115
183
|
'min-width': 'src/common/css/width.css',
|
116
184
|
'max-height': 'src/common/css/height.css',
|
117
|
-
'max-width': 'src/common/css/width.css'
|
118
|
-
|
185
|
+
'max-width': 'src/common/css/width.css',
|
186
|
+
fontSize: 'src/common/css/fontSize.css',
|
187
|
+
textProps: 'src/common/css/textProps.css',
|
188
|
+
display: 'src/common/css/textProps.css',
|
189
|
+
float: 'src/common/css/textProps.css',
|
190
|
+
overflow: 'src/common/css/textProps.css',
|
191
|
+
position: 'src/common/css/position.css',
|
192
|
+
'text-align': 'src/common/css/textProps.css',
|
193
|
+
'white-space': 'src/common/css/textProps.css',
|
194
|
+
visibility: 'src/common/css/textProps.css'
|
195
|
+
};
|
196
|
+
|
197
|
+
function generateComposeString(resourcePath, prop, value) {
|
198
|
+
let composeString = `from "${_path.default.relative(_path.default.parse(resourcePath).dir, // resourcePath
|
199
|
+
commonFilePath[prop]).replace(/\\/gi, '/')}"`;
|
200
|
+
let cls = '';
|
201
|
+
|
202
|
+
if (/^position|^overflow|^display|^float|^text-align|^white-space|^visibility/gi.test(prop)) {
|
203
|
+
console.log(prop, value, 'textvals');
|
204
|
+
cls = objtoClassNameString(prop, value);
|
205
|
+
} else if (/^margin$|^padding$/gi.test(prop)) {
|
206
|
+
// console.log(prop, value, 'margin');
|
207
|
+
cls = objToClassNameMultiple(prop, value);
|
208
|
+
} else {
|
209
|
+
// console.log(prop, value, 'common');
|
210
|
+
cls = objToClassName(prop, parseInt(value));
|
211
|
+
}
|
212
|
+
|
213
|
+
composeString = `${cls} ${composeString}`;
|
214
|
+
return composeString;
|
215
|
+
} // const preNames = {
|
119
216
|
// height: 'zd-height-',
|
120
217
|
// 'max-height': 'zd-height-',
|
121
218
|
// 'min-height': 'zd-height-',
|
@@ -136,6 +233,7 @@ const commonFilePath = {
|
|
136
233
|
// 'margin-right': 'zd-margin-'
|
137
234
|
// };
|
138
235
|
|
236
|
+
|
139
237
|
function allowParent(rule) {
|
140
238
|
return rule.parent.type === 'root' || rule.parent.type === 'atrule' && rule.parent.name === 'media';
|
141
239
|
}
|
@@ -144,25 +242,53 @@ module.exports = function (source) {
|
|
144
242
|
const {
|
145
243
|
resourcePath
|
146
244
|
} = this;
|
245
|
+
const options = (0, _utils.getOptions)(); // console.log(options.app.patterns.composeMinification);
|
246
|
+
// const ig = ignore({ allowRelativePaths: true }).add(options.app.patterns.composeMinification);
|
247
|
+
// const newFilename = path.relative(path.parse(process.cwd()).base, resourcePath);
|
248
|
+
// console.log(newFilename, ig.ignores(newFilename));
|
147
249
|
|
148
250
|
let root = _postcss.default.parse(source);
|
149
251
|
|
252
|
+
if (!(0, _fileHandling.isFileNameMatchingPluginPattern)({
|
253
|
+
filename: resourcePath,
|
254
|
+
filterArr: options.app.patterns.composeMinification
|
255
|
+
})) {
|
256
|
+
return root.toString();
|
257
|
+
}
|
258
|
+
|
150
259
|
root.walkRules(rule => {
|
151
260
|
rule.walkDecls(decl => {
|
261
|
+
if (/^-ms|^-webkit|^moz/gi.test(decl.prop)) {
|
262
|
+
return;
|
263
|
+
}
|
264
|
+
|
152
265
|
if (!allowParent(rule)) {
|
153
266
|
return;
|
154
267
|
}
|
155
268
|
|
269
|
+
if ((0, _classHandling.isInsideMediaQuery)(rule)) {
|
270
|
+
console.log('inside media query', rule.selector);
|
271
|
+
return;
|
272
|
+
}
|
273
|
+
|
274
|
+
if (supportedProps.includes(decl.prop) && /^position$|^overflow|^float|^display|^text-align|^white-space|^visibility/gi.test(decl.prop) && !/[,\s+]+|(\w+)\.|:|::|body|(\d+)%|>/gi.test(rule.selector) && commonFilePath[decl.prop] && !decl.value.includes('var(--')) {
|
275
|
+
decl.value = generateComposeString(resourcePath, decl.prop, decl.value);
|
276
|
+
decl.prop = 'composes';
|
277
|
+
return;
|
278
|
+
}
|
279
|
+
|
156
280
|
if (supportedProps.includes(decl.prop) && /px$/gi.test(decl.value) && !/^--/gi.test(decl.prop) && commonFilePath[decl.prop] && !decl.value.includes('calc') && !/[,\s+]+|(\w+)\.|:|(\d+)%/gi.test(rule.selector)) {
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
281
|
+
// n++ < 10 && console.log(composeString);
|
282
|
+
// if (!composeString.includes('src')) {
|
283
|
+
// if (/px$/gi.test(decl.value)) {
|
284
|
+
decl.value = generateComposeString(resourcePath, decl.prop, decl.value); // }
|
285
|
+
// if (/^position$|^display$|^overflow$|^float$/gi.test(decl.prop)) {
|
286
|
+
// console.log(decl.prop);
|
287
|
+
// }
|
288
|
+
|
289
|
+
decl.prop = 'composes'; // console.log(decl.prop, decl.value);
|
290
|
+
// n < 10 && console.log(rule.selector, decl.prop, decl.value);
|
291
|
+
// }
|
166
292
|
}
|
167
293
|
});
|
168
294
|
});
|
@@ -16,6 +16,8 @@ const path = require('path');
|
|
16
16
|
|
17
17
|
const fs = require('fs');
|
18
18
|
|
19
|
+
const ignore = require('ignore');
|
20
|
+
|
19
21
|
const postcssVariableConvertor = require('../postcss-plugins/variableModificationPlugin/index').plugin;
|
20
22
|
|
21
23
|
const cwd = process.cwd();
|
@@ -45,7 +47,8 @@ function watchHandler(fromPath, toPath) {
|
|
45
47
|
// errorsAllowed,
|
46
48
|
// strictMode
|
47
49
|
|
48
|
-
} = cssVariableOptions;
|
50
|
+
} = cssVariableOptions; //Variable Webpack Object Generation
|
51
|
+
|
49
52
|
rootOriginal.walkRules(rule => {
|
50
53
|
rule.walkDecls(decl => {
|
51
54
|
decl.value.split(' ').forEach(val => {
|
@@ -58,23 +61,35 @@ function watchHandler(fromPath, toPath) {
|
|
58
61
|
}
|
59
62
|
});
|
60
63
|
});
|
61
|
-
});
|
64
|
+
}); // if (
|
65
|
+
// !isFileNameMatchingPluginPattern({
|
66
|
+
// filename: fromPath,
|
67
|
+
// filterArr
|
68
|
+
// })
|
69
|
+
// ) {
|
70
|
+
// return;
|
71
|
+
// }
|
62
72
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
73
|
+
const ig = ignore({
|
74
|
+
allowRelativePaths: true
|
75
|
+
}).add(filterArr);
|
76
|
+
|
77
|
+
if (ig.ignores(fromPath)) {
|
78
|
+
// console.log(fromPath);
|
79
|
+
// console.log(ig.ignores(fromPath));
|
80
|
+
// console.log(
|
81
|
+
// '----------------------------------------------------------------'
|
82
|
+
// );
|
67
83
|
return;
|
68
|
-
}
|
84
|
+
} // Convert code
|
69
85
|
|
70
|
-
|
71
|
-
|
72
|
-
// }
|
73
|
-
// console.log(convertedCode);
|
86
|
+
|
87
|
+
const convertedCode = (0, _variableConvertorUtils.variableConverter)(rootOriginal, variables, settingsObject).toString(); // run postcss plugin for css code input
|
74
88
|
|
75
89
|
postcss([postcssVariableConvertor(cssVariableConfigFilePath)]).process(convertedCode, {
|
76
90
|
from: undefined
|
77
91
|
}).then(result => {
|
92
|
+
//write new css file data in file
|
78
93
|
fs.writeFileSync(toPath, result.css);
|
79
94
|
}); // console.log(variableOptions);
|
80
95
|
}
|