@nlabs/lex 1.51.1 → 1.51.2

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.
@@ -0,0 +1,11 @@
1
+ interface PostcssForOptions {
2
+ nested?: boolean;
3
+ }
4
+ declare const postcssFor: {
5
+ (opts?: PostcssForOptions): {
6
+ postcssPlugin: string;
7
+ Once(root: any): void;
8
+ };
9
+ postcss: boolean;
10
+ };
11
+ export default postcssFor;
@@ -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.1",
3
+ "version": "1.51.2",
4
4
  "description": "Lex",
5
5
  "license": "MIT",
6
6
  "type": "module",
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';