@telepix-lab/telepix-ui 0.9.2 → 0.9.3
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/cjs/client.js +358 -650
- package/dist/cjs/index.js +190 -434
- package/dist/color.css +1 -1
- package/dist/esm/client.js +358 -650
- package/dist/esm/index.js +190 -434
- package/dist/styles.css +1 -1
- package/dist/theme.css +1 -1
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -5,36 +5,7 @@ import { toast, Toaster } from 'sonner';
|
|
|
5
5
|
|
|
6
6
|
function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
|
|
7
7
|
|
|
8
|
-
/**
|
|
9
|
-
* Concatenates two arrays faster than the array spread operator.
|
|
10
|
-
*/
|
|
11
|
-
const concatArrays = (array1, array2) => {
|
|
12
|
-
// Pre-allocate for better V8 optimization
|
|
13
|
-
const combinedArray = new Array(array1.length + array2.length);
|
|
14
|
-
for (let i = 0; i < array1.length; i++) {
|
|
15
|
-
combinedArray[i] = array1[i];
|
|
16
|
-
}
|
|
17
|
-
for (let i = 0; i < array2.length; i++) {
|
|
18
|
-
combinedArray[array1.length + i] = array2[i];
|
|
19
|
-
}
|
|
20
|
-
return combinedArray;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
// Factory function ensures consistent object shapes
|
|
24
|
-
const createClassValidatorObject = (classGroupId, validator) => ({
|
|
25
|
-
classGroupId,
|
|
26
|
-
validator
|
|
27
|
-
});
|
|
28
|
-
// Factory ensures consistent ClassPartObject shape
|
|
29
|
-
const createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({
|
|
30
|
-
nextPart,
|
|
31
|
-
validators,
|
|
32
|
-
classGroupId
|
|
33
|
-
});
|
|
34
8
|
const CLASS_PART_SEPARATOR = '-';
|
|
35
|
-
const EMPTY_CONFLICTS = [];
|
|
36
|
-
// I use two dots here because one dot is used as prefix for class groups in plugins
|
|
37
|
-
const ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';
|
|
38
9
|
const createClassGroupUtils = config => {
|
|
39
10
|
const classMap = createClassMap(config);
|
|
40
11
|
const {
|
|
@@ -42,73 +13,54 @@ const createClassGroupUtils = config => {
|
|
|
42
13
|
conflictingClassGroupModifiers
|
|
43
14
|
} = config;
|
|
44
15
|
const getClassGroupId = className => {
|
|
45
|
-
if (className.startsWith('[') && className.endsWith(']')) {
|
|
46
|
-
return getGroupIdForArbitraryProperty(className);
|
|
47
|
-
}
|
|
48
16
|
const classParts = className.split(CLASS_PART_SEPARATOR);
|
|
49
|
-
// Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and
|
|
50
|
-
|
|
51
|
-
|
|
17
|
+
// Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.
|
|
18
|
+
if (classParts[0] === '' && classParts.length !== 1) {
|
|
19
|
+
classParts.shift();
|
|
20
|
+
}
|
|
21
|
+
return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);
|
|
52
22
|
};
|
|
53
23
|
const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (modifierConflicts) {
|
|
58
|
-
if (baseConflicts) {
|
|
59
|
-
// Merge base conflicts with modifier conflicts
|
|
60
|
-
return concatArrays(baseConflicts, modifierConflicts);
|
|
61
|
-
}
|
|
62
|
-
// Only modifier conflicts
|
|
63
|
-
return modifierConflicts;
|
|
64
|
-
}
|
|
65
|
-
// Fall back to without postfix if no modifier conflicts
|
|
66
|
-
return baseConflicts || EMPTY_CONFLICTS;
|
|
24
|
+
const conflicts = conflictingClassGroups[classGroupId] || [];
|
|
25
|
+
if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {
|
|
26
|
+
return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];
|
|
67
27
|
}
|
|
68
|
-
return
|
|
28
|
+
return conflicts;
|
|
69
29
|
};
|
|
70
30
|
return {
|
|
71
31
|
getClassGroupId,
|
|
72
32
|
getConflictingClassGroupIds
|
|
73
33
|
};
|
|
74
34
|
};
|
|
75
|
-
const getGroupRecursive = (classParts,
|
|
76
|
-
|
|
77
|
-
if (classPathsLength === 0) {
|
|
35
|
+
const getGroupRecursive = (classParts, classPartObject) => {
|
|
36
|
+
if (classParts.length === 0) {
|
|
78
37
|
return classPartObject.classGroupId;
|
|
79
38
|
}
|
|
80
|
-
const currentClassPart = classParts[
|
|
39
|
+
const currentClassPart = classParts[0];
|
|
81
40
|
const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
41
|
+
const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;
|
|
42
|
+
if (classGroupFromNextClassPart) {
|
|
43
|
+
return classGroupFromNextClassPart;
|
|
85
44
|
}
|
|
86
|
-
|
|
87
|
-
if (validators === null) {
|
|
45
|
+
if (classPartObject.validators.length === 0) {
|
|
88
46
|
return undefined;
|
|
89
47
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
48
|
+
const classRest = classParts.join(CLASS_PART_SEPARATOR);
|
|
49
|
+
return classPartObject.validators.find(({
|
|
50
|
+
validator
|
|
51
|
+
}) => validator(classRest))?.classGroupId;
|
|
52
|
+
};
|
|
53
|
+
const arbitraryPropertyRegex = /^\[(.+)\]$/;
|
|
54
|
+
const getGroupIdForArbitraryProperty = className => {
|
|
55
|
+
if (arbitraryPropertyRegex.test(className)) {
|
|
56
|
+
const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
|
|
57
|
+
const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));
|
|
58
|
+
if (property) {
|
|
59
|
+
// I use two dots here because one dot is used as prefix for class groups in plugins
|
|
60
|
+
return 'arbitrary..' + property;
|
|
97
61
|
}
|
|
98
62
|
}
|
|
99
|
-
return undefined;
|
|
100
63
|
};
|
|
101
|
-
/**
|
|
102
|
-
* Get the class group ID for an arbitrary property.
|
|
103
|
-
*
|
|
104
|
-
* @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.
|
|
105
|
-
*/
|
|
106
|
-
const getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {
|
|
107
|
-
const content = className.slice(1, -1);
|
|
108
|
-
const colonIndex = content.indexOf(':');
|
|
109
|
-
const property = content.slice(0, colonIndex);
|
|
110
|
-
return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;
|
|
111
|
-
})();
|
|
112
64
|
/**
|
|
113
65
|
* Exported for testing only
|
|
114
66
|
*/
|
|
@@ -117,77 +69,54 @@ const createClassMap = config => {
|
|
|
117
69
|
theme,
|
|
118
70
|
classGroups
|
|
119
71
|
} = config;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const classMap = createClassPartObject();
|
|
72
|
+
const classMap = {
|
|
73
|
+
nextPart: new Map(),
|
|
74
|
+
validators: []
|
|
75
|
+
};
|
|
125
76
|
for (const classGroupId in classGroups) {
|
|
126
|
-
|
|
127
|
-
processClassesRecursively(group, classMap, classGroupId, theme);
|
|
77
|
+
processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);
|
|
128
78
|
}
|
|
129
79
|
return classMap;
|
|
130
80
|
};
|
|
131
81
|
const processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
};
|
|
154
|
-
const processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
|
|
155
|
-
if (isThemeGetter(classDefinition)) {
|
|
156
|
-
processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
if (classPartObject.validators === null) {
|
|
160
|
-
classPartObject.validators = [];
|
|
161
|
-
}
|
|
162
|
-
classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));
|
|
163
|
-
};
|
|
164
|
-
const processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
|
|
165
|
-
const entries = Object.entries(classDefinition);
|
|
166
|
-
const len = entries.length;
|
|
167
|
-
for (let i = 0; i < len; i++) {
|
|
168
|
-
const [key, value] = entries[i];
|
|
169
|
-
processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);
|
|
170
|
-
}
|
|
82
|
+
classGroup.forEach(classDefinition => {
|
|
83
|
+
if (typeof classDefinition === 'string') {
|
|
84
|
+
const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);
|
|
85
|
+
classPartObjectToEdit.classGroupId = classGroupId;
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (typeof classDefinition === 'function') {
|
|
89
|
+
if (isThemeGetter(classDefinition)) {
|
|
90
|
+
processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
classPartObject.validators.push({
|
|
94
|
+
validator: classDefinition,
|
|
95
|
+
classGroupId
|
|
96
|
+
});
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
Object.entries(classDefinition).forEach(([key, classGroup]) => {
|
|
100
|
+
processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
171
103
|
};
|
|
172
104
|
const getPart = (classPartObject, path) => {
|
|
173
|
-
let
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
return current;
|
|
105
|
+
let currentClassPartObject = classPartObject;
|
|
106
|
+
path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {
|
|
107
|
+
if (!currentClassPartObject.nextPart.has(pathPart)) {
|
|
108
|
+
currentClassPartObject.nextPart.set(pathPart, {
|
|
109
|
+
nextPart: new Map(),
|
|
110
|
+
validators: []
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);
|
|
114
|
+
});
|
|
115
|
+
return currentClassPartObject;
|
|
186
116
|
};
|
|
187
|
-
|
|
188
|
-
const isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;
|
|
117
|
+
const isThemeGetter = func => func.isThemeGetter;
|
|
189
118
|
|
|
190
|
-
// LRU cache
|
|
119
|
+
// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance
|
|
191
120
|
const createLruCache = maxCacheSize => {
|
|
192
121
|
if (maxCacheSize < 1) {
|
|
193
122
|
return {
|
|
@@ -196,31 +125,31 @@ const createLruCache = maxCacheSize => {
|
|
|
196
125
|
};
|
|
197
126
|
}
|
|
198
127
|
let cacheSize = 0;
|
|
199
|
-
let cache =
|
|
200
|
-
let previousCache =
|
|
128
|
+
let cache = new Map();
|
|
129
|
+
let previousCache = new Map();
|
|
201
130
|
const update = (key, value) => {
|
|
202
|
-
cache
|
|
131
|
+
cache.set(key, value);
|
|
203
132
|
cacheSize++;
|
|
204
133
|
if (cacheSize > maxCacheSize) {
|
|
205
134
|
cacheSize = 0;
|
|
206
135
|
previousCache = cache;
|
|
207
|
-
cache =
|
|
136
|
+
cache = new Map();
|
|
208
137
|
}
|
|
209
138
|
};
|
|
210
139
|
return {
|
|
211
140
|
get(key) {
|
|
212
|
-
let value = cache
|
|
141
|
+
let value = cache.get(key);
|
|
213
142
|
if (value !== undefined) {
|
|
214
143
|
return value;
|
|
215
144
|
}
|
|
216
|
-
if ((value = previousCache
|
|
145
|
+
if ((value = previousCache.get(key)) !== undefined) {
|
|
217
146
|
update(key, value);
|
|
218
147
|
return value;
|
|
219
148
|
}
|
|
220
149
|
},
|
|
221
150
|
set(key, value) {
|
|
222
|
-
if (key
|
|
223
|
-
cache
|
|
151
|
+
if (cache.has(key)) {
|
|
152
|
+
cache.set(key, value);
|
|
224
153
|
} else {
|
|
225
154
|
update(key, value);
|
|
226
155
|
}
|
|
@@ -229,15 +158,7 @@ const createLruCache = maxCacheSize => {
|
|
|
229
158
|
};
|
|
230
159
|
const IMPORTANT_MODIFIER = '!';
|
|
231
160
|
const MODIFIER_SEPARATOR = ':';
|
|
232
|
-
const
|
|
233
|
-
// Pre-allocated result object shape for consistency
|
|
234
|
-
const createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({
|
|
235
|
-
modifiers,
|
|
236
|
-
hasImportantModifier,
|
|
237
|
-
baseClassName,
|
|
238
|
-
maybePostfixModifierPosition,
|
|
239
|
-
isExternal
|
|
240
|
-
});
|
|
161
|
+
const MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;
|
|
241
162
|
const createParseClassName = config => {
|
|
242
163
|
const {
|
|
243
164
|
prefix,
|
|
@@ -250,19 +171,17 @@ const createParseClassName = config => {
|
|
|
250
171
|
* @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js
|
|
251
172
|
*/
|
|
252
173
|
let parseClassName = className => {
|
|
253
|
-
// Use simple array with push for better performance
|
|
254
174
|
const modifiers = [];
|
|
255
175
|
let bracketDepth = 0;
|
|
256
176
|
let parenDepth = 0;
|
|
257
177
|
let modifierStart = 0;
|
|
258
178
|
let postfixModifierPosition;
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
const currentCharacter = className[index];
|
|
179
|
+
for (let index = 0; index < className.length; index++) {
|
|
180
|
+
let currentCharacter = className[index];
|
|
262
181
|
if (bracketDepth === 0 && parenDepth === 0) {
|
|
263
182
|
if (currentCharacter === MODIFIER_SEPARATOR) {
|
|
264
183
|
modifiers.push(className.slice(modifierStart, index));
|
|
265
|
-
modifierStart = index +
|
|
184
|
+
modifierStart = index + MODIFIER_SEPARATOR_LENGTH;
|
|
266
185
|
continue;
|
|
267
186
|
}
|
|
268
187
|
if (currentCharacter === '/') {
|
|
@@ -270,31 +189,37 @@ const createParseClassName = config => {
|
|
|
270
189
|
continue;
|
|
271
190
|
}
|
|
272
191
|
}
|
|
273
|
-
if (currentCharacter === '[')
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
} else if (
|
|
283
|
-
/**
|
|
284
|
-
* In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.
|
|
285
|
-
* @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864
|
|
286
|
-
*/
|
|
287
|
-
baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {
|
|
288
|
-
baseClassName = baseClassNameWithImportantModifier.slice(1);
|
|
289
|
-
hasImportantModifier = true;
|
|
192
|
+
if (currentCharacter === '[') {
|
|
193
|
+
bracketDepth++;
|
|
194
|
+
} else if (currentCharacter === ']') {
|
|
195
|
+
bracketDepth--;
|
|
196
|
+
} else if (currentCharacter === '(') {
|
|
197
|
+
parenDepth++;
|
|
198
|
+
} else if (currentCharacter === ')') {
|
|
199
|
+
parenDepth--;
|
|
200
|
+
}
|
|
290
201
|
}
|
|
202
|
+
const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);
|
|
203
|
+
const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);
|
|
204
|
+
const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;
|
|
291
205
|
const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;
|
|
292
|
-
return
|
|
206
|
+
return {
|
|
207
|
+
modifiers,
|
|
208
|
+
hasImportantModifier,
|
|
209
|
+
baseClassName,
|
|
210
|
+
maybePostfixModifierPosition
|
|
211
|
+
};
|
|
293
212
|
};
|
|
294
213
|
if (prefix) {
|
|
295
214
|
const fullPrefix = prefix + MODIFIER_SEPARATOR;
|
|
296
215
|
const parseClassNameOriginal = parseClassName;
|
|
297
|
-
parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.
|
|
216
|
+
parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {
|
|
217
|
+
isExternal: true,
|
|
218
|
+
modifiers: [],
|
|
219
|
+
hasImportantModifier: false,
|
|
220
|
+
baseClassName: className,
|
|
221
|
+
maybePostfixModifierPosition: undefined
|
|
222
|
+
};
|
|
298
223
|
}
|
|
299
224
|
if (experimentalParseClassName) {
|
|
300
225
|
const parseClassNameOriginal = parseClassName;
|
|
@@ -305,6 +230,19 @@ const createParseClassName = config => {
|
|
|
305
230
|
}
|
|
306
231
|
return parseClassName;
|
|
307
232
|
};
|
|
233
|
+
const stripImportantModifier = baseClassName => {
|
|
234
|
+
if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {
|
|
235
|
+
return baseClassName.substring(0, baseClassName.length - 1);
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.
|
|
239
|
+
* @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864
|
|
240
|
+
*/
|
|
241
|
+
if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {
|
|
242
|
+
return baseClassName.substring(1);
|
|
243
|
+
}
|
|
244
|
+
return baseClassName;
|
|
245
|
+
};
|
|
308
246
|
|
|
309
247
|
/**
|
|
310
248
|
* Sorts modifiers according to following schema:
|
|
@@ -312,41 +250,26 @@ const createParseClassName = config => {
|
|
|
312
250
|
* - When an arbitrary variant appears, it must be preserved which modifiers are before and after it
|
|
313
251
|
*/
|
|
314
252
|
const createSortModifiers = config => {
|
|
315
|
-
|
|
316
|
-
const
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
// Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)
|
|
328
|
-
const isArbitrary = modifier[0] === '[';
|
|
329
|
-
const isOrderSensitive = modifierWeights.has(modifier);
|
|
330
|
-
if (isArbitrary || isOrderSensitive) {
|
|
331
|
-
// Sort and flush current segment alphabetically
|
|
332
|
-
if (currentSegment.length > 0) {
|
|
333
|
-
currentSegment.sort();
|
|
334
|
-
result.push(...currentSegment);
|
|
335
|
-
currentSegment = [];
|
|
336
|
-
}
|
|
337
|
-
result.push(modifier);
|
|
253
|
+
const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));
|
|
254
|
+
const sortModifiers = modifiers => {
|
|
255
|
+
if (modifiers.length <= 1) {
|
|
256
|
+
return modifiers;
|
|
257
|
+
}
|
|
258
|
+
const sortedModifiers = [];
|
|
259
|
+
let unsortedModifiers = [];
|
|
260
|
+
modifiers.forEach(modifier => {
|
|
261
|
+
const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];
|
|
262
|
+
if (isPositionSensitive) {
|
|
263
|
+
sortedModifiers.push(...unsortedModifiers.sort(), modifier);
|
|
264
|
+
unsortedModifiers = [];
|
|
338
265
|
} else {
|
|
339
|
-
|
|
340
|
-
currentSegment.push(modifier);
|
|
266
|
+
unsortedModifiers.push(modifier);
|
|
341
267
|
}
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
currentSegment.sort();
|
|
346
|
-
result.push(...currentSegment);
|
|
347
|
-
}
|
|
348
|
-
return result;
|
|
268
|
+
});
|
|
269
|
+
sortedModifiers.push(...unsortedModifiers.sort());
|
|
270
|
+
return sortedModifiers;
|
|
349
271
|
};
|
|
272
|
+
return sortModifiers;
|
|
350
273
|
};
|
|
351
274
|
const createConfigUtils = config => ({
|
|
352
275
|
cache: createLruCache(config.cacheSize),
|
|
@@ -401,11 +324,10 @@ const mergeClassList = (classList, configUtils) => {
|
|
|
401
324
|
}
|
|
402
325
|
hasPostfixModifier = false;
|
|
403
326
|
}
|
|
404
|
-
|
|
405
|
-
const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');
|
|
327
|
+
const variantModifier = sortModifiers(modifiers).join(':');
|
|
406
328
|
const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
|
|
407
329
|
const classId = modifierId + classGroupId;
|
|
408
|
-
if (classGroupsInConflict.
|
|
330
|
+
if (classGroupsInConflict.includes(classId)) {
|
|
409
331
|
// Tailwind class omitted due to conflict
|
|
410
332
|
continue;
|
|
411
333
|
}
|
|
@@ -430,13 +352,13 @@ const mergeClassList = (classList, configUtils) => {
|
|
|
430
352
|
*
|
|
431
353
|
* Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
|
|
432
354
|
*/
|
|
433
|
-
|
|
355
|
+
function twJoin() {
|
|
434
356
|
let index = 0;
|
|
435
357
|
let argument;
|
|
436
358
|
let resolvedValue;
|
|
437
359
|
let string = '';
|
|
438
|
-
while (index <
|
|
439
|
-
if (argument =
|
|
360
|
+
while (index < arguments.length) {
|
|
361
|
+
if (argument = arguments[index++]) {
|
|
440
362
|
if (resolvedValue = toValue(argument)) {
|
|
441
363
|
string && (string += ' ');
|
|
442
364
|
string += resolvedValue;
|
|
@@ -444,9 +366,8 @@ const twJoin = (...classLists) => {
|
|
|
444
366
|
}
|
|
445
367
|
}
|
|
446
368
|
return string;
|
|
447
|
-
}
|
|
369
|
+
}
|
|
448
370
|
const toValue = mix => {
|
|
449
|
-
// Fast path for strings
|
|
450
371
|
if (typeof mix === 'string') {
|
|
451
372
|
return mix;
|
|
452
373
|
}
|
|
@@ -462,20 +383,20 @@ const toValue = mix => {
|
|
|
462
383
|
}
|
|
463
384
|
return string;
|
|
464
385
|
};
|
|
465
|
-
|
|
386
|
+
function createTailwindMerge(createConfigFirst, ...createConfigRest) {
|
|
466
387
|
let configUtils;
|
|
467
388
|
let cacheGet;
|
|
468
389
|
let cacheSet;
|
|
469
|
-
let functionToCall;
|
|
470
|
-
|
|
390
|
+
let functionToCall = initTailwindMerge;
|
|
391
|
+
function initTailwindMerge(classList) {
|
|
471
392
|
const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());
|
|
472
393
|
configUtils = createConfigUtils(config);
|
|
473
394
|
cacheGet = configUtils.cache.get;
|
|
474
395
|
cacheSet = configUtils.cache.set;
|
|
475
396
|
functionToCall = tailwindMerge;
|
|
476
397
|
return tailwindMerge(classList);
|
|
477
|
-
}
|
|
478
|
-
|
|
398
|
+
}
|
|
399
|
+
function tailwindMerge(classList) {
|
|
479
400
|
const cachedResult = cacheGet(classList);
|
|
480
401
|
if (cachedResult) {
|
|
481
402
|
return cachedResult;
|
|
@@ -483,19 +404,19 @@ const createTailwindMerge = (createConfigFirst, ...createConfigRest) => {
|
|
|
483
404
|
const result = mergeClassList(classList, configUtils);
|
|
484
405
|
cacheSet(classList, result);
|
|
485
406
|
return result;
|
|
407
|
+
}
|
|
408
|
+
return function callTailwindMerge() {
|
|
409
|
+
return functionToCall(twJoin.apply(null, arguments));
|
|
486
410
|
};
|
|
487
|
-
|
|
488
|
-
return (...args) => functionToCall(twJoin(...args));
|
|
489
|
-
};
|
|
490
|
-
const fallbackThemeArr = [];
|
|
411
|
+
}
|
|
491
412
|
const fromTheme = key => {
|
|
492
|
-
const themeGetter = theme => theme[key] ||
|
|
413
|
+
const themeGetter = theme => theme[key] || [];
|
|
493
414
|
themeGetter.isThemeGetter = true;
|
|
494
415
|
return themeGetter;
|
|
495
416
|
};
|
|
496
417
|
const arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i;
|
|
497
418
|
const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
|
|
498
|
-
const fractionRegex = /^\d
|
|
419
|
+
const fractionRegex = /^\d+\/\d+$/;
|
|
499
420
|
const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
|
|
500
421
|
const lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/;
|
|
501
422
|
const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
|
|
@@ -521,8 +442,6 @@ const isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever
|
|
|
521
442
|
const isArbitraryValue = value => arbitraryValueRegex.test(value);
|
|
522
443
|
const isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);
|
|
523
444
|
const isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);
|
|
524
|
-
const isArbitraryWeight = value => getIsArbitraryValue(value, isLabelWeight, isAny);
|
|
525
|
-
const isArbitraryFamilyName = value => getIsArbitraryValue(value, isLabelFamilyName, isNever);
|
|
526
445
|
const isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);
|
|
527
446
|
const isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);
|
|
528
447
|
const isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);
|
|
@@ -533,7 +452,6 @@ const isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLab
|
|
|
533
452
|
const isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);
|
|
534
453
|
const isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);
|
|
535
454
|
const isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);
|
|
536
|
-
const isArbitraryVariableWeight = value => getIsArbitraryVariable(value, isLabelWeight, true);
|
|
537
455
|
// Helpers
|
|
538
456
|
const getIsArbitraryValue = (value, testLabel, testValue) => {
|
|
539
457
|
const result = arbitraryValueRegex.exec(value);
|
|
@@ -562,7 +480,6 @@ const isLabelSize = label => label === 'length' || label === 'size' || label ===
|
|
|
562
480
|
const isLabelLength = label => label === 'length';
|
|
563
481
|
const isLabelNumber = label => label === 'number';
|
|
564
482
|
const isLabelFamilyName = label => label === 'family-name';
|
|
565
|
-
const isLabelWeight = label => label === 'number' || label === 'weight';
|
|
566
483
|
const isLabelShadow = label => label === 'shadow';
|
|
567
484
|
const getDefaultConfig = () => {
|
|
568
485
|
/**
|
|
@@ -621,8 +538,6 @@ const getDefaultConfig = () => {
|
|
|
621
538
|
const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];
|
|
622
539
|
const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];
|
|
623
540
|
const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
|
|
624
|
-
const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
|
|
625
|
-
const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
|
|
626
541
|
const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];
|
|
627
542
|
const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {
|
|
628
543
|
position: [isArbitraryVariable, isArbitraryValue]
|
|
@@ -821,66 +736,40 @@ const getDefaultConfig = () => {
|
|
|
821
736
|
*/
|
|
822
737
|
position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],
|
|
823
738
|
/**
|
|
824
|
-
*
|
|
739
|
+
* Top / Right / Bottom / Left
|
|
825
740
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
826
741
|
*/
|
|
827
742
|
inset: [{
|
|
828
743
|
inset: scaleInset()
|
|
829
744
|
}],
|
|
830
745
|
/**
|
|
831
|
-
*
|
|
746
|
+
* Right / Left
|
|
832
747
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
833
748
|
*/
|
|
834
749
|
'inset-x': [{
|
|
835
750
|
'inset-x': scaleInset()
|
|
836
751
|
}],
|
|
837
752
|
/**
|
|
838
|
-
*
|
|
753
|
+
* Top / Bottom
|
|
839
754
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
840
755
|
*/
|
|
841
756
|
'inset-y': [{
|
|
842
757
|
'inset-y': scaleInset()
|
|
843
758
|
}],
|
|
844
759
|
/**
|
|
845
|
-
*
|
|
760
|
+
* Start
|
|
846
761
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
847
|
-
* @todo class group will be renamed to `inset-s` in next major release
|
|
848
762
|
*/
|
|
849
763
|
start: [{
|
|
850
|
-
'inset-s': scaleInset(),
|
|
851
|
-
/**
|
|
852
|
-
* @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.
|
|
853
|
-
* @see https://github.com/tailwindlabs/tailwindcss/pull/19613
|
|
854
|
-
*/
|
|
855
764
|
start: scaleInset()
|
|
856
765
|
}],
|
|
857
766
|
/**
|
|
858
|
-
*
|
|
767
|
+
* End
|
|
859
768
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
860
|
-
* @todo class group will be renamed to `inset-e` in next major release
|
|
861
769
|
*/
|
|
862
770
|
end: [{
|
|
863
|
-
'inset-e': scaleInset(),
|
|
864
|
-
/**
|
|
865
|
-
* @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.
|
|
866
|
-
* @see https://github.com/tailwindlabs/tailwindcss/pull/19613
|
|
867
|
-
*/
|
|
868
771
|
end: scaleInset()
|
|
869
772
|
}],
|
|
870
|
-
/**
|
|
871
|
-
* Inset Block Start
|
|
872
|
-
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
873
|
-
*/
|
|
874
|
-
'inset-bs': [{
|
|
875
|
-
'inset-bs': scaleInset()
|
|
876
|
-
}],
|
|
877
|
-
/**
|
|
878
|
-
* Inset Block End
|
|
879
|
-
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
880
|
-
*/
|
|
881
|
-
'inset-be': [{
|
|
882
|
-
'inset-be': scaleInset()
|
|
883
|
-
}],
|
|
884
773
|
/**
|
|
885
774
|
* Top
|
|
886
775
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
@@ -1147,47 +1036,33 @@ const getDefaultConfig = () => {
|
|
|
1147
1036
|
p: scaleUnambiguousSpacing()
|
|
1148
1037
|
}],
|
|
1149
1038
|
/**
|
|
1150
|
-
* Padding
|
|
1039
|
+
* Padding X
|
|
1151
1040
|
* @see https://tailwindcss.com/docs/padding
|
|
1152
1041
|
*/
|
|
1153
1042
|
px: [{
|
|
1154
1043
|
px: scaleUnambiguousSpacing()
|
|
1155
1044
|
}],
|
|
1156
1045
|
/**
|
|
1157
|
-
* Padding
|
|
1046
|
+
* Padding Y
|
|
1158
1047
|
* @see https://tailwindcss.com/docs/padding
|
|
1159
1048
|
*/
|
|
1160
1049
|
py: [{
|
|
1161
1050
|
py: scaleUnambiguousSpacing()
|
|
1162
1051
|
}],
|
|
1163
1052
|
/**
|
|
1164
|
-
* Padding
|
|
1053
|
+
* Padding Start
|
|
1165
1054
|
* @see https://tailwindcss.com/docs/padding
|
|
1166
1055
|
*/
|
|
1167
1056
|
ps: [{
|
|
1168
1057
|
ps: scaleUnambiguousSpacing()
|
|
1169
1058
|
}],
|
|
1170
1059
|
/**
|
|
1171
|
-
* Padding
|
|
1060
|
+
* Padding End
|
|
1172
1061
|
* @see https://tailwindcss.com/docs/padding
|
|
1173
1062
|
*/
|
|
1174
1063
|
pe: [{
|
|
1175
1064
|
pe: scaleUnambiguousSpacing()
|
|
1176
1065
|
}],
|
|
1177
|
-
/**
|
|
1178
|
-
* Padding Block Start
|
|
1179
|
-
* @see https://tailwindcss.com/docs/padding
|
|
1180
|
-
*/
|
|
1181
|
-
pbs: [{
|
|
1182
|
-
pbs: scaleUnambiguousSpacing()
|
|
1183
|
-
}],
|
|
1184
|
-
/**
|
|
1185
|
-
* Padding Block End
|
|
1186
|
-
* @see https://tailwindcss.com/docs/padding
|
|
1187
|
-
*/
|
|
1188
|
-
pbe: [{
|
|
1189
|
-
pbe: scaleUnambiguousSpacing()
|
|
1190
|
-
}],
|
|
1191
1066
|
/**
|
|
1192
1067
|
* Padding Top
|
|
1193
1068
|
* @see https://tailwindcss.com/docs/padding
|
|
@@ -1224,47 +1099,33 @@ const getDefaultConfig = () => {
|
|
|
1224
1099
|
m: scaleMargin()
|
|
1225
1100
|
}],
|
|
1226
1101
|
/**
|
|
1227
|
-
* Margin
|
|
1102
|
+
* Margin X
|
|
1228
1103
|
* @see https://tailwindcss.com/docs/margin
|
|
1229
1104
|
*/
|
|
1230
1105
|
mx: [{
|
|
1231
1106
|
mx: scaleMargin()
|
|
1232
1107
|
}],
|
|
1233
1108
|
/**
|
|
1234
|
-
* Margin
|
|
1109
|
+
* Margin Y
|
|
1235
1110
|
* @see https://tailwindcss.com/docs/margin
|
|
1236
1111
|
*/
|
|
1237
1112
|
my: [{
|
|
1238
1113
|
my: scaleMargin()
|
|
1239
1114
|
}],
|
|
1240
1115
|
/**
|
|
1241
|
-
* Margin
|
|
1116
|
+
* Margin Start
|
|
1242
1117
|
* @see https://tailwindcss.com/docs/margin
|
|
1243
1118
|
*/
|
|
1244
1119
|
ms: [{
|
|
1245
1120
|
ms: scaleMargin()
|
|
1246
1121
|
}],
|
|
1247
1122
|
/**
|
|
1248
|
-
* Margin
|
|
1123
|
+
* Margin End
|
|
1249
1124
|
* @see https://tailwindcss.com/docs/margin
|
|
1250
1125
|
*/
|
|
1251
1126
|
me: [{
|
|
1252
1127
|
me: scaleMargin()
|
|
1253
1128
|
}],
|
|
1254
|
-
/**
|
|
1255
|
-
* Margin Block Start
|
|
1256
|
-
* @see https://tailwindcss.com/docs/margin
|
|
1257
|
-
*/
|
|
1258
|
-
mbs: [{
|
|
1259
|
-
mbs: scaleMargin()
|
|
1260
|
-
}],
|
|
1261
|
-
/**
|
|
1262
|
-
* Margin Block End
|
|
1263
|
-
* @see https://tailwindcss.com/docs/margin
|
|
1264
|
-
*/
|
|
1265
|
-
mbe: [{
|
|
1266
|
-
mbe: scaleMargin()
|
|
1267
|
-
}],
|
|
1268
1129
|
/**
|
|
1269
1130
|
* Margin Top
|
|
1270
1131
|
* @see https://tailwindcss.com/docs/margin
|
|
@@ -1327,48 +1188,6 @@ const getDefaultConfig = () => {
|
|
|
1327
1188
|
size: [{
|
|
1328
1189
|
size: scaleSizing()
|
|
1329
1190
|
}],
|
|
1330
|
-
/**
|
|
1331
|
-
* Inline Size
|
|
1332
|
-
* @see https://tailwindcss.com/docs/width
|
|
1333
|
-
*/
|
|
1334
|
-
'inline-size': [{
|
|
1335
|
-
inline: ['auto', ...scaleSizingInline()]
|
|
1336
|
-
}],
|
|
1337
|
-
/**
|
|
1338
|
-
* Min-Inline Size
|
|
1339
|
-
* @see https://tailwindcss.com/docs/min-width
|
|
1340
|
-
*/
|
|
1341
|
-
'min-inline-size': [{
|
|
1342
|
-
'min-inline': ['auto', ...scaleSizingInline()]
|
|
1343
|
-
}],
|
|
1344
|
-
/**
|
|
1345
|
-
* Max-Inline Size
|
|
1346
|
-
* @see https://tailwindcss.com/docs/max-width
|
|
1347
|
-
*/
|
|
1348
|
-
'max-inline-size': [{
|
|
1349
|
-
'max-inline': ['none', ...scaleSizingInline()]
|
|
1350
|
-
}],
|
|
1351
|
-
/**
|
|
1352
|
-
* Block Size
|
|
1353
|
-
* @see https://tailwindcss.com/docs/height
|
|
1354
|
-
*/
|
|
1355
|
-
'block-size': [{
|
|
1356
|
-
block: ['auto', ...scaleSizingBlock()]
|
|
1357
|
-
}],
|
|
1358
|
-
/**
|
|
1359
|
-
* Min-Block Size
|
|
1360
|
-
* @see https://tailwindcss.com/docs/min-height
|
|
1361
|
-
*/
|
|
1362
|
-
'min-block-size': [{
|
|
1363
|
-
'min-block': ['auto', ...scaleSizingBlock()]
|
|
1364
|
-
}],
|
|
1365
|
-
/**
|
|
1366
|
-
* Max-Block Size
|
|
1367
|
-
* @see https://tailwindcss.com/docs/max-height
|
|
1368
|
-
*/
|
|
1369
|
-
'max-block-size': [{
|
|
1370
|
-
'max-block': ['none', ...scaleSizingBlock()]
|
|
1371
|
-
}],
|
|
1372
1191
|
/**
|
|
1373
1192
|
* Width
|
|
1374
1193
|
* @see https://tailwindcss.com/docs/width
|
|
@@ -1441,7 +1260,7 @@ const getDefaultConfig = () => {
|
|
|
1441
1260
|
* @see https://tailwindcss.com/docs/font-weight
|
|
1442
1261
|
*/
|
|
1443
1262
|
'font-weight': [{
|
|
1444
|
-
font: [themeFontWeight,
|
|
1263
|
+
font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]
|
|
1445
1264
|
}],
|
|
1446
1265
|
/**
|
|
1447
1266
|
* Font Stretch
|
|
@@ -1455,14 +1274,7 @@ const getDefaultConfig = () => {
|
|
|
1455
1274
|
* @see https://tailwindcss.com/docs/font-family
|
|
1456
1275
|
*/
|
|
1457
1276
|
'font-family': [{
|
|
1458
|
-
font: [isArbitraryVariableFamilyName,
|
|
1459
|
-
}],
|
|
1460
|
-
/**
|
|
1461
|
-
* Font Feature Settings
|
|
1462
|
-
* @see https://tailwindcss.com/docs/font-feature-settings
|
|
1463
|
-
*/
|
|
1464
|
-
'font-features': [{
|
|
1465
|
-
'font-features': [isArbitraryValue]
|
|
1277
|
+
font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]
|
|
1466
1278
|
}],
|
|
1467
1279
|
/**
|
|
1468
1280
|
* Font Variant Numeric
|
|
@@ -1881,47 +1693,33 @@ const getDefaultConfig = () => {
|
|
|
1881
1693
|
border: scaleBorderWidth()
|
|
1882
1694
|
}],
|
|
1883
1695
|
/**
|
|
1884
|
-
* Border Width
|
|
1696
|
+
* Border Width X
|
|
1885
1697
|
* @see https://tailwindcss.com/docs/border-width
|
|
1886
1698
|
*/
|
|
1887
1699
|
'border-w-x': [{
|
|
1888
1700
|
'border-x': scaleBorderWidth()
|
|
1889
1701
|
}],
|
|
1890
1702
|
/**
|
|
1891
|
-
* Border Width
|
|
1703
|
+
* Border Width Y
|
|
1892
1704
|
* @see https://tailwindcss.com/docs/border-width
|
|
1893
1705
|
*/
|
|
1894
1706
|
'border-w-y': [{
|
|
1895
1707
|
'border-y': scaleBorderWidth()
|
|
1896
1708
|
}],
|
|
1897
1709
|
/**
|
|
1898
|
-
* Border Width
|
|
1710
|
+
* Border Width Start
|
|
1899
1711
|
* @see https://tailwindcss.com/docs/border-width
|
|
1900
1712
|
*/
|
|
1901
1713
|
'border-w-s': [{
|
|
1902
1714
|
'border-s': scaleBorderWidth()
|
|
1903
1715
|
}],
|
|
1904
1716
|
/**
|
|
1905
|
-
* Border Width
|
|
1717
|
+
* Border Width End
|
|
1906
1718
|
* @see https://tailwindcss.com/docs/border-width
|
|
1907
1719
|
*/
|
|
1908
1720
|
'border-w-e': [{
|
|
1909
1721
|
'border-e': scaleBorderWidth()
|
|
1910
1722
|
}],
|
|
1911
|
-
/**
|
|
1912
|
-
* Border Width Block Start
|
|
1913
|
-
* @see https://tailwindcss.com/docs/border-width
|
|
1914
|
-
*/
|
|
1915
|
-
'border-w-bs': [{
|
|
1916
|
-
'border-bs': scaleBorderWidth()
|
|
1917
|
-
}],
|
|
1918
|
-
/**
|
|
1919
|
-
* Border Width Block End
|
|
1920
|
-
* @see https://tailwindcss.com/docs/border-width
|
|
1921
|
-
*/
|
|
1922
|
-
'border-w-be': [{
|
|
1923
|
-
'border-be': scaleBorderWidth()
|
|
1924
|
-
}],
|
|
1925
1723
|
/**
|
|
1926
1724
|
* Border Width Top
|
|
1927
1725
|
* @see https://tailwindcss.com/docs/border-width
|
|
@@ -1996,47 +1794,33 @@ const getDefaultConfig = () => {
|
|
|
1996
1794
|
border: scaleColor()
|
|
1997
1795
|
}],
|
|
1998
1796
|
/**
|
|
1999
|
-
* Border Color
|
|
1797
|
+
* Border Color X
|
|
2000
1798
|
* @see https://tailwindcss.com/docs/border-color
|
|
2001
1799
|
*/
|
|
2002
1800
|
'border-color-x': [{
|
|
2003
1801
|
'border-x': scaleColor()
|
|
2004
1802
|
}],
|
|
2005
1803
|
/**
|
|
2006
|
-
* Border Color
|
|
1804
|
+
* Border Color Y
|
|
2007
1805
|
* @see https://tailwindcss.com/docs/border-color
|
|
2008
1806
|
*/
|
|
2009
1807
|
'border-color-y': [{
|
|
2010
1808
|
'border-y': scaleColor()
|
|
2011
1809
|
}],
|
|
2012
1810
|
/**
|
|
2013
|
-
* Border Color
|
|
1811
|
+
* Border Color S
|
|
2014
1812
|
* @see https://tailwindcss.com/docs/border-color
|
|
2015
1813
|
*/
|
|
2016
1814
|
'border-color-s': [{
|
|
2017
1815
|
'border-s': scaleColor()
|
|
2018
1816
|
}],
|
|
2019
1817
|
/**
|
|
2020
|
-
* Border Color
|
|
1818
|
+
* Border Color E
|
|
2021
1819
|
* @see https://tailwindcss.com/docs/border-color
|
|
2022
1820
|
*/
|
|
2023
1821
|
'border-color-e': [{
|
|
2024
1822
|
'border-e': scaleColor()
|
|
2025
1823
|
}],
|
|
2026
|
-
/**
|
|
2027
|
-
* Border Color Block Start
|
|
2028
|
-
* @see https://tailwindcss.com/docs/border-color
|
|
2029
|
-
*/
|
|
2030
|
-
'border-color-bs': [{
|
|
2031
|
-
'border-bs': scaleColor()
|
|
2032
|
-
}],
|
|
2033
|
-
/**
|
|
2034
|
-
* Border Color Block End
|
|
2035
|
-
* @see https://tailwindcss.com/docs/border-color
|
|
2036
|
-
*/
|
|
2037
|
-
'border-color-be': [{
|
|
2038
|
-
'border-be': scaleColor()
|
|
2039
|
-
}],
|
|
2040
1824
|
/**
|
|
2041
1825
|
* Border Color Top
|
|
2042
1826
|
* @see https://tailwindcss.com/docs/border-color
|
|
@@ -2897,47 +2681,33 @@ const getDefaultConfig = () => {
|
|
|
2897
2681
|
'scroll-m': scaleUnambiguousSpacing()
|
|
2898
2682
|
}],
|
|
2899
2683
|
/**
|
|
2900
|
-
* Scroll Margin
|
|
2684
|
+
* Scroll Margin X
|
|
2901
2685
|
* @see https://tailwindcss.com/docs/scroll-margin
|
|
2902
2686
|
*/
|
|
2903
2687
|
'scroll-mx': [{
|
|
2904
2688
|
'scroll-mx': scaleUnambiguousSpacing()
|
|
2905
2689
|
}],
|
|
2906
2690
|
/**
|
|
2907
|
-
* Scroll Margin
|
|
2691
|
+
* Scroll Margin Y
|
|
2908
2692
|
* @see https://tailwindcss.com/docs/scroll-margin
|
|
2909
2693
|
*/
|
|
2910
2694
|
'scroll-my': [{
|
|
2911
2695
|
'scroll-my': scaleUnambiguousSpacing()
|
|
2912
2696
|
}],
|
|
2913
2697
|
/**
|
|
2914
|
-
* Scroll Margin
|
|
2698
|
+
* Scroll Margin Start
|
|
2915
2699
|
* @see https://tailwindcss.com/docs/scroll-margin
|
|
2916
2700
|
*/
|
|
2917
2701
|
'scroll-ms': [{
|
|
2918
2702
|
'scroll-ms': scaleUnambiguousSpacing()
|
|
2919
2703
|
}],
|
|
2920
2704
|
/**
|
|
2921
|
-
* Scroll Margin
|
|
2705
|
+
* Scroll Margin End
|
|
2922
2706
|
* @see https://tailwindcss.com/docs/scroll-margin
|
|
2923
2707
|
*/
|
|
2924
2708
|
'scroll-me': [{
|
|
2925
2709
|
'scroll-me': scaleUnambiguousSpacing()
|
|
2926
2710
|
}],
|
|
2927
|
-
/**
|
|
2928
|
-
* Scroll Margin Block Start
|
|
2929
|
-
* @see https://tailwindcss.com/docs/scroll-margin
|
|
2930
|
-
*/
|
|
2931
|
-
'scroll-mbs': [{
|
|
2932
|
-
'scroll-mbs': scaleUnambiguousSpacing()
|
|
2933
|
-
}],
|
|
2934
|
-
/**
|
|
2935
|
-
* Scroll Margin Block End
|
|
2936
|
-
* @see https://tailwindcss.com/docs/scroll-margin
|
|
2937
|
-
*/
|
|
2938
|
-
'scroll-mbe': [{
|
|
2939
|
-
'scroll-mbe': scaleUnambiguousSpacing()
|
|
2940
|
-
}],
|
|
2941
2711
|
/**
|
|
2942
2712
|
* Scroll Margin Top
|
|
2943
2713
|
* @see https://tailwindcss.com/docs/scroll-margin
|
|
@@ -2974,47 +2744,33 @@ const getDefaultConfig = () => {
|
|
|
2974
2744
|
'scroll-p': scaleUnambiguousSpacing()
|
|
2975
2745
|
}],
|
|
2976
2746
|
/**
|
|
2977
|
-
* Scroll Padding
|
|
2747
|
+
* Scroll Padding X
|
|
2978
2748
|
* @see https://tailwindcss.com/docs/scroll-padding
|
|
2979
2749
|
*/
|
|
2980
2750
|
'scroll-px': [{
|
|
2981
2751
|
'scroll-px': scaleUnambiguousSpacing()
|
|
2982
2752
|
}],
|
|
2983
2753
|
/**
|
|
2984
|
-
* Scroll Padding
|
|
2754
|
+
* Scroll Padding Y
|
|
2985
2755
|
* @see https://tailwindcss.com/docs/scroll-padding
|
|
2986
2756
|
*/
|
|
2987
2757
|
'scroll-py': [{
|
|
2988
2758
|
'scroll-py': scaleUnambiguousSpacing()
|
|
2989
2759
|
}],
|
|
2990
2760
|
/**
|
|
2991
|
-
* Scroll Padding
|
|
2761
|
+
* Scroll Padding Start
|
|
2992
2762
|
* @see https://tailwindcss.com/docs/scroll-padding
|
|
2993
2763
|
*/
|
|
2994
2764
|
'scroll-ps': [{
|
|
2995
2765
|
'scroll-ps': scaleUnambiguousSpacing()
|
|
2996
2766
|
}],
|
|
2997
2767
|
/**
|
|
2998
|
-
* Scroll Padding
|
|
2768
|
+
* Scroll Padding End
|
|
2999
2769
|
* @see https://tailwindcss.com/docs/scroll-padding
|
|
3000
2770
|
*/
|
|
3001
2771
|
'scroll-pe': [{
|
|
3002
2772
|
'scroll-pe': scaleUnambiguousSpacing()
|
|
3003
2773
|
}],
|
|
3004
|
-
/**
|
|
3005
|
-
* Scroll Padding Block Start
|
|
3006
|
-
* @see https://tailwindcss.com/docs/scroll-padding
|
|
3007
|
-
*/
|
|
3008
|
-
'scroll-pbs': [{
|
|
3009
|
-
'scroll-pbs': scaleUnambiguousSpacing()
|
|
3010
|
-
}],
|
|
3011
|
-
/**
|
|
3012
|
-
* Scroll Padding Block End
|
|
3013
|
-
* @see https://tailwindcss.com/docs/scroll-padding
|
|
3014
|
-
*/
|
|
3015
|
-
'scroll-pbe': [{
|
|
3016
|
-
'scroll-pbe': scaleUnambiguousSpacing()
|
|
3017
|
-
}],
|
|
3018
2774
|
/**
|
|
3019
2775
|
* Scroll Padding Top
|
|
3020
2776
|
* @see https://tailwindcss.com/docs/scroll-padding
|
|
@@ -3149,15 +2905,15 @@ const getDefaultConfig = () => {
|
|
|
3149
2905
|
conflictingClassGroups: {
|
|
3150
2906
|
overflow: ['overflow-x', 'overflow-y'],
|
|
3151
2907
|
overscroll: ['overscroll-x', 'overscroll-y'],
|
|
3152
|
-
inset: ['inset-x', 'inset-y', '
|
|
2908
|
+
inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],
|
|
3153
2909
|
'inset-x': ['right', 'left'],
|
|
3154
2910
|
'inset-y': ['top', 'bottom'],
|
|
3155
2911
|
flex: ['basis', 'grow', 'shrink'],
|
|
3156
2912
|
gap: ['gap-x', 'gap-y'],
|
|
3157
|
-
p: ['px', 'py', 'ps', 'pe', '
|
|
2913
|
+
p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],
|
|
3158
2914
|
px: ['pr', 'pl'],
|
|
3159
2915
|
py: ['pt', 'pb'],
|
|
3160
|
-
m: ['mx', 'my', 'ms', 'me', '
|
|
2916
|
+
m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],
|
|
3161
2917
|
mx: ['mr', 'ml'],
|
|
3162
2918
|
my: ['mt', 'mb'],
|
|
3163
2919
|
size: ['w', 'h'],
|
|
@@ -3177,18 +2933,18 @@ const getDefaultConfig = () => {
|
|
|
3177
2933
|
'rounded-b': ['rounded-br', 'rounded-bl'],
|
|
3178
2934
|
'rounded-l': ['rounded-tl', 'rounded-bl'],
|
|
3179
2935
|
'border-spacing': ['border-spacing-x', 'border-spacing-y'],
|
|
3180
|
-
'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-
|
|
2936
|
+
'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],
|
|
3181
2937
|
'border-w-x': ['border-w-r', 'border-w-l'],
|
|
3182
2938
|
'border-w-y': ['border-w-t', 'border-w-b'],
|
|
3183
|
-
'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-
|
|
2939
|
+
'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],
|
|
3184
2940
|
'border-color-x': ['border-color-r', 'border-color-l'],
|
|
3185
2941
|
'border-color-y': ['border-color-t', 'border-color-b'],
|
|
3186
2942
|
translate: ['translate-x', 'translate-y', 'translate-none'],
|
|
3187
2943
|
'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],
|
|
3188
|
-
'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-
|
|
2944
|
+
'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],
|
|
3189
2945
|
'scroll-mx': ['scroll-mr', 'scroll-ml'],
|
|
3190
2946
|
'scroll-my': ['scroll-mt', 'scroll-mb'],
|
|
3191
|
-
'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-
|
|
2947
|
+
'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],
|
|
3192
2948
|
'scroll-px': ['scroll-pr', 'scroll-pl'],
|
|
3193
2949
|
'scroll-py': ['scroll-pt', 'scroll-pb'],
|
|
3194
2950
|
touch: ['touch-x', 'touch-y', 'touch-pz'],
|