css-to-tailwind-react 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PROPERTY_CONFLICT_GROUPS = void 0;
4
+ exports.getPropertyForUtility = getPropertyForUtility;
5
+ exports.isTextFontSizeUtility = isTextFontSizeUtility;
6
+ exports.isTextColorUtility = isTextColorUtility;
7
+ exports.getPropertiesForUtilities = getPropertiesForUtilities;
8
+ exports.getConflictGroup = getConflictGroup;
9
+ exports.propertiesConflict = propertiesConflict;
10
+ const PROPERTY_PREFIX_MAP = {
11
+ 'color': ['text-'],
12
+ 'background-color': ['bg-'],
13
+ 'font-size': ['text-xs', 'text-sm', 'text-base', 'text-lg', 'text-xl', 'text-2xl', 'text-3xl', 'text-4xl', 'text-5xl', 'text-6xl', 'text-7xl', 'text-8xl', 'text-9xl', 'text-'],
14
+ 'font-weight': ['font-thin', 'font-extralight', 'font-light', 'font-normal', 'font-medium', 'font-semibold', 'font-bold', 'font-extrabold', 'font-black'],
15
+ 'display': ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'grid', 'inline-grid', 'hidden', 'contents', 'table', 'table-cell', 'table-row'],
16
+ 'position': ['static', 'fixed', 'absolute', 'relative', 'sticky'],
17
+ 'width': ['w-'],
18
+ 'height': ['h-'],
19
+ 'min-width': ['min-w-'],
20
+ 'max-width': ['max-w-'],
21
+ 'min-height': ['min-h-'],
22
+ 'max-height': ['max-h-'],
23
+ 'margin': ['m-'],
24
+ 'margin-top': ['mt-'],
25
+ 'margin-right': ['mr-'],
26
+ 'margin-bottom': ['mb-'],
27
+ 'margin-left': ['ml-'],
28
+ 'margin-x': ['mx-'],
29
+ 'margin-y': ['my-'],
30
+ 'padding': ['p-'],
31
+ 'padding-top': ['pt-'],
32
+ 'padding-right': ['pr-'],
33
+ 'padding-bottom': ['pb-'],
34
+ 'padding-left': ['pl-'],
35
+ 'padding-x': ['px-'],
36
+ 'padding-y': ['py-'],
37
+ 'gap': ['gap-'],
38
+ 'border-radius': ['rounded-', 'rounded'],
39
+ 'border-width': ['border-', 'border-t-', 'border-r-', 'border-b-', 'border-l-'],
40
+ 'border-color': ['border-'],
41
+ 'flex-direction': ['flex-row', 'flex-col', 'flex-row-reverse', 'flex-col-reverse'],
42
+ 'flex-wrap': ['flex-wrap', 'flex-nowrap', 'flex-wrap-reverse'],
43
+ 'justify-content': ['justify-'],
44
+ 'align-items': ['items-'],
45
+ 'align-content': ['content-'],
46
+ 'align-self': ['self-'],
47
+ 'text-align': ['text-left', 'text-center', 'text-right', 'text-justify', 'text-start', 'text-end'],
48
+ 'overflow': ['overflow-'],
49
+ 'overflow-x': ['overflow-x-'],
50
+ 'overflow-y': ['overflow-y-'],
51
+ 'z-index': ['z-'],
52
+ 'opacity': ['opacity-'],
53
+ 'cursor': ['cursor-'],
54
+ 'pointer-events': ['pointer-events-'],
55
+ 'user-select': ['select-'],
56
+ 'box-shadow': ['shadow-'],
57
+ 'transition': ['transition-'],
58
+ 'transform': ['scale-', 'rotate-', 'translate-', 'skew-'],
59
+ 'top': ['top-'],
60
+ 'right': ['right-'],
61
+ 'bottom': ['bottom-'],
62
+ 'left': ['left-'],
63
+ 'inset': ['inset-']
64
+ };
65
+ const UTILITY_TO_PROPERTY_MAP = {
66
+ 'block': 'display',
67
+ 'inline-block': 'display',
68
+ 'inline': 'display',
69
+ 'flex': 'display',
70
+ 'inline-flex': 'display',
71
+ 'grid': 'display',
72
+ 'inline-grid': 'display',
73
+ 'hidden': 'display',
74
+ 'contents': 'display',
75
+ 'static': 'position',
76
+ 'fixed': 'position',
77
+ 'absolute': 'position',
78
+ 'relative': 'position',
79
+ 'sticky': 'position',
80
+ 'flex-row': 'flex-direction',
81
+ 'flex-col': 'flex-direction',
82
+ 'flex-row-reverse': 'flex-direction',
83
+ 'flex-col-reverse': 'flex-direction',
84
+ 'flex-wrap': 'flex-wrap',
85
+ 'flex-nowrap': 'flex-wrap',
86
+ 'flex-wrap-reverse': 'flex-wrap',
87
+ 'text-left': 'text-align',
88
+ 'text-center': 'text-align',
89
+ 'text-right': 'text-align',
90
+ 'text-justify': 'text-align',
91
+ 'text-start': 'text-align',
92
+ 'text-end': 'text-align',
93
+ 'font-thin': 'font-weight',
94
+ 'font-extralight': 'font-weight',
95
+ 'font-light': 'font-weight',
96
+ 'font-normal': 'font-weight',
97
+ 'font-medium': 'font-weight',
98
+ 'font-semibold': 'font-weight',
99
+ 'font-bold': 'font-weight',
100
+ 'font-extrabold': 'font-weight',
101
+ 'font-black': 'font-weight',
102
+ 'rounded': 'border-radius',
103
+ 'rounded-none': 'border-radius',
104
+ 'rounded-sm': 'border-radius',
105
+ 'rounded-md': 'border-radius',
106
+ 'rounded-lg': 'border-radius',
107
+ 'rounded-xl': 'border-radius',
108
+ 'rounded-2xl': 'border-radius',
109
+ 'rounded-3xl': 'border-radius',
110
+ 'rounded-full': 'border-radius'
111
+ };
112
+ const PREFIX_PROPERTY_MAP = {
113
+ 'text-': 'color',
114
+ 'bg-': 'background-color',
115
+ 'w-': 'width',
116
+ 'h-': 'height',
117
+ 'min-w-': 'min-width',
118
+ 'max-w-': 'max-width',
119
+ 'min-h-': 'min-height',
120
+ 'max-h-': 'max-height',
121
+ 'm-': 'margin',
122
+ 'mt-': 'margin-top',
123
+ 'mr-': 'margin-right',
124
+ 'mb-': 'margin-bottom',
125
+ 'ml-': 'margin-left',
126
+ 'mx-': 'margin-x',
127
+ 'my-': 'margin-y',
128
+ 'p-': 'padding',
129
+ 'pt-': 'padding-top',
130
+ 'pr-': 'padding-right',
131
+ 'pb-': 'padding-bottom',
132
+ 'pl-': 'padding-left',
133
+ 'px-': 'padding-x',
134
+ 'py-': 'padding-y',
135
+ 'gap-': 'gap',
136
+ 'rounded-': 'border-radius',
137
+ 'justify-': 'justify-content',
138
+ 'items-': 'align-items',
139
+ 'content-': 'align-content',
140
+ 'self-': 'align-self',
141
+ 'overflow-': 'overflow',
142
+ 'overflow-x-': 'overflow-x',
143
+ 'overflow-y-': 'overflow-y',
144
+ 'z-': 'z-index',
145
+ 'opacity-': 'opacity',
146
+ 'cursor-': 'cursor',
147
+ 'shadow-': 'box-shadow',
148
+ 'border-': 'border-width',
149
+ 'border-t-': 'border-width',
150
+ 'border-r-': 'border-width',
151
+ 'border-b-': 'border-width',
152
+ 'border-l-': 'border-width',
153
+ 'top-': 'top',
154
+ 'right-': 'right',
155
+ 'bottom-': 'bottom',
156
+ 'left-': 'left',
157
+ 'inset-': 'inset'
158
+ };
159
+ const FONT_SIZE_UTILITIES = new Set([
160
+ 'text-xs', 'text-sm', 'text-base', 'text-lg', 'text-xl',
161
+ 'text-2xl', 'text-3xl', 'text-4xl', 'text-5xl', 'text-6xl',
162
+ 'text-7xl', 'text-8xl', 'text-9xl'
163
+ ]);
164
+ function getPropertyForUtility(utility) {
165
+ const strippedUtility = stripVariants(utility);
166
+ if (UTILITY_TO_PROPERTY_MAP[strippedUtility]) {
167
+ return UTILITY_TO_PROPERTY_MAP[strippedUtility];
168
+ }
169
+ if (FONT_SIZE_UTILITIES.has(strippedUtility)) {
170
+ return 'font-size';
171
+ }
172
+ if (strippedUtility.startsWith('text-') && !FONT_SIZE_UTILITIES.has(strippedUtility)) {
173
+ const value = strippedUtility.slice(5);
174
+ if (/^\d/.test(value) || value.startsWith('[')) {
175
+ return 'font-size';
176
+ }
177
+ return 'color';
178
+ }
179
+ const sortedPrefixes = Object.keys(PREFIX_PROPERTY_MAP).sort((a, b) => b.length - a.length);
180
+ for (const prefix of sortedPrefixes) {
181
+ if (strippedUtility.startsWith(prefix)) {
182
+ return PREFIX_PROPERTY_MAP[prefix];
183
+ }
184
+ }
185
+ return 'unknown';
186
+ }
187
+ function stripVariants(utility) {
188
+ const parts = utility.split(':');
189
+ return parts[parts.length - 1];
190
+ }
191
+ function isTextFontSizeUtility(utility) {
192
+ const stripped = stripVariants(utility);
193
+ return FONT_SIZE_UTILITIES.has(stripped) || (stripped.startsWith('text-') && /^\d/.test(stripped.slice(5)));
194
+ }
195
+ function isTextColorUtility(utility) {
196
+ const stripped = stripVariants(utility);
197
+ if (FONT_SIZE_UTILITIES.has(stripped)) {
198
+ return false;
199
+ }
200
+ if (stripped.startsWith('text-')) {
201
+ const value = stripped.slice(5);
202
+ if (/^\d/.test(value) || value.startsWith('[')) {
203
+ return false;
204
+ }
205
+ return true;
206
+ }
207
+ return false;
208
+ }
209
+ function getPropertiesForUtilities(utilities) {
210
+ const propertyMap = new Map();
211
+ for (const utility of utilities) {
212
+ const property = getPropertyForUtility(utility);
213
+ if (!propertyMap.has(property)) {
214
+ propertyMap.set(property, []);
215
+ }
216
+ propertyMap.get(property).push(utility);
217
+ }
218
+ return propertyMap;
219
+ }
220
+ exports.PROPERTY_CONFLICT_GROUPS = {
221
+ 'display': ['display'],
222
+ 'position': ['position'],
223
+ 'width': ['width', 'min-width', 'max-width'],
224
+ 'height': ['height', 'min-height', 'max-height'],
225
+ 'margin': ['margin', 'margin-top', 'margin-right', 'margin-bottom', 'margin-left', 'margin-x', 'margin-y'],
226
+ 'padding': ['padding', 'padding-top', 'padding-right', 'padding-bottom', 'padding-left', 'padding-x', 'padding-y'],
227
+ 'flex-direction': ['flex-direction'],
228
+ 'flex-wrap': ['flex-wrap'],
229
+ 'justify-content': ['justify-content'],
230
+ 'align-items': ['align-items'],
231
+ 'text-align': ['text-align'],
232
+ 'font-size': ['font-size'],
233
+ 'font-weight': ['font-weight'],
234
+ 'color': ['color'],
235
+ 'background-color': ['background-color'],
236
+ 'border-radius': ['border-radius'],
237
+ 'border-width': ['border-width', 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width'],
238
+ 'overflow': ['overflow', 'overflow-x', 'overflow-y'],
239
+ 'z-index': ['z-index'],
240
+ 'opacity': ['opacity'],
241
+ 'gap': ['gap'],
242
+ 'inset': ['inset', 'top', 'right', 'bottom', 'left']
243
+ };
244
+ function getConflictGroup(property) {
245
+ for (const [groupName, properties] of Object.entries(exports.PROPERTY_CONFLICT_GROUPS)) {
246
+ if (properties.includes(property)) {
247
+ return groupName;
248
+ }
249
+ }
250
+ return null;
251
+ }
252
+ function propertiesConflict(prop1, prop2) {
253
+ const group1 = getConflictGroup(prop1);
254
+ const group2 = getConflictGroup(prop2);
255
+ if (group1 && group2 && group1 === group2) {
256
+ if (prop1 === prop2) {
257
+ return true;
258
+ }
259
+ const group = exports.PROPERTY_CONFLICT_GROUPS[group1];
260
+ if (group.length === 1) {
261
+ return true;
262
+ }
263
+ if (group1 === 'margin' || group1 === 'padding') {
264
+ if (prop1 === group1 || prop2 === group1) {
265
+ return true;
266
+ }
267
+ }
268
+ if (group1 === 'inset') {
269
+ if (prop1 === 'inset' || prop2 === 'inset') {
270
+ return true;
271
+ }
272
+ }
273
+ return prop1 === prop2;
274
+ }
275
+ return prop1 === prop2;
276
+ }
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHlNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcHJvcGVydHlNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBOEpBLHNEQTRCQztBQU9ELHNEQUtDO0FBRUQsZ0RBZ0JDO0FBRUQsOERBY0M7QUEyQkQsNENBT0M7QUFFRCxnREErQkM7QUEzU0QsTUFBTSxtQkFBbUIsR0FBNkI7SUFDcEQsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO0lBQ2xCLGtCQUFrQixFQUFFLENBQUMsS0FBSyxDQUFDO0lBQzNCLFdBQVcsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUM7SUFDL0ssYUFBYSxFQUFFLENBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDO0lBQ3pKLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDO0lBQ3RKLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUM7SUFDakUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2YsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2hCLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUN2QixXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7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QUFNLEVBQUUsQ0FBQztRQUMxQyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxnQ0FBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoRCxJQUFJLEtBQUssS0FBSyxNQUFNLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUN6QyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDM0MsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxLQUFLLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTyxLQUFLLEtBQUssS0FBSyxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQUk9QRVJUWV9QUkVGSVhfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7XG4gICdjb2xvcic6IFsndGV4dC0nXSxcbiAgJ2JhY2tncm91bmQtY29sb3InOiBbJ2JnLSddLFxuICAnZm9udC1zaXplJzogWyd0ZXh0LXhzJywgJ3RleHQtc20nLCAndGV4dC1iYXNlJywgJ3RleHQtbGcnLCAndGV4dC14bCcsICd0ZXh0LTJ4bCcsICd0ZXh0LTN4bCcsICd0ZXh0LTR4bCcsICd0ZXh0LTV4bCcsICd0ZXh0LTZ4bCcsICd0ZXh0LTd4bCcsICd0ZXh0LTh4bCcsICd0ZXh0LTl4bCcsICd0ZXh0LSddLFxuICAnZm9udC13ZWlnaHQnOiBbJ2ZvbnQtdGhpbicsICdmb250LWV4dHJhbGlnaHQnLCAnZm9udC1saWdodCcsICdmb250LW5vcm1hbCcsICdmb250LW1lZGl1bScsICdmb250LXNlbWlib2xkJywgJ2ZvbnQtYm9sZCcsICdmb250LWV4dHJhYm9sZCcsICdmb250LWJsYWNrJ10sXG4gICdkaXNwbGF5JzogWydibG9jaycsICdpbmxpbmUtYmxvY2snLCAnaW5saW5lJywgJ2ZsZXgnLCAnaW5saW5lLWZsZXgnLCAnZ3JpZCcsICdpbmxpbmUtZ3JpZCcsICdoaWRkZW4nLCAnY29udGVudHMnLCAndGFibGUnLCAndGFibGUtY2VsbCcsICd0YWJsZS1yb3cnXSxcbiAgJ3Bvc2l0aW9uJzogWydzdGF0aWMnLCAnZml4ZWQnLCAnYWJzb2x1dGUnLCAncmVsYXRpdmUnLCAnc3RpY2t5J10sXG4gICd3aWR0aCc6IFsndy0nXSxcbiAgJ2hlaWdodCc6IFsnaC0nXSxcbiAgJ21pbi13aWR0aCc6IFsnbWluLXctJ10sXG4gICdtYXgtd2lkdGgnOiBbJ21heC13LSddLFxuICAnbWluLWhlaWdodCc6IFsnbWluLWgtJ10sXG4gICdtYXgtaGVpZ2h0JzogWydtYXgtaC0nXSxcbiAgJ21hcmdpbic6IFsnbS0nXSxcbiAgJ21hcmdpbi10b3AnOiBbJ210LSddLFxuICAnbWFyZ2luLXJpZ2h0JzogWydtci0nXSxcbiAgJ21hcmdpbi1ib3R0b20nOiBbJ21iLSddLFxuICAnbWFyZ2luLWxlZnQnOiBbJ21sLSddLFxuICAnbWFyZ2luLXgnOiBbJ214LSddLFxuICAnbWFyZ2luLXknOiBbJ215LSddLFxuICAncGFkZGluZyc6IFsncC0nXSxcbiAgJ3BhZGRpbmctdG9wJzogWydwdC0nXSxcbiAgJ3BhZGRpbmctcmlnaHQnOiBbJ3ByLSddLFxuICAncGFkZGluZy1ib3R0b20nOiBbJ3BiLSddLFxuICAncGFkZGluZy1sZWZ0JzogWydwbC0nXSxcbiAgJ3BhZGRpbmcteCc6IFsncHgtJ10sXG4gICdwYWRkaW5nLXknOiBbJ3B5LSddLFxuICAnZ2FwJzogWydnYXAtJ10sXG4gICdib3JkZXItcmFkaXVzJzogWydyb3VuZGVkLScsICdyb3VuZGVkJ10sXG4gICdib3JkZXItd2lkdGgnOiBbJ2JvcmRlci0nLCAnYm9yZGVyLXQtJywgJ2JvcmRlci1yLScsICdib3JkZXItYi0nLCAnYm9yZGVyLWwtJ10sXG4gICdib3JkZXItY29sb3InOiBbJ2JvcmRlci0nXSxcbiAgJ2ZsZXgtZGlyZWN0aW9uJzogWydmbGV4LXJvdycsICdmbGV4LWNvbCcsICdmbGV4LXJvdy1yZXZlcnNlJywgJ2ZsZXgtY29sLXJldmVyc2UnXSxcbiAgJ2ZsZXgtd3JhcCc6IFsnZmxleC13cmFwJywgJ2ZsZXgtbm93cmFwJywgJ2ZsZXgtd3JhcC1yZXZlcnNlJ10sXG4gICdqdXN0aWZ5LWNvbnRlbnQnOiBbJ2p1c3RpZnktJ10sXG4gICdhbGlnbi1pdGVtcyc6IFsnaXRlbXMtJ10sXG4gICdhbGlnbi1jb250ZW50JzogWydjb250ZW50LSddLFxuICAnYWxpZ24tc2VsZic6IFsnc2VsZi0nXSxcbiAgJ3RleHQtYWxpZ24nOiBbJ3RleHQtbGVmdCcsICd0ZXh0LWNlbnRlcicsICd0ZXh0LXJpZ2h0JywgJ3RleHQtanVzdGlmeScsICd0ZXh0LXN0YXJ0JywgJ3RleHQtZW5kJ10sXG4gICdvdmVyZmxvdyc6IFsnb3ZlcmZsb3ctJ10sXG4gICdvdmVyZmxvdy14JzogWydvdmVyZmxvdy14LSddLFxuICAnb3ZlcmZsb3cteSc6IFsnb3ZlcmZsb3cteS0nXSxcbiAgJ3otaW5kZXgnOiBbJ3otJ10sXG4gICdvcGFjaXR5JzogWydvcGFjaXR5LSddLFxuICAnY3Vyc29yJzogWydjdXJzb3ItJ10sXG4gICdwb2ludGVyLWV2ZW50cyc6IFsncG9pbnRlci1ldmVudHMtJ10sXG4gICd1c2VyLXNlbGVjdCc6IFsnc2VsZWN0LSddLFxuICAnYm94LXNoYWRvdyc6IFsnc2hhZG93LSddLFxuICAndHJhbnNpdGlvbic6IFsndHJhbnNpdGlvbi0nXSxcbiAgJ3RyYW5zZm9ybSc6IFsnc2NhbGUtJywgJ3JvdGF0ZS0nLCAndHJhbnNsYXRlLScsICdza2V3LSddLFxuICAndG9wJzogWyd0b3AtJ10sXG4gICdyaWdodCc6IFsncmlnaHQtJ10sXG4gICdib3R0b20nOiBbJ2JvdHRvbS0nXSxcbiAgJ2xlZnQnOiBbJ2xlZnQtJ10sXG4gICdpbnNldCc6IFsnaW5zZXQtJ11cbn07XG5cbmNvbnN0IFVUSUxJVFlfVE9fUFJPUEVSVFlfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnYmxvY2snOiAnZGlzcGxheScsXG4gICdpbmxpbmUtYmxvY2snOiAnZGlzcGxheScsXG4gICdpbmxpbmUnOiAnZGlzcGxheScsXG4gICdmbGV4JzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWZsZXgnOiAnZGlzcGxheScsXG4gICdncmlkJzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWdyaWQnOiAnZGlzcGxheScsXG4gICdoaWRkZW4nOiAnZGlzcGxheScsXG4gICdjb250ZW50cyc6ICdkaXNwbGF5JyxcbiAgJ3N0YXRpYyc6ICdwb3NpdGlvbicsXG4gICdmaXhlZCc6ICdwb3NpdGlvbicsXG4gICdhYnNvbHV0ZSc6ICdwb3NpdGlvbicsXG4gICdyZWxhdGl2ZSc6ICdwb3NpdGlvbicsXG4gICdzdGlja3knOiAncG9zaXRpb24nLFxuICAnZmxleC1yb3cnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1jb2wnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1yb3ctcmV2ZXJzZSc6ICdmbGV4LWRpcmVjdGlvbicsXG4gICdmbGV4LWNvbC1yZXZlcnNlJzogJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgJ2ZsZXgtd3JhcCc6ICdmbGV4LXdyYXAnLFxuICAnZmxleC1ub3dyYXAnOiAnZmxleC13cmFwJyxcbiAgJ2ZsZXgtd3JhcC1yZXZlcnNlJzogJ2ZsZXgtd3JhcCcsXG4gICd0ZXh0LWxlZnQnOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWNlbnRlcic6ICd0ZXh0LWFsaWduJyxcbiAgJ3RleHQtcmlnaHQnOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWp1c3RpZnknOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LXN0YXJ0JzogJ3RleHQtYWxpZ24nLFxuICAndGV4dC1lbmQnOiAndGV4dC1hbGlnbicsXG4gICdmb250LXRoaW4nOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1leHRyYWxpZ2h0JzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtbGlnaHQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ub3JtYWwnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1tZWRpdW0nOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1zZW1pYm9sZCc6ICdmb250LXdlaWdodCcsXG4gICdmb250LWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1leHRyYWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ibGFjayc6ICdmb250LXdlaWdodCcsXG4gICdyb3VuZGVkJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1ub25lJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1zbSc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtbWQnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLWxnJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC14bCc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtMnhsJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC0zeGwnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLWZ1bGwnOiAnYm9yZGVyLXJhZGl1cydcbn07XG5cbmNvbnN0IFBSRUZJWF9QUk9QRVJUWV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICd0ZXh0LSc6ICdjb2xvcicsXG4gICdiZy0nOiAnYmFja2dyb3VuZC1jb2xvcicsXG4gICd3LSc6ICd3aWR0aCcsXG4gICdoLSc6ICdoZWlnaHQnLFxuICAnbWluLXctJzogJ21pbi13aWR0aCcsXG4gICdtYXgtdy0nOiAnbWF4LXdpZHRoJyxcbiAgJ21pbi1oLSc6ICdtaW4taGVpZ2h0JyxcbiAgJ21heC1oLSc6ICdtYXgtaGVpZ2h0JyxcbiAgJ20tJzogJ21hcmdpbicsXG4gICdtdC0nOiAnbWFyZ2luLXRvcCcsXG4gICdtci0nOiAnbWFyZ2luLXJpZ2h0JyxcbiAgJ21iLSc6ICdtYXJnaW4tYm90dG9tJyxcbiAgJ21sLSc6ICdtYXJnaW4tbGVmdCcsXG4gICdteC0nOiAnbWFyZ2luLXgnLFxuICAnbXktJzogJ21hcmdpbi15JyxcbiAgJ3AtJzogJ3BhZGRpbmcnLFxuICAncHQtJzogJ3BhZGRpbmctdG9wJyxcbiAgJ3ByLSc6ICdwYWRkaW5nLXJpZ2h0JyxcbiAgJ3BiLSc6ICdwYWRkaW5nLWJvdHRvbScsXG4gICdwbC0nOiAncGFkZGluZy1sZWZ0JyxcbiAgJ3B4LSc6ICdwYWRkaW5nLXgnLFxuICAncHktJzogJ3BhZGRpbmcteScsXG4gICdnYXAtJzogJ2dhcCcsXG4gICdyb3VuZGVkLSc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ2p1c3RpZnktJzogJ2p1c3RpZnktY29udGVudCcsXG4gICdpdGVtcy0nOiAnYWxpZ24taXRlbXMnLFxuICAnY29udGVudC0nOiAnYWxpZ24tY29udGVudCcsXG4gICdzZWxmLSc6ICdhbGlnbi1zZWxmJyxcbiAgJ292ZXJmbG93LSc6ICdvdmVyZmxvdycsXG4gICdvdmVyZmxvdy14LSc6ICdvdmVyZmxvdy14JyxcbiAgJ292ZXJmbG93LXktJzogJ292ZXJmbG93LXknLFxuICAnei0nOiAnei1pbmRleCcsXG4gICdvcGFjaXR5LSc6ICdvcGFjaXR5JyxcbiAgJ2N1cnNvci0nOiAnY3Vyc29yJyxcbiAgJ3NoYWRvdy0nOiAnYm94LXNoYWRvdycsXG4gICdib3JkZXItJzogJ2JvcmRlci13aWR0aCcsXG4gICdib3JkZXItdC0nOiAnYm9yZGVyLXdpZHRoJyxcbiAgJ2JvcmRlci1yLSc6ICdib3JkZXItd2lkdGgnLFxuICAnYm9yZGVyLWItJzogJ2JvcmRlci13aWR0aCcsXG4gICdib3JkZXItbC0nOiAnYm9yZGVyLXdpZHRoJyxcbiAgJ3RvcC0nOiAndG9wJyxcbiAgJ3JpZ2h0LSc6ICdyaWdodCcsXG4gICdib3R0b20tJzogJ2JvdHRvbScsXG4gICdsZWZ0LSc6ICdsZWZ0JyxcbiAgJ2luc2V0LSc6ICdpbnNldCdcbn07XG5cbmNvbnN0IEZPTlRfU0laRV9VVElMSVRJRVMgPSBuZXcgU2V0KFtcbiAgJ3RleHQteHMnLCAndGV4dC1zbScsICd0ZXh0LWJhc2UnLCAndGV4dC1sZycsICd0ZXh0LXhsJyxcbiAgJ3RleHQtMnhsJywgJ3RleHQtM3hsJywgJ3RleHQtNHhsJywgJ3RleHQtNXhsJywgJ3RleHQtNnhsJyxcbiAgJ3RleHQtN3hsJywgJ3RleHQtOHhsJywgJ3RleHQtOXhsJ1xuXSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wZXJ0eUZvclV0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3RyaXBwZWRVdGlsaXR5ID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgXG4gIGlmIChVVElMSVRZX1RPX1BST1BFUlRZX01BUFtzdHJpcHBlZFV0aWxpdHldKSB7XG4gICAgcmV0dXJuIFVUSUxJVFlfVE9fUFJPUEVSVFlfTUFQW3N0cmlwcGVkVXRpbGl0eV07XG4gIH1cbiAgXG4gIGlmIChGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgcmV0dXJuICdmb250LXNpemUnO1xuICB9XG4gIFxuICBpZiAoc3RyaXBwZWRVdGlsaXR5LnN0YXJ0c1dpdGgoJ3RleHQtJykgJiYgIUZPTlRfU0laRV9VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHN0cmlwcGVkVXRpbGl0eS5zbGljZSg1KTtcbiAgICBpZiAoL15cXGQvLnRlc3QodmFsdWUpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoJ1snKSkge1xuICAgICAgcmV0dXJuICdmb250LXNpemUnO1xuICAgIH1cbiAgICByZXR1cm4gJ2NvbG9yJztcbiAgfVxuICBcbiAgY29uc3Qgc29ydGVkUHJlZml4ZXMgPSBPYmplY3Qua2V5cyhQUkVGSVhfUFJPUEVSVFlfTUFQKS5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKTtcbiAgXG4gIGZvciAoY29uc3QgcHJlZml4IG9mIHNvcnRlZFByZWZpeGVzKSB7XG4gICAgaWYgKHN0cmlwcGVkVXRpbGl0eS5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgIHJldHVybiBQUkVGSVhfUFJPUEVSVFlfTUFQW3ByZWZpeF07XG4gICAgfVxuICB9XG4gIFxuICByZXR1cm4gJ3Vua25vd24nO1xufVxuXG5mdW5jdGlvbiBzdHJpcFZhcmlhbnRzKHV0aWxpdHk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzID0gdXRpbGl0eS5zcGxpdCgnOicpO1xuICByZXR1cm4gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RleHRGb250U2l6ZVV0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgcmV0dXJuIEZPTlRfU0laRV9VVElMSVRJRVMuaGFzKHN0cmlwcGVkKSB8fCAoXG4gICAgc3RyaXBwZWQuc3RhcnRzV2l0aCgndGV4dC0nKSAmJiAvXlxcZC8udGVzdChzdHJpcHBlZC5zbGljZSg1KSlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGV4dENvbG9yVXRpbGl0eSh1dGlsaXR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgc3RyaXBwZWQgPSBzdHJpcFZhcmlhbnRzKHV0aWxpdHkpO1xuICBcbiAgaWYgKEZPTlRfU0laRV9VVElMSVRJRVMuaGFzKHN0cmlwcGVkKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBcbiAgaWYgKHN0cmlwcGVkLnN0YXJ0c1dpdGgoJ3RleHQtJykpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHN0cmlwcGVkLnNsaWNlKDUpO1xuICAgIGlmICgvXlxcZC8udGVzdCh2YWx1ZSkgfHwgdmFsdWUuc3RhcnRzV2l0aCgnWycpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIFxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wZXJ0aWVzRm9yVXRpbGl0aWVzKHV0aWxpdGllczogc3RyaW5nW10pOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT4ge1xuICBjb25zdCBwcm9wZXJ0eU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcbiAgXG4gIGZvciAoY29uc3QgdXRpbGl0eSBvZiB1dGlsaXRpZXMpIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IGdldFByb3BlcnR5Rm9yVXRpbGl0eSh1dGlsaXR5KTtcbiAgICBcbiAgICBpZiAoIXByb3BlcnR5TWFwLmhhcyhwcm9wZXJ0eSkpIHtcbiAgICAgIHByb3BlcnR5TWFwLnNldChwcm9wZXJ0eSwgW10pO1xuICAgIH1cbiAgICBcbiAgICBwcm9wZXJ0eU1hcC5nZXQocHJvcGVydHkpIS5wdXNoKHV0aWxpdHkpO1xuICB9XG4gIFxuICByZXR1cm4gcHJvcGVydHlNYXA7XG59XG5cbmV4cG9ydCBjb25zdCBQUk9QRVJUWV9DT05GTElDVF9HUk9VUFM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHtcbiAgJ2Rpc3BsYXknOiBbJ2Rpc3BsYXknXSxcbiAgJ3Bvc2l0aW9uJzogWydwb3NpdGlvbiddLFxuICAnd2lkdGgnOiBbJ3dpZHRoJywgJ21pbi13aWR0aCcsICdtYXgtd2lkdGgnXSxcbiAgJ2hlaWdodCc6IFsnaGVpZ2h0JywgJ21pbi1oZWlnaHQnLCAnbWF4LWhlaWdodCddLFxuICAnbWFyZ2luJzogWydtYXJnaW4nLCAnbWFyZ2luLXRvcCcsICdtYXJnaW4tcmlnaHQnLCAnbWFyZ2luLWJvdHRvbScsICdtYXJnaW4tbGVmdCcsICdtYXJnaW4teCcsICdtYXJnaW4teSddLFxuICAncGFkZGluZyc6IFsncGFkZGluZycsICdwYWRkaW5nLXRvcCcsICdwYWRkaW5nLXJpZ2h0JywgJ3BhZGRpbmctYm90dG9tJywgJ3BhZGRpbmctbGVmdCcsICdwYWRkaW5nLXgnLCAncGFkZGluZy15J10sXG4gICdmbGV4LWRpcmVjdGlvbic6IFsnZmxleC1kaXJlY3Rpb24nXSxcbiAgJ2ZsZXgtd3JhcCc6IFsnZmxleC13cmFwJ10sXG4gICdqdXN0aWZ5LWNvbnRlbnQnOiBbJ2p1c3RpZnktY29udGVudCddLFxuICAnYWxpZ24taXRlbXMnOiBbJ2FsaWduLWl0ZW1zJ10sXG4gICd0ZXh0LWFsaWduJzogWyd0ZXh0LWFsaWduJ10sXG4gICdmb250LXNpemUnOiBbJ2ZvbnQtc2l6ZSddLFxuICAnZm9udC13ZWlnaHQnOiBbJ2ZvbnQtd2VpZ2h0J10sXG4gICdjb2xvcic6IFsnY29sb3InXSxcbiAgJ2JhY2tncm91bmQtY29sb3InOiBbJ2JhY2tncm91bmQtY29sb3InXSxcbiAgJ2JvcmRlci1yYWRpdXMnOiBbJ2JvcmRlci1yYWRpdXMnXSxcbiAgJ2JvcmRlci13aWR0aCc6IFsnYm9yZGVyLXdpZHRoJywgJ2JvcmRlci10b3Atd2lkdGgnLCAnYm9yZGVyLXJpZ2h0LXdpZHRoJywgJ2JvcmRlci1ib3R0b20td2lkdGgnLCAnYm9yZGVyLWxlZnQtd2lkdGgnXSxcbiAgJ292ZXJmbG93JzogWydvdmVyZmxvdycsICdvdmVyZmxvdy14JywgJ292ZXJmbG93LXknXSxcbiAgJ3otaW5kZXgnOiBbJ3otaW5kZXgnXSxcbiAgJ29wYWNpdHknOiBbJ29wYWNpdHknXSxcbiAgJ2dhcCc6IFsnZ2FwJ10sXG4gICdpbnNldCc6IFsnaW5zZXQnLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J11cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25mbGljdEdyb3VwKHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgZm9yIChjb25zdCBbZ3JvdXBOYW1lLCBwcm9wZXJ0aWVzXSBvZiBPYmplY3QuZW50cmllcyhQUk9QRVJUWV9DT05GTElDVF9HUk9VUFMpKSB7XG4gICAgaWYgKHByb3BlcnRpZXMuaW5jbHVkZXMocHJvcGVydHkpKSB7XG4gICAgICByZXR1cm4gZ3JvdXBOYW1lO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnRpZXNDb25mbGljdChwcm9wMTogc3RyaW5nLCBwcm9wMjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGdyb3VwMSA9IGdldENvbmZsaWN0R3JvdXAocHJvcDEpO1xuICBjb25zdCBncm91cDIgPSBnZXRDb25mbGljdEdyb3VwKHByb3AyKTtcbiAgXG4gIGlmIChncm91cDEgJiYgZ3JvdXAyICYmIGdyb3VwMSA9PT0gZ3JvdXAyKSB7XG4gICAgaWYgKHByb3AxID09PSBwcm9wMikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGdyb3VwID0gUFJPUEVSVFlfQ09ORkxJQ1RfR1JPVVBTW2dyb3VwMV07XG4gICAgXG4gICAgaWYgKGdyb3VwLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIGlmIChncm91cDEgPT09ICdtYXJnaW4nIHx8IGdyb3VwMSA9PT0gJ3BhZGRpbmcnKSB7XG4gICAgICBpZiAocHJvcDEgPT09IGdyb3VwMSB8fCBwcm9wMiA9PT0gZ3JvdXAxKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpZiAoZ3JvdXAxID09PSAnaW5zZXQnKSB7XG4gICAgICBpZiAocHJvcDEgPT09ICdpbnNldCcgfHwgcHJvcDIgPT09ICdpbnNldCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG4gIH1cbiAgXG4gIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG59Il19
@@ -0,0 +1,25 @@
1
+ export interface Specificity {
2
+ inline: number;
3
+ id: number;
4
+ class: number;
5
+ element: number;
6
+ }
7
+ export declare const ZERO_SPECIFICITY: Specificity;
8
+ export declare function createSpecificity(inline?: number, id?: number, cls?: number, element?: number): Specificity;
9
+ export declare function addSpecificity(a: Specificity, b: Specificity): Specificity;
10
+ export declare function compareSpecificity(a: Specificity, b: Specificity): number;
11
+ export declare function specificityToString(spec: Specificity): string;
12
+ export declare function calculateSelectorSpecificity(selector: string): Specificity;
13
+ export declare function calculateDescendantSpecificity(parentType: 'class' | 'element', parentName: string, targetType: 'class' | 'element', targetName: string): Specificity;
14
+ export declare function calculateSelectorSpecificityFromParts(parts: {
15
+ hasClass: boolean;
16
+ hasElement: boolean;
17
+ hasPseudo: boolean;
18
+ pseudoCount?: number;
19
+ isDescendant?: boolean;
20
+ parentType?: 'class' | 'element';
21
+ targetType?: 'class' | 'element';
22
+ }): Specificity;
23
+ export declare function isHigherSpecificity(a: Specificity, b: Specificity): boolean;
24
+ export declare function isEqualSpecificity(a: Specificity, b: Specificity): boolean;
25
+ export declare function getHigherSpecificity(a: Specificity, b: Specificity): Specificity;
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZERO_SPECIFICITY = void 0;
4
+ exports.createSpecificity = createSpecificity;
5
+ exports.addSpecificity = addSpecificity;
6
+ exports.compareSpecificity = compareSpecificity;
7
+ exports.specificityToString = specificityToString;
8
+ exports.calculateSelectorSpecificity = calculateSelectorSpecificity;
9
+ exports.calculateDescendantSpecificity = calculateDescendantSpecificity;
10
+ exports.calculateSelectorSpecificityFromParts = calculateSelectorSpecificityFromParts;
11
+ exports.isHigherSpecificity = isHigherSpecificity;
12
+ exports.isEqualSpecificity = isEqualSpecificity;
13
+ exports.getHigherSpecificity = getHigherSpecificity;
14
+ const logger_1 = require("./logger");
15
+ exports.ZERO_SPECIFICITY = { inline: 0, id: 0, class: 0, element: 0 };
16
+ function createSpecificity(inline = 0, id = 0, cls = 0, element = 0) {
17
+ return { inline, id, class: cls, element };
18
+ }
19
+ function addSpecificity(a, b) {
20
+ return {
21
+ inline: a.inline + b.inline,
22
+ id: a.id + b.id,
23
+ class: a.class + b.class,
24
+ element: a.element + b.element
25
+ };
26
+ }
27
+ function compareSpecificity(a, b) {
28
+ if (a.inline !== b.inline)
29
+ return a.inline - b.inline;
30
+ if (a.id !== b.id)
31
+ return a.id - b.id;
32
+ if (a.class !== b.class)
33
+ return a.class - b.class;
34
+ return a.element - b.element;
35
+ }
36
+ function specificityToString(spec) {
37
+ return `(${spec.inline}, ${spec.id}, ${spec.class}, ${spec.element})`;
38
+ }
39
+ const ID_SELECTOR_REGEX = /#[a-zA-Z_-][a-zA-Z0-9_-]*/g;
40
+ const CLASS_SELECTOR_REGEX = /\.[a-zA-Z_-][a-zA-Z0-9_-]*/g;
41
+ const PSEUDO_CLASS_REGEX = /:[a-zA-Z-]+/g;
42
+ const ATTRIBUTE_SELECTOR_REGEX = /\[[^\]]+\]/g;
43
+ const ELEMENT_REGEX = /^[a-zA-Z][a-zA-Z0-9]*/;
44
+ const PSEUDO_ELEMENTS = new Set(['before', 'after', 'first-line', 'first-letter', 'selection', 'marker', 'placeholder']);
45
+ const PSEUDO_CLASSES_WITH_ARGS = new Set(['not', 'has', 'is', 'where', 'nth-child', 'nth-of-type', 'nth-last-child', 'nth-last-of-type']);
46
+ function countIds(selector) {
47
+ const matches = selector.match(ID_SELECTOR_REGEX);
48
+ return matches ? matches.length : 0;
49
+ }
50
+ function countClasses(selector) {
51
+ const matches = selector.match(CLASS_SELECTOR_REGEX);
52
+ return matches ? matches.length : 0;
53
+ }
54
+ function countAttributeSelectors(selector) {
55
+ const matches = selector.match(ATTRIBUTE_SELECTOR_REGEX);
56
+ return matches ? matches.length : 0;
57
+ }
58
+ function countPseudoClasses(selector) {
59
+ let count = 0;
60
+ const pseudoMatches = selector.match(PSEUDO_CLASS_REGEX);
61
+ if (pseudoMatches) {
62
+ for (const match of pseudoMatches) {
63
+ const pseudoName = match.slice(1);
64
+ if (PSEUDO_ELEMENTS.has(pseudoName)) {
65
+ continue;
66
+ }
67
+ if (PSEUDO_CLASSES_WITH_ARGS.has(pseudoName)) {
68
+ continue;
69
+ }
70
+ count++;
71
+ }
72
+ }
73
+ return count;
74
+ }
75
+ function countElements(selector) {
76
+ let count = 0;
77
+ const cleaned = selector
78
+ .replace(ID_SELECTOR_REGEX, ' ')
79
+ .replace(CLASS_SELECTOR_REGEX, ' ')
80
+ .replace(PSEUDO_CLASS_REGEX, ' ')
81
+ .replace(ATTRIBUTE_SELECTOR_REGEX, ' ')
82
+ .replace(/[>+~]/g, ' ')
83
+ .trim();
84
+ const parts = cleaned.split(/\s+/).filter(Boolean);
85
+ for (const part of parts) {
86
+ if (ELEMENT_REGEX.test(part)) {
87
+ if (!PSEUDO_ELEMENTS.has(part) && !PSEUDO_CLASSES_WITH_ARGS.has(part)) {
88
+ count++;
89
+ }
90
+ }
91
+ }
92
+ return count;
93
+ }
94
+ function calculateSelectorSpecificity(selector) {
95
+ const trimmed = selector.trim();
96
+ if (!trimmed) {
97
+ return exports.ZERO_SPECIFICITY;
98
+ }
99
+ if (trimmed.startsWith('style=')) {
100
+ return createSpecificity(1, 0, 0, 0);
101
+ }
102
+ try {
103
+ const idCount = countIds(trimmed);
104
+ const classCount = countClasses(trimmed);
105
+ const attrCount = countAttributeSelectors(trimmed);
106
+ const pseudoClassCount = countPseudoClasses(trimmed);
107
+ const elementCount = countElements(trimmed);
108
+ return createSpecificity(0, idCount, classCount + attrCount + pseudoClassCount, elementCount);
109
+ }
110
+ catch (error) {
111
+ logger_1.logger.verbose(`Failed to calculate specificity for: ${selector}`);
112
+ return exports.ZERO_SPECIFICITY;
113
+ }
114
+ }
115
+ function calculateDescendantSpecificity(parentType, parentName, targetType, targetName) {
116
+ const parentSpec = parentType === 'class'
117
+ ? createSpecificity(0, 0, 1, 0)
118
+ : createSpecificity(0, 0, 0, 1);
119
+ const targetSpec = targetType === 'class'
120
+ ? createSpecificity(0, 0, 1, 0)
121
+ : createSpecificity(0, 0, 0, 1);
122
+ return addSpecificity(parentSpec, targetSpec);
123
+ }
124
+ function calculateSelectorSpecificityFromParts(parts) {
125
+ let spec = exports.ZERO_SPECIFICITY;
126
+ if (parts.hasClass) {
127
+ spec = addSpecificity(spec, createSpecificity(0, 0, 1, 0));
128
+ }
129
+ if (parts.hasElement) {
130
+ spec = addSpecificity(spec, createSpecificity(0, 0, 0, 1));
131
+ }
132
+ if (parts.hasPseudo) {
133
+ const pseudoCount = parts.pseudoCount || 1;
134
+ spec = addSpecificity(spec, createSpecificity(0, 0, pseudoCount, 0));
135
+ }
136
+ if (parts.isDescendant && parts.parentType && parts.targetType) {
137
+ spec = calculateDescendantSpecificity(parts.parentType, '', parts.targetType, '');
138
+ }
139
+ return spec;
140
+ }
141
+ function isHigherSpecificity(a, b) {
142
+ return compareSpecificity(a, b) > 0;
143
+ }
144
+ function isEqualSpecificity(a, b) {
145
+ return compareSpecificity(a, b) === 0;
146
+ }
147
+ function getHigherSpecificity(a, b) {
148
+ return compareSpecificity(a, b) >= 0 ? a : b;
149
+ }
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY2lmaWNpdHlDYWxjdWxhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3NwZWNpZmljaXR5Q2FsY3VsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFXQSw4Q0FFQztBQUVELHdDQU9DO0FBRUQsZ0RBS0M7QUFFRCxrREFFQztBQXlFRCxvRUE0QkM7QUFFRCx3RUFlQztBQUVELHNGQTZCQztBQUVELGtEQUVDO0FBRUQsZ0RBRUM7QUFFRCxvREFFQztBQWxNRCxxQ0FBa0M7QUFTckIsUUFBQSxnQkFBZ0IsR0FBZ0IsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFFeEYsU0FBZ0IsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUM7SUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUM3QyxDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLENBQWMsRUFBRSxDQUFjO0lBQzNELE9BQU87UUFDTCxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTTtRQUMzQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRTtRQUNmLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLO1FBQ3hCLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPO0tBQy9CLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0Isa0JBQWtCLENBQUMsQ0FBYyxFQUFFLENBQWM7SUFDL0QsSUFBSSxDQUFDLENBQUMsTUFBTSxL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SUFDaEUsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxDQUFjLEVBQUUsQ0FBYztJQUMvRCxPQUFPLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELFNBQWdCLG9CQUFvQixDQUFDLENBQWMsRUFBRSxDQUFjO0lBQ2pFLE9BQU8sa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBTcGVjaWZpY2l0eSB7XG4gIGlubGluZTogbnVtYmVyO1xuICBpZDogbnVtYmVyO1xuICBjbGFzczogbnVtYmVyO1xuICBlbGVtZW50OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBaRVJPX1NQRUNJRklDSVRZOiBTcGVjaWZpY2l0eSA9IHsgaW5saW5lOiAwLCBpZDogMCwgY2xhc3M6IDAsIGVsZW1lbnQ6IDAgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNwZWNpZmljaXR5KGlubGluZSA9IDAsIGlkID0gMCwgY2xzID0gMCwgZWxlbWVudCA9IDApOiBTcGVjaWZpY2l0eSB7XG4gIHJldHVybiB7IGlubGluZSwgaWQsIGNsYXNzOiBjbHMsIGVsZW1lbnQgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFNwZWNpZmljaXR5KGE6IFNwZWNpZmljaXR5LCBiOiBTcGVjaWZpY2l0eSk6IFNwZWNpZmljaXR5IHtcbiAgcmV0dXJuIHtcbiAgICBpbmxpbmU6IGEuaW5saW5lICsgYi5pbmxpbmUsXG4gICAgaWQ6IGEuaWQgKyBiLmlkLFxuICAgIGNsYXNzOiBhLmNsYXNzICsgYi5jbGFzcyxcbiAgICBlbGVtZW50OiBhLmVsZW1lbnQgKyBiLmVsZW1lbnRcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVTcGVjaWZpY2l0eShhOiBTcGVjaWZpY2l0eSwgYjogU3BlY2lmaWNpdHkpOiBudW1iZXIge1xuICBpZiAoYS5pbmxpbmUgIT09IGIuaW5saW5lKSByZXR1cm4gYS5pbmxpbmUgLSBiLmlubGluZTtcbiAgaWYgKGEuaWQgIT09IGIuaWQpIHJldHVybiBhLmlkIC0gYi5pZDtcbiAgaWYgKGEuY2xhc3MgIT09IGIuY2xhc3MpIHJldHVybiBhLmNsYXNzIC0gYi5jbGFzcztcbiAgcmV0dXJuIGEuZWxlbWVudCAtIGIuZWxlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwZWNpZmljaXR5VG9TdHJpbmcoc3BlYzogU3BlY2lmaWNpdHkpOiBzdHJpbmcge1xuICByZXR1cm4gYCgke3NwZWMuaW5saW5lfSwgJHtzcGVjLmlkfSwgJHtzcGVjLmNsYXNzfSwgJHtzcGVjLmVsZW1lbnR9KWA7XG59XG5cbmNvbnN0IElEX1NFTEVDVE9SX1JFR0VYID0gLyNbYS16QS1aXy1dW2EtekEtWjAtOV8tXSovZztcbmNvbnN0IENMQVNTX1NFTEVDVE9SX1JFR0VYID0gL1xcLlthLXpBLVpfLV1bYS16QS1aMC05Xy1dKi9nO1xuY29uc3QgUFNFVURPX0NMQVNTX1JFR0VYID0gLzpbYS16QS1aLV0rL2c7XG5jb25zdCBBVFRSSUJVVEVfU0VMRUNUT1JfUkVHRVggPSAvXFxbW15cXF1dK1xcXS9nO1xuY29uc3QgRUxFTUVOVF9SRUdFWCA9IC9eW2EtekEtWl1bYS16QS1aMC05XSovO1xuXG5jb25zdCBQU0VVRE9fRUxFTUVOVFMgPSBuZXcgU2V0KFsnYmVmb3JlJywgJ2FmdGVyJywgJ2ZpcnN0LWxpbmUnLCAnZmlyc3QtbGV0dGVyJywgJ3NlbGVjdGlvbicsICdtYXJrZXInLCAncGxhY2Vob2xkZXInXSk7XG5jb25zdCBQU0VVRE9fQ0xBU1NFU19XSVRIX0FSR1MgPSBuZXcgU2V0KFsnbm90JywgJ2hhcycsICdpcycsICd3aGVyZScsICdudGgtY2hpbGQnLCAnbnRoLW9mLXR5cGUnLCAnbnRoLWxhc3QtY2hpbGQnLCAnbnRoLWxhc3Qtb2YtdHlwZSddKTtcblxuZnVuY3Rpb24gY291bnRJZHMoc2VsZWN0b3I6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IG1hdGNoZXMgPSBzZWxlY3Rvci5tYXRjaChJRF9TRUxFQ1RPUl9SRUdFWCk7XG4gIHJldHVybiBtYXRjaGVzID8gbWF0Y2hlcy5sZW5ndGggOiAwO1xufVxuXG5mdW5jdGlvbiBjb3VudENsYXNzZXMoc2VsZWN0b3I6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IG1hdGNoZXMgPSBzZWxlY3Rvci5tYXRjaChDTEFTU19TRUxFQ1RPUl9SRUdFWCk7XG4gIHJldHVybiBtYXRjaGVzID8gbWF0Y2hlcy5sZW5ndGggOiAwO1xufVxuXG5mdW5jdGlvbiBjb3VudEF0dHJpYnV0ZVNlbGVjdG9ycyhzZWxlY3Rvcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3QgbWF0Y2hlcyA9IHNlbGVjdG9yLm1hdGNoKEFUVFJJQlVURV9TRUxFQ1RPUl9SRUdFWCk7XG4gIHJldHVybiBtYXRjaGVzID8gbWF0Y2hlcy5sZW5ndGggOiAwO1xufVxuXG5mdW5jdGlvbiBjb3VudFBzZXVkb0NsYXNzZXMoc2VsZWN0b3I6IHN0cmluZyk6IG51bWJlciB7XG4gIGxldCBjb3VudCA9IDA7XG4gIGNvbnN0IHBzZXVkb01hdGNoZXMgPSBzZWxlY3Rvci5tYXRjaChQU0VVRE9fQ0xBU1NfUkVHRVgpO1xuICBcbiAgaWYgKHBzZXVkb01hdGNoZXMpIHtcbiAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIHBzZXVkb01hdGNoZXMpIHtcbiAgICAgIGNvbnN0IHBzZXVkb05hbWUgPSBtYXRjaC5zbGljZSgxKTtcbiAgICAgIFxuICAgICAgaWYgKFBTRVVET19FTEVNRU5UUy5oYXMocHNldWRvTmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmIChQU0VVRE9fQ0xBU1NFU19XSVRIX0FSR1MuaGFzKHBzZXVkb05hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICBjb3VudCsrO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIGNvdW50O1xufVxuXG5mdW5jdGlvbiBjb3VudEVsZW1lbnRzKHNlbGVjdG9yOiBzdHJpbmcpOiBudW1iZXIge1xuICBsZXQgY291bnQgPSAwO1xuICBcbiAgY29uc3QgY2xlYW5lZCA9IHNlbGVjdG9yXG4gICAgLnJlcGxhY2UoSURfU0VMRUNUT1JfUkVHRVgsICcgJylcbiAgICAucmVwbGFjZShDTEFTU19TRUxFQ1RPUl9SRUdFWCwgJyAnKVxuICAgIC5yZXBsYWNlKFBTRVVET19DTEFTU19SRUdFWCwgJyAnKVxuICAgIC5yZXBsYWNlKEFUVFJJQlVURV9TRUxFQ1RPUl9SRUdFWCwgJyAnKVxuICAgIC5yZXBsYWNlKC9bPit+XS9nLCAnICcpXG4gICAgLnRyaW0oKTtcbiAgXG4gIGNvbnN0IHBhcnRzID0gY2xlYW5lZC5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKTtcbiAgXG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmIChFTEVNRU5UX1JFR0VYLnRlc3QocGFydCkpIHtcbiAgICAgIGlmICghUFNFVURPX0VMRU1FTlRTLmhhcyhwYXJ0KSAmJiAhUFNFVURPX0NMQVNTRVNfV0lUSF9BUkdTLmhhcyhwYXJ0KSkge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIGNvdW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlU2VsZWN0b3JTcGVjaWZpY2l0eShzZWxlY3Rvcjogc3RyaW5nKTogU3BlY2lmaWNpdHkge1xuICBjb25zdCB0cmltbWVkID0gc2VsZWN0b3IudHJpbSgpO1xuICBcbiAgaWYgKCF0cmltbWVkKSB7XG4gICAgcmV0dXJuIFpFUk9fU1BFQ0lGSUNJVFk7XG4gIH1cbiAgXG4gIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ3N0eWxlPScpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZVNwZWNpZmljaXR5KDEsIDAsIDAsIDApO1xuICB9XG4gIFxuICB0cnkge1xuICAgIGNvbnN0IGlkQ291bnQgPSBjb3VudElkcyh0cmltbWVkKTtcbiAgICBjb25zdCBjbGFzc0NvdW50ID0gY291bnRDbGFzc2VzKHRyaW1tZWQpO1xuICAgIGNvbnN0IGF0dHJDb3VudCA9IGNvdW50QXR0cmlidXRlU2VsZWN0b3JzKHRyaW1tZWQpO1xuICAgIGNvbnN0IHBzZXVkb0NsYXNzQ291bnQgPSBjb3VudFBzZXVkb0NsYXNzZXModHJpbW1lZCk7XG4gICAgY29uc3QgZWxlbWVudENvdW50ID0gY291bnRFbGVtZW50cyh0cmltbWVkKTtcbiAgICBcbiAgICByZXR1cm4gY3JlYXRlU3BlY2lmaWNpdHkoXG4gICAgICAwLFxuICAgICAgaWRDb3VudCxcbiAgICAgIGNsYXNzQ291bnQgKyBhdHRyQ291bnQgKyBwc2V1ZG9DbGFzc0NvdW50LFxuICAgICAgZWxlbWVudENvdW50XG4gICAgKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2dnZXIudmVyYm9zZShgRmFpbGVkIHRvIGNhbGN1bGF0ZSBzcGVjaWZpY2l0eSBmb3I6ICR7c2VsZWN0b3J9YCk7XG4gICAgcmV0dXJuIFpFUk9fU1BFQ0lGSUNJVFk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZURlc2NlbmRhbnRTcGVjaWZpY2l0eShcbiAgcGFyZW50VHlwZTogJ2NsYXNzJyB8ICdlbGVtZW50JyxcbiAgcGFyZW50TmFtZTogc3RyaW5nLFxuICB0YXJnZXRUeXBlOiAnY2xhc3MnIHwgJ2VsZW1lbnQnLFxuICB0YXJnZXROYW1lOiBzdHJpbmdcbik6IFNwZWNpZmljaXR5IHtcbiAgY29uc3QgcGFyZW50U3BlYyA9IHBhcmVudFR5cGUgPT09ICdjbGFzcydcbiAgICA/IGNyZWF0ZVNwZWNpZmljaXR5KDAsIDAsIDEsIDApXG4gICAgOiBjcmVhdGVTcGVjaWZpY2l0eSgwLCAwLCAwLCAxKTtcbiAgXG4gIGNvbnN0IHRhcmdldFNwZWMgPSB0YXJnZXRUeXBlID09PSAnY2xhc3MnXG4gICAgPyBjcmVhdGVTcGVjaWZpY2l0eSgwLCAwLCAxLCAwKVxuICAgIDogY3JlYXRlU3BlY2lmaWNpdHkoMCwgMCwgMCwgMSk7XG4gIFxuICByZXR1cm4gYWRkU3BlY2lmaWNpdHkocGFyZW50U3BlYywgdGFyZ2V0U3BlYyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVTZWxlY3RvclNwZWNpZmljaXR5RnJvbVBhcnRzKHBhcnRzOiB7XG4gIGhhc0NsYXNzOiBib29sZWFuO1xuICBoYXNFbGVtZW50OiBib29sZWFuO1xuICBoYXNQc2V1ZG86IGJvb2xlYW47XG4gIHBzZXVkb0NvdW50PzogbnVtYmVyO1xuICBpc0Rlc2NlbmRhbnQ/OiBib29sZWFuO1xuICBwYXJlbnRUeXBlPzogJ2NsYXNzJyB8ICdlbGVtZW50JztcbiAgdGFyZ2V0VHlwZT86ICdjbGFzcycgfCAnZWxlbWVudCc7XG59KTogU3BlY2lmaWNpdHkge1xuICBsZXQgc3BlYyA9IFpFUk9fU1BFQ0lGSUNJVFk7XG4gIFxuICBpZiAocGFydHMuaGFzQ2xhc3MpIHtcbiAgICBzcGVjID0gYWRkU3BlY2lmaWNpdHkoc3BlYywgY3JlYXRlU3BlY2lmaWNpdHkoMCwgMCwgMSwgMCkpO1xuICB9XG4gIFxuICBpZiAocGFydHMuaGFzRWxlbWVudCkge1xuICAgIHNwZWMgPSBhZGRTcGVjaWZpY2l0eShzcGVjLCBjcmVhdGVTcGVjaWZpY2l0eSgwLCAwLCAwLCAxKSk7XG4gIH1cbiAgXG4gIGlmIChwYXJ0cy5oYXNQc2V1ZG8pIHtcbiAgICBjb25zdCBwc2V1ZG9Db3VudCA9IHBhcnRzLnBzZXVkb0NvdW50IHx8IDE7XG4gICAgc3BlYyA9IGFkZFNwZWNpZmljaXR5KHNwZWMsIGNyZWF0ZVNwZWNpZmljaXR5KDAsIDAsIHBzZXVkb0NvdW50LCAwKSk7XG4gIH1cbiAgXG4gIGlmIChwYXJ0cy5pc0Rlc2NlbmRhbnQgJiYgcGFydHMucGFyZW50VHlwZSAmJiBwYXJ0cy50YXJnZXRUeXBlKSB7XG4gICAgc3BlYyA9IGNhbGN1bGF0ZURlc2NlbmRhbnRTcGVjaWZpY2l0eShwYXJ0cy5wYXJlbnRUeXBlLCAnJywgcGFydHMudGFyZ2V0VHlwZSwgJycpO1xuICB9XG4gIFxuICByZXR1cm4gc3BlYztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSGlnaGVyU3BlY2lmaWNpdHkoYTogU3BlY2lmaWNpdHksIGI6IFNwZWNpZmljaXR5KTogYm9vbGVhbiB7XG4gIHJldHVybiBjb21wYXJlU3BlY2lmaWNpdHkoYSwgYikgPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFcXVhbFNwZWNpZmljaXR5KGE6IFNwZWNpZmljaXR5LCBiOiBTcGVjaWZpY2l0eSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY29tcGFyZVNwZWNpZmljaXR5KGEsIGIpID09PSAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGlnaGVyU3BlY2lmaWNpdHkoYTogU3BlY2lmaWNpdHksIGI6IFNwZWNpZmljaXR5KTogU3BlY2lmaWNpdHkge1xuICByZXR1cm4gY29tcGFyZVNwZWNpZmljaXR5KGEsIGIpID49IDAgPyBhIDogYjtcbn0iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "css-to-tailwind-react",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Convert traditional CSS (inline, internal, and external) into Tailwind CSS utility classes for React-based frameworks",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",