@nlabs/lex 1.51.1 → 1.51.3
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/lib/utils/postcss/postcss-for.d.ts +11 -0
- package/lib/utils/postcss/postcss-for.js +136 -0
- package/lib/utils/postcss/postcss-percentage.d.ts +15 -0
- package/lib/utils/postcss/postcss-percentage.js +65 -0
- package/package.json +15 -15
- package/postcss.config.js +3 -2
- package/webpack.config.js +2 -2
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*
|
|
5
|
+
* PostCSS 8-compatible version of postcss-for plugin
|
|
6
|
+
* Original: https://github.com/antyakushev/postcss-for
|
|
7
|
+
*/ import postcssSimpleVars from 'postcss-simple-vars';
|
|
8
|
+
const postcssFor = (opts = {})=>{
|
|
9
|
+
const options = {
|
|
10
|
+
nested: opts.nested !== false
|
|
11
|
+
};
|
|
12
|
+
const iterStack = [];
|
|
13
|
+
const parentsHaveIterator = (rule, param)=>{
|
|
14
|
+
if (rule.parent == null) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
if (rule.parent.type === 'root') {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
if (rule.parent.type !== 'atrule' || !rule.parent.params) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
const parentIterVar = rule.parent.params.split(/\s+/)[0];
|
|
24
|
+
if (!parentIterVar) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
if (parentIterVar === param) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
if (iterStack.indexOf(param) !== -1) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
return parentsHaveIterator(rule.parent, param);
|
|
34
|
+
};
|
|
35
|
+
const manageIterStack = (rule)=>{
|
|
36
|
+
if (rule.parent && rule.parent.type !== 'root') {
|
|
37
|
+
const parentIterVar = rule.parent.type === 'atrule' && rule.parent.params ? rule.parent.params.split(/\s+/)[0] : null;
|
|
38
|
+
if (parentIterVar && iterStack.indexOf(parentIterVar) === -1) {
|
|
39
|
+
iterStack.splice(0, iterStack.length);
|
|
40
|
+
} else if (parentIterVar) {
|
|
41
|
+
const parentIndex = iterStack.indexOf(parentIterVar);
|
|
42
|
+
if (parentIndex !== -1) {
|
|
43
|
+
iterStack.splice(parentIndex + 1, iterStack.length - parentIndex - 1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
iterStack.splice(0, iterStack.length);
|
|
48
|
+
}
|
|
49
|
+
const currentIterVar = rule.params.split(/\s+/)[0];
|
|
50
|
+
if (currentIterVar) {
|
|
51
|
+
iterStack.push(currentIterVar);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const checkNumber = (rule)=>{
|
|
55
|
+
return (param)=>{
|
|
56
|
+
if (isNaN(parseInt(param, 10)) || !param.match(/^-?\d+\.?\d*$/)) {
|
|
57
|
+
if (param.indexOf('$') !== -1) {
|
|
58
|
+
if (!parentsHaveIterator(rule, param)) {
|
|
59
|
+
throw rule.error('External variable (not from a parent for loop) cannot be used as a range parameter', {
|
|
60
|
+
plugin: 'postcss-for'
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
} else {
|
|
64
|
+
throw rule.error('Range parameter should be a number', {
|
|
65
|
+
plugin: 'postcss-for'
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
const checkParams = (rule, params)=>{
|
|
72
|
+
if (!params[0]?.match(/(^|[^\w])\$([\w\d-_]+)/) || params[1] !== 'from' || params[3] !== 'to' || params[5] !== 'by' && params[5] !== undefined) {
|
|
73
|
+
throw rule.error('Wrong loop syntax', {
|
|
74
|
+
plugin: 'postcss-for'
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
[
|
|
78
|
+
params[2],
|
|
79
|
+
params[4],
|
|
80
|
+
params[6] || '0'
|
|
81
|
+
].forEach(checkNumber(rule));
|
|
82
|
+
};
|
|
83
|
+
const unrollLoop = (rule)=>{
|
|
84
|
+
const params = rule.params.split(/\s+/);
|
|
85
|
+
checkParams(rule, params);
|
|
86
|
+
const iterator = params[0].slice(1);
|
|
87
|
+
const index = +params[2];
|
|
88
|
+
const top = +params[4];
|
|
89
|
+
const dir = top < index ? -1 : 1;
|
|
90
|
+
const by = +(params[6] || 1) * dir;
|
|
91
|
+
const value = {};
|
|
92
|
+
for(let i = index; i * dir <= top * dir; i = i + by){
|
|
93
|
+
const content = rule.clone();
|
|
94
|
+
value[iterator] = i;
|
|
95
|
+
postcssSimpleVars({
|
|
96
|
+
only: value
|
|
97
|
+
})(content);
|
|
98
|
+
if (options.nested) {
|
|
99
|
+
processLoops(content);
|
|
100
|
+
}
|
|
101
|
+
if (rule.parent) {
|
|
102
|
+
rule.parent.insertBefore(rule, content.nodes);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (rule.parent) {
|
|
106
|
+
rule.remove();
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
const processLoops = (css)=>{
|
|
110
|
+
css.walkAtRules((rule)=>{
|
|
111
|
+
if (rule.name === 'for') {
|
|
112
|
+
unrollLoop(rule);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
const processOriginalLoops = (css)=>{
|
|
117
|
+
css.walkAtRules((rule)=>{
|
|
118
|
+
if (rule.name === 'for') {
|
|
119
|
+
if (rule.parent) {
|
|
120
|
+
manageIterStack(rule);
|
|
121
|
+
}
|
|
122
|
+
unrollLoop(rule);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
return {
|
|
127
|
+
postcssPlugin: 'postcss-for',
|
|
128
|
+
Once (root) {
|
|
129
|
+
processOriginalLoops(root);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
postcssFor.postcss = true;
|
|
134
|
+
export default postcssFor;
|
|
135
|
+
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9wb3N0Y3NzL3Bvc3Rjc3MtZm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICpcbiAqIFBvc3RDU1MgOC1jb21wYXRpYmxlIHZlcnNpb24gb2YgcG9zdGNzcy1mb3IgcGx1Z2luXG4gKiBPcmlnaW5hbDogaHR0cHM6Ly9naXRodWIuY29tL2FudHlha3VzaGV2L3Bvc3Rjc3MtZm9yXG4gKi9cbmltcG9ydCBwb3N0Y3NzIGZyb20gJ3Bvc3Rjc3MnO1xuaW1wb3J0IHBvc3Rjc3NTaW1wbGVWYXJzIGZyb20gJ3Bvc3Rjc3Mtc2ltcGxlLXZhcnMnO1xuXG5pbnRlcmZhY2UgUG9zdGNzc0Zvck9wdGlvbnMge1xuICBuZXN0ZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBwb3N0Y3NzRm9yID0gKG9wdHM6IFBvc3Rjc3NGb3JPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICBuZXN0ZWQ6IG9wdHMubmVzdGVkICE9PSBmYWxzZVxuICB9O1xuXG4gIGNvbnN0IGl0ZXJTdGFjazogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCBwYXJlbnRzSGF2ZUl0ZXJhdG9yID0gKHJ1bGU6IHBvc3Rjc3MuQXRSdWxlLCBwYXJhbTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKHJ1bGUucGFyZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHJ1bGUucGFyZW50LnR5cGUgPT09ICdyb290Jykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAocnVsZS5wYXJlbnQudHlwZSAhPT0gJ2F0cnVsZScgfHwgIXJ1bGUucGFyZW50LnBhcmFtcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudEl0ZXJWYXIgPSBydWxlLnBhcmVudC5wYXJhbXMuc3BsaXQoL1xccysvKVswXTtcbiAgICBpZiAoIXBhcmVudEl0ZXJWYXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHBhcmVudEl0ZXJWYXIgPT09IHBhcmFtKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGl0ZXJTdGFjay5pbmRleE9mKHBhcmFtKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50c0hhdmVJdGVyYXRvcihydWxlLnBhcmVudCBhcyBwb3N0Y3NzLkF0UnVsZSwgcGFyYW0pO1xuICB9O1xuXG4gIGNvbnN0IG1hbmFnZUl0ZXJTdGFjayA9IChydWxlOiBwb3N0Y3NzLkF0UnVsZSkgPT4ge1xuICAgIGlmIChydWxlLnBhcmVudCAmJiBydWxlLnBhcmVudC50eXBlICE9PSAncm9vdCcpIHtcbiAgICAgIGNvbnN0IHBhcmVudEl0ZXJWYXIgPSBydWxlLnBhcmVudC50eXBlID09PSAnYXRydWxlJyAmJiBydWxlLnBhcmVudC5wYXJhbXNcbiAgICAgICAgPyBydWxlLnBhcmVudC5wYXJhbXMuc3BsaXQoL1xccysvKVswXVxuICAgICAgICA6IG51bGw7XG4gICAgICBpZiAocGFyZW50SXRlclZhciAmJiBpdGVyU3RhY2suaW5kZXhPZihwYXJlbnRJdGVyVmFyKSA9PT0gLTEpIHtcbiAgICAgICAgaXRlclN0YWNrLnNwbGljZSgwLCBpdGVyU3RhY2subGVuZ3RoKTtcbiAgICAgIH0gZWxzZSBpZiAocGFyZW50SXRlclZhcikge1xuICAgICAgICBjb25zdCBwYXJlbnRJbmRleCA9IGl0ZXJTdGFjay5pbmRleE9mKHBhcmVudEl0ZXJWYXIpO1xuICAgICAgICBpZiAocGFyZW50SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgaXRlclN0YWNrLnNwbGljZShwYXJlbnRJbmRleCArIDEsIGl0ZXJTdGFjay5sZW5ndGggLSBwYXJlbnRJbmRleCAtIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZXJTdGFjay5zcGxpY2UoMCwgaXRlclN0YWNrLmxlbmd0aCk7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRJdGVyVmFyID0gcnVsZS5wYXJhbXMuc3BsaXQoL1xccysvKVswXTtcbiAgICBpZiAoY3VycmVudEl0ZXJWYXIpIHtcbiAgICAgIGl0ZXJTdGFjay5wdXNoKGN1cnJlbnRJdGVyVmFyKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2hlY2tOdW1iZXIgPSAocnVsZTogcG9zdGNzcy5BdFJ1bGUpID0+IHtcbiAgICByZXR1cm4gKHBhcmFtOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChpc05hTihwYXJzZUludChwYXJhbSwgMTApKSB8fCAhcGFyYW0ubWF0Y2goL14tP1xcZCtcXC4/XFxkKiQvKSkge1xuICAgICAgICBpZiAocGFyYW0uaW5kZXhPZignJCcpICE9PSAtMSkge1xuICAgICAgICAgIGlmICghcGFyZW50c0hhdmVJdGVyYXRvcihydWxlLCBwYXJhbSkpIHtcbiAgICAgICAgICAgIHRocm93IHJ1bGUuZXJyb3IoJ0V4dGVybmFsIHZhcmlhYmxlIChub3QgZnJvbSBhIHBhcmVudCBmb3IgbG9vcCkgY2Fubm90IGJlIHVzZWQgYXMgYSByYW5nZSBwYXJhbWV0ZXInLCB7XG4gICAgICAgICAgICAgIHBsdWdpbjogJ3Bvc3Rjc3MtZm9yJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IHJ1bGUuZXJyb3IoJ1JhbmdlIHBhcmFtZXRlciBzaG91bGQgYmUgYSBudW1iZXInLCB7XG4gICAgICAgICAgICBwbHVnaW46ICdwb3N0Y3NzLWZvcidcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH07XG5cbiAgY29uc3QgY2hlY2tQYXJhbXMgPSAocnVsZTogcG9zdGNzcy5BdFJ1bGUsIHBhcmFtczogc3RyaW5nW10pID0+IHtcbiAgICBpZiAoXG4gICAgICAhcGFyYW1zWzBdPy5tYXRjaCgvKF58W15cXHddKVxcJChbXFx3XFxkLV9dKykvKSB8fFxuICAgICAgcGFyYW1zWzFdICE9PSAnZnJvbScgfHxcbiAgICAgIHBhcmFtc1szXSAhPT0gJ3RvJyB8fFxuICAgICAgKHBhcmFtc1s1XSAhPT0gJ2J5JyAmJiBwYXJhbXNbNV0gIT09IHVuZGVmaW5lZClcbiAgICApIHtcbiAgICAgIHRocm93IHJ1bGUuZXJyb3IoJ1dyb25nIGxvb3Agc3ludGF4Jywge1xuICAgICAgICBwbHVnaW46ICdwb3N0Y3NzLWZvcidcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIFtwYXJhbXNbMl0sIHBhcmFtc1s0XSwgcGFyYW1zWzZdIHx8ICcwJ10uZm9yRWFjaChjaGVja051bWJlcihydWxlKSk7XG4gIH07XG5cbiAgY29uc3QgdW5yb2xsTG9vcCA9IChydWxlOiBwb3N0Y3NzLkF0UnVsZSkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHJ1bGUucGFyYW1zLnNwbGl0KC9cXHMrLyk7XG5cbiAgICBjaGVja1BhcmFtcyhydWxlLCBwYXJhbXMpO1xuXG4gICAgY29uc3QgaXRlcmF0b3IgPSBwYXJhbXNbMF0uc2xpY2UoMSk7XG4gICAgY29uc3QgaW5kZXggPSArcGFyYW1zWzJdO1xuICAgIGNvbnN0IHRvcCA9ICtwYXJhbXNbNF07XG4gICAgY29uc3QgZGlyID0gdG9wIDwgaW5kZXggPyAtMSA6IDE7XG4gICAgY29uc3QgYnkgPSAoKyhwYXJhbXNbNl0gfHwgMSkpICogZGlyO1xuXG4gICAgY29uc3QgdmFsdWU6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbiAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgKiBkaXIgPD0gdG9wICogZGlyOyBpID0gaSArIGJ5KSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gcnVsZS5jbG9uZSgpO1xuICAgICAgdmFsdWVbaXRlcmF0b3JdID0gaTtcbiAgICAgIHBvc3Rjc3NTaW1wbGVWYXJzKHtvbmx5OiB2YWx1ZX0pKGNvbnRlbnQpO1xuICAgICAgaWYgKG9wdGlvbnMubmVzdGVkKSB7XG4gICAgICAgIHByb2Nlc3NMb29wcyhjb250ZW50KTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlLnBhcmVudCkge1xuICAgICAgICBydWxlLnBhcmVudC5pbnNlcnRCZWZvcmUocnVsZSwgY29udGVudC5ub2Rlcyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnBhcmVudCkge1xuICAgICAgcnVsZS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcHJvY2Vzc0xvb3BzID0gKGNzczogcG9zdGNzcy5Db250YWluZXIpID0+IHtcbiAgICBjc3Mud2Fsa0F0UnVsZXMoKHJ1bGUpID0+IHtcbiAgICAgIGlmIChydWxlLm5hbWUgPT09ICdmb3InKSB7XG4gICAgICAgIHVucm9sbExvb3AocnVsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgcHJvY2Vzc09yaWdpbmFsTG9vcHMgPSAoY3NzOiBwb3N0Y3NzLlJvb3QpID0+IHtcbiAgICBjc3Mud2Fsa0F0UnVsZXMoKHJ1bGUpID0+IHtcbiAgICAgIGlmIChydWxlLm5hbWUgPT09ICdmb3InKSB7XG4gICAgICAgIGlmIChydWxlLnBhcmVudCkge1xuICAgICAgICAgIG1hbmFnZUl0ZXJTdGFjayhydWxlKTtcbiAgICAgICAgfVxuICAgICAgICB1bnJvbGxMb29wKHJ1bGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgcG9zdGNzc1BsdWdpbjogJ3Bvc3Rjc3MtZm9yJyxcbiAgICBPbmNlKHJvb3QpIHtcbiAgICAgIHByb2Nlc3NPcmlnaW5hbExvb3BzKHJvb3QpO1xuICAgIH1cbiAgfTtcbn07XG5cbnBvc3Rjc3NGb3IucG9zdGNzcyA9IHRydWU7XG5cbmV4cG9ydCBkZWZhdWx0IHBvc3Rjc3NGb3I7XG5cbiJdLCJuYW1lcyI6WyJwb3N0Y3NzU2ltcGxlVmFycyIsInBvc3Rjc3NGb3IiLCJvcHRzIiwib3B0aW9ucyIsIm5lc3RlZCIsIml0ZXJTdGFjayIsInBhcmVudHNIYXZlSXRlcmF0b3IiLCJydWxlIiwicGFyYW0iLCJwYXJlbnQiLCJ0eXBlIiwicGFyYW1zIiwicGFyZW50SXRlclZhciIsInNwbGl0IiwiaW5kZXhPZiIsIm1hbmFnZUl0ZXJTdGFjayIsInNwbGljZSIsImxlbmd0aCIsInBhcmVudEluZGV4IiwiY3VycmVudEl0ZXJWYXIiLCJwdXNoIiwiY2hlY2tOdW1iZXIiLCJpc05hTiIsInBhcnNlSW50IiwibWF0Y2giLCJlcnJvciIsInBsdWdpbiIsImNoZWNrUGFyYW1zIiwidW5kZWZpbmVkIiwiZm9yRWFjaCIsInVucm9sbExvb3AiLCJpdGVyYXRvciIsInNsaWNlIiwiaW5kZXgiLCJ0b3AiLCJkaXIiLCJieSIsInZhbHVlIiwiaSIsImNvbnRlbnQiLCJjbG9uZSIsIm9ubHkiLCJwcm9jZXNzTG9vcHMiLCJpbnNlcnRCZWZvcmUiLCJub2RlcyIsInJlbW92ZSIsImNzcyIsIndhbGtBdFJ1bGVzIiwibmFtZSIsInByb2Nlc3NPcmlnaW5hbExvb3BzIiwicG9zdGNzc1BsdWdpbiIsIk9uY2UiLCJyb290IiwicG9zdGNzcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztDQU1DLEdBRUQsT0FBT0EsdUJBQXVCLHNCQUFzQjtBQU1wRCxNQUFNQyxhQUFhLENBQUNDLE9BQTBCLENBQUMsQ0FBQztJQUM5QyxNQUFNQyxVQUFVO1FBQ2RDLFFBQVFGLEtBQUtFLE1BQU0sS0FBSztJQUMxQjtJQUVBLE1BQU1DLFlBQXNCLEVBQUU7SUFFOUIsTUFBTUMsc0JBQXNCLENBQUNDLE1BQXNCQztRQUNqRCxJQUFJRCxLQUFLRSxNQUFNLElBQUksTUFBTTtZQUN2QixPQUFPO1FBQ1Q7UUFDQSxJQUFJRixLQUFLRSxNQUFNLENBQUNDLElBQUksS0FB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
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface PostcssPercentageOptions {
|
|
2
|
+
floor?: boolean;
|
|
3
|
+
precision?: number;
|
|
4
|
+
trimTrailingZero?: boolean;
|
|
5
|
+
}
|
|
6
|
+
declare const postcssPercentage: {
|
|
7
|
+
(opts?: PostcssPercentageOptions): {
|
|
8
|
+
postcssPlugin: string;
|
|
9
|
+
Once(root: any, { result }: {
|
|
10
|
+
result: any;
|
|
11
|
+
}): void;
|
|
12
|
+
};
|
|
13
|
+
postcss: boolean;
|
|
14
|
+
};
|
|
15
|
+
export default postcssPercentage;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*
|
|
5
|
+
* PostCSS 8-compatible version of postcss-percentage plugin
|
|
6
|
+
* Original: https://github.com/antyakushev/postcss-percentage
|
|
7
|
+
*/ import parser from 'postcss-value-parser';
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
9
|
+
const evaluator = require('math-expression-evaluator');
|
|
10
|
+
const transformPercentage = (value, precision, floor, trimTrailingZero)=>{
|
|
11
|
+
return parser(value).walk((node)=>{
|
|
12
|
+
if (node.type !== 'function' || node.value !== 'percentage') {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
let result = evaluator.eval(parser.stringify(node.nodes)) * 100;
|
|
16
|
+
let resultStr;
|
|
17
|
+
if (result === 0) {
|
|
18
|
+
resultStr = '0';
|
|
19
|
+
} else if (floor) {
|
|
20
|
+
const resultString = result.toString();
|
|
21
|
+
const index = resultString.indexOf('.');
|
|
22
|
+
resultStr = index === -1 ? resultString : resultString.substring(0, index + 1 + precision);
|
|
23
|
+
} else {
|
|
24
|
+
resultStr = result.toFixed(precision);
|
|
25
|
+
}
|
|
26
|
+
if (trimTrailingZero) {
|
|
27
|
+
resultStr = resultStr.replace(/\.0+$/, '').replace(/(\.\d*[1-9])0+$/, '$1');
|
|
28
|
+
}
|
|
29
|
+
resultStr += '%';
|
|
30
|
+
Object.assign(node, {
|
|
31
|
+
type: 'word',
|
|
32
|
+
value: resultStr
|
|
33
|
+
});
|
|
34
|
+
}).toString();
|
|
35
|
+
};
|
|
36
|
+
const postcssPercentage = (opts = {})=>{
|
|
37
|
+
const options = {
|
|
38
|
+
precision: opts.precision == null || opts.precision > 20 || opts.precision < 0 ? 6 : opts.precision,
|
|
39
|
+
trimTrailingZero: opts.trimTrailingZero == null ? true : opts.trimTrailingZero,
|
|
40
|
+
floor: opts.floor
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
postcssPlugin: 'postcss-percentage',
|
|
44
|
+
Once (root, { result }) {
|
|
45
|
+
root.walkDecls((decl)=>{
|
|
46
|
+
if (!decl.value || !/percentage\s*\(/.test(decl.value)) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
decl.value = transformPercentage(decl.value, options.precision, options.floor, options.trimTrailingZero);
|
|
51
|
+
} catch (e) {
|
|
52
|
+
const error = e;
|
|
53
|
+
decl.warn(result, error.message, {
|
|
54
|
+
word: decl.value,
|
|
55
|
+
index: decl.index
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
postcssPercentage.postcss = true;
|
|
63
|
+
export default postcssPercentage;
|
|
64
|
+
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9wb3N0Y3NzL3Bvc3Rjc3MtcGVyY2VudGFnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqXG4gKiBQb3N0Q1NTIDgtY29tcGF0aWJsZSB2ZXJzaW9uIG9mIHBvc3Rjc3MtcGVyY2VudGFnZSBwbHVnaW5cbiAqIE9yaWdpbmFsOiBodHRwczovL2dpdGh1Yi5jb20vYW50eWFrdXNoZXYvcG9zdGNzcy1wZXJjZW50YWdlXG4gKi9cbmltcG9ydCBwb3N0Y3NzIGZyb20gJ3Bvc3Rjc3MnO1xuaW1wb3J0IHBhcnNlciBmcm9tICdwb3N0Y3NzLXZhbHVlLXBhcnNlcic7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuY29uc3QgZXZhbHVhdG9yID0gcmVxdWlyZSgnbWF0aC1leHByZXNzaW9uLWV2YWx1YXRvcicpO1xuXG5pbnRlcmZhY2UgUG9zdGNzc1BlcmNlbnRhZ2VPcHRpb25zIHtcbiAgZmxvb3I/OiBib29sZWFuO1xuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIHRyaW1UcmFpbGluZ1plcm8/OiBib29sZWFuO1xufVxuXG5jb25zdCB0cmFuc2Zvcm1QZXJjZW50YWdlID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICBwcmVjaXNpb246IG51bWJlcixcbiAgZmxvb3I6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gIHRyaW1UcmFpbGluZ1plcm86IGJvb2xlYW4gfCB1bmRlZmluZWRcbik6IHN0cmluZyA9PiB7XG4gIHJldHVybiBwYXJzZXIodmFsdWUpLndhbGsoKG5vZGUpID0+IHtcbiAgICBpZiAobm9kZS50eXBlICE9PSAnZnVuY3Rpb24nIHx8IG5vZGUudmFsdWUgIT09ICdwZXJjZW50YWdlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSBldmFsdWF0b3IuZXZhbChwYXJzZXIuc3RyaW5naWZ5KG5vZGUubm9kZXMpKSAqIDEwMDtcbiAgICBsZXQgcmVzdWx0U3RyOiBzdHJpbmc7XG4gICAgaWYgKHJlc3VsdCA9PT0gMCkge1xuICAgICAgcmVzdWx0U3RyID0gJzAnO1xuICAgIH0gZWxzZSBpZiAoZmxvb3IpIHtcbiAgICAgIGNvbnN0IHJlc3VsdFN0cmluZyA9IHJlc3VsdC50b1N0cmluZygpO1xuICAgICAgY29uc3QgaW5kZXggPSByZXN1bHRTdHJpbmcuaW5kZXhPZignLicpO1xuICAgICAgcmVzdWx0U3RyID0gaW5kZXggPT09IC0xXG4gICAgICAgID8gcmVzdWx0U3RyaW5nXG4gICAgICAgIDogcmVzdWx0U3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCArIDEgKyBwcmVjaXNpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRTdHIgPSByZXN1bHQudG9GaXhlZChwcmVjaXNpb24pO1xuICAgIH1cbiAgICBpZiAodHJpbVRyYWlsaW5nWmVybykge1xuICAgICAgcmVzdWx0U3RyID0gcmVzdWx0U3RyXG4gICAgICAgIC5yZXBsYWNlKC9cXC4wKyQvLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhcXC5cXGQqWzEtOV0pMCskLywgJyQxJyk7XG4gICAgfVxuICAgIHJlc3VsdFN0ciArPSAnJSc7XG4gICAgT2JqZWN0LmFzc2lnbihub2RlLCB7XG4gICAgICB0eXBlOiAnd29yZCcgYXMgY29uc3QsXG4gICAgICB2YWx1ZTogcmVzdWx0U3RyXG4gICAgfSk7XG4gIH0pLnRvU3RyaW5nKCk7XG59O1xuXG5jb25zdCBwb3N0Y3NzUGVyY2VudGFnZSA9IChvcHRzOiBQb3N0Y3NzUGVyY2VudGFnZU9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgIHByZWNpc2lvbjogb3B0cy5wcmVjaXNpb24gPT0gbnVsbCB8fCBvcHRzLnByZWNpc2lvbiA+IDIwIHx8IG9wdHMucHJlY2lzaW9uIDwgMFxuICAgICAgPyA2XG4gICAgICA6IG9wdHMucHJlY2lzaW9uLFxuICAgIHRyaW1UcmFpbGluZ1plcm86IG9wdHMudHJpbVRyYWlsaW5nWmVybyA9PSBudWxsXG4gICAgICA/IHRydWVcbiAgICAgIDogb3B0cy50cmltVHJhaWxpbmdaZXJvLFxuICAgIGZsb29yOiBvcHRzLmZsb29yXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBwb3N0Y3NzUGx1Z2luOiAncG9zdGNzcy1wZXJjZW50YWdlJyxcbiAgICBPbmNlKHJvb3QsIHtyZXN1bHR9KSB7XG4gICAgICByb290LndhbGtEZWNscygoZGVjbCkgPT4ge1xuICAgICAgICBpZiAoIWRlY2wudmFsdWUgfHwgIS9wZXJjZW50YWdlXFxzKlxcKC8udGVzdChkZWNsLnZhbHVlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZGVjbC52YWx1ZSA9IHRyYW5zZm9ybVBlcmNlbnRhZ2UoXG4gICAgICAgICAgICBkZWNsLnZhbHVlLFxuICAgICAgICAgICAgb3B0aW9ucy5wcmVjaXNpb24sXG4gICAgICAgICAgICBvcHRpb25zLmZsb29yLFxuICAgICAgICAgICAgb3B0aW9ucy50cmltVHJhaWxpbmdaZXJvXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gZSBhcyBFcnJvcjtcbiAgICAgICAgICBkZWNsLndhcm4ocmVzdWx0LCBlcnJvci5tZXNzYWdlLCB7XG4gICAgICAgICAgICB3b3JkOiBkZWNsLnZhbHVlLFxuICAgICAgICAgICAgaW5kZXg6IGRlY2wuaW5kZXhcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xufTtcblxucG9zdGNzc1BlcmNlbnRhZ2UucG9zdGNzcyA9IHRydWU7XG5cbmV4cG9ydCBkZWZhdWx0IHBvc3Rjc3NQZXJjZW50YWdlO1xuXG4iXSwibmFtZXMiOlsicGFyc2VyIiwiZXZhbHVhdG9yIiwicmVxdWlyZSIsInRyYW5zZm9ybVBlcmNlbnRhZ2UiLCJ2YWx1ZSIsInByZWNpc2lvbiIsImZsb29yIiwidHJpbVRyYWlsaW5nWmVybyIsIndhbGsiLCJub2RlIiwidHlwZSIsInJlc3VsdCIsImV2YWwiLCJzdHJpbmdpZnkiLCJub2RlcyIsInJlc3VsdFN0ciIsInJlc3VsdFN0cmluZyIsInRvU3RyaW5nIiwiaW5kZXgiLCJpbmRleE9mIiwic3Vic3RyaW5nIiwidG9GaXhlZCIsInJlcGxhY2UiLCJPYmplY3QiLCJhc3NpZ24iLCJwb3N0Y3NzUGVyY2VudGFnZSIsIm9wdHMiLCJvcHRpb25zIiwicG9zdGNzc1BsdWdpbiIsIk9uY2UiLCJyb290Iiwid2Fsa0RlY2xzIiwiZGVjbCIsInRlc3QiLCJlIiwiZXJyb3IiLCJ3YXJuIiwibWVzc2FnZSIsIndvcmQiLCJwb3N0Y3NzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0NBTUMsR0FFRCxPQUFPQSxZQUFZLHVCQUF1QjtBQUMxQyxpRUFBaUU7QUFDakUsTUFBTUMsWUFBWUMsUUFBUTtBQVExQixNQUFNQyxzQkFBc0IsQ0FDMUJDLE9BQ0FDLFdBQ0FDLE9BQ0FDO0lBRUEsT0FBT1AsT0FBT0ksT0FBT0ksSUFBSSxDQUFDLENBQUNDO1FBQ3pCLElBQUlBLEtBQUtDLElBQUksS0FBSyxjQUFjRCxLQUFLTCxLQUFLLEtBQUssY0FBYztZQUMzRDtRQUNGO1FBRUEsSUFBSU8sU0FBU1YsVUFBVVcsSUFBSSxDQUFDWixPQUFPYSxTQUFTLENBQUNKLEtBQUtLLEtBQUssS0FBSztRQUM1RCxJQUFJQztRQUNKLElBQUlKLFdBQVcsR0FBRztZQUNoQkksWUFBWTtRQUNkLE9BQU8sSUFBSVQsT0FBTztZQUNoQixNQUFNVSxlQUFlTCxPQUFPTSxRQUFRO1lBQ3BDLE1BQU1DLFFBQVFGLGFBQWFHLE9BQU8sQ0FBQztZQUNuQ0osWUFBWUcsVUFBVSxDQUFDLElBQ25CRixlQUNBQSxhQUFhSSxTQUFTLENBQUMsR0FBR0YsUUFBUSxJQUFJYjtRQUM1QyxPQUFPO1lBQ0xVLFlBQVlKLE9BQU9VLE9BQU8sQ0FBQ2hCO1FBQzdCO1FBQ0EsSUFBSUUsa0JBQWtCO1lBQ3BCUSxZQUFZQSxVQUNUTyxPQUFPLENBQUMsU0FBUyxJQUNqQkEsT0FBTyxDQUFDLG1CQUFtQjtRQUNoQztRQUNBUCxhQUFhO1FBQ2JRLE9BQU9DLE1BQU0sQ0FBQ2YsTUFBTTtZQUNsQkMsTUFBTTtZQUNOTixPQUFPVztRQUNUO0lBQ0YsR0FBR0UsUUFBUTtBQUNiO0FBRUEsTUFBTVEsb0JBQW9CLENBQUNDLE9BQWlDLENBQUMsQ0FBQztJQUM1RCxNQUFNQyxVQUFVO1FBQ2R0QixXQUFXcUIsS0FBS3JCLFNBQVMsSUFBSSxRQUFRcUIsS0FBS3JCLFNBQVMsR0FBRyxNQUFNcUIsS0FBS3JCLFNBQVMsR0FBRyxJQUN6RSxJQUNBcUIsS0FBS3JCLFNBQVM7UUFDbEJFLGtCQUFrQm1CLEtBQUtuQixnQkFBZ0IsSUFBSSxPQUN2QyxPQUNBbUIsS0FBS25CLGdCQUFnQjtRQUN6QkQsT0FBT29CLEtBQUtwQixLQUFLO0lBQ25CO0lBRUEsT0FBTztRQUNMc0IsZUFBZTtRQUNmQyxNQUFLQyxJQUFJLEVBQUUsRUFBQ25CLE1BQU0sRUFBQztZQUNqQm1CLEtBQUtDLFNBQVMsQ0FBQyxDQUFDQztnQkFDZCxJQUFJLENBQUNBLEtBQUs1QixLQUFLLElBQUksQ0FBQyxrQkFBa0I2QixJQUFJLENBQUNELEtBQUs1QixLQUFLLEdBQUc7b0JBQ3REO2dCQUNGO2dCQUVBLElBQUk7b0JBQ0Y0QixLQUFLNUIsS0FBSyxHQUFHRCxvQkFDWDZCLEtBQUs1QixLQUFLLEVBQ1Z1QixRQUFRdEIsU0FBUyxFQUNqQnNCLFFBQVFyQixLQUFLLEVBQ2JxQixRQUFRcEIsZ0JBQWdCO2dCQUU1QixFQUFFLE9BQU8yQixHQUFHO29CQUNWLE1BQU1DLFFBQVFEO29CQUNkRixLQUFLSSxJQUFJLENBQUN6QixRQUFRd0IsTUFBTUUsT0FBTyxFQUFFO3dCQUMvQkMsTUFBTU4sS0FBSzVCLEtBQUs7d0JBQ2hCYyxPQUFPYyxLQUFLZCxLQUFLO29CQUNuQjtnQkFDRjtZQUNGO1FBQ0Y7SUFDRjtBQUNGO0FBRUFPLGtCQUFrQmMsT0FBTyxHQUFHO0FBRTVCLGVBQWVkLGtCQUFrQiJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nlabs/lex",
|
|
3
|
-
"version": "1.51.
|
|
3
|
+
"version": "1.51.3",
|
|
4
4
|
"description": "Lex",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -92,15 +92,15 @@
|
|
|
92
92
|
"@babel/runtime-corejs3": "^7.28.4",
|
|
93
93
|
"@mdx-js/loader": "^3.1.1",
|
|
94
94
|
"@nlabs/webpack-plugin-static-site": "*",
|
|
95
|
-
"@storybook/addon-docs": "^10.1.
|
|
96
|
-
"@storybook/addon-links": "^10.1.
|
|
95
|
+
"@storybook/addon-docs": "^10.1.4",
|
|
96
|
+
"@storybook/addon-links": "^10.1.4",
|
|
97
97
|
"@storybook/addon-postcss": "^2.0.0",
|
|
98
98
|
"@storybook/addon-styling-webpack": "^3.0.0",
|
|
99
|
-
"@storybook/addon-themes": "^10.1.
|
|
99
|
+
"@storybook/addon-themes": "^10.1.4",
|
|
100
100
|
"@storybook/addon-webpack5-compiler-babel": "^4.0.0",
|
|
101
|
-
"@storybook/cli": "^10.1.
|
|
102
|
-
"@storybook/react": "^10.1.
|
|
103
|
-
"@storybook/react-webpack5": "^10.1.
|
|
101
|
+
"@storybook/cli": "^10.1.4",
|
|
102
|
+
"@storybook/react": "^10.1.4",
|
|
103
|
+
"@storybook/react-webpack5": "^10.1.4",
|
|
104
104
|
"@swc/core": "^1.15.3",
|
|
105
105
|
"@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
|
|
106
106
|
"@tailwindcss/postcss": "4.1.17",
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
"babel-plugin-transform-import-meta": "^2.3.3",
|
|
117
117
|
"boxen": "8.0.1",
|
|
118
118
|
"buffer": "^6.0.3",
|
|
119
|
-
"caniuse-lite": "1.0.
|
|
119
|
+
"caniuse-lite": "1.0.30001759",
|
|
120
120
|
"chalk": "^5.6.2",
|
|
121
121
|
"commander": "^14.0.2",
|
|
122
122
|
"compare-versions": "^6.1.1",
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
"luxon": "^3.7.2",
|
|
161
161
|
"net": "^1.0.2",
|
|
162
162
|
"npm-check-updates": "^19.1.2",
|
|
163
|
-
"openai": "^6.
|
|
163
|
+
"openai": "^6.10.0",
|
|
164
164
|
"ora": "9.0.0",
|
|
165
165
|
"os-browserify": "^0.3.0",
|
|
166
166
|
"path-browserify": "^1.0.1",
|
|
@@ -174,22 +174,22 @@
|
|
|
174
174
|
"postcss-loader": "^8.2.0",
|
|
175
175
|
"postcss-nesting": "^13.0.2",
|
|
176
176
|
"postcss-percentage": "^0.0.0",
|
|
177
|
-
"postcss-preset-env": "^10.
|
|
177
|
+
"postcss-preset-env": "^10.5.0",
|
|
178
178
|
"postcss-simple-vars": "^7.0.1",
|
|
179
179
|
"postcss-svgo": "7.1.0",
|
|
180
180
|
"postcss-url": "10.1.3",
|
|
181
181
|
"process": "^0.11.10",
|
|
182
182
|
"randombytes": "^2.1.0",
|
|
183
|
-
"react": "^19.2.
|
|
184
|
-
"react-dom": "^19.2.
|
|
183
|
+
"react": "^19.2.1",
|
|
184
|
+
"react-dom": "^19.2.1",
|
|
185
185
|
"regenerator-runtime": "^0.14.1",
|
|
186
186
|
"resolve": "^1.22.11",
|
|
187
187
|
"rimraf": "^6.1.2",
|
|
188
188
|
"semver": "^7.7.3",
|
|
189
189
|
"source-map-loader": "^5.0.0",
|
|
190
190
|
"speed-measure-webpack-plugin": "^1.5.0",
|
|
191
|
-
"static-site-generator-webpack-plugin": "3.
|
|
192
|
-
"storybook": "^10.1.
|
|
191
|
+
"static-site-generator-webpack-plugin": "3.4.2",
|
|
192
|
+
"storybook": "^10.1.4",
|
|
193
193
|
"stream-browserify": "^3.0.0",
|
|
194
194
|
"stream-http": "^3.2.0",
|
|
195
195
|
"style-loader": "^4.0.0",
|
|
@@ -223,7 +223,7 @@
|
|
|
223
223
|
"@types/ora": "^3.2.0",
|
|
224
224
|
"@types/react": "^19.2.7",
|
|
225
225
|
"@types/webpack": "^5.28.5",
|
|
226
|
-
"css-minimizer-webpack-plugin": "^7.0.
|
|
226
|
+
"css-minimizer-webpack-plugin": "^7.0.3"
|
|
227
227
|
},
|
|
228
228
|
"resolutions": {
|
|
229
229
|
"css-loader": "7.1.2"
|
package/postcss.config.js
CHANGED
|
@@ -7,19 +7,20 @@ import cssnano from 'cssnano';
|
|
|
7
7
|
import postcssBrowserReporter from 'postcss-browser-reporter';
|
|
8
8
|
import postcssCustomProperties from 'postcss-custom-properties';
|
|
9
9
|
import postcssFlexbugsFixes from 'postcss-flexbugs-fixes';
|
|
10
|
-
import postcssFor from 'postcss-for';
|
|
11
10
|
import postcssHash from 'postcss-hash';
|
|
12
11
|
import postcssImport from 'postcss-import';
|
|
13
12
|
import postcssNesting from 'postcss-nesting';
|
|
14
13
|
import tailwindcss from '@tailwindcss/postcss';
|
|
15
14
|
import tailwindNesting from '@tailwindcss/nesting';
|
|
16
|
-
import postcssPercentage from 'postcss-percentage';
|
|
17
15
|
import postcssPresetEnv from 'postcss-preset-env';
|
|
18
16
|
import postcssSimpleVars from 'postcss-simple-vars';
|
|
19
17
|
import postcssSvgo from 'postcss-svgo';
|
|
20
18
|
import postcssUrl from 'postcss-url';
|
|
21
19
|
import {default as webpack} from 'webpack';
|
|
22
20
|
|
|
21
|
+
import postcssFor from './lib/utils/postcss/postcss-for.js';
|
|
22
|
+
import postcssPercentage from './lib/utils/postcss/postcss-percentage.js';
|
|
23
|
+
|
|
23
24
|
const config = {
|
|
24
25
|
plugins: [
|
|
25
26
|
postcssImport({addDependencyTo: webpack}),
|
package/webpack.config.js
CHANGED
|
@@ -19,10 +19,8 @@ import {resolve as pathResolve} from 'path';
|
|
|
19
19
|
import postcssBrowserReporter from 'postcss-browser-reporter';
|
|
20
20
|
import postcssCustomProperties from 'postcss-custom-properties';
|
|
21
21
|
import postcssFlexbugsFixes from 'postcss-flexbugs-fixes';
|
|
22
|
-
import postcssFor from 'postcss-for';
|
|
23
22
|
import postcssImport from 'postcss-import';
|
|
24
23
|
import postcssNesting from 'postcss-nesting';
|
|
25
|
-
import postcssPercentage from 'postcss-percentage';
|
|
26
24
|
import postcssPresetEnv from 'postcss-preset-env';
|
|
27
25
|
import postcssUrl from 'postcss-url';
|
|
28
26
|
import SVGSpriteMapPlugin from 'svg-spritemap-webpack-plugin';
|
|
@@ -35,6 +33,8 @@ import {WebpackPluginServe} from 'webpack-plugin-serve';
|
|
|
35
33
|
|
|
36
34
|
import {relativeFilePath, relativeNodePath} from './lib/utils/file.js';
|
|
37
35
|
import {LexConfig} from './lib/LexConfig.js';
|
|
36
|
+
import postcssFor from './lib/utils/postcss/postcss-for.js';
|
|
37
|
+
import postcssPercentage from './lib/utils/postcss/postcss-percentage.js';
|
|
38
38
|
|
|
39
39
|
const {ProgressPlugin, ProvidePlugin} = webpack;
|
|
40
40
|
const isProduction = process.env.NODE_ENV === 'production';
|