tailwind-merge 1.9.1 → 1.10.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
@@ -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.9.1/assets/logo.svg" alt="tailwind-merge" height="150px" />
5
+ <img src="https://github.com/dcastil/tailwind-merge/raw/v1.10.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.9.1/docs/what-is-it-for.md)
31
- - [Features](https://github.com/dcastil/tailwind-merge/tree/v1.9.1/docs/features.md)
32
- - [Configuration](https://github.com/dcastil/tailwind-merge/tree/v1.9.1/docs/configuration.md)
33
- - [Recipes](https://github.com/dcastil/tailwind-merge/tree/v1.9.1/docs/recipes.md)
34
- - [API reference](https://github.com/dcastil/tailwind-merge/tree/v1.9.1/docs/api-reference.md)
35
- - [Writing plugins](https://github.com/dcastil/tailwind-merge/tree/v1.9.1/docs/writing-plugins.md)
36
- - [Versioning](https://github.com/dcastil/tailwind-merge/tree/v1.9.1/docs/versioning.md)
37
- - [Contributing](https://github.com/dcastil/tailwind-merge/tree/v1.9.1/.github/CONTRIBUTING.md)
38
- - [Similar packages](https://github.com/dcastil/tailwind-merge/tree/v1.9.1/docs/similar-packages.md)
30
+ - [What is it for](https://github.com/dcastil/tailwind-merge/tree/v1.10.0/docs/what-is-it-for.md)
31
+ - [Features](https://github.com/dcastil/tailwind-merge/tree/v1.10.0/docs/features.md)
32
+ - [Configuration](https://github.com/dcastil/tailwind-merge/tree/v1.10.0/docs/configuration.md)
33
+ - [Recipes](https://github.com/dcastil/tailwind-merge/tree/v1.10.0/docs/recipes.md)
34
+ - [API reference](https://github.com/dcastil/tailwind-merge/tree/v1.10.0/docs/api-reference.md)
35
+ - [Writing plugins](https://github.com/dcastil/tailwind-merge/tree/v1.10.0/docs/writing-plugins.md)
36
+ - [Versioning](https://github.com/dcastil/tailwind-merge/tree/v1.10.0/docs/versioning.md)
37
+ - [Contributing](https://github.com/dcastil/tailwind-merge/tree/v1.10.0/.github/CONTRIBUTING.md)
38
+ - [Similar packages](https://github.com/dcastil/tailwind-merge/tree/v1.10.0/docs/similar-packages.md)
39
39
 
40
40
  <!-- AUTOGENERATED END -->
@@ -0,0 +1,17 @@
1
+ function _extends() {
2
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
3
+ for (var i = 1; i < arguments.length; i++) {
4
+ var source = arguments[i];
5
+ for (var key in source) {
6
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
7
+ target[key] = source[key];
8
+ }
9
+ }
10
+ }
11
+ return target;
12
+ };
13
+ return _extends.apply(this, arguments);
14
+ }
15
+
16
+ export { _extends as extends };
17
+ //# sourceMappingURL=_rollupPluginBabelHelpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_rollupPluginBabelHelpers.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
@@ -18,6 +18,7 @@ function createClassUtils(config) {
18
18
  };
19
19
  }
20
20
  function getGroupRecursive(classParts, classPartObject) {
21
+ var _classPartObject$vali;
21
22
  if (classParts.length === 0) {
22
23
  return classPartObject.classGroupId;
23
24
  }
@@ -31,16 +32,16 @@ function getGroupRecursive(classParts, classPartObject) {
31
32
  return undefined;
32
33
  }
33
34
  var classRest = classParts.join(CLASS_PART_SEPARATOR);
34
- return classPartObject.validators.find(function (_ref) {
35
+ return (_classPartObject$vali = classPartObject.validators.find(function (_ref) {
35
36
  var validator = _ref.validator;
36
37
  return validator(classRest);
37
- })?.classGroupId;
38
+ })) == null ? void 0 : _classPartObject$vali.classGroupId;
38
39
  }
39
40
  var arbitraryPropertyRegex = /^\[(.+)\]$/;
40
41
  function getGroupIdForArbitraryProperty(className) {
41
42
  if (arbitraryPropertyRegex.test(className)) {
42
43
  var arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
43
- var property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));
44
+ var property = arbitraryPropertyClassName == null ? void 0 : arbitraryPropertyClassName.substring(0, arbitraryPropertyClassName.indexOf(':'));
44
45
  if (property) {
45
46
  // I use two dots here because one dot is used as prefix for class groups in plugins
46
47
  return 'arbitrary..' + property;
@@ -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,13 +1,13 @@
1
+ import { extends as _extends } from '../_virtual/_rollupPluginBabelHelpers.mjs';
1
2
  import { createClassUtils } from './class-utils.mjs';
2
3
  import { createLruCache } from './lru-cache.mjs';
3
4
  import { createSplitModifiers } from './modifier-utils.mjs';
4
5
 
5
6
  function createConfigUtils(config) {
6
- return {
7
+ return _extends({
7
8
  cache: createLruCache(config.cacheSize),
8
- splitModifiers: createSplitModifiers(config),
9
- ...createClassUtils(config)
10
- };
9
+ splitModifiers: createSplitModifiers(config)
10
+ }, createClassUtils(config));
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,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
+ {"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;AAC5C,EAAA,OAAA,QAAA,CAAA;AACIC,IAAAA,KAAK,EAAEC,cAAc,CAAiBF,MAAM,CAACG,SAAS,CAAC;IACvDC,cAAc,EAAEC,oBAAoB,CAACL,MAAM,CAAA;GACxCM,EAAAA,gBAAgB,CAACN,MAAM,CAAC,CAAA,CAAA;AAEnC;;;;"}
@@ -2,7 +2,7 @@ var arbitraryValueRegex = /^\[(?:([a-z-]+):)?(.+)\]$/i;
2
2
  var fractionRegex = /^\d+\/\d+$/;
3
3
  var stringLengths = /*#__PURE__*/new Set(['px', 'full', 'screen']);
4
4
  var tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
5
- var lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh)/;
5
+ var lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))/;
6
6
  // Shadow always begins with x and y offset separated by underscore
7
7
  var shadowRegex = /^-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
8
8
  function isLength(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"validators.mjs","sources":["../../src/lib/validators.ts"],"sourcesContent":["const arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i\nconst fractionRegex = /^\\d+\\/\\d+$/\nconst stringLengths = new Set(['px', 'full', 'screen'])\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh)/\n// Shadow always begins with x and y offset separated by underscore\nconst shadowRegex = /^-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\n\nexport function isLength(value: string) {\n return (\n isNumber(value) ||\n stringLengths.has(value) ||\n fractionRegex.test(value) ||\n isArbitraryLength(value)\n )\n}\n\nexport function isArbitraryLength(value: string) {\n return getIsArbitraryValue(value, 'length', isLengthOnly)\n}\n\nexport function isArbitrarySize(value: string) {\n return getIsArbitraryValue(value, 'size', isNever)\n}\n\nexport function isArbitraryPosition(value: string) {\n return getIsArbitraryValue(value, 'position', isNever)\n}\n\nexport function isArbitraryUrl(value: string) {\n return getIsArbitraryValue(value, 'url', isUrl)\n}\n\nexport function isArbitraryNumber(value: string) {\n return getIsArbitraryValue(value, 'number', isNumber)\n}\n\n/**\n * @deprecated Will be removed in next major version. Use `isArbitraryNumber` instead.\n */\nexport const isArbitraryWeight = isArbitraryNumber\n\nexport function isNumber(value: string) {\n return !Number.isNaN(Number(value))\n}\n\nexport function isInteger(value: string) {\n return isIntegerOnly(value) || getIsArbitraryValue(value, 'number', isIntegerOnly)\n}\n\nexport function isArbitraryValue(value: string) {\n return arbitraryValueRegex.test(value)\n}\n\nexport function isAny() {\n return true\n}\n\nexport function isTshirtSize(value: string) {\n return tshirtUnitRegex.test(value)\n}\n\nexport function isArbitraryShadow(value: string) {\n return getIsArbitraryValue(value, '', isShadow)\n}\n\nfunction getIsArbitraryValue(value: string, label: string, testValue: (value: string) => boolean) {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return result[1] === label\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nfunction isLengthOnly(value: string) {\n return lengthUnitRegex.test(value)\n}\n\nfunction isNever() {\n return false\n}\n\nfunction isUrl(value: string) {\n return value.startsWith('url(')\n}\n\nfunction isIntegerOnly(value: string) {\n return Number.isInteger(Number(value))\n}\n\nfunction isShadow(value: string) {\n return shadowRegex.test(value)\n}\n"],"names":["arbitraryValueRegex","fractionRegex","stringLengths","Set","tshirtUnitRegex","lengthUnitRegex","shadowRegex","isLength","value","isNumber","has","test","isArbitraryLength","getIsArbitraryValue","isLengthOnly","isArbitrarySize","isNever","isArbitraryPosition","isArbitraryUrl","isUrl","isArbitraryNumber","isArbitraryWeight","Number","isNaN","isInteger","isIntegerOnly","isArbitraryValue","isAny","isTshirtSize","isArbitraryShadow","isShadow","label","testValue","result","exec","startsWith"],"mappings":"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"}
1
+ {"version":3,"file":"validators.mjs","sources":["../../src/lib/validators.ts"],"sourcesContent":["const arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i\nconst fractionRegex = /^\\d+\\/\\d+$/\nconst stringLengths = new Set(['px', 'full', 'screen'])\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))/\n// Shadow always begins with x and y offset separated by underscore\nconst shadowRegex = /^-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\n\nexport function isLength(value: string) {\n return (\n isNumber(value) ||\n stringLengths.has(value) ||\n fractionRegex.test(value) ||\n isArbitraryLength(value)\n )\n}\n\nexport function isArbitraryLength(value: string) {\n return getIsArbitraryValue(value, 'length', isLengthOnly)\n}\n\nexport function isArbitrarySize(value: string) {\n return getIsArbitraryValue(value, 'size', isNever)\n}\n\nexport function isArbitraryPosition(value: string) {\n return getIsArbitraryValue(value, 'position', isNever)\n}\n\nexport function isArbitraryUrl(value: string) {\n return getIsArbitraryValue(value, 'url', isUrl)\n}\n\nexport function isArbitraryNumber(value: string) {\n return getIsArbitraryValue(value, 'number', isNumber)\n}\n\n/**\n * @deprecated Will be removed in next major version. Use `isArbitraryNumber` instead.\n */\nexport const isArbitraryWeight = isArbitraryNumber\n\nexport function isNumber(value: string) {\n return !Number.isNaN(Number(value))\n}\n\nexport function isInteger(value: string) {\n return isIntegerOnly(value) || getIsArbitraryValue(value, 'number', isIntegerOnly)\n}\n\nexport function isArbitraryValue(value: string) {\n return arbitraryValueRegex.test(value)\n}\n\nexport function isAny() {\n return true\n}\n\nexport function isTshirtSize(value: string) {\n return tshirtUnitRegex.test(value)\n}\n\nexport function isArbitraryShadow(value: string) {\n return getIsArbitraryValue(value, '', isShadow)\n}\n\nfunction getIsArbitraryValue(value: string, label: string, testValue: (value: string) => boolean) {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return result[1] === label\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nfunction isLengthOnly(value: string) {\n return lengthUnitRegex.test(value)\n}\n\nfunction isNever() {\n return false\n}\n\nfunction isUrl(value: string) {\n return value.startsWith('url(')\n}\n\nfunction isIntegerOnly(value: string) {\n return Number.isInteger(Number(value))\n}\n\nfunction isShadow(value: string) {\n return shadowRegex.test(value)\n}\n"],"names":["arbitraryValueRegex","fractionRegex","stringLengths","Set","tshirtUnitRegex","lengthUnitRegex","shadowRegex","isLength","value","isNumber","has","test","isArbitraryLength","getIsArbitraryValue","isLengthOnly","isArbitrarySize","isNever","isArbitraryPosition","isArbitraryUrl","isUrl","isArbitraryNumber","isArbitraryWeight","Number","isNaN","isInteger","isIntegerOnly","isArbitraryValue","isAny","isTshirtSize","isArbitraryShadow","isShadow","label","testValue","result","exec","startsWith"],"mappings":"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"}
@@ -43,6 +43,21 @@ function toValue(mix) {
43
43
  return string;
44
44
  }
45
45
 
46
+ function _extends() {
47
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
48
+ for (var i = 1; i < arguments.length; i++) {
49
+ var source = arguments[i];
50
+ for (var key in source) {
51
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
52
+ target[key] = source[key];
53
+ }
54
+ }
55
+ }
56
+ return target;
57
+ };
58
+ return _extends.apply(this, arguments);
59
+ }
60
+
46
61
  var CLASS_PART_SEPARATOR = '-';
47
62
  function createClassUtils(config) {
48
63
  var classMap = createClassMap(config);
@@ -63,6 +78,7 @@ function createClassUtils(config) {
63
78
  };
64
79
  }
65
80
  function getGroupRecursive(classParts, classPartObject) {
81
+ var _classPartObject$vali;
66
82
  if (classParts.length === 0) {
67
83
  return classPartObject.classGroupId;
68
84
  }
@@ -76,16 +92,16 @@ function getGroupRecursive(classParts, classPartObject) {
76
92
  return undefined;
77
93
  }
78
94
  var classRest = classParts.join(CLASS_PART_SEPARATOR);
79
- return classPartObject.validators.find(function (_ref) {
95
+ return (_classPartObject$vali = classPartObject.validators.find(function (_ref) {
80
96
  var validator = _ref.validator;
81
97
  return validator(classRest);
82
- })?.classGroupId;
98
+ })) == null ? void 0 : _classPartObject$vali.classGroupId;
83
99
  }
84
100
  var arbitraryPropertyRegex = /^\[(.+)\]$/;
85
101
  function getGroupIdForArbitraryProperty(className) {
86
102
  if (arbitraryPropertyRegex.test(className)) {
87
103
  var arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
88
- var property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));
104
+ var property = arbitraryPropertyClassName == null ? void 0 : arbitraryPropertyClassName.substring(0, arbitraryPropertyClassName.indexOf(':'));
89
105
  if (property) {
90
106
  // I use two dots here because one dot is used as prefix for class groups in plugins
91
107
  return 'arbitrary..' + property;
@@ -275,11 +291,10 @@ function sortModifiers(modifiers) {
275
291
  }
276
292
 
277
293
  function createConfigUtils(config) {
278
- return {
294
+ return _extends({
279
295
  cache: createLruCache(config.cacheSize),
280
- splitModifiers: createSplitModifiers(config),
281
- ...createClassUtils(config)
282
- };
296
+ splitModifiers: createSplitModifiers(config)
297
+ }, createClassUtils(config));
283
298
  }
284
299
 
285
300
  var SPLIT_CLASSES_REGEX = /\s+/;
@@ -383,7 +398,7 @@ var arbitraryValueRegex = /^\[(?:([a-z-]+):)?(.+)\]$/i;
383
398
  var fractionRegex = /^\d+\/\d+$/;
384
399
  var stringLengths = /*#__PURE__*/new Set(['px', 'full', 'screen']);
385
400
  var tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
386
- var lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh)/;
401
+ var lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))/;
387
402
  // Shadow always begins with x and y offset separated by underscore
388
403
  var shadowRegex = /^-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
389
404
  function isLength(value) {