tailwind-merge 1.3.0 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  <div align="center">
2
2
  <br />
3
3
  <a href="https://github.com/dcastil/tailwind-merge">
4
- <!-- AUTOGENERATED VERSION START --><img src="https://github.com/dcastil/tailwind-merge/raw/v1.3.0/assets/logo.svg" alt="tailwind-merge" width="221px" /><!-- AUTOGENERATED END -->
4
+ <!-- AUTOGENERATED VERSION START --><img src="https://github.com/dcastil/tailwind-merge/raw/v1.4.0/assets/logo.svg" alt="tailwind-merge" width="221px" /><!-- AUTOGENERATED END -->
5
5
  </a>
6
6
  </div>
7
7
 
@@ -270,6 +270,7 @@ In the Tailwind config you can modify theme scales. tailwind-merge follows the s
270
270
  - `brightness`
271
271
  - `borderColor`
272
272
  - `borderRadius`
273
+ - `borderSpacing`
273
274
  - `borderWidth`
274
275
  - `contrast`
275
276
  - `grayscale`
@@ -619,8 +620,10 @@ This package follows the [SemVer](https://semver.org) versioning rules. More spe
619
620
 
620
621
  - Releases with major version 0 might introduce breaking changes on a minor version update.
621
622
 
623
+ - A non-production-ready version of every commit pushed to the main branch is released under the `dev` tag for testing purposes. It has the format `0.0.0-dev.<git SHA>`.
624
+
622
625
  - A changelog is documented in [GitHub Releases](https://github.com/dcastil/tailwind-merge/releases).
623
626
 
624
627
  ## Contributing
625
628
 
626
- Please see <!-- AUTOGENERATED VERSION START -->[CONTRIBUTING](https://github.com/dcastil/tailwind-merge/tree/v1.3.0/.github/CONTRIBUTING.md)<!-- AUTOGENERATED END --> for details.
629
+ Please see <!-- AUTOGENERATED VERSION START -->[CONTRIBUTING](https://github.com/dcastil/tailwind-merge/tree/v1.4.0/.github/CONTRIBUTING.md)<!-- AUTOGENERATED END --> for details.
@@ -1,5 +1,5 @@
1
1
  function _extends() {
2
- _extends = Object.assign || function (target) {
2
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
3
3
  for (var i = 1; i < arguments.length; i++) {
4
4
  var source = arguments[i];
5
5
 
@@ -12,7 +12,6 @@ function _extends() {
12
12
 
13
13
  return target;
14
14
  };
15
-
16
15
  return _extends.apply(this, arguments);
17
16
  }
18
17
 
@@ -1 +1 @@
1
- {"version":3,"file":"_rollupPluginBabelHelpers.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"_rollupPluginBabelHelpers.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ClassGroupId, Config, ClassValidator } from './types';
2
2
  export interface ClassPartObject {
3
- nextPart: Record<string, ClassPartObject>;
3
+ nextPart: Map<string, ClassPartObject>;
4
4
  validators: ClassValidatorObject[];
5
5
  classGroupId?: ClassGroupId;
6
6
  }
@@ -30,7 +30,7 @@ function getGroupRecursive(classParts, classPartObject) {
30
30
  }
31
31
 
32
32
  var currentClassPart = classParts[0];
33
- var nextClassPartObject = classPartObject.nextPart[currentClassPart];
33
+ var nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
34
34
  var classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;
35
35
 
36
36
  if (classGroupFromNextClassPart) {
@@ -70,7 +70,7 @@ function createClassMap(config) {
70
70
  var theme = config.theme,
71
71
  prefix = config.prefix;
72
72
  var classMap = {
73
- nextPart: {},
73
+ nextPart: new Map(),
74
74
  validators: []
75
75
  };
76
76
  var prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);
@@ -114,14 +114,14 @@ function processClassesRecursively(classGroup, classPartObject, classGroupId, th
114
114
  function getPart(classPartObject, path) {
115
115
  var currentClassPartObject = classPartObject;
116
116
  path.split(CLASS_PART_SEPARATOR).forEach(function (pathPart) {
117
- if (currentClassPartObject.nextPart[pathPart] === undefined) {
118
- currentClassPartObject.nextPart[pathPart] = {
119
- nextPart: {},
117
+ if (!currentClassPartObject.nextPart.has(pathPart)) {
118
+ currentClassPartObject.nextPart.set(pathPart, {
119
+ nextPart: new Map(),
120
120
  validators: []
121
- };
121
+ });
122
122
  }
123
123
 
124
- currentClassPartObject = currentClassPartObject.nextPart[pathPart];
124
+ currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);
125
125
  });
126
126
  return currentClassPartObject;
127
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"class-utils.mjs","sources":["../../src/lib/class-utils.ts"],"sourcesContent":["import { ClassGroupId, Config, ClassGroup, ClassValidator, ThemeObject, ThemeGetter } from './types'\n\nexport interface ClassPartObject {\n nextPart: Record<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[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: {},\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[pathPart] === undefined) {\n currentClassPartObject.nextPart[pathPart] = {\n nextPart: {},\n validators: [],\n }\n }\n\n currentClassPartObject = currentClassPartObject.nextPart[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","classGroupFromNextClassPart","slice","undefined","validators","classRest","join","find","validator","arbitraryPropertyRegex","test","arbitraryPropertyClassName","exec","property","substring","indexOf","theme","prefix","prefixedClassGroupEntries","getPrefixedClassGroupEntries","Object","entries","classGroups","forEach","classGroup","processClassesRecursively","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","push","key","path","currentClassPartObject","pathPart","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 { ClassGroupId, Config, ClassGroup, ClassValidator, ThemeObject, ThemeGetter } 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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"}
@@ -3,5 +3,5 @@ export declare 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[];
6
- cache: import("./lru-cache").LruCache<string>;
6
+ cache: import("./lru-cache").LruCache<string, string>;
7
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config-utils.mjs","sources":["../../src/lib/config-utils.ts"],"sourcesContent":["import { getLruCache } from './lru-cache'\nimport { Config } from './types'\nimport { createClassUtils } from './class-utils'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport function createConfigUtils(config: Config) {\n return {\n cache: getLruCache<string>(config.cacheSize),\n ...createClassUtils(config),\n }\n}\n"],"names":["createConfigUtils","config","cache","getLruCache","cacheSize","createClassUtils"],"mappings":";;;;AAMM,SAAUA,iBAAV,CAA4BC,MAA5B,EAA0C;AAC5C,EAAA,OAAA,QAAA,CAAA;AACIC,IAAAA,KAAK,EAAEC,WAAW,CAASF,MAAM,CAACG,SAAhB,CAAA;AADtB,GAEOC,EAAAA,gBAAgB,CAACJ,MAAD,CAFvB,CAAA,CAAA;AAIH;;;;"}
1
+ {"version":3,"file":"config-utils.mjs","sources":["../../src/lib/config-utils.ts"],"sourcesContent":["import { getLruCache } from './lru-cache'\nimport { Config } from './types'\nimport { createClassUtils } from './class-utils'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport function createConfigUtils(config: Config) {\n return {\n cache: getLruCache<string, string>(config.cacheSize),\n ...createClassUtils(config),\n }\n}\n"],"names":["createConfigUtils","config","cache","getLruCache","cacheSize","createClassUtils"],"mappings":";;;;AAMM,SAAUA,iBAAV,CAA4BC,MAA5B,EAA0C;AAC5C,EAAA,OAAA,QAAA,CAAA;AACIC,IAAAA,KAAK,EAAEC,WAAW,CAAiBF,MAAM,CAACG,SAAxB,CAAA;GACfC,EAAAA,gBAAgB,CAACJ,MAAD,CAFvB,CAAA,CAAA;AAIH;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-tailwind-merge.mjs","sources":["../../src/lib/create-tailwind-merge.ts"],"sourcesContent":["import { createConfigUtils } from './config-utils'\nimport { Config } from './types'\nimport { mergeClassList } from './merge-classlist'\n\ntype CreateConfigFirst = () => Config\ntype CreateConfigSubsequent = (config: Config) => Config\ntype ClassLists = ClassListElement[]\ntype ClassListElement = string | undefined | null | false\ntype TailwindMerge = (...classLists: ClassLists) => 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 let classList = ''\n let temp: ClassListElement\n\n // Credits → https://github.com/lukeed/clsx/blob/v1.1.1/src/index.js\n for (let index = 0; index < arguments.length; index += 1) {\n if ((temp = arguments[index])) {\n classList && (classList += ' ')\n classList += temp\n }\n }\n\n return functionToCall(classList)\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","temp","index","arguments","length"],"mappings":";;;AAWgB,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;AAA9DA,IAAAA,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;AACA,EAAIC,IAAAA,cAAc,GAAGC,iBAArB,CAAA;;AAEA,EAASA,SAAAA,iBAAT,CAA2BC,SAA3B,EAA4C;AACxC,IAAOC,IAAAA,iBAAP,GAAiDP,YAAjD,CAAA,CAAA,CAAA;AAAA,QAA6BQ,gBAA7B,GAAiDR,YAAjD,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AAEA,IAAMS,IAAAA,MAAM,GAAGD,gBAAgB,CAACE,MAAjB,CACX,UAACC,cAAD,EAAiBC,mBAAjB,EAAA;AAAA,MAAyCA,OAAAA,mBAAmB,CAACD,cAAD,CAA5D,CAAA;AAAA,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;AAEA,IAAOA,OAAAA,aAAa,CAACX,SAAD,CAApB,CAAA;AACH,GAAA;;AAED,EAASW,SAAAA,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;;AAED,EAAO,OAAA,SAASE,iBAAT,GAA0B;AAC7B,IAAIf,IAAAA,SAAS,GAAG,EAAhB,CAAA;AACA,IAAIgB,IAAAA,IAAJ,CAF6B;;AAK7B,IAAA,KAAK,IAAIC,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGC,SAAS,CAACC,MAAtC,EAA8CF,KAAK,IAAI,CAAvD,EAA0D;AACtD,MAAA,IAAKD,IAAI,GAAGE,SAAS,CAACD,KAAD,CAArB,EAA+B;AAC3BjB,QAAAA,SAAS,KAAKA,SAAS,IAAI,GAAlB,CAAT,CAAA;AACAA,QAAAA,SAAS,IAAIgB,IAAb,CAAA;AACH,OAAA;AACJ,KAAA;;AAED,IAAOlB,OAAAA,cAAc,CAACE,SAAD,CAArB,CAAA;AACH,GAbD,CAAA;AAcH;;;;"}
1
+ {"version":3,"file":"create-tailwind-merge.mjs","sources":["../../src/lib/create-tailwind-merge.ts"],"sourcesContent":["import { createConfigUtils } from './config-utils'\nimport { Config } from './types'\nimport { mergeClassList } from './merge-classlist'\n\ntype CreateConfigFirst = () => Config\ntype CreateConfigSubsequent = (config: Config) => Config\ntype ClassLists = ClassListElement[]\ntype ClassListElement = string | undefined | null | false\ntype TailwindMerge = (...classLists: ClassLists) => 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 let classList = ''\n let temp: ClassListElement\n\n // Credits → https://github.com/lukeed/clsx/blob/v1.1.1/src/index.js\n for (let index = 0; index < arguments.length; index += 1) {\n if ((temp = arguments[index])) {\n classList && (classList += ' ')\n classList += temp\n }\n }\n\n return functionToCall(classList)\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","temp","index","arguments","length"],"mappings":";;;AAWgB,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,IAAIf,SAAS,GAAG,EAAhB,CAAA;IACA,IAAIgB,IAAJ,CAF6B;;AAK7B,IAAA,KAAK,IAAIC,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGC,SAAS,CAACC,MAAtC,EAA8CF,KAAK,IAAI,CAAvD,EAA0D;AACtD,MAAA,IAAKD,IAAI,GAAGE,SAAS,CAACD,KAAD,CAArB,EAA+B;AAC3BjB,QAAAA,SAAS,KAAKA,SAAS,IAAI,GAAlB,CAAT,CAAA;AACAA,QAAAA,SAAS,IAAIgB,IAAb,CAAA;AACH,OAAA;AACJ,KAAA;;IAED,OAAOlB,cAAc,CAACE,SAAD,CAArB,CAAA;GAZJ,CAAA;AAcH;;;;"}
@@ -569,7 +569,7 @@ export declare function getDefaultConfig(): {
569
569
  * @see https://tailwindcss.com/docs/width
570
570
  */
571
571
  readonly w: readonly [{
572
- readonly w: readonly ["auto", "min", "max", import("./types").ThemeGetter];
572
+ readonly w: readonly ["auto", "min", "max", "fit", import("./types").ThemeGetter];
573
573
  }];
574
574
  /**
575
575
  * Min-Width
@@ -724,7 +724,7 @@ function getDefaultConfig() {
724
724
  * @see https://tailwindcss.com/docs/width
725
725
  */
726
726
  w: [{
727
- w: ['auto', 'min', 'max', spacing]
727
+ w: ['auto', 'min', 'max', 'fit', spacing]
728
728
  }],
729
729
 
730
730
  /**