css-to-tailwind-react 0.2.2 → 0.3.1
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/cssParser.d.ts +3 -0
- package/dist/cssParser.js +78 -6
- package/dist/tailwindMapper.d.ts +38 -0
- package/dist/tailwindMapper.js +993 -80
- package/dist/utils/propertyMapper.d.ts +2 -0
- package/dist/utils/propertyMapper.js +133 -6
- package/dist/utils/variableRegistry.d.ts +52 -0
- package/dist/utils/variableRegistry.js +196 -0
- package/package.json +1 -1
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VariableRegistry = void 0;
|
|
4
|
+
exports.parseVarExpression = parseVarExpression;
|
|
5
|
+
exports.isCssVariable = isCssVariable;
|
|
6
|
+
exports.isVarExpression = isVarExpression;
|
|
7
|
+
exports.createGlobalScope = createGlobalScope;
|
|
8
|
+
exports.createSelectorScope = createSelectorScope;
|
|
9
|
+
const specificityCalculator_1 = require("./specificityCalculator");
|
|
10
|
+
const logger_1 = require("./logger");
|
|
11
|
+
function createScopeKey(scope) {
|
|
12
|
+
if (scope.type === 'global') {
|
|
13
|
+
return ':root';
|
|
14
|
+
}
|
|
15
|
+
return scope.selector || '';
|
|
16
|
+
}
|
|
17
|
+
class VariableRegistry {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.variables = new Map();
|
|
20
|
+
this.resolutionCache = new Map();
|
|
21
|
+
this.resolutionStack = new Set();
|
|
22
|
+
}
|
|
23
|
+
register(variable) {
|
|
24
|
+
const key = variable.name;
|
|
25
|
+
if (!this.variables.has(key)) {
|
|
26
|
+
this.variables.set(key, []);
|
|
27
|
+
}
|
|
28
|
+
const definitions = this.variables.get(key);
|
|
29
|
+
definitions.push(variable);
|
|
30
|
+
definitions.sort((a, b) => {
|
|
31
|
+
const specCompare = (0, specificityCalculator_1.compareSpecificity)(b.specificity, a.specificity);
|
|
32
|
+
if (specCompare !== 0)
|
|
33
|
+
return specCompare;
|
|
34
|
+
return b.sourceOrder - a.sourceOrder;
|
|
35
|
+
});
|
|
36
|
+
this.resolutionCache.clear();
|
|
37
|
+
}
|
|
38
|
+
resolve(varName, context, fallback) {
|
|
39
|
+
const cacheKey = `${varName}:${context.selector}:${context.variants.join(',')}`;
|
|
40
|
+
if (this.resolutionCache.has(cacheKey)) {
|
|
41
|
+
return { value: this.resolutionCache.get(cacheKey), resolved: true, source: 'cache' };
|
|
42
|
+
}
|
|
43
|
+
if (this.resolutionStack.has(varName)) {
|
|
44
|
+
logger_1.logger.warn(`Circular reference detected for variable: ${varName}`);
|
|
45
|
+
return { value: fallback || '', resolved: false, source: 'circular' };
|
|
46
|
+
}
|
|
47
|
+
this.resolutionStack.add(varName);
|
|
48
|
+
try {
|
|
49
|
+
const definitions = this.variables.get(varName);
|
|
50
|
+
if (!definitions || definitions.length === 0) {
|
|
51
|
+
if (fallback !== undefined) {
|
|
52
|
+
const resolvedFallback = this.resolveValue(fallback, context);
|
|
53
|
+
return { value: resolvedFallback.value, resolved: true, source: 'fallback' };
|
|
54
|
+
}
|
|
55
|
+
logger_1.logger.warn(`Undefined CSS variable: ${varName}`);
|
|
56
|
+
return { value: '', resolved: false, source: 'undefined' };
|
|
57
|
+
}
|
|
58
|
+
const applicableDefs = definitions.filter(def => this.isApplicable(def, context));
|
|
59
|
+
if (applicableDefs.length === 0) {
|
|
60
|
+
if (fallback !== undefined) {
|
|
61
|
+
const resolvedFallback = this.resolveValue(fallback, context);
|
|
62
|
+
return { value: resolvedFallback.value, resolved: true, source: 'fallback' };
|
|
63
|
+
}
|
|
64
|
+
logger_1.logger.warn(`No applicable definition for variable: ${varName} in context: ${context.selector}`);
|
|
65
|
+
return { value: '', resolved: false, source: 'no-match' };
|
|
66
|
+
}
|
|
67
|
+
const bestMatch = applicableDefs[0];
|
|
68
|
+
const resolvedValue = this.resolveValue(bestMatch.value, context);
|
|
69
|
+
if (resolvedValue.isCircular) {
|
|
70
|
+
return {
|
|
71
|
+
value: resolvedValue.value,
|
|
72
|
+
resolved: false,
|
|
73
|
+
source: 'circular'
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const result = {
|
|
77
|
+
value: resolvedValue.value,
|
|
78
|
+
resolved: !resolvedValue.hasUnresolved,
|
|
79
|
+
source: resolvedValue.hasUnresolved ? 'unresolved' : 'resolved'
|
|
80
|
+
};
|
|
81
|
+
this.resolutionCache.set(cacheKey, result.value);
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
this.resolutionStack.delete(varName);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
resolveValue(value, context) {
|
|
89
|
+
const varPattern = /var\s*\(\s*(--[a-zA-Z0-9_-]+)\s*(?:,\s*([^)]+))?\s*\)/g;
|
|
90
|
+
let result = value;
|
|
91
|
+
let hasUnresolved = false;
|
|
92
|
+
let isCircular = false;
|
|
93
|
+
let match;
|
|
94
|
+
let iterations = 0;
|
|
95
|
+
const maxIterations = 10;
|
|
96
|
+
while ((match = varPattern.exec(result)) !== null) {
|
|
97
|
+
if (++iterations > maxIterations) {
|
|
98
|
+
logger_1.logger.warn(`Max variable resolution depth reached for: ${value}`);
|
|
99
|
+
hasUnresolved = true;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
const fullMatch = match[0];
|
|
103
|
+
const varName = match[1];
|
|
104
|
+
const fallback = match[2]?.trim();
|
|
105
|
+
const resolved = this.resolve(varName, context, fallback);
|
|
106
|
+
if (resolved.source === 'circular') {
|
|
107
|
+
isCircular = true;
|
|
108
|
+
hasUnresolved = true;
|
|
109
|
+
result = resolved.value || '';
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
if (!resolved.resolved) {
|
|
113
|
+
hasUnresolved = true;
|
|
114
|
+
result = resolved.value;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
result = result.replace(fullMatch, resolved.value);
|
|
118
|
+
}
|
|
119
|
+
varPattern.lastIndex = 0;
|
|
120
|
+
}
|
|
121
|
+
return { value: result, hasUnresolved, isCircular };
|
|
122
|
+
}
|
|
123
|
+
isApplicable(def, context) {
|
|
124
|
+
if (def.scope.type === 'global') {
|
|
125
|
+
if (def.variants.length === 0) {
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
return this.variantsMatch(def.variants, context.variants);
|
|
129
|
+
}
|
|
130
|
+
const scopeSelector = def.scope.selector || '';
|
|
131
|
+
const contextSelector = context.selector;
|
|
132
|
+
if (scopeSelector === contextSelector) {
|
|
133
|
+
return this.variantsMatch(def.variants, context.variants);
|
|
134
|
+
}
|
|
135
|
+
if (this.selectorContains(contextSelector, scopeSelector)) {
|
|
136
|
+
return this.variantsMatch(def.variants, context.variants);
|
|
137
|
+
}
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
variantsMatch(defVariants, contextVariants) {
|
|
141
|
+
if (defVariants.length === 0) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
if (contextVariants.length === 0) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
return defVariants.every(v => contextVariants.includes(v));
|
|
148
|
+
}
|
|
149
|
+
selectorContains(outer, inner) {
|
|
150
|
+
const innerClasses = inner.match(/\.[a-zA-Z_-][a-zA-Z0-9_-]*/g) || [];
|
|
151
|
+
const outerClasses = outer.match(/\.[a-zA-Z_-][a-zA-Z0-9_-]*/g) || [];
|
|
152
|
+
return innerClasses.every(cls => outerClasses.includes(cls));
|
|
153
|
+
}
|
|
154
|
+
hasVariable(name) {
|
|
155
|
+
return this.variables.has(name);
|
|
156
|
+
}
|
|
157
|
+
getVariableDefinitions(name) {
|
|
158
|
+
return this.variables.get(name) || [];
|
|
159
|
+
}
|
|
160
|
+
clear() {
|
|
161
|
+
this.variables.clear();
|
|
162
|
+
this.resolutionCache.clear();
|
|
163
|
+
this.resolutionStack.clear();
|
|
164
|
+
}
|
|
165
|
+
getRegisteredVariables() {
|
|
166
|
+
return Array.from(this.variables.keys());
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
exports.VariableRegistry = VariableRegistry;
|
|
170
|
+
function parseVarExpression(value) {
|
|
171
|
+
const varPattern = /^var\s*\(\s*(--[a-zA-Z0-9_-]+)\s*(?:,\s*(.+)\s*)?\)$/;
|
|
172
|
+
const match = value.match(varPattern);
|
|
173
|
+
if (match) {
|
|
174
|
+
const fallback = match[2]?.trim();
|
|
175
|
+
return {
|
|
176
|
+
hasVar: true,
|
|
177
|
+
varName: match[1],
|
|
178
|
+
fallback: fallback && fallback.length > 0 ? fallback : undefined,
|
|
179
|
+
rawValue: value
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
return { hasVar: false, rawValue: value };
|
|
183
|
+
}
|
|
184
|
+
function isCssVariable(property) {
|
|
185
|
+
return property.startsWith('--');
|
|
186
|
+
}
|
|
187
|
+
function isVarExpression(value) {
|
|
188
|
+
return /var\s*\(\s*--[a-zA-Z0-9_-]+\s*(?:,[^)]+)?\s*\)/.test(value);
|
|
189
|
+
}
|
|
190
|
+
function createGlobalScope() {
|
|
191
|
+
return { type: 'global' };
|
|
192
|
+
}
|
|
193
|
+
function createSelectorScope(selector, selectorType = 'class') {
|
|
194
|
+
return { type: 'selector', selector, selectorType };
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVSZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy92YXJpYWJsZVJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXFPQSxnREFvQkM7QUFFRCxzQ0FFQztBQUVELDBDQUVDO0FBRUQsOENBRUM7QUFFRCxrREFFQztBQXpRRCxtRUFBNEY7QUFDNUYscUNBQWtDO0FBNEJsQyxTQUFTLGNBQWMsQ0FBQyxLQUFvQjtJQUMxQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7QUFDOUIsQ0FBQztBQUVELE1BQWEsZ0JBQWdCO0lBQTdCO1FBQ1UsY0FBUyxHQUFzQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3pELG9CQUFlLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDakQsb0JBQWUsR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQTRMbkQsQ0FBQztJQTFMQyxRQUFRLENBQUMsUUFBNEI7UUFDbkMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUUxQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQzdDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0IsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QixNQUFNLFdBQVcs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Q0FBQztJQUMxRSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDbEMsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJO1lBQ1osT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakIsUUFBUSxFQUFFLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ2hFLFFBQVEsRUFBRSxLQUFLO1NBQ2hCLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQzVDLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQUMsUUFBZ0I7SUFDNUMsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxTQUFnQixlQUFlLENBQUMsS0FBYTtJQUMzQyxPQUFPLGdEQUFnRCxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCO0lBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDNUIsQ0FBQztBQUVELFNBQWdCLG1CQUFtQixDQUFDLFFBQWdCLEVBQUUsZUFBNkMsT0FBTztJQUN4RyxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNwZWNpZmljaXR5LCBaRVJPX1NQRUNJRklDSVRZLCBjb21wYXJlU3BlY2lmaWNpdHkgfSBmcm9tICcuL3NwZWNpZmljaXR5Q2FsY3VsYXRvcic7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVEZWZpbml0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBzY29wZTogVmFyaWFibGVTY29wZTtcbiAgc3BlY2lmaWNpdHk6IFNwZWNpZmljaXR5O1xuICBzb3VyY2VPcmRlcjogbnVtYmVyO1xuICB2YXJpYW50czogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVTY29wZSB7XG4gIHR5cGU6ICdnbG9iYWwnIHwgJ3NlbGVjdG9yJztcbiAgc2VsZWN0b3I/OiBzdHJpbmc7XG4gIHNlbGVjdG9yVHlwZT86ICdjbGFzcycgfCAnZWxlbWVudCcgfCAncm9vdCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x1dGlvbkNvbnRleHQge1xuICBzZWxlY3Rvcjogc3RyaW5nO1xuICBzcGVjaWZpY2l0eTogU3BlY2lmaWNpdHk7XG4gIHZhcmlhbnRzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIFZhcmlhYmxlS2V5IHtcbiAgbmFtZTogc3RyaW5nO1xuICBzY29wZUtleTogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTY29wZUtleShzY29wZTogVmFyaWFibGVTY29wZSk6IHN0cmluZyB7XG4gIGlmIChzY29wZS50eXBlID09PSAnZ2xvYmFsJykge1xuICAgIHJldHVybiAnOnJvb3QnO1xuICB9XG4gIHJldHVybiBzY29wZS5zZWxlY3RvciB8fCAnJztcbn1cblxuZXhwb3J0IGNsYXNzIFZhcmlhYmxlUmVnaXN0cnkge1xuICBwcml2YXRlIHZhcmlhYmxlczogTWFwPHN0cmluZywgVmFyaWFibGVEZWZpbml0aW9uW10+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIHJlc29sdXRpb25DYWNoZTogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSByZXNvbHV0aW9uU3RhY2s6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuXG4gIHJlZ2lzdGVyKHZhcmlhYmxlOiBWYXJpYWJsZURlZmluaXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSB2YXJpYWJsZS5uYW1lO1xuICAgIFxuICAgIGlmICghdGhpcy52YXJpYWJsZXMuaGFzKGtleSkpIHtcbiAgICAgIHRoaXMudmFyaWFibGVzLnNldChrZXksIFtdKTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZGVmaW5pdGlvbnMgPSB0aGlzLnZhcmlhYmxlcy5nZXQoa2V5KSE7XG4gICAgZGVmaW5pdGlvbnMucHVzaCh2YXJpYWJsZSk7XG4gICAgXG4gICAgZGVmaW5pdGlvbnMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3Qgc3BlY0NvbXBhcmUgPSBjb21wYXJlU3BlY2lmaWNpdHkoYi5zcGVjaWZpY2l0eSwgYS5zcGVjaWZpY2l0eSk7XG4gICAgICBpZiAoc3BlY0NvbXBhcmUgIT09IDApIHJldHVybiBzcGVjQ29tcGFyZTtcbiAgICAgIHJldHVybiBiLnNvdXJjZU9yZGVyIC0gYS5zb3VyY2VPcmRlcjtcbiAgICB9KTtcbiAgICBcbiAgICB0aGlzLnJlc29sdXRpb25DYWNoZS5jbGVhcigpO1xuICB9XG5cbiAgcmVzb2x2ZShcbiAgICB2YXJOYW1lOiBzdHJpbmcsXG4gICAgY29udGV4dDogUmVzb2x1dGlvbkNvbnRleHQsXG4gICAgZmFsbGJhY2s/OiBzdHJpbmdcbiAgKTogeyB2YWx1ZTogc3RyaW5nOyByZXNvbHZlZDogYm9vbGVhbjsgc291cmNlOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBgJHt2YXJOYW1lfToke2NvbnRleHQuc2VsZWN0b3J9OiR7Y29udGV4dC52YXJpYW50cy5qb2luKCcsJyl9YDtcbiAgICBcbiAgICBpZiAodGhpcy5yZXNvbHV0aW9uQ2FjaGUuaGFzKGNhY2hlS2V5KSkge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IHRoaXMucmVzb2x1dGlvbkNhY2hlLmdldChjYWNoZUtleSkhLCByZXNvbHZlZDogdHJ1ZSwgc291cmNlOiAnY2FjaGUnIH07XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLnJlc29sdXRpb25TdGFjay5oYXModmFyTmFtZSkpIHtcbiAgICAgIGxvZ2dlci53YXJuKGBDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgZm9yIHZhcmlhYmxlOiAke3Zhck5hbWV9YCk7XG4gICAgICByZXR1cm4geyB2YWx1ZTogZmFsbGJhY2sgfHwgJycsIHJlc29sdmVkOiBmYWxzZSwgc291cmNlOiAnY2lyY3VsYXInIH07XG4gICAgfVxuICAgIFxuICAgIHRoaXMucmVzb2x1dGlvblN0YWNrLmFkZCh2YXJOYW1lKTtcbiAgICBcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVmaW5pdGlvbnMgPSB0aGlzLnZhcmlhYmxlcy5nZXQodmFyTmFtZSk7XG4gICAgICBcbiAgICAgIGlmICghZGVmaW5pdGlvbnMgfHwgZGVmaW5pdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmIChmYWxsYmFjayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRGYWxsYmFjayA9IHRoaXMucmVzb2x2ZVZhbHVlKGZhbGxiYWNrLCBjb250ZXh0KTtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogcmVzb2x2ZWRGYWxsYmFjay52YWx1ZSwgcmVzb2x2ZWQ6IHRydWUsIHNvdXJjZTogJ2ZhbGxiYWNrJyB9O1xuICAgICAgICB9XG4gICAgICAgIGxvZ2dlci53YXJuKGBVbmRlZmluZWQgQ1NTIHZhcmlhYmxlOiAke3Zhck5hbWV9YCk7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiAnJywgcmVzb2x2ZWQ6IGZhbHNlLCBzb3VyY2U6ICd1bmRlZmluZWQnIH07XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IGFwcGxpY2FibGVEZWZzID0gZGVmaW5pdGlvbnMuZmlsdGVyKGRlZiA9PiBcbiAgICAgICAgdGhpcy5pc0FwcGxpY2FibGUoZGVmLCBjb250ZXh0KVxuICAgICAgKTtcbiAgICAgIFxuICAgICAgaWYgKGFwcGxpY2FibGVEZWZzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAoZmFsbGJhY2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IHJlc29sdmVkRmFsbGJhY2sgPSB0aGlzLnJlc29sdmVWYWx1ZShmYWxsYmFjaywgY29udGV4dCk7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHJlc29sdmVkRmFsbGJhY2sudmFsdWUsIHJlc29sdmVkOiB0cnVlLCBzb3VyY2U6ICdmYWxsYmFjaycgfTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIud2FybihgTm8gYXBwbGljYWJsZSBkZWZpbml0aW9uIGZvciB2YXJpYWJsZTogJHt2YXJOYW1lfSBpbiBjb250ZXh0OiAke2NvbnRleHQuc2VsZWN0b3J9YCk7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiAnJywgcmVzb2x2ZWQ6IGZhbHNlLCBzb3VyY2U6ICduby1tYXRjaCcgfTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3QgYmVzdE1hdGNoID0gYXBwbGljYWJsZURlZnNbMF07XG4gICAgICBjb25zdCByZXNvbHZlZFZhbHVlID0gdGhpcy5yZXNvbHZlVmFsdWUoYmVzdE1hdGNoLnZhbHVlLCBjb250ZXh0KTtcbiAgICAgIFxuICAgICAgaWYgKHJlc29sdmVkVmFsdWUuaXNDaXJjdWxhcikge1xuICAgICAgICByZXR1cm4geyBcbiAgICAgICAgICB2YWx1ZTogcmVzb2x2ZWRWYWx1ZS52YWx1ZSwgXG4gICAgICAgICAgcmVzb2x2ZWQ6IGZhbHNlLCBcbiAgICAgICAgICBzb3VyY2U6ICdjaXJjdWxhcicgXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHsgXG4gICAgICAgIHZhbHVlOiByZXNvbHZlZFZhbHVlLnZhbHVlLCBcbiAgICAgICAgcmVzb2x2ZWQ6ICFyZXNvbHZlZFZhbHVlLmhhc1VucmVzb2x2ZWQsIFxuICAgICAgICBzb3VyY2U6IHJlc29sdmVkVmFsdWUuaGFzVW5yZXNvbHZlZCA/ICd1bnJlc29sdmVkJyA6ICdyZXNvbHZlZCcgXG4gICAgICB9O1xuICAgICAgXG4gICAgICB0aGlzLnJlc29sdXRpb25DYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdC52YWx1ZSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMucmVzb2x1dGlvblN0YWNrLmRlbGV0ZSh2YXJOYW1lKTtcbiAgICB9XG4gIH1cblxuICByZXNvbHZlVmFsdWUodmFsdWU6IHN0cmluZywgY29udGV4dDogUmVzb2x1dGlvbkNvbnRleHQpOiB7IHZhbHVlOiBzdHJpbmc7IGhhc1VucmVzb2x2ZWQ6IGJvb2xlYW47IGlzQ2lyY3VsYXI/OiBib29sZWFuIH0ge1xuICAgIGNvbnN0IHZhclBhdHRlcm4gPSAvdmFyXFxzKlxcKFxccyooLS1bYS16QS1aMC05Xy1dKylcXHMqKD86LFxccyooW14pXSspKT9cXHMqXFwpL2c7XG4gICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgIGxldCBoYXNVbnJlc29sdmVkID0gZmFsc2U7XG4gICAgbGV0IGlzQ2lyY3VsYXIgPSBmYWxzZTtcbiAgICBsZXQgbWF0Y2g7XG4gICAgbGV0IGl0ZXJhdGlvbnMgPSAwO1xuICAgIGNvbnN0IG1heEl0ZXJhdGlvbnMgPSAxMDtcbiAgICBcbiAgICB3aGlsZSAoKG1hdGNoID0gdmFyUGF0dGVybi5leGVjKHJlc3VsdCkpICE9PSBudWxsKSB7XG4gICAgICBpZiAoKytpdGVyYXRpb25zID4gbWF4SXRlcmF0aW9ucykge1xuICAgICAgICBsb2dnZXIud2FybihgTWF4IHZhcmlhYmxlIHJlc29sdXRpb24gZGVwdGggcmVhY2hlZCBmb3I6ICR7dmFsdWV9YCk7XG4gICAgICAgIGhhc1VucmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3QgZnVsbE1hdGNoID0gbWF0Y2hbMF07XG4gICAgICBjb25zdCB2YXJOYW1lID0gbWF0Y2hbMV07XG4gICAgICBjb25zdCBmYWxsYmFjayA9IG1hdGNoWzJdPy50cmltKCk7XG4gICAgICBcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlKHZhck5hbWUsIGNvbnRleHQsIGZhbGxiYWNrKTtcbiAgICAgIFxuICAgICAgaWYgKHJlc29sdmVkLnNvdXJjZSA9PT0gJ2NpcmN1bGFyJykge1xuICAgICAgICBpc0NpcmN1bGFyID0gdHJ1ZTtcbiAgICAgICAgaGFzVW5yZXNvbHZlZCA9IHRydWU7XG4gICAgICAgIHJlc3VsdCA9IHJlc29sdmVkLnZhbHVlIHx8ICcnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKCFyZXNvbHZlZC5yZXNvbHZlZCkge1xuICAgICAgICBoYXNVbnJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgcmVzdWx0ID0gcmVzb2x2ZWQudmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShmdWxsTWF0Y2gsIHJlc29sdmVkLnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHZhclBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHsgdmFsdWU6IHJlc3VsdCwgaGFzVW5yZXNvbHZlZCwgaXNDaXJjdWxhciB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FwcGxpY2FibGUoZGVmOiBWYXJpYWJsZURlZmluaXRpb24sIGNvbnRleHQ6IFJlc29sdXRpb25Db250ZXh0KTogYm9vbGVhbiB7XG4gICAgaWYgKGRlZi5zY29wZS50eXBlID09PSAnZ2xvYmFsJykge1xuICAgICAgaWYgKGRlZi52YXJpYW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy52YXJpYW50c01hdGNoKGRlZi52YXJpYW50cywgY29udGV4dC52YXJpYW50cyk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHNjb3BlU2VsZWN0b3IgPSBkZWYuc2NvcGUuc2VsZWN0b3IgfHwgJyc7XG4gICAgY29uc3QgY29udGV4dFNlbGVjdG9yID0gY29udGV4dC5zZWxlY3RvcjtcbiAgICBcbiAgICBpZiAoc2NvcGVTZWxlY3RvciA9PT0gY29udGV4dFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy52YXJpYW50c01hdGNoKGRlZi52YXJpYW50cywgY29udGV4dC52YXJpYW50cyk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLnNlbGVjdG9yQ29udGFpbnMoY29udGV4dFNlbGVjdG9yLCBzY29wZVNlbGVjdG9yKSkge1xuICAgICAgcmV0dXJuIHRoaXMudmFyaWFudHNNYXRjaChkZWYudmFyaWFudHMsIGNvbnRleHQudmFyaWFudHMpO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHZhcmlhbnRzTWF0Y2goZGVmVmFyaWFudHM6IHN0cmluZ1tdLCBjb250ZXh0VmFyaWFudHM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKGRlZlZhcmlhbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIGlmIChjb250ZXh0VmFyaWFudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBkZWZWYXJpYW50cy5ldmVyeSh2ID0+IGNvbnRleHRWYXJpYW50cy5pbmNsdWRlcyh2KSk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdG9yQ29udGFpbnMob3V0ZXI6IHN0cmluZywgaW5uZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlubmVyQ2xhc3Nlczogc3RyaW5nW10gPSBpbm5lci5tYXRjaCgvXFwuW2EtekEtWl8tXVthLXpBLVowLTlfLV0qL2cpIHx8IFtdO1xuICAgIGNvbnN0IG91dGVyQ2xhc3Nlczogc3RyaW5nW10gPSBvdXRlci5tYXRjaCgvXFwuW2EtekEtWl8tXVthLXpBLVowLTlfLV0qL2cpIHx8IFtdO1xuICAgIFxuICAgIHJldHVybiBpbm5lckNsYXNzZXMuZXZlcnkoY2xzID0+IG91dGVyQ2xhc3Nlcy5pbmNsdWRlcyhjbHMpKTtcbiAgfVxuXG4gIGhhc1ZhcmlhYmxlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhcmlhYmxlcy5oYXMobmFtZSk7XG4gIH1cblxuICBnZXRWYXJpYWJsZURlZmluaXRpb25zKG5hbWU6IHN0cmluZyk6IFZhcmlhYmxlRGVmaW5pdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYWJsZXMuZ2V0KG5hbWUpIHx8IFtdO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy52YXJpYWJsZXMuY2xlYXIoKTtcbiAgICB0aGlzLnJlc29sdXRpb25DYWNoZS5jbGVhcigpO1xuICAgIHRoaXMucmVzb2x1dGlvblN0YWNrLmNsZWFyKCk7XG4gIH1cblxuICBnZXRSZWdpc3RlcmVkVmFyaWFibGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnZhcmlhYmxlcy5rZXlzKCkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVZhckV4cHJlc3Npb24odmFsdWU6IHN0cmluZyk6IHsgXG4gIGhhc1ZhcjogYm9vbGVhbjsgXG4gIHZhck5hbWU/OiBzdHJpbmc7IFxuICBmYWxsYmFjaz86IHN0cmluZztcbiAgcmF3VmFsdWU6IHN0cmluZztcbn0ge1xuICBjb25zdCB2YXJQYXR0ZXJuID0gL152YXJcXHMqXFwoXFxzKigtLVthLXpBLVowLTlfLV0rKVxccyooPzosXFxzKiguKylcXHMqKT9cXCkkLztcbiAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaCh2YXJQYXR0ZXJuKTtcbiAgXG4gIGlmIChtYXRjaCkge1xuICAgIGNvbnN0IGZhbGxiYWNrID0gbWF0Y2hbMl0/LnRyaW0oKTtcbiAgICByZXR1cm4ge1xuICAgICAgaGFzVmFyOiB0cnVlLFxuICAgICAgdmFyTmFtZTogbWF0Y2hbMV0sXG4gICAgICBmYWxsYmFjazogZmFsbGJhY2sgJiYgZmFsbGJhY2subGVuZ3RoID4gMCA/IGZhbGxiYWNrIDogdW5kZWZpbmVkLFxuICAgICAgcmF3VmFsdWU6IHZhbHVlXG4gICAgfTtcbiAgfVxuICBcbiAgcmV0dXJuIHsgaGFzVmFyOiBmYWxzZSwgcmF3VmFsdWU6IHZhbHVlIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Nzc1ZhcmlhYmxlKHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHByb3BlcnR5LnN0YXJ0c1dpdGgoJy0tJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhckV4cHJlc3Npb24odmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL3ZhclxccypcXChcXHMqLS1bYS16QS1aMC05Xy1dK1xccyooPzosW14pXSspP1xccypcXCkvLnRlc3QodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR2xvYmFsU2NvcGUoKTogVmFyaWFibGVTY29wZSB7XG4gIHJldHVybiB7IHR5cGU6ICdnbG9iYWwnIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RvclNjb3BlKHNlbGVjdG9yOiBzdHJpbmcsIHNlbGVjdG9yVHlwZTogJ2NsYXNzJyB8ICdlbGVtZW50JyB8ICdyb290JyA9ICdjbGFzcycpOiBWYXJpYWJsZVNjb3BlIHtcbiAgcmV0dXJuIHsgdHlwZTogJ3NlbGVjdG9yJywgc2VsZWN0b3IsIHNlbGVjdG9yVHlwZSB9O1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "css-to-tailwind-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
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",
|