@master/css 2.0.0-rc.61 → 2.0.0-rc.63
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/dist/animation-rule.cjs +24 -0
- package/dist/animation-rule.d.ts +11 -0
- package/dist/animation-rule.mjs +22 -0
- package/dist/common.cjs +52 -1
- package/dist/common.d.ts +15 -0
- package/dist/common.mjs +46 -2
- package/dist/config/at.cjs +13 -10
- package/dist/config/at.d.ts +4 -1
- package/dist/config/at.mjs +13 -10
- package/dist/config/index.cjs +3 -0
- package/dist/config/index.d.ts +2 -1
- package/dist/config/index.mjs +3 -1
- package/dist/config/modes.d.ts +4 -2
- package/dist/config/rules.cjs +25 -13
- package/dist/config/rules.d.ts +4 -2
- package/dist/config/rules.mjs +25 -13
- package/dist/config/screens.cjs +17 -0
- package/dist/config/screens.d.ts +14 -0
- package/dist/config/screens.mjs +15 -0
- package/dist/config/selectors.cjs +11 -15
- package/dist/config/selectors.d.ts +10 -8
- package/dist/config/selectors.mjs +11 -15
- package/dist/config/utilities.cjs +3 -0
- package/dist/config/utilities.d.ts +3 -0
- package/dist/config/utilities.mjs +3 -0
- package/dist/config/variables.cjs +0 -13
- package/dist/config/variables.d.ts +0 -13
- package/dist/config/variables.mjs +0 -13
- package/dist/core.cjs +438 -476
- package/dist/core.d.ts +13 -4
- package/dist/core.mjs +438 -476
- package/dist/factories/with-syntax-layer.cjs +37 -260
- package/dist/factories/with-syntax-layer.mjs +37 -260
- package/dist/index.cjs +39 -12
- package/dist/index.d.ts +19 -7
- package/dist/index.mjs +17 -7
- package/dist/layer.cjs +11 -7
- package/dist/layer.d.ts +4 -3
- package/dist/layer.mjs +11 -7
- package/dist/non-layer.cjs +10 -17
- package/dist/non-layer.d.ts +1 -1
- package/dist/non-layer.mjs +10 -17
- package/dist/rule.cjs +4 -6
- package/dist/rule.d.ts +3 -10
- package/dist/rule.mjs +4 -6
- package/dist/syntax-rule-type.cjs +7 -8
- package/dist/syntax-rule-type.d.ts +7 -7
- package/dist/syntax-rule-type.mjs +7 -8
- package/dist/syntax-rule.cjs +116 -328
- package/dist/syntax-rule.d.ts +18 -25
- package/dist/syntax-rule.mjs +117 -329
- package/dist/types/common.d.ts +2 -0
- package/dist/types/config.d.ts +12 -7
- package/dist/types/syntax.d.ts +5 -24
- package/dist/utils/compare-rule-priority.cjs +143 -0
- package/dist/utils/compare-rule-priority.d.ts +7 -0
- package/dist/utils/compare-rule-priority.mjs +138 -0
- package/dist/utils/equal-at-rules.cjs +22 -0
- package/dist/utils/equal-at-rules.d.ts +2 -0
- package/dist/utils/equal-at-rules.mjs +20 -0
- package/dist/utils/equal-declarations.cjs +10 -0
- package/dist/utils/equal-declarations.d.ts +2 -0
- package/dist/utils/equal-declarations.mjs +8 -0
- package/dist/utils/equal-selectors.cjs +70 -0
- package/dist/utils/equal-selectors.d.ts +2 -0
- package/dist/utils/equal-selectors.mjs +68 -0
- package/dist/utils/equal-variants.cjs +10 -0
- package/dist/utils/equal-variants.d.ts +2 -0
- package/dist/utils/equal-variants.mjs +8 -0
- package/dist/utils/extend-config.cjs +0 -1
- package/dist/utils/extend-config.mjs +0 -1
- package/dist/utils/generate-at.cjs +30 -0
- package/dist/utils/generate-at.d.ts +2 -0
- package/dist/utils/generate-at.mjs +28 -0
- package/dist/utils/generate-selector.cjs +49 -0
- package/dist/utils/generate-selector.d.ts +2 -0
- package/dist/utils/generate-selector.mjs +47 -0
- package/dist/utils/get-single-at-number-rule-node.cjs +9 -0
- package/dist/utils/get-single-at-number-rule-node.d.ts +2 -0
- package/dist/utils/get-single-at-number-rule-node.mjs +7 -0
- package/dist/utils/parse-at.cjs +157 -0
- package/dist/utils/parse-at.d.ts +39 -0
- package/dist/utils/parse-at.mjs +155 -0
- package/dist/utils/parse-pair.cjs +51 -0
- package/dist/utils/parse-pair.d.ts +8 -0
- package/dist/utils/parse-pair.mjs +49 -0
- package/dist/utils/parse-selector.cjs +114 -0
- package/dist/utils/parse-selector.d.ts +19 -0
- package/dist/utils/parse-selector.mjs +112 -0
- package/dist/utils/parse-value.cjs +39 -0
- package/dist/utils/parse-value.d.ts +2 -0
- package/dist/utils/parse-value.mjs +37 -0
- package/dist/utils/replace-char-outside-quotes.cjs +21 -0
- package/dist/utils/replace-char-outside-quotes.d.ts +1 -0
- package/dist/utils/replace-char-outside-quotes.mjs +19 -0
- package/dist/utils/sort-readable-classes.cjs +86 -0
- package/dist/utils/{reorder-for-readable-classes.d.ts → sort-readable-classes.d.ts} +1 -1
- package/dist/utils/sort-readable-classes.mjs +84 -0
- package/dist/utils/split-char-outside-quotes.cjs +29 -0
- package/dist/utils/split-char-outside-quotes.d.ts +1 -0
- package/dist/utils/split-char-outside-quotes.mjs +27 -0
- package/dist/variable-rule.cjs +86 -0
- package/dist/variable-rule.d.ts +23 -0
- package/dist/variable-rule.mjs +81 -0
- package/package.json +1 -1
- package/dist/rule-node.cjs +0 -18
- package/dist/rule-node.d.ts +0 -14
- package/dist/rule-node.mjs +0 -16
- package/dist/utils/are-rule-at-equal.cjs +0 -12
- package/dist/utils/are-rule-at-equal.d.ts +0 -2
- package/dist/utils/are-rule-at-equal.mjs +0 -10
- package/dist/utils/are-rule-modes-equal.cjs +0 -7
- package/dist/utils/are-rule-modes-equal.d.ts +0 -2
- package/dist/utils/are-rule-modes-equal.mjs +0 -5
- package/dist/utils/are-rule-selectors-equal.cjs +0 -29
- package/dist/utils/are-rule-selectors-equal.d.ts +0 -2
- package/dist/utils/are-rule-selectors-equal.mjs +0 -27
- package/dist/utils/are-rule-states-equal.cjs +0 -11
- package/dist/utils/are-rule-states-equal.d.ts +0 -2
- package/dist/utils/are-rule-states-equal.mjs +0 -9
- package/dist/utils/are-rules-duplicated.cjs +0 -17
- package/dist/utils/are-rules-duplicated.d.ts +0 -2
- package/dist/utils/are-rules-duplicated.mjs +0 -15
- package/dist/utils/reorder-for-readable-classes.cjs +0 -62
- package/dist/utils/reorder-for-readable-classes.mjs +0 -60
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import AnimationRule from '../animation-rule.mjs';
|
|
2
|
+
import compareRulePriority from '../utils/compare-rule-priority.mjs';
|
|
3
|
+
import VariableRule from '../variable-rule.mjs';
|
|
2
4
|
|
|
3
5
|
function withSyntaxLayer(Base) {
|
|
4
6
|
return class SyntaxLayer extends Base {
|
|
@@ -11,172 +13,13 @@ function withSyntaxLayer(Base) {
|
|
|
11
13
|
* media width
|
|
12
14
|
* media width selectors
|
|
13
15
|
*/ insert(syntaxRule) {
|
|
14
|
-
if (this.rules.includes(syntaxRule)) return;
|
|
15
|
-
let index;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
*/ const endIndex = this.rules.length - 1;
|
|
22
|
-
const { mediaAtComponents, atToken, order, priority } = syntaxRule;
|
|
23
|
-
const findIndex = (startIndex, stopCheck, matchCheck)=>{
|
|
24
|
-
let i = startIndex;
|
|
25
|
-
for(; i <= endIndex; i++){
|
|
26
|
-
const eachSyntaxRule = this.rules[i];
|
|
27
|
-
if (stopCheck?.(eachSyntaxRule)) return matchCheck ? -1 : i - 1;
|
|
28
|
-
if (matchCheck?.(eachSyntaxRule)) return i;
|
|
29
|
-
}
|
|
30
|
-
return matchCheck ? -1 : i - 1;
|
|
31
|
-
};
|
|
32
|
-
let matchStartIndex;
|
|
33
|
-
let matchEndIndex;
|
|
34
|
-
if (atToken) {
|
|
35
|
-
const mediaStartIndex = this.rules.findIndex((eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents);
|
|
36
|
-
if (mediaStartIndex === -1) {
|
|
37
|
-
index = endIndex + 1;
|
|
38
|
-
} else {
|
|
39
|
-
const maxWidthFeature = mediaAtComponents?.find(({ name })=>name === 'max-width');
|
|
40
|
-
const minWidthFeature = mediaAtComponents?.find(({ name })=>name === 'min-width');
|
|
41
|
-
if (maxWidthFeature || minWidthFeature) {
|
|
42
|
-
const mediaWidthStartIndex = this.rules.findIndex((eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width' || name === 'min-width'));
|
|
43
|
-
if (mediaWidthStartIndex === -1) {
|
|
44
|
-
index = endIndex + 1;
|
|
45
|
-
} else {
|
|
46
|
-
if (maxWidthFeature && minWidthFeature) {
|
|
47
|
-
/**
|
|
48
|
-
* 範圍越小 ( 越限定 越侷限 ) 越優先,
|
|
49
|
-
* 按照範圍 max-width - min-width 遞減排序
|
|
50
|
-
* find 第一個所遇到同樣 feature 且範圍值比自己大的 rule,
|
|
51
|
-
* 並插入在該 rule 之後,讓自己優先被套用
|
|
52
|
-
*/ if (priority === -1) {
|
|
53
|
-
matchStartIndex = findIndex(mediaWidthStartIndex, (eachSyntaxRule)=>eachSyntaxRule.priority !== -1, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width') && eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'min-width'));
|
|
54
|
-
matchEndIndex = findIndex(mediaWidthStartIndex, (eachSyntaxRule)=>eachSyntaxRule.priority !== -1);
|
|
55
|
-
} else {
|
|
56
|
-
matchStartIndex = findIndex(mediaWidthStartIndex, undefined, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width') && eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'min-width') && eachSyntaxRule.priority !== -1);
|
|
57
|
-
matchEndIndex = endIndex;
|
|
58
|
-
}
|
|
59
|
-
if (matchStartIndex !== -1) {
|
|
60
|
-
const range = maxWidthFeature.value - minWidthFeature.value;
|
|
61
|
-
let i = matchEndIndex;
|
|
62
|
-
const endI = matchStartIndex;
|
|
63
|
-
matchStartIndex = matchEndIndex + 1;
|
|
64
|
-
for(; i >= endI; i--){
|
|
65
|
-
const eachSyntaxRule = this.rules[i];
|
|
66
|
-
const eachMaxWidthFeature = eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width');
|
|
67
|
-
const eachMinWidthFeature = eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'min-width');
|
|
68
|
-
if (!eachMaxWidthFeature || !eachMinWidthFeature) {
|
|
69
|
-
break;
|
|
70
|
-
} else {
|
|
71
|
-
const eachRange = eachMaxWidthFeature.value - eachMinWidthFeature.value;
|
|
72
|
-
if (eachRange < range) {
|
|
73
|
-
matchEndIndex = i - 1;
|
|
74
|
-
} else if (eachRange === range) {
|
|
75
|
-
matchStartIndex = i;
|
|
76
|
-
} else {
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
} else if (minWidthFeature) {
|
|
83
|
-
/**
|
|
84
|
-
* find 第一個所遇到同樣 feature 且值比自己大的 rule,
|
|
85
|
-
* 並插入在該 rule 之後,讓自己優先被套用
|
|
86
|
-
*/ if (priority === -1) {
|
|
87
|
-
matchStartIndex = findIndex(mediaWidthStartIndex, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width') && eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'min-width') || eachSyntaxRule.priority !== -1, (eachSyntaxRule)=>!eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width') && eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'min-width'));
|
|
88
|
-
matchEndIndex = findIndex(mediaWidthStartIndex, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width') && eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'min-width') || eachSyntaxRule.priority !== -1);
|
|
89
|
-
} else {
|
|
90
|
-
matchStartIndex = findIndex(mediaWidthStartIndex, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width') && eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'min-width') && eachSyntaxRule.priority !== -1, (eachSyntaxRule)=>!eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width') && eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'min-width') && eachSyntaxRule.priority !== -1);
|
|
91
|
-
matchEndIndex = findIndex(mediaWidthStartIndex, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width') && eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'min-width') && eachSyntaxRule.priority !== -1);
|
|
92
|
-
}
|
|
93
|
-
if (matchStartIndex !== -1) {
|
|
94
|
-
for(let i = matchEndIndex; i >= matchStartIndex; i--){
|
|
95
|
-
const feature = this.rules[i].mediaAtComponents?.find(({ name })=>name === 'min-width');
|
|
96
|
-
if (!feature) continue;
|
|
97
|
-
if (feature.value > minWidthFeature.value) {
|
|
98
|
-
matchEndIndex = i - 1;
|
|
99
|
-
} else if (feature.value < minWidthFeature.value) {
|
|
100
|
-
matchStartIndex = i + 1;
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
} else {
|
|
106
|
-
/**
|
|
107
|
-
* find 第一個所遇到同樣 feature 且值比自己大的 rule,
|
|
108
|
-
* 並插入在該 rule 之後,讓自己優先被套用
|
|
109
|
-
*/ if (priority === -1) {
|
|
110
|
-
matchStartIndex = findIndex(mediaWidthStartIndex, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'min-width') || eachSyntaxRule.priority !== -1, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width'));
|
|
111
|
-
matchEndIndex = findIndex(mediaWidthStartIndex, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'min-width') || eachSyntaxRule.priority !== -1);
|
|
112
|
-
} else {
|
|
113
|
-
matchStartIndex = findIndex(mediaWidthStartIndex, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'min-width') && eachSyntaxRule.priority !== -1, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width') && eachSyntaxRule.priority !== -1);
|
|
114
|
-
matchEndIndex = findIndex(mediaWidthStartIndex, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'min-width') && eachSyntaxRule.priority !== -1);
|
|
115
|
-
}
|
|
116
|
-
if (matchStartIndex !== -1) {
|
|
117
|
-
for(let i = matchEndIndex; i >= matchStartIndex; i--){
|
|
118
|
-
const feature = this.rules[i].mediaAtComponents?.find(({ name })=>name === 'max-width');
|
|
119
|
-
if (!feature) continue;
|
|
120
|
-
if (feature.value < maxWidthFeature.value) {
|
|
121
|
-
matchEndIndex = i - 1;
|
|
122
|
-
} else if (feature.value > maxWidthFeature.value) {
|
|
123
|
-
matchStartIndex = i + 1;
|
|
124
|
-
break;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
} else {
|
|
131
|
-
if (priority === -1) {
|
|
132
|
-
matchStartIndex = mediaStartIndex;
|
|
133
|
-
matchEndIndex = findIndex(mediaStartIndex, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width' || name === 'min-width') || eachSyntaxRule.priority !== -1);
|
|
134
|
-
} else {
|
|
135
|
-
matchStartIndex = findIndex(mediaStartIndex, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width' || name === 'min-width'), (eachSyntaxRule)=>eachSyntaxRule.priority !== -1);
|
|
136
|
-
matchEndIndex = findIndex(mediaStartIndex, (eachSyntaxRule)=>eachSyntaxRule.mediaAtComponents?.find(({ name })=>name === 'max-width' || name === 'min-width'));
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
} else {
|
|
141
|
-
if (priority === -1) {
|
|
142
|
-
matchStartIndex = 0;
|
|
143
|
-
matchEndIndex = findIndex(0, (eachSyntax)=>eachSyntax.atToken || eachSyntax.priority !== -1);
|
|
144
|
-
} else {
|
|
145
|
-
matchStartIndex = findIndex(0, (eachSyntax)=>eachSyntax.atToken, (eachSyntax)=>eachSyntax.priority !== -1);
|
|
146
|
-
matchEndIndex = findIndex(0, (eachSyntax)=>eachSyntax.atToken);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
if (index === undefined && matchEndIndex !== undefined && matchStartIndex !== undefined) {
|
|
150
|
-
if (matchStartIndex === -1) {
|
|
151
|
-
index = matchEndIndex + 1;
|
|
152
|
-
} else {
|
|
153
|
-
if (priority === -1) {
|
|
154
|
-
for(let i = matchStartIndex; i <= matchEndIndex; i++){
|
|
155
|
-
const currentSyntaxRule = this.rules[i];
|
|
156
|
-
if (currentSyntaxRule.order >= order) {
|
|
157
|
-
index = i;
|
|
158
|
-
break;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
} else {
|
|
162
|
-
for(let i = matchStartIndex; i <= matchEndIndex; i++){
|
|
163
|
-
const currentSyntaxRule = this.rules[i];
|
|
164
|
-
if (currentSyntaxRule.priority < priority) {
|
|
165
|
-
index = i;
|
|
166
|
-
break;
|
|
167
|
-
} else if (currentSyntaxRule.priority === priority) {
|
|
168
|
-
if (currentSyntaxRule.order >= order) {
|
|
169
|
-
index = i;
|
|
170
|
-
break;
|
|
171
|
-
}
|
|
172
|
-
} else {
|
|
173
|
-
index = i + 1;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
if (index === undefined) {
|
|
178
|
-
index = matchEndIndex + 1;
|
|
179
|
-
}
|
|
16
|
+
if (this.rules.includes(syntaxRule) || !syntaxRule.valid) return;
|
|
17
|
+
let index = this.rules.length;
|
|
18
|
+
for(let i = 0; i < this.rules.length; i++){
|
|
19
|
+
const rule = this.rules[i];
|
|
20
|
+
if (compareRulePriority(syntaxRule, rule) < 0) {
|
|
21
|
+
index = i;
|
|
22
|
+
break;
|
|
180
23
|
}
|
|
181
24
|
}
|
|
182
25
|
super.insert(syntaxRule, index);
|
|
@@ -197,108 +40,42 @@ function withSyntaxLayer(Base) {
|
|
|
197
40
|
layer.tokenCounts.set(layerToken, count - 1);
|
|
198
41
|
}
|
|
199
42
|
};
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
for (const eachKeyframeName of syntaxRule.animationNames){
|
|
207
|
-
deleteLayerToken(eachKeyframeName, this.css.animationsNonLayer);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
43
|
+
syntaxRule.variableNames?.forEach((eachVariableName)=>{
|
|
44
|
+
deleteLayerToken(eachVariableName, this.css.themeLayer);
|
|
45
|
+
});
|
|
46
|
+
syntaxRule.animationNames?.forEach((eachAnimationName)=>{
|
|
47
|
+
deleteLayerToken(eachAnimationName, this.css.animationsNonLayer);
|
|
48
|
+
});
|
|
210
49
|
syntaxRule.definition.delete?.call(syntaxRule, syntaxRule.name);
|
|
211
50
|
return syntaxRule;
|
|
212
51
|
}
|
|
213
52
|
insertVariables(syntaxRule) {
|
|
214
|
-
|
|
215
|
-
|
|
53
|
+
syntaxRule.variableNames?.forEach((eachVariableName)=>{
|
|
54
|
+
if (this.css.themeLayer.rules.find(({ name })=>name === eachVariableName)) {
|
|
55
|
+
const count = this.css.themeLayer.tokenCounts.get(eachVariableName) || 0;
|
|
56
|
+
this.css.themeLayer.tokenCounts.set(eachVariableName, count + 1);
|
|
57
|
+
} else {
|
|
216
58
|
const variable = this.css.variables.get(eachVariableName);
|
|
217
|
-
if (
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
const newRule = new Rule(eachVariableName);
|
|
222
|
-
const addNative = (mode, _variable)=>{
|
|
223
|
-
let isDefaultMode = false;
|
|
224
|
-
let preifxCssRuleText;
|
|
225
|
-
let selectorText;
|
|
226
|
-
let endCurlyBracketCount = 1;
|
|
227
|
-
if (mode) {
|
|
228
|
-
switch(this.css.config.modes?.[mode]){
|
|
229
|
-
case 'media':
|
|
230
|
-
selectorText = ':root';
|
|
231
|
-
preifxCssRuleText = `@media(prefers-color-scheme:${mode}){${selectorText}`;
|
|
232
|
-
endCurlyBracketCount++;
|
|
233
|
-
break;
|
|
234
|
-
case 'host':
|
|
235
|
-
preifxCssRuleText = selectorText = `:host(.${mode})`;
|
|
236
|
-
if (!variable?.value && this.css.config.defaultMode === mode) {
|
|
237
|
-
preifxCssRuleText += ',:host';
|
|
238
|
-
isDefaultMode = true;
|
|
239
|
-
}
|
|
240
|
-
break;
|
|
241
|
-
case 'class':
|
|
242
|
-
preifxCssRuleText = selectorText = `.${mode}`;
|
|
243
|
-
if (!variable?.value && this.css.config.defaultMode === mode) {
|
|
244
|
-
preifxCssRuleText += ',:root';
|
|
245
|
-
isDefaultMode = true;
|
|
246
|
-
}
|
|
247
|
-
break;
|
|
248
|
-
default:
|
|
249
|
-
return;
|
|
250
|
-
}
|
|
251
|
-
} else {
|
|
252
|
-
preifxCssRuleText = selectorText = ':root';
|
|
253
|
-
}
|
|
254
|
-
const cssRuleText = `${preifxCssRuleText}{--${eachVariableName}:${String(_variable.value)}${'}'.repeat(endCurlyBracketCount)}`;
|
|
255
|
-
if (isDefaultMode) {
|
|
256
|
-
newRule.nodes.unshift({
|
|
257
|
-
selectorText,
|
|
258
|
-
text: cssRuleText
|
|
259
|
-
});
|
|
260
|
-
} else {
|
|
261
|
-
newRule.nodes.push({
|
|
262
|
-
text: cssRuleText
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
};
|
|
266
|
-
if (variable?.value !== undefined) {
|
|
267
|
-
addNative('', variable);
|
|
268
|
-
}
|
|
269
|
-
if (variable?.modes) {
|
|
270
|
-
for(const mode in variable.modes){
|
|
271
|
-
addNative(mode, variable.modes[mode]);
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
this.css.themeLayer.insert(newRule);
|
|
275
|
-
this.css.themeLayer.tokenCounts.set(eachVariableName, 1);
|
|
276
|
-
}
|
|
59
|
+
if (!variable) return;
|
|
60
|
+
const newRule = new VariableRule(eachVariableName, variable, this.css);
|
|
61
|
+
this.css.themeLayer.insert(newRule);
|
|
62
|
+
this.css.themeLayer.tokenCounts.set(eachVariableName, 1);
|
|
277
63
|
}
|
|
278
|
-
}
|
|
64
|
+
});
|
|
279
65
|
}
|
|
280
66
|
insertAnimations(syntaxRule) {
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
return acc + `${key}{${variableText}}`;
|
|
292
|
-
}, '');
|
|
293
|
-
this.css.animationsNonLayer.insert(new Rule(eachAnimationName, [
|
|
294
|
-
{
|
|
295
|
-
text: `@keyframes ${eachAnimationName}{${keyframeText}}`
|
|
296
|
-
}
|
|
297
|
-
]));
|
|
298
|
-
this.css.animationsNonLayer.tokenCounts.set(eachAnimationName, 1);
|
|
299
|
-
}
|
|
67
|
+
syntaxRule.animationNames?.forEach((eachAnimationName)=>{
|
|
68
|
+
if (this.css.animationsNonLayer.rules.find(({ name })=>name === eachAnimationName)) {
|
|
69
|
+
const count = this.css.animationsNonLayer.tokenCounts.get(eachAnimationName) || 0;
|
|
70
|
+
this.css.animationsNonLayer.tokenCounts.set(eachAnimationName, count + 1);
|
|
71
|
+
} else {
|
|
72
|
+
const keyframes = this.css.animations.get(eachAnimationName);
|
|
73
|
+
if (!keyframes) return;
|
|
74
|
+
const newRule = new AnimationRule(eachAnimationName, keyframes, this.css);
|
|
75
|
+
this.css.animationsNonLayer.insert(newRule);
|
|
76
|
+
this.css.animationsNonLayer.tokenCounts.set(eachAnimationName, 1);
|
|
300
77
|
}
|
|
301
|
-
}
|
|
78
|
+
});
|
|
302
79
|
}
|
|
303
80
|
};
|
|
304
81
|
}
|
package/dist/index.cjs
CHANGED
|
@@ -11,16 +11,25 @@ var layer = require('./layer.cjs');
|
|
|
11
11
|
var syntaxLayer = require('./syntax-layer.cjs');
|
|
12
12
|
var nonLayer = require('./non-layer.cjs');
|
|
13
13
|
var syntaxRuleType = require('./syntax-rule-type.cjs');
|
|
14
|
+
var variableRule = require('./variable-rule.cjs');
|
|
15
|
+
var animationRule = require('./animation-rule.cjs');
|
|
14
16
|
var withSyntaxLayer = require('./factories/with-syntax-layer.cjs');
|
|
15
17
|
var extendConfig = require('./utils/extend-config.cjs');
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
var
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
var areRulesDuplicated = require('./utils/are-rules-duplicated.cjs');
|
|
18
|
+
var sortReadableClasses = require('./utils/sort-readable-classes.cjs');
|
|
19
|
+
var equalAtRules = require('./utils/equal-at-rules.cjs');
|
|
20
|
+
var equalSelectors = require('./utils/equal-selectors.cjs');
|
|
21
|
+
var equalVariants = require('./utils/equal-variants.cjs');
|
|
22
|
+
var equalDeclarations = require('./utils/equal-declarations.cjs');
|
|
22
23
|
var generateCss = require('./utils/generate-css.cjs');
|
|
23
24
|
var isCoreRule = require('./utils/is-core-rule.cjs');
|
|
25
|
+
var parsePair = require('./utils/parse-pair.cjs');
|
|
26
|
+
var parseValue = require('./utils/parse-value.cjs');
|
|
27
|
+
var parseAt = require('./utils/parse-at.cjs');
|
|
28
|
+
var generateAt = require('./utils/generate-at.cjs');
|
|
29
|
+
var parseSelector = require('./utils/parse-selector.cjs');
|
|
30
|
+
var generateSelector = require('./utils/generate-selector.cjs');
|
|
31
|
+
var getSingleAtNumberRuleNode = require('./utils/get-single-at-number-rule-node.cjs');
|
|
32
|
+
var compareRulePriority = require('./utils/compare-rule-priority.cjs');
|
|
24
33
|
var at = require('./config/at.cjs');
|
|
25
34
|
var selectors = require('./config/selectors.cjs');
|
|
26
35
|
var utilities = require('./config/utilities.cjs');
|
|
@@ -29,11 +38,16 @@ var functions = require('./config/functions.cjs');
|
|
|
29
38
|
var animations = require('./config/animations.cjs');
|
|
30
39
|
var variables = require('./config/variables.cjs');
|
|
31
40
|
var modes = require('./config/modes.cjs');
|
|
41
|
+
var screens = require('./config/screens.cjs');
|
|
32
42
|
|
|
33
43
|
|
|
34
44
|
|
|
35
45
|
exports.config = index.config;
|
|
36
46
|
exports.ANIMATION_SIGN = common.ANIMATION_SIGN;
|
|
47
|
+
exports.AT_COMPARABLE_FEATURES = common.AT_COMPARABLE_FEATURES;
|
|
48
|
+
exports.AT_COMPARISON_OPERATORS = common.AT_COMPARISON_OPERATORS;
|
|
49
|
+
exports.AT_IDENTIFIERS = common.AT_IDENTIFIERS;
|
|
50
|
+
exports.AT_LOGICAL_OPERATORS = common.AT_LOGICAL_OPERATORS;
|
|
37
51
|
exports.AT_SIGN = common.AT_SIGN;
|
|
38
52
|
exports.BASE_UNIT_REGEX = common.BASE_UNIT_REGEX;
|
|
39
53
|
exports.BORDER_STYLE_VALUES = common.BORDER_STYLE_VALUES;
|
|
@@ -41,12 +55,14 @@ exports.CLASS_ATTRIBUTES = common.CLASS_ATTRIBUTES;
|
|
|
41
55
|
exports.CLASS_DECLARATIONS = common.CLASS_DECLARATIONS;
|
|
42
56
|
exports.CLASS_FUNCTIONS = common.CLASS_FUNCTIONS;
|
|
43
57
|
exports.COLOR_VALUE_REGEX = common.COLOR_VALUE_REGEX;
|
|
58
|
+
exports.COMPARISION_OPERATORS = common.COMPARISION_OPERATORS;
|
|
44
59
|
exports.DELIMITER_SIGN = common.DELIMITER_SIGN;
|
|
45
60
|
exports.IMAGE_VALUE_REGEX = common.IMAGE_VALUE_REGEX;
|
|
46
61
|
exports.NUMBER_VALUE_REGEX = common.NUMBER_VALUE_REGEX;
|
|
47
62
|
exports.OFFICIAL_URL = common.OFFICIAL_URL;
|
|
48
63
|
exports.QUERY_COMPARISON_OPERATORS = common.QUERY_COMPARISON_OPERATORS;
|
|
49
64
|
exports.QUERY_LOGICAL_OPERATORS = common.QUERY_LOGICAL_OPERATORS;
|
|
65
|
+
exports.SELECTOR_COMBINATORS = common.SELECTOR_COMBINATORS;
|
|
50
66
|
exports.SELECTOR_SIGNS = common.SELECTOR_SIGNS;
|
|
51
67
|
exports.SEPARATOR_SIGN = common.SEPARATOR_SIGN;
|
|
52
68
|
exports.SEPARATOR_SIGNS = common.SEPARATOR_SIGNS;
|
|
@@ -54,6 +70,7 @@ exports.TRANSITION_SIGN = common.TRANSITION_SIGN;
|
|
|
54
70
|
exports.UNIT_REGEX = common.UNIT_REGEX;
|
|
55
71
|
exports.VALUE_DELIMITERS = common.VALUE_DELIMITERS;
|
|
56
72
|
exports.VALUE_UNITS = common.VALUE_UNITS;
|
|
73
|
+
exports.__UNSORTED__ = common.__UNSORTED__;
|
|
57
74
|
exports.MasterCSS = core;
|
|
58
75
|
exports.default = core;
|
|
59
76
|
exports.SyntaxRule = syntaxRule.SyntaxRule;
|
|
@@ -62,16 +79,25 @@ exports.Layer = layer;
|
|
|
62
79
|
exports.SyntaxLayer = syntaxLayer;
|
|
63
80
|
exports.NonLayer = nonLayer;
|
|
64
81
|
exports.SyntaxRuleType = syntaxRuleType;
|
|
82
|
+
exports.VariableRule = variableRule.default;
|
|
83
|
+
exports.AnimationRule = animationRule;
|
|
65
84
|
exports.withSyntaxLayer = withSyntaxLayer;
|
|
66
85
|
exports.extendConfig = extendConfig;
|
|
67
|
-
exports.
|
|
68
|
-
exports.
|
|
69
|
-
exports.
|
|
70
|
-
exports.
|
|
71
|
-
exports.
|
|
72
|
-
exports.areRulesDuplicated = areRulesDuplicated;
|
|
86
|
+
exports.sortReadableClasses = sortReadableClasses;
|
|
87
|
+
exports.equalAtRules = equalAtRules;
|
|
88
|
+
exports.equalSelectors = equalSelectors;
|
|
89
|
+
exports.equalVariants = equalVariants;
|
|
90
|
+
exports.equalDeclarations = equalDeclarations;
|
|
73
91
|
exports.generateCSS = generateCss;
|
|
74
92
|
exports.isCoreRule = isCoreRule;
|
|
93
|
+
exports.parsePair = parsePair;
|
|
94
|
+
exports.parseValue = parseValue;
|
|
95
|
+
exports.parseAt = parseAt;
|
|
96
|
+
exports.generateAt = generateAt;
|
|
97
|
+
exports.parseSelector = parseSelector;
|
|
98
|
+
exports.generateSelector = generateSelector;
|
|
99
|
+
exports.getSingleAtNumberRuleNode = getSingleAtNumberRuleNode;
|
|
100
|
+
exports.compareRulePriority = compareRulePriority.default;
|
|
75
101
|
exports.at = at;
|
|
76
102
|
exports.selectors = selectors;
|
|
77
103
|
exports.utilities = utilities;
|
|
@@ -80,3 +106,4 @@ exports.functions = functions;
|
|
|
80
106
|
exports.animations = animations;
|
|
81
107
|
exports.variables = variables;
|
|
82
108
|
exports.modes = modes;
|
|
109
|
+
exports.screens = screens;
|
package/dist/index.d.ts
CHANGED
|
@@ -7,16 +7,28 @@ export { default as Layer } from './layer';
|
|
|
7
7
|
export { default as SyntaxLayer } from './syntax-layer';
|
|
8
8
|
export { default as NonLayer } from './non-layer';
|
|
9
9
|
export { default as SyntaxRuleType } from './syntax-rule-type';
|
|
10
|
-
export { default as
|
|
10
|
+
export { default as VariableRule } from './variable-rule';
|
|
11
|
+
export { default as AnimationRule } from './animation-rule';
|
|
11
12
|
export * from './types/config';
|
|
12
13
|
export * from './types/syntax';
|
|
14
|
+
export * from './types/common';
|
|
13
15
|
export { default as withSyntaxLayer } from './factories/with-syntax-layer';
|
|
14
16
|
export { default as extendConfig } from './utils/extend-config';
|
|
15
|
-
export { default as
|
|
16
|
-
export { default as
|
|
17
|
-
export { default as
|
|
18
|
-
export { default as
|
|
19
|
-
export { default as
|
|
20
|
-
export { default as areRulesDuplicated } from './utils/are-rules-duplicated';
|
|
17
|
+
export { default as sortReadableClasses } from './utils/sort-readable-classes';
|
|
18
|
+
export { default as equalAtRules } from './utils/equal-at-rules';
|
|
19
|
+
export { default as equalSelectors } from './utils/equal-selectors';
|
|
20
|
+
export { default as equalVariants } from './utils/equal-variants';
|
|
21
|
+
export { default as equalDeclarations } from './utils/equal-declarations';
|
|
21
22
|
export { default as generateCSS } from './utils/generate-css';
|
|
22
23
|
export { default as isCoreRule } from './utils/is-core-rule';
|
|
24
|
+
export { default as parsePair } from './utils/parse-pair';
|
|
25
|
+
export { default as parseValue } from './utils/parse-value';
|
|
26
|
+
export { default as parseAt } from './utils/parse-at';
|
|
27
|
+
export type * from './utils/parse-at';
|
|
28
|
+
export { default as generateAt } from './utils/generate-at';
|
|
29
|
+
export { default as parseSelector } from './utils/parse-selector';
|
|
30
|
+
export type * from './utils/parse-selector';
|
|
31
|
+
export { default as generateSelector } from './utils/generate-selector';
|
|
32
|
+
export { default as getSingleAtNumberRuleNode } from './utils/get-single-at-number-rule-node';
|
|
33
|
+
export { default as compareRulePriority } from './utils/compare-rule-priority';
|
|
34
|
+
export { default as MasterCSS, default } from './core';
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { config } from './config/index.mjs';
|
|
2
|
-
export { ANIMATION_SIGN, AT_SIGN, BASE_UNIT_REGEX, BORDER_STYLE_VALUES, CLASS_ATTRIBUTES, CLASS_DECLARATIONS, CLASS_FUNCTIONS, COLOR_VALUE_REGEX, DELIMITER_SIGN, IMAGE_VALUE_REGEX, NUMBER_VALUE_REGEX, OFFICIAL_URL, QUERY_COMPARISON_OPERATORS, QUERY_LOGICAL_OPERATORS, SELECTOR_SIGNS, SEPARATOR_SIGN, SEPARATOR_SIGNS, TRANSITION_SIGN, UNIT_REGEX, VALUE_DELIMITERS, VALUE_UNITS } from './common.mjs';
|
|
2
|
+
export { ANIMATION_SIGN, AT_COMPARABLE_FEATURES, AT_COMPARISON_OPERATORS, AT_IDENTIFIERS, AT_LOGICAL_OPERATORS, AT_SIGN, BASE_UNIT_REGEX, BORDER_STYLE_VALUES, CLASS_ATTRIBUTES, CLASS_DECLARATIONS, CLASS_FUNCTIONS, COLOR_VALUE_REGEX, COMPARISION_OPERATORS, DELIMITER_SIGN, IMAGE_VALUE_REGEX, NUMBER_VALUE_REGEX, OFFICIAL_URL, QUERY_COMPARISON_OPERATORS, QUERY_LOGICAL_OPERATORS, SELECTOR_COMBINATORS, SELECTOR_SIGNS, SEPARATOR_SIGN, SEPARATOR_SIGNS, TRANSITION_SIGN, UNIT_REGEX, VALUE_DELIMITERS, VALUE_UNITS, __UNSORTED__ } from './common.mjs';
|
|
3
3
|
export { default as MasterCSS, default } from './core.mjs';
|
|
4
4
|
export { SyntaxRule } from './syntax-rule.mjs';
|
|
5
5
|
export { Rule } from './rule.mjs';
|
|
@@ -7,16 +7,25 @@ export { default as Layer } from './layer.mjs';
|
|
|
7
7
|
export { default as SyntaxLayer } from './syntax-layer.mjs';
|
|
8
8
|
export { default as NonLayer } from './non-layer.mjs';
|
|
9
9
|
export { default as SyntaxRuleType } from './syntax-rule-type.mjs';
|
|
10
|
+
export { default as VariableRule } from './variable-rule.mjs';
|
|
11
|
+
export { default as AnimationRule } from './animation-rule.mjs';
|
|
10
12
|
export { default as withSyntaxLayer } from './factories/with-syntax-layer.mjs';
|
|
11
13
|
export { default as extendConfig } from './utils/extend-config.mjs';
|
|
12
|
-
export { default as
|
|
13
|
-
export { default as
|
|
14
|
-
export { default as
|
|
15
|
-
export { default as
|
|
16
|
-
export { default as
|
|
17
|
-
export { default as areRulesDuplicated } from './utils/are-rules-duplicated.mjs';
|
|
14
|
+
export { default as sortReadableClasses } from './utils/sort-readable-classes.mjs';
|
|
15
|
+
export { default as equalAtRules } from './utils/equal-at-rules.mjs';
|
|
16
|
+
export { default as equalSelectors } from './utils/equal-selectors.mjs';
|
|
17
|
+
export { default as equalVariants } from './utils/equal-variants.mjs';
|
|
18
|
+
export { default as equalDeclarations } from './utils/equal-declarations.mjs';
|
|
18
19
|
export { default as generateCSS } from './utils/generate-css.mjs';
|
|
19
20
|
export { default as isCoreRule } from './utils/is-core-rule.mjs';
|
|
21
|
+
export { default as parsePair } from './utils/parse-pair.mjs';
|
|
22
|
+
export { default as parseValue } from './utils/parse-value.mjs';
|
|
23
|
+
export { default as parseAt } from './utils/parse-at.mjs';
|
|
24
|
+
export { default as generateAt } from './utils/generate-at.mjs';
|
|
25
|
+
export { default as parseSelector } from './utils/parse-selector.mjs';
|
|
26
|
+
export { default as generateSelector } from './utils/generate-selector.mjs';
|
|
27
|
+
export { default as getSingleAtNumberRuleNode } from './utils/get-single-at-number-rule-node.mjs';
|
|
28
|
+
export { default as compareRulePriority } from './utils/compare-rule-priority.mjs';
|
|
20
29
|
export { default as at } from './config/at.mjs';
|
|
21
30
|
export { default as selectors } from './config/selectors.mjs';
|
|
22
31
|
export { default as utilities } from './config/utilities.mjs';
|
|
@@ -25,3 +34,4 @@ export { default as functions } from './config/functions.mjs';
|
|
|
25
34
|
export { default as animations } from './config/animations.mjs';
|
|
26
35
|
export { default as variables } from './config/variables.mjs';
|
|
27
36
|
export { default as modes } from './config/modes.mjs';
|
|
37
|
+
export { default as screens } from './config/screens.mjs';
|
package/dist/layer.cjs
CHANGED
|
@@ -19,20 +19,22 @@ class Layer {
|
|
|
19
19
|
}
|
|
20
20
|
insert(rule, index = this.rules.length) {
|
|
21
21
|
if (this.rules.find(({ key })=>key === rule.key)) return;
|
|
22
|
+
this.rules.splice(index, 0, rule);
|
|
23
|
+
// should attach after inserting, because this.text is possibly empty
|
|
22
24
|
if (!this.css.rules.includes(this)) {
|
|
23
25
|
this.attach();
|
|
24
26
|
}
|
|
25
|
-
this.rules.splice(index, 0, rule);
|
|
26
27
|
return index;
|
|
27
28
|
}
|
|
28
29
|
delete(key) {
|
|
29
|
-
const
|
|
30
|
-
if (
|
|
31
|
-
|
|
30
|
+
const index = this.rules.findIndex((rule)=>rule.key === key);
|
|
31
|
+
if (index === -1) return;
|
|
32
|
+
const deletedRule = this.rules[index];
|
|
33
|
+
this.rules.splice(index, 1);
|
|
34
|
+
if (this.rules.length === 0) {
|
|
32
35
|
this.detach();
|
|
33
36
|
}
|
|
34
|
-
|
|
35
|
-
return rule;
|
|
37
|
+
return deletedRule;
|
|
36
38
|
}
|
|
37
39
|
reset() {
|
|
38
40
|
this.rules.length = 0;
|
|
@@ -43,7 +45,9 @@ class Layer {
|
|
|
43
45
|
this.tokenCounts.clear();
|
|
44
46
|
}
|
|
45
47
|
get text() {
|
|
46
|
-
|
|
48
|
+
const ruleText = this.rules.map(({ text })=>text).join('');
|
|
49
|
+
if (!ruleText) return '';
|
|
50
|
+
return '@layer ' + this.name + '{' + ruleText + '}';
|
|
47
51
|
}
|
|
48
52
|
}
|
|
49
53
|
|
package/dist/layer.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { Rule } from './rule';
|
|
2
2
|
import MasterCSS from './core';
|
|
3
|
+
import VariableRule from './variable-rule';
|
|
3
4
|
export default class Layer {
|
|
4
5
|
name: string;
|
|
5
6
|
css: MasterCSS;
|
|
6
|
-
readonly rules: Rule[];
|
|
7
|
+
readonly rules: (Rule | VariableRule)[];
|
|
7
8
|
readonly tokenCounts: Map<string, number>;
|
|
8
9
|
constructor(name: string, css: MasterCSS);
|
|
9
10
|
attach(): void;
|
|
10
11
|
detach(): void;
|
|
11
|
-
insert(rule: Rule, index?: number): number | undefined;
|
|
12
|
-
delete(key: string): Rule | undefined;
|
|
12
|
+
insert(rule: Rule | VariableRule, index?: number): number | undefined;
|
|
13
|
+
delete(key: string): Rule | VariableRule | undefined;
|
|
13
14
|
reset(): void;
|
|
14
15
|
get text(): string;
|
|
15
16
|
}
|
package/dist/layer.mjs
CHANGED
|
@@ -17,20 +17,22 @@ class Layer {
|
|
|
17
17
|
}
|
|
18
18
|
insert(rule, index = this.rules.length) {
|
|
19
19
|
if (this.rules.find(({ key })=>key === rule.key)) return;
|
|
20
|
+
this.rules.splice(index, 0, rule);
|
|
21
|
+
// should attach after inserting, because this.text is possibly empty
|
|
20
22
|
if (!this.css.rules.includes(this)) {
|
|
21
23
|
this.attach();
|
|
22
24
|
}
|
|
23
|
-
this.rules.splice(index, 0, rule);
|
|
24
25
|
return index;
|
|
25
26
|
}
|
|
26
27
|
delete(key) {
|
|
27
|
-
const
|
|
28
|
-
if (
|
|
29
|
-
|
|
28
|
+
const index = this.rules.findIndex((rule)=>rule.key === key);
|
|
29
|
+
if (index === -1) return;
|
|
30
|
+
const deletedRule = this.rules[index];
|
|
31
|
+
this.rules.splice(index, 1);
|
|
32
|
+
if (this.rules.length === 0) {
|
|
30
33
|
this.detach();
|
|
31
34
|
}
|
|
32
|
-
|
|
33
|
-
return rule;
|
|
35
|
+
return deletedRule;
|
|
34
36
|
}
|
|
35
37
|
reset() {
|
|
36
38
|
this.rules.length = 0;
|
|
@@ -41,7 +43,9 @@ class Layer {
|
|
|
41
43
|
this.tokenCounts.clear();
|
|
42
44
|
}
|
|
43
45
|
get text() {
|
|
44
|
-
|
|
46
|
+
const ruleText = this.rules.map(({ text })=>text).join('');
|
|
47
|
+
if (!ruleText) return '';
|
|
48
|
+
return '@layer ' + this.name + '{' + ruleText + '}';
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
|