@jesscss/plugin-less-compat 2.0.0-alpha.4 → 2.0.0-alpha.6
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/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/nodes/at-rule.d.ts +2 -6
- package/lib/nodes/at-rule.js +17 -68
- package/lib/nodes/at-rule.js.map +1 -1
- package/lib/nodes/attribute-selector.d.ts +2 -6
- package/lib/nodes/attribute-selector.js +14 -50
- package/lib/nodes/attribute-selector.js.map +1 -1
- package/lib/nodes/call.d.ts +2 -6
- package/lib/nodes/call.js +22 -78
- package/lib/nodes/call.js.map +1 -1
- package/lib/nodes/color.d.ts +1 -6
- package/lib/nodes/color.js +11 -45
- package/lib/nodes/color.js.map +1 -1
- package/lib/nodes/combinator.d.ts +1 -6
- package/lib/nodes/combinator.js +6 -33
- package/lib/nodes/combinator.js.map +1 -1
- package/lib/nodes/comment.d.ts +1 -6
- package/lib/nodes/comment.js +8 -40
- package/lib/nodes/comment.js.map +1 -1
- package/lib/nodes/condition.d.ts +2 -6
- package/lib/nodes/condition.js +16 -57
- package/lib/nodes/condition.js.map +1 -1
- package/lib/nodes/declaration.d.ts +2 -6
- package/lib/nodes/declaration.js +32 -75
- package/lib/nodes/declaration.js.map +1 -1
- package/lib/nodes/dimension.d.ts +1 -6
- package/lib/nodes/dimension.js +7 -45
- package/lib/nodes/dimension.js.map +1 -1
- package/lib/nodes/expression.d.ts +2 -6
- package/lib/nodes/expression.js +8 -36
- package/lib/nodes/expression.js.map +1 -1
- package/lib/nodes/extend.d.ts +1 -6
- package/lib/nodes/extend.js +15 -54
- package/lib/nodes/extend.js.map +1 -1
- package/lib/nodes/import.d.ts +2 -6
- package/lib/nodes/import.js +16 -57
- package/lib/nodes/import.js.map +1 -1
- package/lib/nodes/keyword.d.ts +1 -6
- package/lib/nodes/keyword.js +7 -35
- package/lib/nodes/keyword.js.map +1 -1
- package/lib/nodes/list.d.ts +2 -6
- package/lib/nodes/list.js +48 -137
- package/lib/nodes/list.js.map +1 -1
- package/lib/nodes/mixin.d.ts +2 -6
- package/lib/nodes/mixin.js +18 -58
- package/lib/nodes/mixin.js.map +1 -1
- package/lib/nodes/negative.d.ts +2 -6
- package/lib/nodes/negative.js +10 -39
- package/lib/nodes/negative.js.map +1 -1
- package/lib/nodes/operation.d.ts +2 -6
- package/lib/nodes/operation.js +16 -57
- package/lib/nodes/operation.js.map +1 -1
- package/lib/nodes/paren.d.ts +2 -6
- package/lib/nodes/paren.js +10 -39
- package/lib/nodes/paren.js.map +1 -1
- package/lib/nodes/quoted.d.ts +1 -6
- package/lib/nodes/quoted.js +12 -46
- package/lib/nodes/quoted.js.map +1 -1
- package/lib/nodes/reference.d.ts +1 -9
- package/lib/nodes/reference.js +33 -69
- package/lib/nodes/reference.js.map +1 -1
- package/lib/nodes/ruleset.d.ts +2 -6
- package/lib/nodes/ruleset.js +48 -89
- package/lib/nodes/ruleset.js.map +1 -1
- package/lib/nodes/selector.d.ts +2 -7
- package/lib/nodes/selector.js +112 -180
- package/lib/nodes/selector.js.map +1 -1
- package/lib/nodes/sequence.d.ts +2 -9
- package/lib/nodes/sequence.js +44 -63
- package/lib/nodes/sequence.js.map +1 -1
- package/lib/nodes/url.d.ts +1 -6
- package/lib/nodes/url.js +10 -39
- package/lib/nodes/url.js.map +1 -1
- package/lib/nodes/var-declaration.d.ts +2 -6
- package/lib/nodes/var-declaration.js +17 -56
- package/lib/nodes/var-declaration.js.map +1 -1
- package/lib/plugin.js +2 -3
- package/lib/plugin.js.map +1 -1
- package/lib/transform/adapter.d.ts +33 -0
- package/lib/transform/adapter.js +111 -0
- package/lib/transform/adapter.js.map +1 -0
- package/lib/transform/proxy.d.ts +2 -2
- package/lib/transform/to-less.js +14 -12
- package/lib/transform/to-less.js.map +1 -1
- package/package.json +16 -12
package/lib/nodes/selector.js
CHANGED
|
@@ -1,226 +1,158 @@
|
|
|
1
|
-
import { ComplexSelector, CompoundSelector, BasicSelector, SelectorList, Combinator } from '@jesscss/core';
|
|
1
|
+
import { ComplexSelector, CompoundSelector, BasicSelector, SelectorList, Combinator, Ampersand, Node } from '@jesscss/core';
|
|
2
2
|
import { createLessProxy } from '../transform/proxy.js';
|
|
3
3
|
import { toLessNode } from '../transform/to-less.js';
|
|
4
|
+
import { createFromAdapter } from '../transform/adapter.js';
|
|
4
5
|
/**
|
|
5
|
-
* Flatten a hierarchical Jess selector into Less's flat Element array
|
|
6
|
-
*
|
|
6
|
+
* Flatten a hierarchical Jess selector into Less's flat Element array.
|
|
7
7
|
* Less expects: Element[] where each Element has { combinator, value }
|
|
8
|
-
* Jess
|
|
8
|
+
* Jess now models complex selectors as an interleaved stream of selector
|
|
9
|
+
* components and explicit combinators. Less still expects flat Elements with
|
|
10
|
+
* the combinator attached to the following selector component.
|
|
9
11
|
*/
|
|
10
12
|
function flattenSelectorToElements(selector, cache) {
|
|
11
13
|
const elements = [];
|
|
12
14
|
if (selector instanceof SelectorList) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const first = selector.value[0];
|
|
17
|
-
if (first) {
|
|
18
|
-
return flattenSelectorToElements(first, cache);
|
|
19
|
-
}
|
|
15
|
+
const selectorListValue = selector.get('value');
|
|
16
|
+
if (selectorListValue.length > 0 && selectorListValue[0]) {
|
|
17
|
+
return flattenSelectorToElements(selectorListValue[0], cache);
|
|
20
18
|
}
|
|
21
19
|
return [];
|
|
22
20
|
}
|
|
23
21
|
if (selector instanceof ComplexSelector) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
for (let i = 0; i <
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (i > 0) {
|
|
31
|
-
// Combinator is between compounds
|
|
32
|
-
// Less's Element includes the combinator, so we need to find it
|
|
33
|
-
// For now, default to space combinator
|
|
34
|
-
combinator = new Combinator(' ');
|
|
22
|
+
const components = selector.get('value');
|
|
23
|
+
let nextCombinatorValue = '';
|
|
24
|
+
for (let i = 0; i < components.length; i++) {
|
|
25
|
+
const component = components[i];
|
|
26
|
+
if (!component) {
|
|
27
|
+
continue;
|
|
35
28
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
combinator = new Combinator(' ');
|
|
29
|
+
if (component instanceof Combinator) {
|
|
30
|
+
nextCombinatorValue = component.value;
|
|
31
|
+
continue;
|
|
40
32
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (!basic) {
|
|
33
|
+
if (component instanceof CompoundSelector) {
|
|
34
|
+
const compoundValue = component.get('value');
|
|
35
|
+
for (let j = 0; j < compoundValue.length; j++) {
|
|
36
|
+
const simple = compoundValue[j];
|
|
37
|
+
if (!simple) {
|
|
47
38
|
continue;
|
|
48
39
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
// Create Less Element structure
|
|
52
|
-
// Less Element: { combinator, value, isVariable }
|
|
53
|
-
const element = createLessProxy(basic, cache, (prop, target) => {
|
|
54
|
-
const basicSel = target;
|
|
55
|
-
if (prop === 'type') {
|
|
56
|
-
return 'Element';
|
|
57
|
-
}
|
|
58
|
-
if (prop === 'combinator') {
|
|
59
|
-
return toLessNode(elementCombinator, { cache });
|
|
60
|
-
}
|
|
61
|
-
if (prop === 'value') {
|
|
62
|
-
return basicSel.value;
|
|
63
|
-
}
|
|
64
|
-
if (prop === 'isVariable') {
|
|
65
|
-
return false; // BasicSelector is not a variable
|
|
66
|
-
}
|
|
67
|
-
if (prop === 'accept') {
|
|
68
|
-
return function (visitor) {
|
|
69
|
-
// Less Element's accept() ONLY traverses children (combinator and value)
|
|
70
|
-
// It does NOT call visitor.visit() on itself - that's already been done
|
|
71
|
-
// Less.js Element.accept() pattern: visitor.visit(this.combinator) and visitor.visit(this.value)
|
|
72
|
-
const lessCombinator = toLessNode(elementCombinator, { cache });
|
|
73
|
-
if (lessCombinator && visitor.visit) {
|
|
74
|
-
visitor.visit(lessCombinator);
|
|
75
|
-
}
|
|
76
|
-
// Visit value if it's an object/node
|
|
77
|
-
const value = basicSel.value;
|
|
78
|
-
if (value && typeof value === 'object') {
|
|
79
|
-
const lessValue = toLessNode(value, { cache });
|
|
80
|
-
if (lessValue && visitor.visit) {
|
|
81
|
-
visitor.visit(lessValue);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return basicSel;
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
return undefined;
|
|
88
|
-
});
|
|
89
|
-
elements.push(element);
|
|
40
|
+
const elementCombinator = createLessCombinator(j === 0 ? nextCombinatorValue : '');
|
|
41
|
+
elements.push(createElementProxy(simple, elementCombinator, cache));
|
|
90
42
|
}
|
|
91
43
|
}
|
|
92
|
-
else if (
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
if (prop === 'combinator') {
|
|
100
|
-
return toLessNode(combinator, { cache });
|
|
101
|
-
}
|
|
102
|
-
if (prop === 'value') {
|
|
103
|
-
return basicSel.value;
|
|
104
|
-
}
|
|
105
|
-
if (prop === 'isVariable') {
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
return undefined;
|
|
109
|
-
});
|
|
110
|
-
elements.push(element);
|
|
44
|
+
else if (component instanceof BasicSelector || component instanceof Ampersand) {
|
|
45
|
+
const elementCombinator = createLessCombinator(nextCombinatorValue);
|
|
46
|
+
elements.push(createElementProxy(component, elementCombinator, cache));
|
|
47
|
+
}
|
|
48
|
+
else if (component instanceof Node) {
|
|
49
|
+
const elementCombinator = createLessCombinator(nextCombinatorValue);
|
|
50
|
+
elements.push(createElementProxy(component, elementCombinator, cache));
|
|
111
51
|
}
|
|
52
|
+
nextCombinatorValue = '';
|
|
112
53
|
}
|
|
113
54
|
}
|
|
114
55
|
else if (selector instanceof CompoundSelector) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const basic = basicSelectors[i];
|
|
56
|
+
const compoundSelValue = selector.get('value');
|
|
57
|
+
for (let i = 0; i < compoundSelValue.length; i++) {
|
|
58
|
+
const basic = compoundSelValue[i];
|
|
119
59
|
if (!basic) {
|
|
120
60
|
continue;
|
|
121
61
|
}
|
|
122
|
-
const combinator =
|
|
123
|
-
|
|
124
|
-
const basicSel = target;
|
|
125
|
-
if (prop === 'type') {
|
|
126
|
-
return 'Element';
|
|
127
|
-
}
|
|
128
|
-
if (prop === 'combinator') {
|
|
129
|
-
return toLessNode(combinator, { cache });
|
|
130
|
-
}
|
|
131
|
-
if (prop === 'value') {
|
|
132
|
-
return basicSel.value;
|
|
133
|
-
}
|
|
134
|
-
if (prop === 'isVariable') {
|
|
135
|
-
return false;
|
|
136
|
-
}
|
|
137
|
-
return undefined;
|
|
138
|
-
});
|
|
139
|
-
elements.push(element);
|
|
62
|
+
const combinator = createLessCombinator(i === 0 ? '' : '');
|
|
63
|
+
elements.push(createElementProxy(basic, combinator, cache));
|
|
140
64
|
}
|
|
141
65
|
}
|
|
142
|
-
else if (selector instanceof BasicSelector) {
|
|
143
|
-
|
|
144
|
-
const element = createLessProxy(selector, cache, (prop, target) => {
|
|
145
|
-
const basicSel = target;
|
|
146
|
-
if (prop === 'type') {
|
|
147
|
-
return 'Element';
|
|
148
|
-
}
|
|
149
|
-
if (prop === 'combinator') {
|
|
150
|
-
// Empty combinator for first element - use space as default
|
|
151
|
-
return toLessNode(new Combinator(' '), { cache });
|
|
152
|
-
}
|
|
153
|
-
if (prop === 'value') {
|
|
154
|
-
return basicSel.value;
|
|
155
|
-
}
|
|
156
|
-
if (prop === 'isVariable') {
|
|
157
|
-
return false;
|
|
158
|
-
}
|
|
159
|
-
return undefined;
|
|
160
|
-
});
|
|
161
|
-
elements.push(element);
|
|
66
|
+
else if (selector instanceof BasicSelector || selector instanceof Ampersand) {
|
|
67
|
+
elements.push(createElementProxy(selector, createLessCombinator(''), cache));
|
|
162
68
|
}
|
|
163
69
|
return elements;
|
|
164
70
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
* Less Selector is an array of Element nodes
|
|
169
|
-
*/
|
|
170
|
-
export function transformSelectorToLess(jessSelector, cache) {
|
|
171
|
-
// Less Selector is an array of Elements
|
|
172
|
-
const elements = flattenSelectorToElements(jessSelector, cache);
|
|
173
|
-
// Create a proxy that represents a Less Selector (array of Elements)
|
|
174
|
-
return createLessProxy(jessSelector, cache, (prop, _target) => {
|
|
175
|
-
// Map 'type' property
|
|
71
|
+
function createLessCombinator(value) {
|
|
72
|
+
const base = new Combinator(' ');
|
|
73
|
+
return createLessProxy(base, undefined, (prop) => {
|
|
176
74
|
if (prop === 'type') {
|
|
177
|
-
return '
|
|
75
|
+
return 'Combinator';
|
|
178
76
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
return undefined;
|
|
77
|
+
if (prop === 'value') {
|
|
78
|
+
return value;
|
|
182
79
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
return elements;
|
|
80
|
+
if (prop === 'emptyOrWhitespace') {
|
|
81
|
+
return value === '' || value === ' ';
|
|
186
82
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
83
|
+
return undefined;
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function createElementProxy(basic, combinator, cache) {
|
|
87
|
+
// Create without sharing cache (avoids collision with any Selector proxy
|
|
88
|
+
// already cached for this BasicSelector). Then store the Element proxy in
|
|
89
|
+
// the shared cache so toLessNode returns it when the Jess walker visits
|
|
90
|
+
// this BasicSelector — matching the original code's caching behavior.
|
|
91
|
+
const proxy = createLessProxy(basic, undefined, (prop, target) => {
|
|
92
|
+
const basicSel = target;
|
|
93
|
+
if (prop === 'type') {
|
|
94
|
+
return 'Element';
|
|
95
|
+
}
|
|
96
|
+
if (prop === 'combinator') {
|
|
97
|
+
return combinator;
|
|
191
98
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
99
|
+
if (prop === 'value') {
|
|
100
|
+
return basicSel.value;
|
|
101
|
+
}
|
|
102
|
+
if (prop === 'isVariable') {
|
|
103
|
+
return false;
|
|
195
104
|
}
|
|
196
|
-
// Map 'accept' method for visitor traversal
|
|
197
105
|
if (prop === 'accept') {
|
|
198
106
|
return function (visitor) {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
else if (element) {
|
|
208
|
-
// Element is not a proxy - this shouldn't happen, but convert it just in case
|
|
209
|
-
// This prevents infinite loops if somehow a Jess node got through
|
|
210
|
-
const lessElement = toLessNode(element, { cache });
|
|
211
|
-
if (lessElement && lessElement.accept) {
|
|
212
|
-
lessElement.accept(visitor);
|
|
213
|
-
}
|
|
214
|
-
else if (lessElement && visitor.visitArray) {
|
|
215
|
-
// Fallback: use visitArray if accept doesn't exist
|
|
216
|
-
visitor.visitArray([lessElement]);
|
|
217
|
-
}
|
|
107
|
+
if (combinator && visitor.visit) {
|
|
108
|
+
visitor.visit(combinator);
|
|
109
|
+
}
|
|
110
|
+
const value = basicSel.value;
|
|
111
|
+
if (value && typeof value === 'object') {
|
|
112
|
+
const lessValue = toLessNode(value, { cache });
|
|
113
|
+
if (lessValue && visitor.visit) {
|
|
114
|
+
visitor.visit(lessValue);
|
|
218
115
|
}
|
|
219
116
|
}
|
|
220
|
-
return
|
|
117
|
+
return basicSel;
|
|
221
118
|
};
|
|
222
119
|
}
|
|
223
120
|
return undefined;
|
|
224
121
|
});
|
|
122
|
+
if (cache) {
|
|
123
|
+
cache.set(basic, proxy);
|
|
124
|
+
}
|
|
125
|
+
return proxy;
|
|
225
126
|
}
|
|
127
|
+
export const transformSelectorToLess = createFromAdapter({
|
|
128
|
+
lessType: 'Selector',
|
|
129
|
+
fields: {
|
|
130
|
+
elements: (sel, cache) => flattenSelectorToElements(sel, cache),
|
|
131
|
+
length: (sel, cache) => flattenSelectorToElements(sel, cache).length
|
|
132
|
+
},
|
|
133
|
+
dynamicField: (prop, sel, cache) => {
|
|
134
|
+
if (typeof prop === 'string' && /^\d+$/.test(prop)) {
|
|
135
|
+
return flattenSelectorToElements(sel, cache)[parseInt(prop, 10)];
|
|
136
|
+
}
|
|
137
|
+
return undefined;
|
|
138
|
+
},
|
|
139
|
+
accept: (sel, visitor, cache) => {
|
|
140
|
+
const elements = flattenSelectorToElements(sel, cache);
|
|
141
|
+
for (const element of elements) {
|
|
142
|
+
if (element?.accept) {
|
|
143
|
+
element.accept(visitor);
|
|
144
|
+
}
|
|
145
|
+
else if (element) {
|
|
146
|
+
const lessElement = toLessNode(element, { cache });
|
|
147
|
+
if (lessElement?.accept) {
|
|
148
|
+
lessElement.accept(visitor);
|
|
149
|
+
}
|
|
150
|
+
else if (lessElement && visitor.visitArray) {
|
|
151
|
+
visitor.visitArray([lessElement]);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return sel;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
226
158
|
//# sourceMappingURL=selector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selector.js","sourceRoot":"","sources":["../../src/nodes/selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,UAAU,
|
|
1
|
+
{"version":3,"file":"selector.js","sourceRoot":"","sources":["../../src/nodes/selector.ts"],"names":[],"mappings":"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"}
|
package/lib/nodes/sequence.d.ts
CHANGED
|
@@ -1,9 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Transform a Jess Sequence (space-separated value list) to a Less-compatible Expression.
|
|
5
|
-
*
|
|
6
|
-
* This is critical for Less plugins that traverse into declaration values (e.g. preEval visitors
|
|
7
|
-
* that rewrite variables inside custom properties).
|
|
8
|
-
*/
|
|
9
|
-
export declare function transformSequenceToLess(jessSequence: Sequence, cache?: WeakMap<any, any>): LessNode;
|
|
1
|
+
import { Node } from '@jesscss/core';
|
|
2
|
+
export declare const transformSequenceToLess: (jessNode: Node, cache?: WeakMap<any, any>) => import("../types.js").LessNode;
|
package/lib/nodes/sequence.js
CHANGED
|
@@ -1,75 +1,56 @@
|
|
|
1
1
|
import { Node } from '@jesscss/core';
|
|
2
|
-
import {
|
|
2
|
+
import { createFromAdapter } from '../transform/adapter.js';
|
|
3
3
|
import { toLessNode } from '../transform/to-less.js';
|
|
4
4
|
import { fromLessNode } from '../transform/from-less.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return createLessProxy(jessSequence, cache, (prop, target) => {
|
|
14
|
-
const seq = target;
|
|
15
|
-
if (prop === 'type') {
|
|
16
|
-
return mapJessTypeToLessType(seq.type);
|
|
17
|
-
}
|
|
18
|
-
// Less Expression nodes expose their members via `.value` as an array.
|
|
19
|
-
if (prop === 'value') {
|
|
20
|
-
return (seq.value ?? [])
|
|
21
|
-
.map((item) => item instanceof Node ? toLessNode(item, { cache }) : item)
|
|
22
|
-
.filter((item) => item !== undefined && item !== null);
|
|
23
|
-
}
|
|
24
|
-
// Allow array-like access patterns some Less visitors use.
|
|
25
|
-
if (prop === 'length') {
|
|
26
|
-
return (seq.value ?? []).filter((v) => v !== undefined && v !== null).length;
|
|
27
|
-
}
|
|
5
|
+
export const transformSequenceToLess = createFromAdapter({
|
|
6
|
+
fields: {
|
|
7
|
+
value: (seq, cache) => (seq.get('value') ?? [])
|
|
8
|
+
.map((item) => item instanceof Node ? toLessNode(item, { cache }) : item)
|
|
9
|
+
.filter((item) => item != null),
|
|
10
|
+
length: seq => (seq.get('value') ?? []).filter((v) => v != null).length
|
|
11
|
+
},
|
|
12
|
+
dynamicField: (prop, seq, cache) => {
|
|
28
13
|
if (typeof prop === 'string' && /^\d+$/.test(prop)) {
|
|
29
14
|
const idx = Number(prop);
|
|
30
|
-
const arr = (seq.value ?? []).filter((v) => v
|
|
15
|
+
const arr = (seq.get('value') ?? []).filter((v) => v != null);
|
|
31
16
|
const item = arr[idx];
|
|
32
17
|
return item instanceof Node ? toLessNode(item, { cache }) : item;
|
|
33
18
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (item instanceof Node) {
|
|
58
|
-
jessReplacement.pre = item.pre;
|
|
59
|
-
jessReplacement.post = item.post;
|
|
60
|
-
}
|
|
61
|
-
seq.adopt(jessReplacement);
|
|
62
|
-
seq.value[i] = jessReplacement;
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
// If we can't convert it back, ignore (visitor may be creating unsupported nodes)
|
|
66
|
-
}
|
|
19
|
+
return undefined;
|
|
20
|
+
},
|
|
21
|
+
accept: (seq, visitor, cache) => {
|
|
22
|
+
const raw = seq.get('value') ?? [];
|
|
23
|
+
if (!Array.isArray(raw) || raw.length === 0) {
|
|
24
|
+
return seq;
|
|
25
|
+
}
|
|
26
|
+
for (let i = 0; i < raw.length; i++) {
|
|
27
|
+
const item = raw[i];
|
|
28
|
+
if (item == null) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const lessItem = item instanceof Node ? toLessNode(item, { cache }) : item;
|
|
32
|
+
if (!lessItem || typeof visitor?.visit !== 'function') {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const visited = visitor.visit(lessItem);
|
|
36
|
+
if (visited && visited !== lessItem && typeof visited === 'object' && visited.type) {
|
|
37
|
+
try {
|
|
38
|
+
const jessReplacement = fromLessNode(visited, { cache: new WeakMap() });
|
|
39
|
+
if (item instanceof Node) {
|
|
40
|
+
jessReplacement.pre = item.pre;
|
|
41
|
+
jessReplacement.post = item.post;
|
|
67
42
|
}
|
|
43
|
+
seq.adopt(jessReplacement);
|
|
44
|
+
const seqArr = seq.get('value');
|
|
45
|
+
seqArr[i] = jessReplacement;
|
|
46
|
+
seq.setData('value', seqArr);
|
|
68
47
|
}
|
|
69
|
-
|
|
70
|
-
|
|
48
|
+
catch {
|
|
49
|
+
// If we can't convert it back, ignore
|
|
50
|
+
}
|
|
51
|
+
}
|
|
71
52
|
}
|
|
72
|
-
return
|
|
73
|
-
}
|
|
74
|
-
}
|
|
53
|
+
return seq;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
75
56
|
//# sourceMappingURL=sequence.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequence.js","sourceRoot":"","sources":["../../src/nodes/sequence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,IAAI,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sequence.js","sourceRoot":"","sources":["../../src/nodes/sequence.ts"],"names":[],"mappings":"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"}
|
package/lib/nodes/url.d.ts
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import type { LessNode } from '../types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Transform a Jess Url to a Less-compatible URL
|
|
5
|
-
*/
|
|
6
|
-
export declare function transformUrlToLess(jessUrl: Url, cache?: WeakMap<any, any>): LessNode;
|
|
1
|
+
export declare const transformUrlToLess: (jessNode: import("@jesscss/core").Node, cache?: WeakMap<any, any>) => import("../types.js").LessNode;
|
package/lib/nodes/url.js
CHANGED
|
@@ -1,42 +1,13 @@
|
|
|
1
1
|
import { Quoted } from '@jesscss/core';
|
|
2
|
-
import {
|
|
2
|
+
import { createFromAdapter, selfVisitAccept } from '../transform/adapter.js';
|
|
3
3
|
import { toLessNode } from '../transform/to-less.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (prop === 'type') {
|
|
14
|
-
return mapJessTypeToLessType(url.type);
|
|
15
|
-
}
|
|
16
|
-
// Map 'typeIndex'
|
|
17
|
-
if (prop === 'typeIndex') {
|
|
18
|
-
return undefined;
|
|
19
|
-
}
|
|
20
|
-
// Map 'value' property
|
|
21
|
-
if (prop === 'value') {
|
|
22
|
-
const value = url.value;
|
|
23
|
-
if (value instanceof Quoted) {
|
|
24
|
-
return toLessNode(value, { cache });
|
|
25
|
-
}
|
|
26
|
-
return value;
|
|
27
|
-
}
|
|
28
|
-
// Map 'accept' method for visitor traversal
|
|
29
|
-
if (prop === 'accept') {
|
|
30
|
-
return function (visitor) {
|
|
31
|
-
const lessUrl = transformUrlToLess(url, cache);
|
|
32
|
-
const result = visitor.visit(lessUrl);
|
|
33
|
-
if (result !== lessUrl) {
|
|
34
|
-
return fromLessNode(result, { cache });
|
|
35
|
-
}
|
|
36
|
-
return url;
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
return undefined;
|
|
40
|
-
});
|
|
41
|
-
}
|
|
4
|
+
export const transformUrlToLess = createFromAdapter({
|
|
5
|
+
fields: {
|
|
6
|
+
value: (u, cache) => {
|
|
7
|
+
const value = u.get('value');
|
|
8
|
+
return value instanceof Quoted ? toLessNode(value, { cache }) : value;
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
accept: selfVisitAccept()
|
|
12
|
+
});
|
|
42
13
|
//# sourceMappingURL=url.js.map
|
package/lib/nodes/url.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/nodes/url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/nodes/url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAM;IACvD,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAClB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7B,OAAO,KAAK,YAAY,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACxE,CAAC;KACF;IACD,MAAM,EAAE,eAAe,EAAE;CAC1B,CAAC,CAAC"}
|
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Transform a Jess VarDeclaration to a Less-compatible Assignment
|
|
5
|
-
*/
|
|
6
|
-
export declare function transformVarDeclarationToLess(jessVarDecl: VarDeclaration, cache?: WeakMap<any, any>): LessNode;
|
|
1
|
+
import { Node } from '@jesscss/core';
|
|
2
|
+
export declare const transformVarDeclarationToLess: (jessNode: Node, cache?: WeakMap<any, any>) => import("../types.js").LessNode;
|