tailwind-merge 1.8.1 → 1.9.0
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/README.md +10 -10
- package/dist/lib/class-utils.mjs +10 -37
- package/dist/lib/class-utils.mjs.map +1 -1
- package/dist/lib/config-utils.d.ts +1 -1
- package/dist/lib/config-utils.mjs +4 -4
- package/dist/lib/config-utils.mjs.map +1 -1
- package/dist/lib/create-tailwind-merge.d.ts +3 -3
- package/dist/lib/create-tailwind-merge.mjs +1 -7
- package/dist/lib/create-tailwind-merge.mjs.map +1 -1
- package/dist/lib/default-config.mjs +0 -259
- package/dist/lib/default-config.mjs.map +1 -1
- package/dist/lib/extend-tailwind-merge.d.ts +1 -1
- package/dist/lib/extend-tailwind-merge.mjs +0 -1
- package/dist/lib/extend-tailwind-merge.mjs.map +1 -1
- package/dist/lib/from-theme.mjs +0 -1
- package/dist/lib/from-theme.mjs.map +1 -1
- package/dist/lib/lru-cache.mjs +0 -6
- package/dist/lib/lru-cache.mjs.map +1 -1
- package/dist/lib/merge-classlist.mjs +8 -14
- package/dist/lib/merge-classlist.mjs.map +1 -1
- package/dist/lib/merge-configs.mjs +0 -5
- package/dist/lib/merge-configs.mjs.map +1 -1
- package/dist/lib/modifier-utils.mjs +2 -9
- package/dist/lib/modifier-utils.mjs.map +1 -1
- package/dist/lib/tw-join.d.ts +2 -2
- package/dist/lib/tw-join.mjs +0 -6
- package/dist/lib/tw-join.mjs.map +1 -1
- package/dist/lib/tw-merge.mjs.map +1 -1
- package/dist/lib/types.d.ts +6 -6
- package/dist/lib/validators.mjs +10 -31
- package/dist/lib/validators.mjs.map +1 -1
- package/dist/tailwind-merge.cjs.development.js +35 -397
- package/dist/tailwind-merge.cjs.development.js.map +1 -1
- package/dist/tailwind-merge.cjs.production.min.js +1 -1
- package/dist/tailwind-merge.cjs.production.min.js.map +1 -1
- package/dist/tailwind-merge.mjs +0 -1
- package/dist/tailwind-merge.mjs.map +1 -1
- package/package.json +9 -9
- package/src/lib/validators.ts +1 -1
- package/dist/_virtual/_rollupPluginBabelHelpers.mjs +0 -19
- package/dist/_virtual/_rollupPluginBabelHelpers.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<br />
|
|
3
3
|
<a href="https://github.com/dcastil/tailwind-merge">
|
|
4
4
|
<!-- AUTOGENERATED VERSION START -->
|
|
5
|
-
<img src="https://github.com/dcastil/tailwind-merge/raw/v1.
|
|
5
|
+
<img src="https://github.com/dcastil/tailwind-merge/raw/v1.9.0/assets/logo.svg" alt="tailwind-merge" height="150px" />
|
|
6
6
|
<!-- AUTOGENERATED END -->
|
|
7
7
|
</a>
|
|
8
8
|
</div>
|
|
@@ -27,14 +27,14 @@ twMerge('px-2 py-1 bg-red hover:bg-dark-red', 'p-3 bg-[#B91C1C]')
|
|
|
27
27
|
|
|
28
28
|
<!-- AUTOGENERATED VERSION START -->
|
|
29
29
|
|
|
30
|
-
- [What is it for](https://github.com/dcastil/tailwind-merge/tree/v1.
|
|
31
|
-
- [Features](https://github.com/dcastil/tailwind-merge/tree/v1.
|
|
32
|
-
- [Configuration](https://github.com/dcastil/tailwind-merge/tree/v1.
|
|
33
|
-
- [Recipes](https://github.com/dcastil/tailwind-merge/tree/v1.
|
|
34
|
-
- [API reference](https://github.com/dcastil/tailwind-merge/tree/v1.
|
|
35
|
-
- [Writing plugins](https://github.com/dcastil/tailwind-merge/tree/v1.
|
|
36
|
-
- [Versioning](https://github.com/dcastil/tailwind-merge/tree/v1.
|
|
37
|
-
- [Contributing](https://github.com/dcastil/tailwind-merge/tree/v1.
|
|
38
|
-
- [Similar packages](https://github.com/dcastil/tailwind-merge/tree/v1.
|
|
30
|
+
- [What is it for](https://github.com/dcastil/tailwind-merge/tree/v1.9.0/docs/what-is-it-for.md)
|
|
31
|
+
- [Features](https://github.com/dcastil/tailwind-merge/tree/v1.9.0/docs/features.md)
|
|
32
|
+
- [Configuration](https://github.com/dcastil/tailwind-merge/tree/v1.9.0/docs/configuration.md)
|
|
33
|
+
- [Recipes](https://github.com/dcastil/tailwind-merge/tree/v1.9.0/docs/recipes.md)
|
|
34
|
+
- [API reference](https://github.com/dcastil/tailwind-merge/tree/v1.9.0/docs/api-reference.md)
|
|
35
|
+
- [Writing plugins](https://github.com/dcastil/tailwind-merge/tree/v1.9.0/docs/writing-plugins.md)
|
|
36
|
+
- [Versioning](https://github.com/dcastil/tailwind-merge/tree/v1.9.0/docs/versioning.md)
|
|
37
|
+
- [Contributing](https://github.com/dcastil/tailwind-merge/tree/v1.9.0/.github/CONTRIBUTING.md)
|
|
38
|
+
- [Similar packages](https://github.com/dcastil/tailwind-merge/tree/v1.9.0/docs/similar-packages.md)
|
|
39
39
|
|
|
40
40
|
<!-- AUTOGENERATED END -->
|
package/dist/lib/class-utils.mjs
CHANGED
|
@@ -1,60 +1,46 @@
|
|
|
1
1
|
var CLASS_PART_SEPARATOR = '-';
|
|
2
2
|
function createClassUtils(config) {
|
|
3
3
|
var classMap = createClassMap(config);
|
|
4
|
-
|
|
5
4
|
function getClassGroupId(className) {
|
|
6
|
-
var classParts = className.split(CLASS_PART_SEPARATOR);
|
|
7
|
-
|
|
5
|
+
var classParts = className.split(CLASS_PART_SEPARATOR);
|
|
6
|
+
// 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.
|
|
8
7
|
if (classParts[0] === '' && classParts.length !== 1) {
|
|
9
8
|
classParts.shift();
|
|
10
9
|
}
|
|
11
|
-
|
|
12
10
|
return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);
|
|
13
11
|
}
|
|
14
|
-
|
|
15
12
|
function getConflictingClassGroupIds(classGroupId) {
|
|
16
13
|
return config.conflictingClassGroups[classGroupId] || [];
|
|
17
14
|
}
|
|
18
|
-
|
|
19
15
|
return {
|
|
20
16
|
getClassGroupId: getClassGroupId,
|
|
21
17
|
getConflictingClassGroupIds: getConflictingClassGroupIds
|
|
22
18
|
};
|
|
23
19
|
}
|
|
24
|
-
|
|
25
20
|
function getGroupRecursive(classParts, classPartObject) {
|
|
26
|
-
var _classPartObject$vali;
|
|
27
|
-
|
|
28
21
|
if (classParts.length === 0) {
|
|
29
22
|
return classPartObject.classGroupId;
|
|
30
23
|
}
|
|
31
|
-
|
|
32
24
|
var currentClassPart = classParts[0];
|
|
33
25
|
var nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
|
|
34
26
|
var classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;
|
|
35
|
-
|
|
36
27
|
if (classGroupFromNextClassPart) {
|
|
37
28
|
return classGroupFromNextClassPart;
|
|
38
29
|
}
|
|
39
|
-
|
|
40
30
|
if (classPartObject.validators.length === 0) {
|
|
41
31
|
return undefined;
|
|
42
32
|
}
|
|
43
|
-
|
|
44
33
|
var classRest = classParts.join(CLASS_PART_SEPARATOR);
|
|
45
|
-
return
|
|
34
|
+
return classPartObject.validators.find(function (_ref) {
|
|
46
35
|
var validator = _ref.validator;
|
|
47
36
|
return validator(classRest);
|
|
48
|
-
})
|
|
37
|
+
})?.classGroupId;
|
|
49
38
|
}
|
|
50
|
-
|
|
51
39
|
var arbitraryPropertyRegex = /^\[(.+)\]$/;
|
|
52
|
-
|
|
53
40
|
function getGroupIdForArbitraryProperty(className) {
|
|
54
41
|
if (arbitraryPropertyRegex.test(className)) {
|
|
55
42
|
var arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
|
|
56
|
-
var property = arbitraryPropertyClassName
|
|
57
|
-
|
|
43
|
+
var property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));
|
|
58
44
|
if (property) {
|
|
59
45
|
// I use two dots here because one dot is used as prefix for class groups in plugins
|
|
60
46
|
return 'arbitrary..' + property;
|
|
@@ -64,11 +50,9 @@ function getGroupIdForArbitraryProperty(className) {
|
|
|
64
50
|
/**
|
|
65
51
|
* Exported for testing only
|
|
66
52
|
*/
|
|
67
|
-
|
|
68
|
-
|
|
69
53
|
function createClassMap(config) {
|
|
70
54
|
var theme = config.theme,
|
|
71
|
-
|
|
55
|
+
prefix = config.prefix;
|
|
72
56
|
var classMap = {
|
|
73
57
|
nextPart: new Map(),
|
|
74
58
|
validators: []
|
|
@@ -76,12 +60,11 @@ function createClassMap(config) {
|
|
|
76
60
|
var prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);
|
|
77
61
|
prefixedClassGroupEntries.forEach(function (_ref2) {
|
|
78
62
|
var classGroupId = _ref2[0],
|
|
79
|
-
|
|
63
|
+
classGroup = _ref2[1];
|
|
80
64
|
processClassesRecursively(classGroup, classMap, classGroupId, theme);
|
|
81
65
|
});
|
|
82
66
|
return classMap;
|
|
83
67
|
}
|
|
84
|
-
|
|
85
68
|
function processClassesRecursively(classGroup, classPartObject, classGroupId, theme) {
|
|
86
69
|
classGroup.forEach(function (classDefinition) {
|
|
87
70
|
if (typeof classDefinition === 'string') {
|
|
@@ -89,28 +72,24 @@ function processClassesRecursively(classGroup, classPartObject, classGroupId, th
|
|
|
89
72
|
classPartObjectToEdit.classGroupId = classGroupId;
|
|
90
73
|
return;
|
|
91
74
|
}
|
|
92
|
-
|
|
93
75
|
if (typeof classDefinition === 'function') {
|
|
94
76
|
if (isThemeGetter(classDefinition)) {
|
|
95
77
|
processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
|
|
96
78
|
return;
|
|
97
79
|
}
|
|
98
|
-
|
|
99
80
|
classPartObject.validators.push({
|
|
100
81
|
validator: classDefinition,
|
|
101
82
|
classGroupId: classGroupId
|
|
102
83
|
});
|
|
103
84
|
return;
|
|
104
85
|
}
|
|
105
|
-
|
|
106
86
|
Object.entries(classDefinition).forEach(function (_ref3) {
|
|
107
87
|
var key = _ref3[0],
|
|
108
|
-
|
|
88
|
+
classGroup = _ref3[1];
|
|
109
89
|
processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);
|
|
110
90
|
});
|
|
111
91
|
});
|
|
112
92
|
}
|
|
113
|
-
|
|
114
93
|
function getPart(classPartObject, path) {
|
|
115
94
|
var currentClassPartObject = classPartObject;
|
|
116
95
|
path.split(CLASS_PART_SEPARATOR).forEach(function (pathPart) {
|
|
@@ -120,37 +99,31 @@ function getPart(classPartObject, path) {
|
|
|
120
99
|
validators: []
|
|
121
100
|
});
|
|
122
101
|
}
|
|
123
|
-
|
|
124
102
|
currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);
|
|
125
103
|
});
|
|
126
104
|
return currentClassPartObject;
|
|
127
105
|
}
|
|
128
|
-
|
|
129
106
|
function isThemeGetter(func) {
|
|
130
107
|
return func.isThemeGetter;
|
|
131
108
|
}
|
|
132
|
-
|
|
133
109
|
function getPrefixedClassGroupEntries(classGroupEntries, prefix) {
|
|
134
110
|
if (!prefix) {
|
|
135
111
|
return classGroupEntries;
|
|
136
112
|
}
|
|
137
|
-
|
|
138
113
|
return classGroupEntries.map(function (_ref4) {
|
|
139
114
|
var classGroupId = _ref4[0],
|
|
140
|
-
|
|
115
|
+
classGroup = _ref4[1];
|
|
141
116
|
var prefixedClassGroup = classGroup.map(function (classDefinition) {
|
|
142
117
|
if (typeof classDefinition === 'string') {
|
|
143
118
|
return prefix + classDefinition;
|
|
144
119
|
}
|
|
145
|
-
|
|
146
120
|
if (typeof classDefinition === 'object') {
|
|
147
121
|
return Object.fromEntries(Object.entries(classDefinition).map(function (_ref5) {
|
|
148
122
|
var key = _ref5[0],
|
|
149
|
-
|
|
123
|
+
value = _ref5[1];
|
|
150
124
|
return [prefix + key, value];
|
|
151
125
|
}));
|
|
152
126
|
}
|
|
153
|
-
|
|
154
127
|
return classDefinition;
|
|
155
128
|
});
|
|
156
129
|
return [classGroupId, prefixedClassGroup];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class-utils.mjs","sources":["../../src/lib/class-utils.ts"],"sourcesContent":["import { ClassGroup, ClassGroupId, ClassValidator, Config, ThemeGetter, ThemeObject } from './types'\n\nexport interface ClassPartObject {\n nextPart: Map<string, ClassPartObject>\n validators: ClassValidatorObject[]\n classGroupId?: ClassGroupId\n}\n\ninterface ClassValidatorObject {\n classGroupId: ClassGroupId\n validator: ClassValidator\n}\n\nconst CLASS_PART_SEPARATOR = '-'\n\nexport function createClassUtils(config: Config) {\n const classMap = createClassMap(config)\n\n function getClassGroupId(className: string) {\n const classParts = className.split(CLASS_PART_SEPARATOR)\n\n // 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.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift()\n }\n\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className)\n }\n\n function getConflictingClassGroupIds(classGroupId: ClassGroupId) {\n return config.conflictingClassGroups[classGroupId] || []\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nfunction getGroupRecursive(\n classParts: string[],\n classPartObject: ClassPartObject,\n): ClassGroupId | undefined {\n if (classParts.length === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[0]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n const classGroupFromNextClassPart = nextClassPartObject\n ? getGroupRecursive(classParts.slice(1), nextClassPartObject)\n : undefined\n\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart\n }\n\n if (classPartObject.validators.length === 0) {\n return undefined\n }\n\n const classRest = classParts.join(CLASS_PART_SEPARATOR)\n\n return classPartObject.validators.find(({ validator }) => validator(classRest))?.classGroupId\n}\n\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/\n\nfunction getGroupIdForArbitraryProperty(className: string) {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)![1]\n const property = arbitraryPropertyClassName?.substring(\n 0,\n arbitraryPropertyClassName.indexOf(':'),\n )\n\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property\n }\n }\n}\n\n/**\n * Exported for testing only\n */\nexport function createClassMap(config: Config) {\n const { theme, prefix } = config\n const classMap: ClassPartObject = {\n nextPart: new Map<string, ClassPartObject>(),\n validators: [],\n }\n\n const prefixedClassGroupEntries = getPrefixedClassGroupEntries(\n Object.entries(config.classGroups),\n prefix,\n )\n\n prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {\n processClassesRecursively(classGroup, classMap, classGroupId, theme)\n })\n\n return classMap\n}\n\nfunction processClassesRecursively(\n classGroup: ClassGroup,\n classPartObject: ClassPartObject,\n classGroupId: ClassGroupId,\n theme: ThemeObject,\n) {\n classGroup.forEach((classDefinition) => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n return\n }\n\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(\n classDefinition(theme),\n classPartObject,\n classGroupId,\n theme,\n )\n return\n }\n\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId,\n })\n\n return\n }\n\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(\n classGroup,\n getPart(classPartObject, key),\n classGroupId,\n theme,\n )\n })\n })\n}\n\nfunction getPart(classPartObject: ClassPartObject, path: string) {\n let currentClassPartObject = classPartObject\n\n path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: [],\n })\n }\n\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart)!\n })\n\n return currentClassPartObject\n}\n\nfunction isThemeGetter(func: ClassValidator | ThemeGetter): func is ThemeGetter {\n return (func as ThemeGetter).isThemeGetter\n}\n\nfunction getPrefixedClassGroupEntries(\n classGroupEntries: Array<[classGroupId: string, classGroup: ClassGroup]>,\n prefix: string | undefined,\n): Array<[classGroupId: string, classGroup: ClassGroup]> {\n if (!prefix) {\n return classGroupEntries\n }\n\n return classGroupEntries.map(([classGroupId, classGroup]) => {\n const prefixedClassGroup = classGroup.map((classDefinition) => {\n if (typeof classDefinition === 'string') {\n return prefix + classDefinition\n }\n\n if (typeof classDefinition === 'object') {\n return Object.fromEntries(\n Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]),\n )\n }\n\n return classDefinition\n })\n\n return [classGroupId, prefixedClassGroup]\n })\n}\n"],"names":["CLASS_PART_SEPARATOR","createClassUtils","config","classMap","createClassMap","getClassGroupId","className","classParts","split","length","shift","getGroupRecursive","getGroupIdForArbitraryProperty","getConflictingClassGroupIds","classGroupId","conflictingClassGroups","classPartObject","currentClassPart","nextClassPartObject","nextPart","get","classGroupFromNextClassPart","slice","undefined","validators","classRest","join","find","validator","arbitraryPropertyRegex","test","arbitraryPropertyClassName","exec","property","substring","indexOf","theme","prefix","Map","prefixedClassGroupEntries","getPrefixedClassGroupEntries","Object","entries","classGroups","forEach","classGroup","processClassesRecursively","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","push","key","path","currentClassPartObject","pathPart","has","set","func","classGroupEntries","map","prefixedClassGroup","fromEntries","value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"class-utils.mjs","sources":["../../src/lib/class-utils.ts"],"sourcesContent":["import { ClassGroup, ClassGroupId, ClassValidator, Config, ThemeGetter, ThemeObject } from './types'\n\nexport interface ClassPartObject {\n nextPart: Map<string, ClassPartObject>\n validators: ClassValidatorObject[]\n classGroupId?: ClassGroupId\n}\n\ninterface ClassValidatorObject {\n classGroupId: ClassGroupId\n validator: ClassValidator\n}\n\nconst CLASS_PART_SEPARATOR = '-'\n\nexport function createClassUtils(config: Config) {\n const classMap = createClassMap(config)\n\n function getClassGroupId(className: string) {\n const classParts = className.split(CLASS_PART_SEPARATOR)\n\n // 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.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift()\n }\n\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className)\n }\n\n function getConflictingClassGroupIds(classGroupId: ClassGroupId) {\n return config.conflictingClassGroups[classGroupId] || []\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nfunction getGroupRecursive(\n classParts: string[],\n classPartObject: ClassPartObject,\n): ClassGroupId | undefined {\n if (classParts.length === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[0]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n const classGroupFromNextClassPart = nextClassPartObject\n ? getGroupRecursive(classParts.slice(1), nextClassPartObject)\n : undefined\n\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart\n }\n\n if (classPartObject.validators.length === 0) {\n return undefined\n }\n\n const classRest = classParts.join(CLASS_PART_SEPARATOR)\n\n return classPartObject.validators.find(({ validator }) => validator(classRest))?.classGroupId\n}\n\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/\n\nfunction getGroupIdForArbitraryProperty(className: string) {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)![1]\n const property = arbitraryPropertyClassName?.substring(\n 0,\n arbitraryPropertyClassName.indexOf(':'),\n )\n\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property\n }\n }\n}\n\n/**\n * Exported for testing only\n */\nexport function createClassMap(config: Config) {\n const { theme, prefix } = config\n const classMap: ClassPartObject = {\n nextPart: new Map<string, ClassPartObject>(),\n validators: [],\n }\n\n const prefixedClassGroupEntries = getPrefixedClassGroupEntries(\n Object.entries(config.classGroups),\n prefix,\n )\n\n prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {\n processClassesRecursively(classGroup, classMap, classGroupId, theme)\n })\n\n return classMap\n}\n\nfunction processClassesRecursively(\n classGroup: ClassGroup,\n classPartObject: ClassPartObject,\n classGroupId: ClassGroupId,\n theme: ThemeObject,\n) {\n classGroup.forEach((classDefinition) => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n return\n }\n\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(\n classDefinition(theme),\n classPartObject,\n classGroupId,\n theme,\n )\n return\n }\n\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId,\n })\n\n return\n }\n\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(\n classGroup,\n getPart(classPartObject, key),\n classGroupId,\n theme,\n )\n })\n })\n}\n\nfunction getPart(classPartObject: ClassPartObject, path: string) {\n let currentClassPartObject = classPartObject\n\n path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: [],\n })\n }\n\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart)!\n })\n\n return currentClassPartObject\n}\n\nfunction isThemeGetter(func: ClassValidator | ThemeGetter): func is ThemeGetter {\n return (func as ThemeGetter).isThemeGetter\n}\n\nfunction getPrefixedClassGroupEntries(\n classGroupEntries: Array<[classGroupId: string, classGroup: ClassGroup]>,\n prefix: string | undefined,\n): Array<[classGroupId: string, classGroup: ClassGroup]> {\n if (!prefix) {\n return classGroupEntries\n }\n\n return classGroupEntries.map(([classGroupId, classGroup]) => {\n const prefixedClassGroup = classGroup.map((classDefinition) => {\n if (typeof classDefinition === 'string') {\n return prefix + classDefinition\n }\n\n if (typeof classDefinition === 'object') {\n return Object.fromEntries(\n Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]),\n )\n }\n\n return classDefinition\n })\n\n return [classGroupId, prefixedClassGroup]\n })\n}\n"],"names":["CLASS_PART_SEPARATOR","createClassUtils","config","classMap","createClassMap","getClassGroupId","className","classParts","split","length","shift","getGroupRecursive","getGroupIdForArbitraryProperty","getConflictingClassGroupIds","classGroupId","conflictingClassGroups","classPartObject","currentClassPart","nextClassPartObject","nextPart","get","classGroupFromNextClassPart","slice","undefined","validators","classRest","join","find","validator","arbitraryPropertyRegex","test","arbitraryPropertyClassName","exec","property","substring","indexOf","theme","prefix","Map","prefixedClassGroupEntries","getPrefixedClassGroupEntries","Object","entries","classGroups","forEach","classGroup","processClassesRecursively","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","push","key","path","currentClassPartObject","pathPart","has","set","func","classGroupEntries","map","prefixedClassGroup","fromEntries","value"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Config } from './types';
|
|
2
|
-
export
|
|
2
|
+
export type ConfigUtils = ReturnType<typeof createConfigUtils>;
|
|
3
3
|
export declare function createConfigUtils(config: Config): {
|
|
4
4
|
getClassGroupId: (className: string) => string | undefined;
|
|
5
5
|
getConflictingClassGroupIds: (classGroupId: string) => readonly string[];
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { extends as _extends } from '../_virtual/_rollupPluginBabelHelpers.mjs';
|
|
2
1
|
import { createClassUtils } from './class-utils.mjs';
|
|
3
2
|
import { createLruCache } from './lru-cache.mjs';
|
|
4
3
|
import { createSplitModifiers } from './modifier-utils.mjs';
|
|
5
4
|
|
|
6
5
|
function createConfigUtils(config) {
|
|
7
|
-
return
|
|
6
|
+
return {
|
|
8
7
|
cache: createLruCache(config.cacheSize),
|
|
9
|
-
splitModifiers: createSplitModifiers(config)
|
|
10
|
-
|
|
8
|
+
splitModifiers: createSplitModifiers(config),
|
|
9
|
+
...createClassUtils(config)
|
|
10
|
+
};
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export { createConfigUtils };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-utils.mjs","sources":["../../src/lib/config-utils.ts"],"sourcesContent":["import { createClassUtils } from './class-utils'\nimport { createLruCache } from './lru-cache'\nimport { createSplitModifiers } from './modifier-utils'\nimport { Config } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport function createConfigUtils(config: Config) {\n return {\n cache: createLruCache<string, string>(config.cacheSize),\n splitModifiers: createSplitModifiers(config),\n ...createClassUtils(config),\n }\n}\n"],"names":["createConfigUtils","config","cache","createLruCache","cacheSize","splitModifiers","createSplitModifiers","createClassUtils"],"mappings":"
|
|
1
|
+
{"version":3,"file":"config-utils.mjs","sources":["../../src/lib/config-utils.ts"],"sourcesContent":["import { createClassUtils } from './class-utils'\nimport { createLruCache } from './lru-cache'\nimport { createSplitModifiers } from './modifier-utils'\nimport { Config } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport function createConfigUtils(config: Config) {\n return {\n cache: createLruCache<string, string>(config.cacheSize),\n splitModifiers: createSplitModifiers(config),\n ...createClassUtils(config),\n }\n}\n"],"names":["createConfigUtils","config","cache","createLruCache","cacheSize","splitModifiers","createSplitModifiers","createClassUtils"],"mappings":";;;;AAOM,SAAUA,iBAAiB,CAACC,MAAc,EAAA;EAC5C,OAAO;AACHC,IAAAA,KAAK,EAAEC,cAAc,CAAiBF,MAAM,CAACG,SAAS,CAAC;AACvDC,IAAAA,cAAc,EAAEC,oBAAoB,CAACL,MAAM,CAAC;IAC5C,GAAGM,gBAAgB,CAACN,MAAM,CAAA;GAC7B,CAAA;AACL;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ClassNameValue } from './tw-join';
|
|
2
2
|
import { Config } from './types';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
type CreateConfigFirst = () => Config;
|
|
4
|
+
type CreateConfigSubsequent = (config: Config) => Config;
|
|
5
|
+
type TailwindMerge = (...classLists: ClassNameValue[]) => string;
|
|
6
6
|
export declare function createTailwindMerge(...createConfig: [CreateConfigFirst, ...CreateConfigSubsequent[]]): TailwindMerge;
|
|
7
7
|
export {};
|
|
@@ -6,15 +6,13 @@ function createTailwindMerge() {
|
|
|
6
6
|
for (var _len = arguments.length, createConfig = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
7
7
|
createConfig[_key] = arguments[_key];
|
|
8
8
|
}
|
|
9
|
-
|
|
10
9
|
var configUtils;
|
|
11
10
|
var cacheGet;
|
|
12
11
|
var cacheSet;
|
|
13
12
|
var functionToCall = initTailwindMerge;
|
|
14
|
-
|
|
15
13
|
function initTailwindMerge(classList) {
|
|
16
14
|
var firstCreateConfig = createConfig[0],
|
|
17
|
-
|
|
15
|
+
restCreateConfig = createConfig.slice(1);
|
|
18
16
|
var config = restCreateConfig.reduce(function (previousConfig, createConfigCurrent) {
|
|
19
17
|
return createConfigCurrent(previousConfig);
|
|
20
18
|
}, firstCreateConfig());
|
|
@@ -24,19 +22,15 @@ function createTailwindMerge() {
|
|
|
24
22
|
functionToCall = tailwindMerge;
|
|
25
23
|
return tailwindMerge(classList);
|
|
26
24
|
}
|
|
27
|
-
|
|
28
25
|
function tailwindMerge(classList) {
|
|
29
26
|
var cachedResult = cacheGet(classList);
|
|
30
|
-
|
|
31
27
|
if (cachedResult) {
|
|
32
28
|
return cachedResult;
|
|
33
29
|
}
|
|
34
|
-
|
|
35
30
|
var result = mergeClassList(classList, configUtils);
|
|
36
31
|
cacheSet(classList, result);
|
|
37
32
|
return result;
|
|
38
33
|
}
|
|
39
|
-
|
|
40
34
|
return function callTailwindMerge() {
|
|
41
35
|
return functionToCall(twJoin.apply(null, arguments));
|
|
42
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-tailwind-merge.mjs","sources":["../../src/lib/create-tailwind-merge.ts"],"sourcesContent":["import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { Config } from './types'\n\ntype CreateConfigFirst = () => Config\ntype CreateConfigSubsequent = (config: Config) => Config\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport function createTailwindMerge(\n ...createConfig: [CreateConfigFirst, ...CreateConfigSubsequent[]]\n): TailwindMerge {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall = initTailwindMerge\n\n function initTailwindMerge(classList: string) {\n const [firstCreateConfig, ...restCreateConfig] = createConfig\n\n const config = restCreateConfig.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n firstCreateConfig(),\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n function tailwindMerge(classList: string) {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments as any))\n }\n}\n"],"names":["createTailwindMerge","createConfig","configUtils","cacheGet","cacheSet","functionToCall","initTailwindMerge","classList","firstCreateConfig","restCreateConfig","config","reduce","previousConfig","createConfigCurrent","createConfigUtils","cache","get","set","tailwindMerge","cachedResult","result","mergeClassList","callTailwindMerge","twJoin","apply","arguments"],"mappings":";;;;AAUgB,SAAAA,
|
|
1
|
+
{"version":3,"file":"create-tailwind-merge.mjs","sources":["../../src/lib/create-tailwind-merge.ts"],"sourcesContent":["import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { Config } from './types'\n\ntype CreateConfigFirst = () => Config\ntype CreateConfigSubsequent = (config: Config) => Config\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport function createTailwindMerge(\n ...createConfig: [CreateConfigFirst, ...CreateConfigSubsequent[]]\n): TailwindMerge {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall = initTailwindMerge\n\n function initTailwindMerge(classList: string) {\n const [firstCreateConfig, ...restCreateConfig] = createConfig\n\n const config = restCreateConfig.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n firstCreateConfig(),\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n function tailwindMerge(classList: string) {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments as any))\n }\n}\n"],"names":["createTailwindMerge","createConfig","configUtils","cacheGet","cacheSet","functionToCall","initTailwindMerge","classList","firstCreateConfig","restCreateConfig","config","reduce","previousConfig","createConfigCurrent","createConfigUtils","cache","get","set","tailwindMerge","cachedResult","result","mergeClassList","callTailwindMerge","twJoin","apply","arguments"],"mappings":";;;;AAUgB,SAAAA,mBAAmB,GACkC;AAAA,EAAA,KAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAA9DC,YAA8D,GAAA,IAAA,KAAA,CAAA,IAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,GAAA,IAAA,EAAA,IAAA,EAAA,EAAA;IAA9DA,YAA8D,CAAA,IAAA,CAAA,GAAA,SAAA,CAAA,IAAA,CAAA,CAAA;AAAA,GAAA;AAEjE,EAAA,IAAIC,WAAwB,CAAA;AAC5B,EAAA,IAAIC,QAAqC,CAAA;AACzC,EAAA,IAAIC,QAAqC,CAAA;EACzC,IAAIC,cAAc,GAAGC,iBAAiB,CAAA;EAEtC,SAASA,iBAAiB,CAACC,SAAiB,EAAA;IACxC,IAAOC,iBAAiB,GAAyBP,YAAY,CAAA,CAAA,CAAA;AAAhCQ,MAAAA,gBAAgB,GAAIR,YAAY,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;IAE7D,IAAMS,MAAM,GAAGD,gBAAgB,CAACE,MAAM,CAClC,UAACC,cAAc,EAAEC,mBAAmB,EAAA;MAAA,OAAKA,mBAAmB,CAACD,cAAc,CAAC,CAAA;KAC5EJ,EAAAA,iBAAiB,EAAE,CACtB,CAAA;AAEDN,IAAAA,WAAW,GAAGY,iBAAiB,CAACJ,MAAM,CAAC,CAAA;AACvCP,IAAAA,QAAQ,GAAGD,WAAW,CAACa,KAAK,CAACC,GAAG,CAAA;AAChCZ,IAAAA,QAAQ,GAAGF,WAAW,CAACa,KAAK,CAACE,GAAG,CAAA;AAChCZ,IAAAA,cAAc,GAAGa,aAAa,CAAA;IAE9B,OAAOA,aAAa,CAACX,SAAS,CAAC,CAAA;AACnC,GAAA;EAEA,SAASW,aAAa,CAACX,SAAiB,EAAA;AACpC,IAAA,IAAMY,YAAY,GAAGhB,QAAQ,CAACI,SAAS,CAAC,CAAA;AAExC,IAAA,IAAIY,YAAY,EAAE;AACd,MAAA,OAAOA,YAAY,CAAA;AACtB,KAAA;AAED,IAAA,IAAMC,MAAM,GAAGC,cAAc,CAACd,SAAS,EAAEL,WAAW,CAAC,CAAA;AACrDE,IAAAA,QAAQ,CAACG,SAAS,EAAEa,MAAM,CAAC,CAAA;AAE3B,IAAA,OAAOA,MAAM,CAAA;AACjB,GAAA;EAEA,OAAO,SAASE,iBAAiB,GAAA;IAC7B,OAAOjB,cAAc,CAACkB,MAAM,CAACC,KAAK,CAAC,IAAI,EAAEC,SAAgB,CAAC,CAAC,CAAA;GAC9D,CAAA;AACL;;;;"}
|