@jesscss/plugin-less-compat 2.0.0-alpha.5 → 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.
Files changed (87) hide show
  1. package/lib/index.d.ts +1 -0
  2. package/lib/index.js +1 -0
  3. package/lib/index.js.map +1 -1
  4. package/lib/nodes/at-rule.d.ts +2 -6
  5. package/lib/nodes/at-rule.js +17 -68
  6. package/lib/nodes/at-rule.js.map +1 -1
  7. package/lib/nodes/attribute-selector.d.ts +2 -6
  8. package/lib/nodes/attribute-selector.js +14 -50
  9. package/lib/nodes/attribute-selector.js.map +1 -1
  10. package/lib/nodes/call.d.ts +2 -6
  11. package/lib/nodes/call.js +22 -78
  12. package/lib/nodes/call.js.map +1 -1
  13. package/lib/nodes/color.d.ts +1 -6
  14. package/lib/nodes/color.js +11 -45
  15. package/lib/nodes/color.js.map +1 -1
  16. package/lib/nodes/combinator.d.ts +1 -6
  17. package/lib/nodes/combinator.js +6 -33
  18. package/lib/nodes/combinator.js.map +1 -1
  19. package/lib/nodes/comment.d.ts +1 -6
  20. package/lib/nodes/comment.js +8 -40
  21. package/lib/nodes/comment.js.map +1 -1
  22. package/lib/nodes/condition.d.ts +2 -6
  23. package/lib/nodes/condition.js +16 -57
  24. package/lib/nodes/condition.js.map +1 -1
  25. package/lib/nodes/declaration.d.ts +2 -6
  26. package/lib/nodes/declaration.js +32 -75
  27. package/lib/nodes/declaration.js.map +1 -1
  28. package/lib/nodes/dimension.d.ts +1 -6
  29. package/lib/nodes/dimension.js +7 -45
  30. package/lib/nodes/dimension.js.map +1 -1
  31. package/lib/nodes/expression.d.ts +2 -6
  32. package/lib/nodes/expression.js +8 -36
  33. package/lib/nodes/expression.js.map +1 -1
  34. package/lib/nodes/extend.d.ts +1 -6
  35. package/lib/nodes/extend.js +15 -54
  36. package/lib/nodes/extend.js.map +1 -1
  37. package/lib/nodes/import.d.ts +2 -6
  38. package/lib/nodes/import.js +16 -57
  39. package/lib/nodes/import.js.map +1 -1
  40. package/lib/nodes/keyword.d.ts +1 -6
  41. package/lib/nodes/keyword.js +7 -35
  42. package/lib/nodes/keyword.js.map +1 -1
  43. package/lib/nodes/list.d.ts +2 -6
  44. package/lib/nodes/list.js +48 -137
  45. package/lib/nodes/list.js.map +1 -1
  46. package/lib/nodes/mixin.d.ts +2 -6
  47. package/lib/nodes/mixin.js +18 -58
  48. package/lib/nodes/mixin.js.map +1 -1
  49. package/lib/nodes/negative.d.ts +2 -6
  50. package/lib/nodes/negative.js +10 -39
  51. package/lib/nodes/negative.js.map +1 -1
  52. package/lib/nodes/operation.d.ts +2 -6
  53. package/lib/nodes/operation.js +16 -57
  54. package/lib/nodes/operation.js.map +1 -1
  55. package/lib/nodes/paren.d.ts +2 -6
  56. package/lib/nodes/paren.js +10 -39
  57. package/lib/nodes/paren.js.map +1 -1
  58. package/lib/nodes/quoted.d.ts +1 -6
  59. package/lib/nodes/quoted.js +12 -46
  60. package/lib/nodes/quoted.js.map +1 -1
  61. package/lib/nodes/reference.d.ts +1 -9
  62. package/lib/nodes/reference.js +33 -69
  63. package/lib/nodes/reference.js.map +1 -1
  64. package/lib/nodes/ruleset.d.ts +2 -6
  65. package/lib/nodes/ruleset.js +48 -89
  66. package/lib/nodes/ruleset.js.map +1 -1
  67. package/lib/nodes/selector.d.ts +2 -7
  68. package/lib/nodes/selector.js +112 -180
  69. package/lib/nodes/selector.js.map +1 -1
  70. package/lib/nodes/sequence.d.ts +2 -9
  71. package/lib/nodes/sequence.js +44 -63
  72. package/lib/nodes/sequence.js.map +1 -1
  73. package/lib/nodes/url.d.ts +1 -6
  74. package/lib/nodes/url.js +10 -39
  75. package/lib/nodes/url.js.map +1 -1
  76. package/lib/nodes/var-declaration.d.ts +2 -6
  77. package/lib/nodes/var-declaration.js +17 -56
  78. package/lib/nodes/var-declaration.js.map +1 -1
  79. package/lib/plugin.js +2 -3
  80. package/lib/plugin.js.map +1 -1
  81. package/lib/transform/adapter.d.ts +33 -0
  82. package/lib/transform/adapter.js +111 -0
  83. package/lib/transform/adapter.js.map +1 -0
  84. package/lib/transform/proxy.d.ts +2 -2
  85. package/lib/transform/to-less.js +14 -12
  86. package/lib/transform/to-less.js.map +1 -1
  87. package/package.json +16 -12
@@ -1,36 +1,8 @@
1
- import { createLessProxy } from '../transform/proxy.js';
2
- import { mapJessTypeToLessType } from '../transform/type-map.js';
3
- import { fromLessNode } from '../transform/from-less.js';
4
- /**
5
- * Transform a Jess Keyword to a Less-compatible Keyword
6
- */
7
- export function transformKeywordToLess(jessKeyword, cache) {
8
- return createLessProxy(jessKeyword, cache, (prop, target) => {
9
- const keyword = target;
10
- // Map 'type' property
11
- if (prop === 'type') {
12
- return mapJessTypeToLessType(keyword.type);
13
- }
14
- // Map 'typeIndex'
15
- if (prop === 'typeIndex') {
16
- return undefined;
17
- }
18
- // Map 'value' property
19
- if (prop === 'value') {
20
- return keyword.value;
21
- }
22
- // Map 'accept' method for visitor traversal
23
- if (prop === 'accept') {
24
- return function (visitor) {
25
- const lessKeyword = transformKeywordToLess(keyword, cache);
26
- const result = visitor.visit(lessKeyword);
27
- if (result !== lessKeyword) {
28
- return fromLessNode(result, { cache });
29
- }
30
- return keyword;
31
- };
32
- }
33
- return undefined;
34
- });
35
- }
1
+ import { createFromAdapter, selfVisitAccept } from '../transform/adapter.js';
2
+ export const transformKeywordToLess = createFromAdapter({
3
+ fields: {
4
+ value: k => k.value
5
+ },
6
+ accept: selfVisitAccept()
7
+ });
36
8
  //# sourceMappingURL=keyword.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyword.js","sourceRoot":"","sources":["../../src/nodes/keyword.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAoB,EACpB,KAAyB;IAEzB,OAAO,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,MAAiB,CAAC;QAElC,sBAAsB;QACtB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC,KAAK,CAAC;QACvB,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,UAAS,OAAY;gBAC1B,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC1C,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;oBAC3B,OAAO,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"keyword.js","sourceRoot":"","sources":["../../src/nodes/keyword.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAU;IAC/D,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;KACpB;IACD,MAAM,EAAE,eAAe,EAAE;CAC1B,CAAC,CAAC"}
@@ -1,6 +1,2 @@
1
- import { List } from '@jesscss/core';
2
- import type { LessNode } from '../types.js';
3
- /**
4
- * Transform a Jess List to a Less-compatible Value
5
- */
6
- export declare function transformListToLess(jessList: List, cache?: WeakMap<any, any>): LessNode;
1
+ import { Node } from '@jesscss/core';
2
+ export declare const transformListToLess: (jessNode: Node, cache?: WeakMap<any, any>) => import("../types.js").LessNode;
package/lib/nodes/list.js CHANGED
@@ -1,150 +1,61 @@
1
1
  import { Node } from '@jesscss/core';
2
- import { createLessProxy } from '../transform/proxy.js';
2
+ import { createFromAdapter } from '../transform/adapter.js';
3
3
  import { toLessNode } from '../transform/to-less.js';
4
- import { mapJessTypeToLessType } from '../transform/type-map.js';
5
- /**
6
- * Transform a Jess List to a Less-compatible Value
7
- */
8
- export function transformListToLess(jessList, cache) {
9
- return createLessProxy(jessList, cache, (prop, target) => {
10
- const list = target;
11
- // Map 'type' property
12
- if (prop === 'type') {
13
- return mapJessTypeToLessType(list.type);
14
- }
15
- // Map 'typeIndex'
16
- if (prop === 'typeIndex') {
17
- return undefined;
18
- }
19
- // Get filtered, converted value array (used by multiple properties)
20
- const getFilteredValue = () => {
21
- const value = list.value;
22
- if (Array.isArray(value)) {
23
- return value
24
- .map((item) => {
25
- if (!item) {
26
- return null; // Mark null/undefined for filtering
27
- }
28
- if (item instanceof Node) {
29
- const lessItem = toLessNode(item, { cache });
30
- // If toLessNode returns undefined, skip it
31
- return lessItem || null;
32
- }
33
- return item;
34
- })
35
- .filter((item) => item !== undefined && item !== null); // Filter out undefined/null
4
+ function getFilteredValue(list, cache) {
5
+ const data = list.get('value');
6
+ if (Array.isArray(data)) {
7
+ return data
8
+ .map((item) => {
9
+ if (!item) {
10
+ return null;
36
11
  }
37
- // Single value - wrap in array (if not undefined/null)
38
- if (value !== undefined && value !== null) {
39
- if (value && typeof value === 'object' && 'type' in value) {
40
- // Check if it's a Node-like object
41
- const lessValue = toLessNode(value, { cache });
42
- return lessValue ? [lessValue] : [];
43
- }
44
- return [value];
12
+ if (item instanceof Node) {
13
+ return toLessNode(item, { cache }) || null;
45
14
  }
46
- return [];
47
- };
48
- // Map 'value' property (Less Value expects array)
49
- if (prop === 'value') {
50
- return getFilteredValue();
51
- }
52
- // Intercept 'length' property to return filtered array length
53
- // Less visitor checks node.length to determine if it's array-like
54
- if (prop === 'length') {
55
- return getFilteredValue().length;
15
+ return item;
16
+ })
17
+ .filter((item) => item != null);
18
+ }
19
+ if (data != null) {
20
+ if (data && typeof data === 'object' && 'type' in data) {
21
+ const lessValue = toLessNode(data, { cache });
22
+ return lessValue ? [lessValue] : [];
56
23
  }
57
- // Intercept numeric indices (array access like node[0], node[1])
58
- // Less visitor may access node[i] directly when node.length exists
24
+ return [data];
25
+ }
26
+ return [];
27
+ }
28
+ export const transformListToLess = createFromAdapter({
29
+ fields: {
30
+ value: (l, cache) => getFilteredValue(l, cache),
31
+ length: (l, cache) => getFilteredValue(l, cache).length
32
+ },
33
+ dynamicField: (prop, l, cache) => {
59
34
  if (typeof prop === 'string' && /^\d+$/.test(prop)) {
60
- const filtered = getFilteredValue();
61
- const index = parseInt(prop, 10);
62
- return filtered[index];
35
+ return getFilteredValue(l, cache)[parseInt(prop, 10)];
63
36
  }
64
- // Map 'children' method to return filtered, converted items
65
- // This prevents undefined items from being accessed when Jess core's accept() calls children()
66
- // children() is a generator function that yields Node instances
67
- // CRITICAL: When Jess core's accept() calls children(), it uses getValues(this.value)
68
- // We need to ensure the value property returns clean items, and children() filters them
69
- if (prop === 'children') {
70
- return function* (deep, reverse, includePrePost) {
71
- // Use the filtered value from our value property getter
72
- // This ensures we get the same filtered array that the value property returns
73
- const filteredValue = list.value
74
- .filter((item) => item !== undefined && item !== null)
75
- .map((item) => {
76
- if (item instanceof Node) {
77
- const lessItem = toLessNode(item, { cache });
78
- return lessItem || null;
79
- }
80
- return item;
81
- })
82
- .filter((item) => item !== undefined && item !== null);
83
- // Handle reverse order if needed
84
- const itemsToIterate = reverse ? [...filteredValue].reverse() : filteredValue;
85
- for (const item of itemsToIterate) {
86
- if (item === undefined || item === null) {
87
- continue; // Skip undefined/null items (shouldn't happen after filtering, but be safe)
88
- }
89
- if (item instanceof Node || (item && typeof item === 'object' && 'type' in item)) {
90
- // It's a node (either Jess node or Less proxy)
91
- if (includePrePost) {
92
- // For now, just yield the item (pre/post handling can be added later if needed)
93
- yield item;
94
- }
95
- else {
96
- yield item;
97
- }
98
- if (deep && item instanceof Node) {
99
- // Recursively yield children if deep is true
100
- if (item.children) {
101
- yield* item.children(deep, reverse, includePrePost);
102
- }
103
- }
104
- }
105
- else {
106
- yield item;
107
- }
37
+ return undefined;
38
+ },
39
+ accept: (list, visitor, cache) => {
40
+ const value = list.get('value');
41
+ if (Array.isArray(value) && value.length > 0) {
42
+ const lessItems = value
43
+ .map((item) => item instanceof Node ? toLessNode(item, { cache }) : item)
44
+ .filter((item) => item != null);
45
+ if (lessItems.length > 0) {
46
+ if (visitor.visitArray) {
47
+ visitor.visitArray(lessItems);
108
48
  }
109
- };
110
- }
111
- // Map 'accept' method for visitor traversal
112
- if (prop === 'accept') {
113
- return function (visitor) {
114
- // Less List's accept() should traverse value items if they exist
115
- // But we don't call visitor.visit() here to avoid infinite loops
116
- // The visitor's visit() method will handle traversal
117
- // If value exists, we should traverse items using visitArray
118
- const value = list.value;
119
- if (Array.isArray(value) && value.length > 0) {
120
- const lessItems = value
121
- .map((item) => {
122
- if (item instanceof Node) {
123
- return toLessNode(item, { cache });
124
- }
125
- return item;
126
- })
127
- .filter((item) => item !== undefined && item !== null); // Filter out undefined/null
128
- if (lessItems.length > 0) {
129
- if (visitor.visitArray) {
130
- visitor.visitArray(lessItems);
131
- }
132
- else {
133
- // Fallback: call accept on each item if visitArray not available
134
- for (const lessItem of lessItems) {
135
- if (lessItem && lessItem.accept) {
136
- lessItem.accept(visitor);
137
- }
138
- }
49
+ else {
50
+ for (const li of lessItems) {
51
+ if (li?.accept) {
52
+ li.accept(visitor);
139
53
  }
140
54
  }
141
55
  }
142
- // Return the proxy, not the underlying node, to prevent Less visitor from accessing raw Jess node
143
- // Get the proxy from cache or create it
144
- return cache && cache.has(list) ? cache.get(list) : transformListToLess(list, cache);
145
- };
56
+ }
146
57
  }
147
- return undefined;
148
- });
149
- }
58
+ return cache?.has(list) ? cache.get(list) : list;
59
+ }
60
+ });
150
61
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/nodes/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,IAAI,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAc,EACd,KAAyB;IAEzB,OAAO,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,MAAc,CAAC;QAE5B,sBAAsB;QACtB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,oEAAoE;QACpE,MAAM,gBAAgB,GAAG,GAAG,EAAE;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,KAAK;qBACT,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;oBACjB,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,OAAO,IAAI,CAAC,CAAC,oCAAoC;oBACnD,CAAC;oBACD,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;wBACzB,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;wBAC7C,2CAA2C;wBAC3C,OAAO,QAAQ,IAAI,IAAI,CAAC;oBAC1B,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC;qBACD,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,4BAA4B;YAC7F,CAAC;YACD,uDAAuD;YACvD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;oBAC1D,mCAAmC;oBACnC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;oBACvD,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF,kDAAkD;QAClD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,gBAAgB,EAAE,CAAC;QAC5B,CAAC;QAED,8DAA8D;QAC9D,kEAAkE;QAClE,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,gBAAgB,EAAE,CAAC,MAAM,CAAC;QACnC,CAAC;QAED,iEAAiE;QACjE,mEAAmE;QACnE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAED,4DAA4D;QAC5D,+FAA+F;QAC/F,gEAAgE;QAChE,sFAAsF;QACtF,wFAAwF;QACxF,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,OAAO,QAAQ,CAAC,EAAE,IAAc,EAAE,OAAiB,EAAE,cAAwB;gBAC3E,wDAAwD;gBACxD,8EAA8E;gBAC9E,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK;qBAC7B,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC;qBAC1D,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;oBACjB,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;wBACzB,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;wBAC7C,OAAO,QAAQ,IAAI,IAAI,CAAC;oBAC1B,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC;qBACD,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC;gBAE9D,iCAAiC;gBACjC,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;gBAE9E,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;oBAClC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBACxC,SAAS,CAAC,4EAA4E;oBACxF,CAAC;oBACD,IAAI,IAAI,YAAY,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;wBACjF,+CAA+C;wBAC/C,IAAI,cAAc,EAAE,CAAC;4BACnB,gFAAgF;4BAChF,MAAM,IAAI,CAAC;wBACb,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,CAAC;wBACb,CAAC;wBACD,IAAI,IAAI,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;4BACjC,6CAA6C;4BAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gCAClB,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;4BACtD,CAAC;wBACH,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,CAAC;oBACb,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,UAAS,OAAY;gBAC1B,iEAAiE;gBACjE,iEAAiE;gBACjE,qDAAqD;gBACrD,6DAA6D;gBAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7C,MAAM,SAAS,GAAG,KAAK;yBACpB,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;wBACjB,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;4BACzB,OAAO,UAAU,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;wBACrC,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC;yBACD,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,4BAA4B;oBAC3F,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACzB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;4BACvB,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;wBAChC,CAAC;6BAAM,CAAC;4BACN,iEAAiE;4BACjE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gCACjC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;oCAChC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gCAC3B,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,kGAAkG;gBAClG,wCAAwC;gBACxC,OAAO,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvF,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/nodes/list.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,2 @@
1
- import { Mixin } from '@jesscss/core';
2
- import type { LessNode } from '../types.js';
3
- /**
4
- * Transform a Jess Mixin to a Less-compatible MixinDefinition
5
- */
6
- export declare function transformMixinToLess(jessMixin: Mixin, cache?: WeakMap<any, any>): LessNode;
1
+ import { Node } from '@jesscss/core';
2
+ export declare const transformMixinToLess: (jessNode: Node, cache?: WeakMap<any, any>) => import("../types.js").LessNode;
@@ -1,62 +1,22 @@
1
1
  import { Node } from '@jesscss/core';
2
- import { createLessProxy } from '../transform/proxy.js';
2
+ import { createFromAdapter, selfVisitAccept } from '../transform/adapter.js';
3
3
  import { toLessNode } from '../transform/to-less.js';
4
- import { mapJessTypeToLessType } from '../transform/type-map.js';
5
- import { fromLessNode } from '../transform/from-less.js';
6
- /**
7
- * Transform a Jess Mixin to a Less-compatible MixinDefinition
8
- */
9
- export function transformMixinToLess(jessMixin, cache) {
10
- return createLessProxy(jessMixin, cache, (prop, target) => {
11
- const mixin = target;
12
- // Map 'type' property
13
- if (prop === 'type') {
14
- return mapJessTypeToLessType(mixin.type);
4
+ export const transformMixinToLess = createFromAdapter({
5
+ fields: {
6
+ name: m => m.get('name'),
7
+ params: (m, cache) => {
8
+ const params = m.get('params');
9
+ return params instanceof Node ? toLessNode(params, { cache }) : params;
10
+ },
11
+ rules: (m, cache) => {
12
+ const rules = m.get('rules');
13
+ return rules?.value ? rules.value.map((r) => toLessNode(r, { cache })) : [];
14
+ },
15
+ condition: (m, cache) => {
16
+ const guard = m.get('guard');
17
+ return guard instanceof Node ? toLessNode(guard, { cache }) : guard;
15
18
  }
16
- // Map 'typeIndex'
17
- if (prop === 'typeIndex') {
18
- return undefined;
19
- }
20
- // Map 'name' property
21
- if (prop === 'name') {
22
- return mixin.value.name;
23
- }
24
- // Map 'params' property
25
- if (prop === 'params') {
26
- const params = mixin.value.params;
27
- if (params instanceof Node) {
28
- return toLessNode(params, { cache });
29
- }
30
- return params;
31
- }
32
- // Map 'rules' property
33
- if (prop === 'rules') {
34
- const rules = mixin.value.rules;
35
- if (rules && rules.value) {
36
- return rules.value.map((r) => toLessNode(r, { cache }));
37
- }
38
- return [];
39
- }
40
- // Map 'condition' property (from guard)
41
- if (prop === 'condition') {
42
- const guard = mixin.value.guard;
43
- if (guard instanceof Node) {
44
- return toLessNode(guard, { cache });
45
- }
46
- return guard;
47
- }
48
- // Map 'accept' method for visitor traversal
49
- if (prop === 'accept') {
50
- return function (visitor) {
51
- const lessMixin = transformMixinToLess(mixin, cache);
52
- const result = visitor.visit(lessMixin);
53
- if (result !== lessMixin) {
54
- return fromLessNode(result, { cache });
55
- }
56
- return mixin;
57
- };
58
- }
59
- return undefined;
60
- });
61
- }
19
+ },
20
+ accept: selfVisitAccept()
21
+ });
62
22
  //# sourceMappingURL=mixin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mixin.js","sourceRoot":"","sources":["../../src/nodes/mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,IAAI,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAgB,EAChB,KAAyB;IAEzB,OAAO,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QACxD,MAAM,KAAK,GAAG,MAAe,CAAC;QAE9B,sBAAsB;QACtB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QAC1B,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YAClC,IAAI,MAAM,YAAY,IAAI,EAAE,CAAC;gBAC3B,OAAO,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAChC,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAO,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,wCAAwC;QACxC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAChC,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;gBAC1B,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,UAAS,OAAY;gBAC1B,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACrD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,OAAO,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"mixin.js","sourceRoot":"","sources":["../../src/nodes/mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,IAAI,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,oBAAoB,GAAG,iBAAiB,CAAQ;IAC3D,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YACnB,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/B,OAAO,MAAM,YAAY,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACzE,CAAC;QACD,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAClB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7B,OAAO,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAO,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,CAAC;QACD,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YACtB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7B,OAAO,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACtE,CAAC;KACF;IACD,MAAM,EAAE,eAAe,EAAE;CAC1B,CAAC,CAAC"}
@@ -1,6 +1,2 @@
1
- import { Negative } from '@jesscss/core';
2
- import type { LessNode } from '../types.js';
3
- /**
4
- * Transform a Jess Negative to a Less-compatible Negative
5
- */
6
- export declare function transformNegativeToLess(jessNegative: Negative, cache?: WeakMap<any, any>): LessNode;
1
+ import { Node } from '@jesscss/core';
2
+ export declare const transformNegativeToLess: (jessNode: Node, cache?: WeakMap<any, any>) => import("../types.js").LessNode;
@@ -1,42 +1,13 @@
1
1
  import { Node } from '@jesscss/core';
2
- import { createLessProxy } from '../transform/proxy.js';
2
+ import { createFromAdapter, selfVisitAccept } from '../transform/adapter.js';
3
3
  import { toLessNode } from '../transform/to-less.js';
4
- import { mapJessTypeToLessType } from '../transform/type-map.js';
5
- import { fromLessNode } from '../transform/from-less.js';
6
- /**
7
- * Transform a Jess Negative to a Less-compatible Negative
8
- */
9
- export function transformNegativeToLess(jessNegative, cache) {
10
- return createLessProxy(jessNegative, cache, (prop, target) => {
11
- const negative = target;
12
- // Map 'type' property
13
- if (prop === 'type') {
14
- return mapJessTypeToLessType(negative.type);
15
- }
16
- // Map 'typeIndex'
17
- if (prop === 'typeIndex') {
18
- return undefined;
19
- }
20
- // Map 'value' property
21
- if (prop === 'value') {
22
- const value = negative.value;
23
- if (value instanceof Node) {
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 lessNegative = transformNegativeToLess(negative, cache);
32
- const result = visitor.visit(lessNegative);
33
- if (result !== lessNegative) {
34
- return fromLessNode(result, { cache });
35
- }
36
- return negative;
37
- };
38
- }
39
- return undefined;
40
- });
41
- }
4
+ export const transformNegativeToLess = createFromAdapter({
5
+ fields: {
6
+ value: (n, cache) => {
7
+ const value = n.get('value');
8
+ return value instanceof Node ? toLessNode(value, { cache }) : value;
9
+ }
10
+ },
11
+ accept: selfVisitAccept()
12
+ });
42
13
  //# sourceMappingURL=negative.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"negative.js","sourceRoot":"","sources":["../../src/nodes/negative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,IAAI,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,YAAsB,EACtB,KAAyB;IAEzB,OAAO,eAAe,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAC3D,MAAM,QAAQ,GAAG,MAAkB,CAAC;QAEpC,sBAAsB;QACtB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC7B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;gBAC1B,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,UAAS,OAAY;gBAC1B,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC3C,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;oBAC5B,OAAO,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"negative.js","sourceRoot":"","sources":["../../src/nodes/negative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,IAAI,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAW;IACjE,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,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACtE,CAAC;KACF;IACD,MAAM,EAAE,eAAe,EAAE;CAC1B,CAAC,CAAC"}
@@ -1,6 +1,2 @@
1
- import { Operation } from '@jesscss/core';
2
- import type { LessNode } from '../types.js';
3
- /**
4
- * Transform a Jess Operation to a Less-compatible Operation
5
- */
6
- export declare function transformOperationToLess(jessOperation: Operation, cache?: WeakMap<any, any>): LessNode;
1
+ import { Node } from '@jesscss/core';
2
+ export declare const transformOperationToLess: (jessNode: Node, cache?: WeakMap<any, any>) => import("../types.js").LessNode;
@@ -1,63 +1,22 @@
1
1
  import { Node } from '@jesscss/core';
2
- import { createLessProxy } from '../transform/proxy.js';
2
+ import { createFromAdapter, selfVisitAccept } from '../transform/adapter.js';
3
3
  import { toLessNode } from '../transform/to-less.js';
4
- import { mapJessTypeToLessType } from '../transform/type-map.js';
5
- import { fromLessNode } from '../transform/from-less.js';
6
- /**
7
- * Transform a Jess Operation to a Less-compatible Operation
8
- */
9
- export function transformOperationToLess(jessOperation, cache) {
10
- return createLessProxy(jessOperation, cache, (prop, target) => {
11
- const op = target;
12
- // Map 'type' property
13
- if (prop === 'type') {
14
- return mapJessTypeToLessType(op.type);
15
- }
16
- // Map 'typeIndex'
17
- if (prop === 'typeIndex') {
18
- return undefined;
19
- }
20
- // Map 'op' property (operator)
21
- if (prop === 'op') {
22
- // Jess stores as [left, op, right], extract op
23
- const value = op.value;
24
- if (Array.isArray(value) && value.length >= 2) {
25
- return value[1]; // Operator is in the middle
4
+ export const transformOperationToLess = createFromAdapter({
5
+ fields: {
6
+ op: o => o.get('operator') || '',
7
+ operands: (o, cache) => {
8
+ const operands = [];
9
+ const left = o.get('left');
10
+ const right = o.get('right');
11
+ if (left instanceof Node) {
12
+ operands.push(left);
26
13
  }
27
- return '';
28
- }
29
- // Map 'operands' property
30
- if (prop === 'operands') {
31
- const value = op.value;
32
- if (Array.isArray(value)) {
33
- // Extract left and right operands, skip operator
34
- const operands = [];
35
- for (let i = 0; i < value.length; i++) {
36
- const item = value[i];
37
- if (item instanceof Node) {
38
- operands.push(item);
39
- }
40
- else if (typeof item === 'string' && i === 1) {
41
- // Skip operator
42
- continue;
43
- }
44
- }
45
- return operands.map(o => toLessNode(o, { cache }));
14
+ if (right instanceof Node) {
15
+ operands.push(right);
46
16
  }
47
- return [];
48
- }
49
- // Map 'accept' method for visitor traversal
50
- if (prop === 'accept') {
51
- return function (visitor) {
52
- const lessOp = transformOperationToLess(op, cache);
53
- const result = visitor.visit(lessOp);
54
- if (result !== lessOp) {
55
- return fromLessNode(result, { cache });
56
- }
57
- return op;
58
- };
17
+ return operands.map(n => toLessNode(n, { cache }));
59
18
  }
60
- return undefined;
61
- });
62
- }
19
+ },
20
+ accept: selfVisitAccept()
21
+ });
63
22
  //# sourceMappingURL=operation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"operation.js","sourceRoot":"","sources":["../../src/nodes/operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,aAAwB,EACxB,KAAyB;IAEzB,OAAO,eAAe,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAC5D,MAAM,EAAE,GAAG,MAAmB,CAAC;QAE/B,sBAAsB;QACtB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,qBAAqB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,+CAA+C;YAC/C,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;YAC/C,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,iDAAiD;gBACjD,MAAM,QAAQ,GAAW,EAAE,CAAC;gBAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACtB,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;wBACzB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACtB,CAAC;yBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC/C,gBAAgB;wBAChB,SAAS;oBACX,CAAC;gBACH,CAAC;gBACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,UAAS,OAAY;gBAC1B,MAAM,MAAM,GAAG,wBAAwB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACrC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBACtB,OAAO,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"operation.js","sourceRoot":"","sources":["../../src/nodes/operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAY;IACnE,MAAM,EAAE;QACN,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;QAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,QAAQ,GAAW,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;gBACzB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;YACD,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;KACF;IACD,MAAM,EAAE,eAAe,EAAE;CAC1B,CAAC,CAAC"}
@@ -1,6 +1,2 @@
1
- import { Paren } from '@jesscss/core';
2
- import type { LessNode } from '../types.js';
3
- /**
4
- * Transform a Jess Paren to a Less-compatible Paren
5
- */
6
- export declare function transformParenToLess(jessParen: Paren, cache?: WeakMap<any, any>): LessNode;
1
+ import { Node } from '@jesscss/core';
2
+ export declare const transformParenToLess: (jessNode: Node, cache?: WeakMap<any, any>) => import("../types.js").LessNode;
@@ -1,42 +1,13 @@
1
1
  import { Node } from '@jesscss/core';
2
- import { createLessProxy } from '../transform/proxy.js';
2
+ import { createFromAdapter, selfVisitAccept } from '../transform/adapter.js';
3
3
  import { toLessNode } from '../transform/to-less.js';
4
- import { mapJessTypeToLessType } from '../transform/type-map.js';
5
- import { fromLessNode } from '../transform/from-less.js';
6
- /**
7
- * Transform a Jess Paren to a Less-compatible Paren
8
- */
9
- export function transformParenToLess(jessParen, cache) {
10
- return createLessProxy(jessParen, cache, (prop, target) => {
11
- const paren = target;
12
- // Map 'type' property
13
- if (prop === 'type') {
14
- return mapJessTypeToLessType(paren.type);
15
- }
16
- // Map 'typeIndex'
17
- if (prop === 'typeIndex') {
18
- return undefined;
19
- }
20
- // Map 'value' property
21
- if (prop === 'value') {
22
- const value = paren.value;
23
- if (value instanceof Node) {
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 lessParen = transformParenToLess(paren, cache);
32
- const result = visitor.visit(lessParen);
33
- if (result !== lessParen) {
34
- return fromLessNode(result, { cache });
35
- }
36
- return paren;
37
- };
38
- }
39
- return undefined;
40
- });
41
- }
4
+ export const transformParenToLess = createFromAdapter({
5
+ fields: {
6
+ value: (p, cache) => {
7
+ const value = p.get('value');
8
+ return value instanceof Node ? toLessNode(value, { cache }) : value;
9
+ }
10
+ },
11
+ accept: selfVisitAccept()
12
+ });
42
13
  //# sourceMappingURL=paren.js.map