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.
Files changed (41) hide show
  1. package/README.md +10 -10
  2. package/dist/lib/class-utils.mjs +10 -37
  3. package/dist/lib/class-utils.mjs.map +1 -1
  4. package/dist/lib/config-utils.d.ts +1 -1
  5. package/dist/lib/config-utils.mjs +4 -4
  6. package/dist/lib/config-utils.mjs.map +1 -1
  7. package/dist/lib/create-tailwind-merge.d.ts +3 -3
  8. package/dist/lib/create-tailwind-merge.mjs +1 -7
  9. package/dist/lib/create-tailwind-merge.mjs.map +1 -1
  10. package/dist/lib/default-config.mjs +0 -259
  11. package/dist/lib/default-config.mjs.map +1 -1
  12. package/dist/lib/extend-tailwind-merge.d.ts +1 -1
  13. package/dist/lib/extend-tailwind-merge.mjs +0 -1
  14. package/dist/lib/extend-tailwind-merge.mjs.map +1 -1
  15. package/dist/lib/from-theme.mjs +0 -1
  16. package/dist/lib/from-theme.mjs.map +1 -1
  17. package/dist/lib/lru-cache.mjs +0 -6
  18. package/dist/lib/lru-cache.mjs.map +1 -1
  19. package/dist/lib/merge-classlist.mjs +8 -14
  20. package/dist/lib/merge-classlist.mjs.map +1 -1
  21. package/dist/lib/merge-configs.mjs +0 -5
  22. package/dist/lib/merge-configs.mjs.map +1 -1
  23. package/dist/lib/modifier-utils.mjs +2 -9
  24. package/dist/lib/modifier-utils.mjs.map +1 -1
  25. package/dist/lib/tw-join.d.ts +2 -2
  26. package/dist/lib/tw-join.mjs +0 -6
  27. package/dist/lib/tw-join.mjs.map +1 -1
  28. package/dist/lib/tw-merge.mjs.map +1 -1
  29. package/dist/lib/types.d.ts +6 -6
  30. package/dist/lib/validators.mjs +10 -31
  31. package/dist/lib/validators.mjs.map +1 -1
  32. package/dist/tailwind-merge.cjs.development.js +35 -397
  33. package/dist/tailwind-merge.cjs.development.js.map +1 -1
  34. package/dist/tailwind-merge.cjs.production.min.js +1 -1
  35. package/dist/tailwind-merge.cjs.production.min.js.map +1 -1
  36. package/dist/tailwind-merge.mjs +0 -1
  37. package/dist/tailwind-merge.mjs.map +1 -1
  38. package/package.json +9 -9
  39. package/src/lib/validators.ts +1 -1
  40. package/dist/_virtual/_rollupPluginBabelHelpers.mjs +0 -19
  41. 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.8.1/assets/logo.svg" alt="tailwind-merge" height="150px" />
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.8.1/docs/what-is-it-for.md)
31
- - [Features](https://github.com/dcastil/tailwind-merge/tree/v1.8.1/docs/features.md)
32
- - [Configuration](https://github.com/dcastil/tailwind-merge/tree/v1.8.1/docs/configuration.md)
33
- - [Recipes](https://github.com/dcastil/tailwind-merge/tree/v1.8.1/docs/recipes.md)
34
- - [API reference](https://github.com/dcastil/tailwind-merge/tree/v1.8.1/docs/api-reference.md)
35
- - [Writing plugins](https://github.com/dcastil/tailwind-merge/tree/v1.8.1/docs/writing-plugins.md)
36
- - [Versioning](https://github.com/dcastil/tailwind-merge/tree/v1.8.1/docs/versioning.md)
37
- - [Contributing](https://github.com/dcastil/tailwind-merge/tree/v1.8.1/.github/CONTRIBUTING.md)
38
- - [Similar packages](https://github.com/dcastil/tailwind-merge/tree/v1.8.1/docs/similar-packages.md)
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 -->
@@ -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); // 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.
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 (_classPartObject$vali = classPartObject.validators.find(function (_ref) {
34
+ return classPartObject.validators.find(function (_ref) {
46
35
  var validator = _ref.validator;
47
36
  return validator(classRest);
48
- })) == null ? void 0 : _classPartObject$vali.classGroupId;
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 == null ? void 0 : arbitraryPropertyClassName.substring(0, arbitraryPropertyClassName.indexOf(':'));
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
- prefix = config.prefix;
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
- classGroup = _ref2[1];
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
- classGroup = _ref3[1];
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
- classGroup = _ref4[1];
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
- value = _ref5[1];
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 declare type ConfigUtils = ReturnType<typeof createConfigUtils>;
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 _extends({
6
+ return {
8
7
  cache: createLruCache(config.cacheSize),
9
- splitModifiers: createSplitModifiers(config)
10
- }, createClassUtils(config));
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":";;;;;AAOM,SAAUA,iBAAV,CAA4BC,MAA5B,EAA0C;AAC5C,EAAA,OAAA,QAAA,CAAA;AACIC,IAAAA,KAAK,EAAEC,cAAc,CAAiBF,MAAM,CAACG,SAAxB,CADzB;IAEIC,cAAc,EAAEC,oBAAoB,CAACL,MAAD,CAAA;GACjCM,EAAAA,gBAAgB,CAACN,MAAD,CAHvB,CAAA,CAAA;AAKH;;;;"}
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
- declare type CreateConfigFirst = () => Config;
4
- declare type CreateConfigSubsequent = (config: Config) => Config;
5
- declare type TailwindMerge = (...classLists: ClassNameValue[]) => string;
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
- restCreateConfig = createConfig.slice(1);
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,mBAAA,GACqD;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,WAAJ,CAAA;AACA,EAAA,IAAIC,QAAJ,CAAA;AACA,EAAA,IAAIC,QAAJ,CAAA;EACA,IAAIC,cAAc,GAAGC,iBAArB,CAAA;;EAEA,SAASA,iBAAT,CAA2BC,SAA3B,EAA4C;IACxC,IAAOC,iBAAP,GAAiDP,YAAjD,CAAA,CAAA,CAAA;QAA6BQ,gBAA7B,GAAiDR,YAAjD,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;IAEA,IAAMS,MAAM,GAAGD,gBAAgB,CAACE,MAAjB,CACX,UAACC,cAAD,EAAiBC,mBAAjB,EAAA;MAAA,OAAyCA,mBAAmB,CAACD,cAAD,CAA5D,CAAA;KADW,EAEXJ,iBAAiB,EAFN,CAAf,CAAA;AAKAN,IAAAA,WAAW,GAAGY,iBAAiB,CAACJ,MAAD,CAA/B,CAAA;AACAP,IAAAA,QAAQ,GAAGD,WAAW,CAACa,KAAZ,CAAkBC,GAA7B,CAAA;AACAZ,IAAAA,QAAQ,GAAGF,WAAW,CAACa,KAAZ,CAAkBE,GAA7B,CAAA;AACAZ,IAAAA,cAAc,GAAGa,aAAjB,CAAA;IAEA,OAAOA,aAAa,CAACX,SAAD,CAApB,CAAA;AACH,GAAA;;EAED,SAASW,aAAT,CAAuBX,SAAvB,EAAwC;AACpC,IAAA,IAAMY,YAAY,GAAGhB,QAAQ,CAACI,SAAD,CAA7B,CAAA;;AAEA,IAAA,IAAIY,YAAJ,EAAkB;AACd,MAAA,OAAOA,YAAP,CAAA;AACH,KAAA;;AAED,IAAA,IAAMC,MAAM,GAAGC,cAAc,CAACd,SAAD,EAAYL,WAAZ,CAA7B,CAAA;AACAE,IAAAA,QAAQ,CAACG,SAAD,EAAYa,MAAZ,CAAR,CAAA;AAEA,IAAA,OAAOA,MAAP,CAAA;AACH,GAAA;;EAED,OAAO,SAASE,iBAAT,GAA0B;IAC7B,OAAOjB,cAAc,CAACkB,MAAM,CAACC,KAAP,CAAa,IAAb,EAAmBC,SAAnB,CAAD,CAArB,CAAA;GADJ,CAAA;AAGH;;;;"}
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;;;;"}