@zohodesk/react-cli 0.0.1-beta.172 → 0.0.1-beta.174
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/.eslintrc.js +1 -0
- package/README.md +34 -2
- package/docs/VariableConversion.md +678 -0
- package/lib/configs/jest.config.js +8 -12
- package/lib/configs/libAlias.js +10 -3
- package/lib/configs/webpack.dev.config.js +12 -11
- package/lib/configs/webpack.docs.config.js +5 -4
- package/lib/configs/webpack.impact.config.js +5 -4
- package/lib/configs/webpack.prod.config.js +13 -12
- package/lib/jest/preProcessors/cssPreprocessor.js +16 -7
- package/lib/loaderUtils/getCSSLoaders.js +22 -10
- package/lib/postcss-plugins/hoverActivePlugin.js +30 -13
- package/lib/postcss-plugins/variableModificationPlugin/ErrorHandler.js +37 -0
- package/lib/postcss-plugins/variableModificationPlugin/index.js +247 -0
- package/lib/postcss-plugins/variableModifier.js +1 -0
- package/lib/schemas/index.js +11 -4
- package/package.json +1 -3
- package/templates/docs/css/style.css +1 -1
- package/templates/docs/index.html +9 -1
package/lib/configs/libAlias.js
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.libAlias = void 0;
|
6
|
+
exports.libAlias = exports.jestModuleNameMapper = void 0;
|
7
7
|
// the reason for alias at the time was code tree shaking
|
8
8
|
// tree shaking was most compactable with ES module system
|
9
9
|
// FIXME: But there is a posiblity when these package does not have lib,
|
@@ -27,5 +27,12 @@ const libAlias = {
|
|
27
27
|
'@zohodesk/timetracker/lib': '@zohodesk/timetracker/es',
|
28
28
|
'@zohodesk/variables/lib': '@zohodesk/variables/es',
|
29
29
|
'@zohodesk/virtualizer/lib': '@zohodesk/virtualizer/es'
|
30
|
-
};
|
31
|
-
|
30
|
+
}; // '^@root(.*)$': '<rootDir>/src$1',
|
31
|
+
// '^@components(.*)$': '<rootDir>/src/components$1',
|
32
|
+
|
33
|
+
exports.libAlias = libAlias;
|
34
|
+
const jestModuleNameMapper = Object.keys(libAlias).reduce((previousValue, key) => {
|
35
|
+
previousValue[`^${key}(.*)$`] = `${libAlias[key]}$1`;
|
36
|
+
return previousValue;
|
37
|
+
}, {});
|
38
|
+
exports.jestModuleNameMapper = jestModuleNameMapper;
|
@@ -16,8 +16,8 @@ var _configsAssetsLoaders = require("../loaderUtils/configsAssetsLoaders");
|
|
16
16
|
|
17
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
const options = (0, _utils.getOptions)();
|
20
|
+
const {
|
21
21
|
unstableDepsInverse,
|
22
22
|
app: {
|
23
23
|
folder,
|
@@ -27,6 +27,7 @@ let {
|
|
27
27
|
plugins,
|
28
28
|
exclude,
|
29
29
|
mediaQueryHoverActiveString,
|
30
|
+
cssVariableReplacementConfig,
|
30
31
|
cssUniqueness,
|
31
32
|
seperateCssModules,
|
32
33
|
changeRuntimeChunkChar,
|
@@ -41,13 +42,13 @@ let {
|
|
41
42
|
crossorigin
|
42
43
|
}
|
43
44
|
} = options;
|
44
|
-
|
45
|
+
const {
|
45
46
|
disableContextURL
|
46
47
|
} = server;
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
48
|
+
const appPath = process.cwd();
|
49
|
+
const contextURL = disableContextURL ? '' : context;
|
50
|
+
const serverUrl = (0, _utils.getServerURL)(server, 'https');
|
51
|
+
const output = {
|
51
52
|
path: _path.default.join(appPath, outputFolder),
|
52
53
|
filename: 'js/[name].js',
|
53
54
|
chunkFilename: 'js/[name].js',
|
@@ -86,9 +87,9 @@ module.exports = {
|
|
86
87
|
test: /\.js$/,
|
87
88
|
use: (0, _loaderUtils.getDevJsLoaders)(options),
|
88
89
|
include: module => {
|
89
|
-
|
90
|
+
const srcPath = _path.default.join(appPath, folder);
|
90
91
|
|
91
|
-
|
92
|
+
const depsPath = _path.default.join(appPath, 'node_modules', '@zohodesk');
|
92
93
|
|
93
94
|
if (module.includes(srcPath) || devConsoleExculde && module.includes(depsPath)) {
|
94
95
|
return true;
|
@@ -99,10 +100,10 @@ module.exports = {
|
|
99
100
|
}, seperateCssModules ? {
|
100
101
|
test: /\.css$/,
|
101
102
|
exclude: /\.module\.css$/,
|
102
|
-
use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, '[local]', false, null)
|
103
|
+
use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, cssVariableReplacementConfig, '[local]', false, null)
|
103
104
|
} : null, {
|
104
105
|
test: seperateCssModules ? /\.module\.css$/ : /(\.module)?\.css$/,
|
105
|
-
use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, null, cssUniqueness, selectorReplace, cssHashSelectors, classNamePrefix)
|
106
|
+
use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, cssVariableReplacementConfig, null, cssUniqueness, selectorReplace, cssHashSelectors, classNamePrefix)
|
106
107
|
}, (0, _configsAssetsLoaders.configImageLoader)(nameTemplate), (0, _configsAssetsLoaders.configFontLoader)(nameTemplate), (0, _configsAssetsLoaders.configSVGLoader)(nameTemplate), (0, _configsAssetsLoaders.configVideoLoader)(nameTemplate), (0, _configsAssetsLoaders.configAudioLoader)(nameTemplate), {
|
107
108
|
test: /\.tmpl$/,
|
108
109
|
use: [{
|
@@ -14,8 +14,8 @@ var _configsAssetsLoaders = require("../loaderUtils/configsAssetsLoaders");
|
|
14
14
|
|
15
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
16
16
|
|
17
|
-
|
18
|
-
|
17
|
+
const options = (0, _utils.getOptions)();
|
18
|
+
const {
|
19
19
|
unstableDepsInverse,
|
20
20
|
docs: {
|
21
21
|
componentFolder,
|
@@ -25,6 +25,7 @@ let {
|
|
25
25
|
plugins,
|
26
26
|
exclude,
|
27
27
|
mediaQueryHoverActiveString,
|
28
|
+
cssVariableReplacementConfig,
|
28
29
|
cssHashSelectors,
|
29
30
|
classNamePrefix
|
30
31
|
},
|
@@ -32,7 +33,7 @@ let {
|
|
32
33
|
folder
|
33
34
|
}
|
34
35
|
} = options;
|
35
|
-
|
36
|
+
const appPath = process.cwd();
|
36
37
|
const nameTemplate = (0, _configsAssetsLoaders.createNameTemplate)(enableChunkHash);
|
37
38
|
|
38
39
|
module.exports = isSSTest => ({
|
@@ -74,7 +75,7 @@ module.exports = isSSTest => ({
|
|
74
75
|
exclude: /node_modules/
|
75
76
|
}, {
|
76
77
|
test: /(\.module)?\.css$/,
|
77
|
-
use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, false, cssUniqueness, null, cssHashSelectors, classNamePrefix)
|
78
|
+
use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, cssVariableReplacementConfig, false, cssUniqueness, null, cssHashSelectors, classNamePrefix)
|
78
79
|
}, (0, _configsAssetsLoaders.configImageLoader)(nameTemplate), (0, _configsAssetsLoaders.configFontLoader)(nameTemplate), (0, _configsAssetsLoaders.configSVGLoader)(nameTemplate), (0, _configsAssetsLoaders.configAudioLoader)(nameTemplate), (0, _configsAssetsLoaders.configVideoLoader)(nameTemplate), {
|
79
80
|
test: /\.html$/,
|
80
81
|
use: {
|
@@ -12,14 +12,15 @@ var _configsAssetsLoaders = require("../loaderUtils/configsAssetsLoaders");
|
|
12
12
|
|
13
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
14
14
|
|
15
|
-
|
16
|
-
|
15
|
+
const options = (0, _utils.getOptions)();
|
16
|
+
const {
|
17
17
|
docs: {
|
18
18
|
componentFolder,
|
19
19
|
cssUniqueness,
|
20
20
|
plugins,
|
21
21
|
exclude,
|
22
22
|
mediaQueryHoverActiveString,
|
23
|
+
cssVariableReplacementConfig,
|
23
24
|
cssHashSelectors,
|
24
25
|
enableChunkHash,
|
25
26
|
classNamePrefix
|
@@ -28,7 +29,7 @@ let {
|
|
28
29
|
folder
|
29
30
|
}
|
30
31
|
} = options;
|
31
|
-
|
32
|
+
const appPath = process.cwd();
|
32
33
|
const nameTemplate = (0, _configsAssetsLoaders.createNameTemplate)(enableChunkHash);
|
33
34
|
module.exports = {
|
34
35
|
entry: {
|
@@ -69,7 +70,7 @@ module.exports = {
|
|
69
70
|
exclude: /node_modules/
|
70
71
|
}, {
|
71
72
|
test: /(\.module)?\.css$/,
|
72
|
-
use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, false, cssUniqueness, null, cssHashSelectors, classNamePrefix)
|
73
|
+
use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, cssVariableReplacementConfig, false, cssUniqueness, null, cssHashSelectors, classNamePrefix)
|
73
74
|
}, (0, _configsAssetsLoaders.configImageLoader)(nameTemplate), (0, _configsAssetsLoaders.configFontLoader)(nameTemplate), (0, _configsAssetsLoaders.configSVGLoader)(nameTemplate), (0, _configsAssetsLoaders.configAudioLoader)(nameTemplate), (0, _configsAssetsLoaders.configVideoLoader)(nameTemplate), {
|
74
75
|
test: /\.html$/,
|
75
76
|
use: {
|
@@ -17,7 +17,7 @@ var _configsAssetsLoaders = require("../loaderUtils/configsAssetsLoaders");
|
|
17
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
18
18
|
|
19
19
|
// import TerserPlugin from 'terser-webpack-plugin';
|
20
|
-
|
20
|
+
const options = (0, _utils.getOptions)();
|
21
21
|
let {
|
22
22
|
unstableDepsInverse,
|
23
23
|
app: {
|
@@ -32,6 +32,7 @@ let {
|
|
32
32
|
plugins,
|
33
33
|
exclude,
|
34
34
|
mediaQueryHoverActiveString,
|
35
|
+
cssVariableReplacementConfig,
|
35
36
|
cssUniqueness,
|
36
37
|
server: {
|
37
38
|
mode
|
@@ -46,10 +47,10 @@ let {
|
|
46
47
|
crossorigin
|
47
48
|
}
|
48
49
|
} = options;
|
49
|
-
|
50
|
-
|
50
|
+
const appPath = process.cwd();
|
51
|
+
const isDevelopment = mode === 'prod' || mode === 'dev' || mode === 'dev-no-warn';
|
51
52
|
enableChunkHash = !isDevelopment && enableChunkHash;
|
52
|
-
|
53
|
+
const output = {
|
53
54
|
path: _path.default.resolve(appPath, outputFolder),
|
54
55
|
filename: enableChunkHash ? 'js/[name].[chunkhash:20]_.js' : 'js/[name]_.js',
|
55
56
|
chunkFilename: enableChunkHash ? 'js/[name].[chunkhash:20]_.js' : 'js/[name]_.js',
|
@@ -62,15 +63,15 @@ if (crossorigin) {
|
|
62
63
|
}
|
63
64
|
|
64
65
|
if (isDevelopment) {
|
65
|
-
|
66
|
+
const {
|
66
67
|
disableContextURL
|
67
68
|
} = server;
|
68
|
-
|
69
|
-
|
69
|
+
const contextURL = disableContextURL ? '' : context;
|
70
|
+
const serverUrl = (0, _utils.getServerURL)(server, 'https');
|
70
71
|
output.publicPath = `${[serverUrl, contextURL].filter(a => a).join('/')}/`;
|
71
72
|
}
|
72
73
|
|
73
|
-
|
74
|
+
const shouldRemovePropTypes = !isDevelopment && removePropTypes;
|
74
75
|
module.exports = {
|
75
76
|
entry: (0, _common.getEntries)(options, 'production'),
|
76
77
|
devtool: isDevelopment ? 'cheap-module-source-map' : enableSMap ? 'hidden-source-map' : 'none',
|
@@ -134,9 +135,9 @@ module.exports = {
|
|
134
135
|
}].filter(Boolean),
|
135
136
|
// include: path.join(appPath, folder)
|
136
137
|
include: module => {
|
137
|
-
|
138
|
+
const srcPath = _path.default.join(appPath, folder);
|
138
139
|
|
139
|
-
|
140
|
+
const depsPath = _path.default.join(appPath, 'node_modules', '@zohodesk');
|
140
141
|
|
141
142
|
if (module.includes(srcPath) || devConsoleExculde && module.includes(depsPath)) {
|
142
143
|
return true;
|
@@ -147,10 +148,10 @@ module.exports = {
|
|
147
148
|
}, seperateCssModules ? {
|
148
149
|
test: /\.css$/,
|
149
150
|
exclude: /\.module\.css$/,
|
150
|
-
use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, '[local]', false, null)
|
151
|
+
use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, cssVariableReplacementConfig, mediaQueryHoverActiveString, '[local]', false, null)
|
151
152
|
} : null, {
|
152
153
|
test: seperateCssModules ? /\.module\.css$/ : /\.css$/,
|
153
|
-
use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, false, cssUniqueness, selectorReplace, cssHashSelectors, classNamePrefix)
|
154
|
+
use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, cssVariableReplacementConfig, false, cssUniqueness, selectorReplace, cssHashSelectors, classNamePrefix)
|
154
155
|
}, {
|
155
156
|
test: /\.jpe?g$|\.gif$|\.png$/,
|
156
157
|
use: [{
|
@@ -6,23 +6,32 @@ var _postcssHashClassname = _interopRequireDefault(require("postcss-hash-classna
|
|
6
6
|
|
7
7
|
var _fs = _interopRequireDefault(require("fs"));
|
8
8
|
|
9
|
+
var _utils = require("../../utils");
|
10
|
+
|
9
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
10
12
|
|
11
13
|
let count = 0;
|
14
|
+
const options = (0, _utils.getOptions)();
|
15
|
+
const {
|
16
|
+
classnameFormat
|
17
|
+
} = options.test;
|
12
18
|
module.exports = {
|
13
19
|
process: function (src) {
|
14
20
|
count++;
|
15
|
-
|
21
|
+
const opts = {
|
16
22
|
hashType: 'md5',
|
17
|
-
digestType: 'base32'
|
23
|
+
digestType: 'base32',
|
24
|
+
maxLength: 6,
|
25
|
+
type: '.json',
|
26
|
+
classnameFormat: classnameFormat,
|
27
|
+
outputName: `jsonFile_test_${count}`
|
18
28
|
};
|
19
|
-
|
20
|
-
opts.type = '.json';
|
21
|
-
opts.outputName = `jsonFile_test_${count}`;
|
22
|
-
let processor = (0, _postcss.default)([(0, _postcssHashClassname.default)(opts)]);
|
29
|
+
const processor = (0, _postcss.default)([(0, _postcssHashClassname.default)(opts)]);
|
23
30
|
processor.process(src).css;
|
24
31
|
|
25
|
-
|
32
|
+
const jsonMap = _fs.default.readFileSync(`jsonFile_test_${count}.json`, 'UTF-8');
|
33
|
+
|
34
|
+
_fs.default.unlinkSync(`jsonFile_test_${count}.json`);
|
26
35
|
|
27
36
|
return `module.exports =${jsonMap}`;
|
28
37
|
}
|
@@ -13,8 +13,10 @@ var _utils = require("../utils");
|
|
13
13
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
const fs = require('fs');
|
17
|
+
|
18
|
+
const options = (0, _utils.getOptions)();
|
19
|
+
const isWin = process.platform === 'win32';
|
18
20
|
|
19
21
|
function windowsModification(array) {
|
20
22
|
return isWin ? array.map(r => r.replace(/\//g, '\\')) : array;
|
@@ -31,7 +33,7 @@ function excludeEmptyCheckPlugin({
|
|
31
33
|
})] : [];
|
32
34
|
}
|
33
35
|
|
34
|
-
|
36
|
+
const getCSSLoaders = (plugins, exclude, mediaQueryHoverActiveString, cssVariableReplacementConfig, classNameBlob, cssUniqueness, selectorReplace, cssHashSelectors, classNamePrefix) => {
|
35
37
|
// console.log('plugins:')
|
36
38
|
// console.log(plugins)
|
37
39
|
// console.log('exclude:')
|
@@ -45,10 +47,12 @@ let getCSSLoaders = (plugins, exclude, mediaQueryHoverActiveString, classNameBlo
|
|
45
47
|
const {
|
46
48
|
cssSelectorZipPath
|
47
49
|
} = options.impactService;
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
50
|
+
fs.writeFileSync('./css_error.log', '');
|
51
|
+
const rtlExcludeLocal = windowsModification(exclude.rtl);
|
52
|
+
const hoverActiveExcludeLocal = windowsModification(exclude.hoverActive);
|
53
|
+
const combinerMediaQueryExcludeLocal = windowsModification(exclude.combinerMediaQuery);
|
54
|
+
const cssVariableReplacementExcludeLocal = windowsModification(exclude.cssVariableReplacement);
|
55
|
+
const cssLoaderOptions = {
|
52
56
|
// importLoaders: hasRTL||hoverActive ? 1 : 0,
|
53
57
|
importLoaders: 1,
|
54
58
|
modules: {},
|
@@ -61,7 +65,12 @@ let getCSSLoaders = (plugins, exclude, mediaQueryHoverActiveString, classNameBlo
|
|
61
65
|
cssLoaderOptions.modules.getLocalIdent = (0, _cssClassNameGenerate.default)(cssUniqueness, cssHashSelectors, classNamePrefix);
|
62
66
|
}
|
63
67
|
|
64
|
-
const postcssPlugins = [valueReplacer && require('../postcss-plugins/ValueReplacer')(valueReplacer), selectorReplace && require('postcss-selector-replace')(selectorReplace), ...excludeEmptyCheckPlugin({
|
68
|
+
const postcssPlugins = [valueReplacer && require('../postcss-plugins/ValueReplacer')(valueReplacer), selectorReplace && require('postcss-selector-replace')(selectorReplace), // ...excludeEmptyCheckPlugin({
|
69
|
+
// enable: true,
|
70
|
+
// ignore: [],
|
71
|
+
// plugins: [require('../postcss-plugins/variablePropertiesCollector').default()]
|
72
|
+
// }),
|
73
|
+
...excludeEmptyCheckPlugin({
|
65
74
|
enable: plugins.hasRTL,
|
66
75
|
ignore: rtlExcludeLocal,
|
67
76
|
plugins: [require('@zohodesk/postcss-rtl')({
|
@@ -81,8 +90,11 @@ let getCSSLoaders = (plugins, exclude, mediaQueryHoverActiveString, classNameBlo
|
|
81
90
|
enable: plugins.hoverActive,
|
82
91
|
ignore: hoverActiveExcludeLocal,
|
83
92
|
plugins: [require('../postcss-plugins/hoverActivePlugin')(mediaQueryHoverActiveString)]
|
84
|
-
})
|
85
|
-
|
93
|
+
}), ...excludeEmptyCheckPlugin({
|
94
|
+
enable: plugins.cssVariableReplacement,
|
95
|
+
ignore: cssVariableReplacementExcludeLocal,
|
96
|
+
plugins: [fs.existsSync(cssVariableReplacementConfig) && require('../postcss-plugins/variableModificationPlugin/index')(cssVariableReplacementConfig)]
|
97
|
+
})].filter(Boolean);
|
86
98
|
return [cssSelectorZipPath && {
|
87
99
|
loader: require.resolve('../loaders/selectorMappingLoader')
|
88
100
|
}, {
|
@@ -33,9 +33,24 @@ function isHoverPresent(atrule) {
|
|
33
33
|
return hoverPresent;
|
34
34
|
}
|
35
35
|
|
36
|
+
function checkForUsualClass(root, sel) {
|
37
|
+
let present = false;
|
38
|
+
sel.split(',').forEach(value => {
|
39
|
+
if (value.includes('hover')) {
|
40
|
+
const valueNoHover = value.replace(':hover', '').trim();
|
41
|
+
root.walkRules(rule => {
|
42
|
+
if (rule.selector === valueNoHover) {
|
43
|
+
present = true;
|
44
|
+
}
|
45
|
+
});
|
46
|
+
}
|
47
|
+
});
|
48
|
+
return present;
|
49
|
+
}
|
50
|
+
|
36
51
|
module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHoverActiveString => rootOriginal => {
|
37
52
|
const hoverRules = [];
|
38
|
-
|
53
|
+
const positionsObj = {};
|
39
54
|
hoverMedQuerySuffix = mediaQueryHoverActiveString.hover;
|
40
55
|
hoverNoneMedQuerySuffix = mediaQueryHoverActiveString.none;
|
41
56
|
|
@@ -145,16 +160,16 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
|
|
145
160
|
if (rule.parent.params !== undefined && !rule.parent.params.includes('hover')) {
|
146
161
|
//console.log(hovMed, actMed);
|
147
162
|
let newSelector = '';
|
148
|
-
|
163
|
+
const {
|
149
164
|
hovMed,
|
150
165
|
actMed
|
151
166
|
} = getPositionsOfHoverAndActiveMedQueries(rule.parent);
|
152
|
-
|
153
|
-
|
167
|
+
const hovQueries = [];
|
168
|
+
const actQueries = [];
|
154
169
|
rule.selector.split(/\s*,\s*/).forEach(_subrule => {
|
155
|
-
|
170
|
+
const subrule = _subrule.trim();
|
156
171
|
|
157
|
-
|
172
|
+
const clone = rule.clone();
|
158
173
|
|
159
174
|
if (subrule.includes('hover')) {
|
160
175
|
clone.selector = subrule;
|
@@ -172,13 +187,13 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
|
|
172
187
|
});
|
173
188
|
|
174
189
|
if (hovQueries.length > 0) {
|
175
|
-
|
190
|
+
const clone = rule.clone();
|
176
191
|
clone.selector = hovQueries.join(',');
|
177
192
|
hovMed.append(clone);
|
178
193
|
}
|
179
194
|
|
180
195
|
if (actQueries.length > 0) {
|
181
|
-
|
196
|
+
const clone = rule.clone();
|
182
197
|
clone.selector = actQueries.join(',');
|
183
198
|
actMed.append(clone.clone({
|
184
199
|
selector: clone.selector.replace(/:hover/gi, ':active')
|
@@ -197,7 +212,7 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
|
|
197
212
|
|
198
213
|
function mediaQuery(rule, index) {
|
199
214
|
if (rule.parent.params !== undefined && !rule.parent.params.includes('hover')) {
|
200
|
-
|
215
|
+
const {
|
201
216
|
hovMed,
|
202
217
|
actMed
|
203
218
|
} = getPositionsOfHoverAndActiveMedQueries(rule.parent);
|
@@ -219,9 +234,9 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
|
|
219
234
|
function commaQuery(rule, index) {
|
220
235
|
//console.log("comma" , rule.selector.split('\n'));
|
221
236
|
let newSelector = '';
|
222
|
-
|
237
|
+
const hovQueries = [];
|
223
238
|
rule.selector.split(/\s*,\s*/).forEach(_subrule => {
|
224
|
-
|
239
|
+
const subrule = _subrule.trim();
|
225
240
|
|
226
241
|
if (subrule.includes('hover')) {
|
227
242
|
// hoverRules.push({ rule: clone, index });
|
@@ -232,7 +247,7 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
|
|
232
247
|
});
|
233
248
|
|
234
249
|
if (hovQueries.length > 0) {
|
235
|
-
|
250
|
+
const clone = rule.clone();
|
236
251
|
clone.selector = hovQueries.join(',');
|
237
252
|
hoverRules.push({
|
238
253
|
rule: clone,
|
@@ -241,7 +256,9 @@ module.exports = _postcss.default.plugin('postcss-mobile-hover', mediaQueryHover
|
|
241
256
|
}
|
242
257
|
|
243
258
|
if (handleHoverAndHoverActiveIgnore(index)) {
|
244
|
-
|
259
|
+
if (checkForUsualClass(rootOriginal, rule.selector)) {
|
260
|
+
rule.selector = newSelector.substring(0, newSelector.length - 2).trim();
|
261
|
+
}
|
245
262
|
}
|
246
263
|
|
247
264
|
if (rule.selector === '') {
|
@@ -0,0 +1,37 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.ErrorHandler = void 0;
|
7
|
+
|
8
|
+
class ErrorHandler {
|
9
|
+
constructor(allowedErrs) {
|
10
|
+
this.errors = [];
|
11
|
+
this.allowedErrs = allowedErrs;
|
12
|
+
}
|
13
|
+
|
14
|
+
addError(errstr) {
|
15
|
+
this.errors.push(`{\n${errstr}\n}\n`);
|
16
|
+
}
|
17
|
+
|
18
|
+
errorFunction(errStr, type) {
|
19
|
+
const {
|
20
|
+
addError,
|
21
|
+
allowedErrs
|
22
|
+
} = this;
|
23
|
+
|
24
|
+
if (type === 'DECLARATION_IGNORED' && allowedErrs.DECLARATION_IGNORED) {
|
25
|
+
addError(errStr);
|
26
|
+
} else if (type === 'UNIT_ERROR' && allowedErrs.UNIT_ERROR) {
|
27
|
+
addError(errStr);
|
28
|
+
} else if (type === 'RANGE_ERROR' && allowedErrs.RANGE_ERROR) {
|
29
|
+
addError(errStr);
|
30
|
+
} else if (type === 'VARIABLE_PRESENT' && allowedErrs.VARIABLE_PRESENT) {
|
31
|
+
addError(errStr);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
}
|
36
|
+
|
37
|
+
exports.ErrorHandler = ErrorHandler;
|