unocss-merge 0.5.2 → 0.7.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
@@ -33,7 +33,7 @@ expect(unoMerge('cursor-pointer', 'cursor-not-allowed')).toBe('cursor-not-allowe
33
33
  ```
34
34
 
35
35
  > [!TIP]
36
- > This function does not provide any cache mechanism, wrap with your own cache if needed. [memoize](https://github.com/sindresorhus/memoize#install) or others.
36
+ > This function does not provide any cache mechanism, use `unoMergeMemoized` or wrap with your own cache if needed.
37
37
 
38
38
  ### `useUnoMerge`
39
39
 
@@ -49,6 +49,25 @@ function Component(props) {
49
49
  > [!TIP]
50
50
  > this is a simple wrapper of `React.useMemo`, so arguments.length should not change in runtime
51
51
 
52
+ ### `unoMergeMemoized`
53
+
54
+ ```tsx
55
+ import { unoMergeMemoized } from 'unocss-merge/memoize'
56
+
57
+ expect(unoMergeMemoized('hidden', 'block')).toBe('block')
58
+ expect(unoMergeMemoized('hidden', 'block', 'flex')).toBe('flex')
59
+
60
+ expect(unoMergeMemoized('mr-1', 'mr-2')).toBe('mr-2')
61
+ expect(unoMergeMemoized('mr-1', 'mr-4px')).toBe('mr-4px')
62
+ expect(unoMergeMemoized('mr-1', 'mr-[-4px]')).toBe('mr-[-4px]')
63
+ expect(unoMergeMemoized('mr-1', 'mr--4px')).toBe('mr--4px')
64
+
65
+ expect(unoMergeMemoized('cursor-pointer', 'cursor-not-allowed')).toBe('cursor-not-allowed')
66
+ ```
67
+
68
+ > [!TIP]
69
+ > this is a simple wrapper of `unoMerge` with [memoize](https://github.com/sindresorhus/memoize#install)
70
+
52
71
  ## Why
53
72
 
54
73
  - No Official One: https://github.com/unocss/unocss/issues/2748
@@ -74,10 +93,16 @@ function Component(props) {
74
93
  ### ✅ What is **KNOWN** Supported
75
94
 
76
95
  - ✅ simple class name `mr-4px` `mr-4`
77
- - ✅ arbitrary value `mr-[4px]` `mr-[4]`
96
+ - ✅ value in brackets `mr-[4px]` `mr-[4]`
78
97
  - ✅ negative value `mr--4px`
79
98
  - ✅ simple colon separated variants `hover:mr-4px` `dark:ml-4px` `hover:dark:ml-4px`
80
99
  - ✅ simple shorthand: supports `margin` & `padding`, like `m-1` `mx-1` `ml-1` `mr-1`
100
+ - ✅ merge multiple important utilities
101
+ ```ts
102
+ expect(unoMerge('mr-4px mr-2px!')).toBe('mr-4px mr-2px!')
103
+ expect(unoMerge('mr-4px mr-2px! !mr-1')).toBe('mr-4px !mr-1')
104
+ expect(unoMerge('mr-4px mr-2px! !mr-1 important:mr-2')).toBe('mr-4px important:mr-2')
105
+ ```
81
106
 
82
107
  ### ❌ What is **NOT** Supported
83
108
 
@@ -1,11 +1,13 @@
1
+ import { ClassValue } from "clsx";
2
+
1
3
  //#region src/index.d.ts
2
- declare function getClassList(className: string | null | undefined | boolean): string[];
4
+ declare function getClassList(className: string): string[];
3
5
  /**
4
6
  * Match steps
5
7
  * 1. `getMergeMapKeyValue`: exact-string + regex match
6
8
  * 2. `findInKnownPrefixHasDashValue`: prefix match; may replace alias via `PREFIX_ALIAS`
7
9
  * 3. `lastIndexOf('-')` based split; may replace alias via `PREFIX_ALIAS`
8
10
  */
9
- declare function unoMerge(...classNames: Array<string | undefined | null | boolean>): string;
11
+ declare function unoMerge(...classNames: ClassValue[]): string;
10
12
  //#endregion
11
13
  export { getClassList, unoMerge };
package/dist/index.mjs ADDED
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./src-B7ULDBrR.mjs";export{t as getClassList,e as unoMerge};
@@ -0,0 +1,12 @@
1
+ import { unoMerge } from "./index.mjs";
2
+ import { Options } from "memoize";
3
+
4
+ //#region src/memoize.d.ts
5
+ declare function createUnoMergeMemoized(moreOptions?: Omit<Options<typeof unoMerge, string>, 'cacheKey'>): typeof unoMerge & {
6
+ clear: () => void;
7
+ };
8
+ declare const unoMergeMemoized: typeof unoMerge & {
9
+ clear: () => void;
10
+ };
11
+ //#endregion
12
+ export { createUnoMergeMemoized, unoMergeMemoized };
@@ -0,0 +1 @@
1
+ import{n as e}from"./src-B7ULDBrR.mjs";import t,{memoizeClear as n}from"memoize";function r(r){let i=t(e,{cacheKey:e=>e.join(),...r});return Object.defineProperty(i,`clear`,{value:()=>{n(i)}}),i}const i=r();export{r as createUnoMergeMemoized,i as unoMergeMemoized};
package/dist/react.mjs ADDED
@@ -0,0 +1 @@
1
+ import{n as e}from"./src-B7ULDBrR.mjs";import{useMemo as t}from"react";function n(...n){return t(()=>e(...n),[...n])}export{n as useUnoMerge};
@@ -0,0 +1 @@
1
+ import{clsx as e}from"clsx";function t(e){return[...new Set(e)]}function n(e,t){if(!e)throw typeof t==`string`?Error(t):t}const r=String.raw,i=(e,...t)=>new RegExp(r(e,...t)),a=r`(\d+(\.\d+)?)?(xs|sm|md|lg|xl)`,o=`(solid|dashed|dotted|double|none|hidden)`,s=[[[...[`block`,`flex`,`grid`,`table`].flatMap(e=>[e,`inline-${e}`]),`inline`,`flow-root`,`contents`,`list-item`,`hidden`,...h(`table-`,[`row`,`column`,`cell`,`caption`,`row-group`,`column-group`,`header-group`,`footer-group`])],`display`],[[`isolate`,`isolation-auto`],`isolation`],[[`static`,`fixed`,`absolute`,`relative`,`sticky`],`position`],[[`visible`,`invisible`,`collapse`],`visibility`],[h(`flex-`,[`row`,`row-reverse`,`col`,`col-reverse`]),`flex-direction`],[h(`flex-`,[`wrap`,`wrap-reverse`,`nowrap`]),`flex-wrap`],[h(`object-`,[`contain`,`cover`,`fill`,`none`,`scale-down`]),`object-fit`],[h(`object-`,[`bottom`,`center`,`left`,`left-bottom`,`left-top`,`right`,`right-bottom`,`right-top`,`top`]),`object-position`],[[`antialiased`,`subpixel-antialiased`],`font-smoothing`],[[`italic`,`not-italic`,`oblique`,`not-oblique`],`font-style`],[h(`font-`,[`mono`,`sans`,`serif`]),`font-family`],[/^(?:font|fw)-?(thin|extralight|light|normal|medium|semibold|bold|extrabold|black|\d+)$/,`font-weight`],[[`normal-nums`,`ordinal`,`slashed-zero`,`lining-nums`,`oldstyle-nums`,`proportional-nums`,`tabular-nums`,`diagonal-fractions`,`stacked-fractions`],`font-variant-numeric`],[i`^(text|text-size|font-size)-(\d+|${a}$)`,`font-size`],[h(`list-`,[`inside`,`outside`]),`list-style-position`],[h(`list-`,[`none`,`disc`,`decimal`]),`list-style-type`],[h(`text-`,[`left`,`center`,`right`,`justify`,`start`,`end`]),`text-align`],[[`underline`,`overline`,`line-through`,`no-underline`],`text-decoration-line`],[h(`decoration-`,[`solid`,`double`,`dotted`,`dashed`,`wavy`]),`text-decoration-style`],[/^decoration-(\d+|(auto|from-font)$)/,`text-decoration-thickness`],[[`truncate`,`text-ellipsis`,`text-clip`],`text-overflow`],[h(`text-`,[`wrap`,`nowrap`,`balance`,`pretty`]),`text-wrap`],[h(`bg-`,[`bottom`,`center`,`left`,`left-bottom`,`left-top`,`right`,`right-bottom`,`right-top`,`top`]),`background-position`],[/^bg(-no)?-repeat($|-)/,`background-repeat`],[h(`bg-`,[`auto`,`cover`,`contain`]),`background-size`],[[`bg-none`,/^bg-gradient-to-/],`background-image`],[/^(?:border-|b-)?(?:rounded|rd)(?:-(.+))?$/,`rounded`],[i`^b(?:order)?-${o}$`,`border-style`],[i`^b(?:order)?-([tblrxyse])-${o}$`,(e,t)=>`border-${t?.[1]}-style`],[/^b(?:order)?($|-\d+)/,`border-width`],[/^b(?:order)?-([tblrxyse])($|-\d+)/,(e,t)=>`border-${t?.[1]}-width`],[/^(?:border|b)-(?:color-)?(.+)$/,`border-color`],[/^(?:border|b)-([rltbse])-(?:color-)?(.+)$/,(e,t)=>`border-${t?.[1]}-color`],[/^outline-\d+/,`outline-width`],[[`outline`,i`^outline-${o}$`],`outline-style`],[i`^divide-${o}$`,`divide-style`],[/^divide-(x|y)($|-\d+)/,(e,t)=>`divide-${t?.[1]}-width`],[[`ring`,/^ring-\d+/],`ring-width`],[[/^ring-offset-\d+/],`ring-offset-width`],[[`shadow`,...h(`shadow-`,[`inner`,`none`]),i`^shadow-${a}$`],`box-shadow`],[h(`border-`,[`collapse`,`separate`]),`border-collapse`],[h(`table-`,[`auto`,`fixed`]),`table-layout`],[h(`caption-`,[`top`,`bottom`]),`caption-side`],[h(`scroll-`,[`auto`,`smooth`]),`scroll-behavior`],[h(`snap-`,[`start`,`end`,`center`,`align-none`]),`scroll-snap-align`],[h(`snap-`,[`normal`,`always`]),`scroll-snap-stop`],[h(`snap-`,[`none`,`x`,`y`,`both`,`mandatory`,`proximity`]),`scroll-snap-type`],[/^stroke-\d+/,`stroke-width`],[[`sr-only`,`not-sr-only`],`Screen-Readers`],[/^(flex-)?grow($|-\d+$)/,`flex-grow`],[/^(flex-)?shrink($|-\d+$)/,`flex-shrink`],...[`ring-inset`,`divide-x-reverse`,`divide-y-reverse`].map(e=>[e,e]),...[`resize`,`blur`,`drop-shadow`,`grayscale`,`invert`,`sepia`,`backdrop-blur`,`backdrop-grayscale`,`backdrop-invert`,`backdrop-sepia`].map(e=>[i`^${e}($|-)`,e])],c=new Map,l=new Map;for(let[e,t]of s){let n=[e].flat(),r=n.filter(e=>typeof e==`string`),i=n.filter(e=>typeof e==`object`&&e instanceof RegExp);r.forEach(e=>{let n=typeof t==`string`?t:t(e);c.set(e,n)}),i.forEach(e=>{l.set(e,t)})}function u(e){if(c.has(e))return c.get(e);for(let[t,n]of l.entries())if(t.test(e)){let r=t.exec(e);return typeof n==`string`?n:n(e,r)}}function d(e){return f.map(e=>typeof e==`string`?[e,e]:e).find(([t,n])=>e.startsWith(`${t}-`))}const f=[`break-after`,`break-before`,`break-inside`,`grid-flow`,`align`,`whitespace`,`mix-blend`,`bg-blend`,`ease`,`origin`,`cursor`,`touch`,`color`,[`text`,`color`],[`c`,`color`],[`bg`,`background-color`],[`decoration`,`text-decoration-color`],[`from`,`gradient-color-stops`],[`divide`,`divide-color`],[`outline`,`outline-color`],[`ring`,`ring-color`],[`ring-offset`,`ring-offset-color`],[`shadow`,`box-shadow-color`],[`accent`,`accent-color`],[`caret`,`caret-color`],`fill`,`stroke`];function p(e){return m.has(e)?m.get(e):e}const m=new Map(Object.entries({leading:`line-height`,col:`grid-column`,"col-span":`grid-column`,"col-start":`grid-column-start`,"col-end":`grid-column-end`,row:`grid-row`,"row-span":`grid-row`,"row-start":`grid-row-start`,"row-end":`grid-row-end`,m:[`mt`,`mb`,`ml`,`mr`],mx:[`ml`,`mr`],my:[`mt`,`mb`],p:[`pt`,`pb`,`pl`,`pr`],px:[`pl`,`pr`],py:[`pt`,`pb`]}));function h(e,t){return n(e.endsWith(`-`),"prefix must end with `-`"),t.map(t=>e+t)}function g(e){return(e||``).split(` `).map(e=>e.trim()).filter(Boolean)}function _(...n){let r=new Map;return g(e(...n)).filter(Boolean).forEach(e=>v(e,r)),t(Array.from(r.values())).join(` `)}function v(e,t){let n=e,r;function i(e){[e].flat().forEach(e=>{t.set(r?r+e:e,n)})}function a(){let t=u(e);if(t)return i(t),!0}function o(){let t=d(e);if(!t)return;let[n,r]=t;return i(p(r)),!0}function s(){let t=e,n=/(\[[\w,()/-]+\])$/;n.test(e)&&(t=e.replace(n,function(e,t){return`*`.repeat(t.length)})),t=t.replaceAll(/--(?=\d)/g,`-*`);let r=t.lastIndexOf(`-`);if(r!==-1)return i(p(e.slice(0,r))),!0}function c(){return i(p(e))}function l(){let t=/^(?:(?:[\w-]+|\[[^\s[\]]+\]):)+/.exec(e);t&&(r=t[0].split(/(?<=:)(?:\b|$)/).filter(Boolean).sort().join(``),e=e.slice(r.length))}function f(){if(e.startsWith(`!`)){e=`important:`+e.slice(1);return}if(e.endsWith(`!`)){e=`important:`+e.slice(0,-1);return}}a()||o()||(f(),l(),a()||o()||s()||c())}export{_ as n,g as t};
package/package.json CHANGED
@@ -1,29 +1,24 @@
1
1
  {
2
2
  "name": "unocss-merge",
3
- "version": "0.5.2",
4
- "packageManager": "pnpm@10.13.1+sha512.37ebf1a5c7a30d5fabe0c5df44ee8da4c965ca0c5af3dbab28c3a1681b70a256218d05c81c9c0dcf767ef6b8551eb5b960042b9ed4300c59242336377e01cfad",
5
- "description": "simple utility to merge unocss class names",
6
3
  "type": "module",
7
- "keywords": [
8
- "unocss",
9
- "merge",
10
- "tw-merge"
11
- ],
4
+ "version": "0.7.0",
5
+ "packageManager": "pnpm@10.26.1+sha512.664074abc367d2c9324fdc18037097ce0a8f126034160f709928e9e9f95d98714347044e5c3164d65bd5da6c59c6be362b107546292a8eecb7999196e5ce58fa",
6
+ "description": "simple utility to merge unocss class names",
7
+ "author": "magicdawn",
12
8
  "license": "MIT",
13
9
  "homepage": "https://github.com/magicdawn/unocss-merge#readme",
14
- "bugs": {
15
- "url": "https://github.com/magicdawn/unocss-merge/issues"
16
- },
17
10
  "repository": {
18
11
  "type": "git",
19
12
  "url": "git+ssh://git@github.com/magicdawn/unocss-merge.git"
20
13
  },
21
- "author": "magicdawn",
22
- "files": [
23
- "dist/"
14
+ "bugs": {
15
+ "url": "https://github.com/magicdawn/unocss-merge/issues"
16
+ },
17
+ "keywords": [
18
+ "unocss",
19
+ "merge",
20
+ "tw-merge"
24
21
  ],
25
- "main": "dist/index.js",
26
- "types": "dist/index.d.ts",
27
22
  "exports": {
28
23
  "./package.json": "./package.json",
29
24
  ".": {
@@ -33,8 +28,17 @@
33
28
  "./react": {
34
29
  "types": "./dist/react.d.ts",
35
30
  "default": "./dist/react.js"
31
+ },
32
+ "./memoize": {
33
+ "types": "./dist/memoize.d.ts",
34
+ "default": "./dist/memoize.js"
36
35
  }
37
36
  },
37
+ "main": "dist/index.js",
38
+ "types": "dist/index.d.ts",
39
+ "files": [
40
+ "dist/"
41
+ ],
38
42
  "publishConfig": {
39
43
  "registry": "https://registry.npmjs.org/"
40
44
  },
@@ -49,27 +53,33 @@
49
53
  "prepublishOnly": "pnpm typecheck && pnpm test-cover && pnpm build"
50
54
  },
51
55
  "peerDependencies": {
56
+ "memoize": "^10.1.0",
52
57
  "react": ">=18"
53
58
  },
54
59
  "peerDependenciesMeta": {
60
+ "memoize": {
61
+ "optional": true
62
+ },
55
63
  "react": {
56
64
  "optional": true
57
65
  }
58
66
  },
67
+ "dependencies": {
68
+ "clsx": "^2.1.1"
69
+ },
59
70
  "devDependencies": {
60
- "@magicdawn/eslint-config": "^1.5.7",
71
+ "@magicdawn/eslint-config": "^1.5.14",
61
72
  "@magicdawn/prettier-config": "^0.1.0",
62
- "@types/node": "^24.0.14",
63
- "@types/react": "^19.1.8",
64
- "@vitest/coverage-v8": "^3.2.4",
65
- "es-toolkit": "^1.39.7",
66
- "eslint": "^9.31.0",
73
+ "@types/react": "^19.2.7",
74
+ "@vitest/coverage-v8": "^4.0.16",
75
+ "es-toolkit": "^1.43.0",
76
+ "eslint": "^9.39.2",
67
77
  "husky": "^9.1.7",
68
- "lint-staged": "^16.1.2",
69
- "prettier": "^3.6.2",
70
- "tsdown": "^0.12.9",
71
- "typescript": "^5.8.3",
72
- "vitest": "^3.2.4"
78
+ "lint-staged": "^16.2.7",
79
+ "prettier": "^3.7.4",
80
+ "tsdown": "^0.18.2",
81
+ "typescript": "^5.9.3",
82
+ "vitest": "^4.0.16"
73
83
  },
74
84
  "lint-staged": {
75
85
  "*.{?(c|m)(j|t)s?(x),json,y?(a)ml}": [
package/dist/index.js DELETED
@@ -1 +0,0 @@
1
- import{getClassList as e,unoMerge as t}from"./src-PDpx2c42.js";export{e as getClassList,t as unoMerge};
package/dist/react.js DELETED
@@ -1 +0,0 @@
1
- import{unoMerge as e}from"./src-PDpx2c42.js";import{useMemo as t}from"react";function n(...n){return t(()=>e(...n),[...n])}export{n as useUnoMerge};
@@ -1 +0,0 @@
1
- function e(e){return Array.from(new Set(e))}function t(e,t){if(!e)throw typeof t==`string`?Error(t):t}const n=String.raw,r=(e,...t)=>new RegExp(n(e,...t)),i=n`(\d+(\.\d+)?)?(xs|sm|md|lg|xl)`,a=`(solid|dashed|dotted|double|none|hidden)`,o=[[[...[`block`,`flex`,`grid`,`table`].flatMap(e=>[e,`inline-${e}`]),`inline`,`flow-root`,`contents`,`list-item`,`hidden`,...m(`table-`,[`row`,`column`,`cell`,`caption`,`row-group`,`column-group`,`header-group`,`footer-group`])],`display`],[[`isolate`,`isolation-auto`],`isolation`],[[`static`,`fixed`,`absolute`,`relative`,`sticky`],`position`],[[`visible`,`invisible`,`collapse`],`visibility`],[m(`flex-`,[`row`,`row-reverse`,`col`,`col-reverse`]),`flex-direction`],[m(`flex-`,[`wrap`,`wrap-reverse`,`nowrap`]),`flex-wrap`],[m(`object-`,[`contain`,`cover`,`fill`,`none`,`scale-down`]),`object-fit`],[m(`object-`,[`bottom`,`center`,`left`,`left-bottom`,`left-top`,`right`,`right-bottom`,`right-top`,`top`]),`object-position`],[[`antialiased`,`subpixel-antialiased`],`font-smoothing`],[[`italic`,`not-italic`,`oblique`,`not-oblique`],`font-style`],[m(`font-`,[`mono`,`sans`,`serif`]),`font-family`],[/^(?:font|fw)-?(thin|extralight|light|normal|medium|semibold|bold|extrabold|black|\d+)$/,`font-weight`],[[`normal-nums`,`ordinal`,`slashed-zero`,`lining-nums`,`oldstyle-nums`,`proportional-nums`,`tabular-nums`,`diagonal-fractions`,`stacked-fractions`],`font-variant-numeric`],[r`^(text|text-size|font-size)-(\d+|${i}$)`,`font-size`],[m(`list-`,[`inside`,`outside`]),`list-style-position`],[m(`list-`,[`none`,`disc`,`decimal`]),`list-style-type`],[m(`text-`,[`left`,`center`,`right`,`justify`,`start`,`end`]),`text-align`],[[`underline`,`overline`,`line-through`,`no-underline`],`text-decoration-line`],[m(`decoration-`,[`solid`,`double`,`dotted`,`dashed`,`wavy`]),`text-decoration-style`],[/^decoration-(\d+|(auto|from-font)$)/,`text-decoration-thickness`],[[`truncate`,`text-ellipsis`,`text-clip`],`text-overflow`],[m(`text-`,[`wrap`,`nowrap`,`balance`,`pretty`]),`text-wrap`],[m(`bg-`,[`bottom`,`center`,`left`,`left-bottom`,`left-top`,`right`,`right-bottom`,`right-top`,`top`]),`background-position`],[/^bg(-no)?-repeat($|-)/,`background-repeat`],[m(`bg-`,[`auto`,`cover`,`contain`]),`background-size`],[[`bg-none`,/^bg-gradient-to-/],`background-image`],[/^(?:border-|b-)?(?:rounded|rd)(?:-(.+))?$/,`rounded`],[r`^b(?:order)?-${a}$`,`border-style`],[r`^b(?:order)?-([tblrxyse])-${a}$`,(e,t)=>`border-${t?.[1]}-style`],[/^b(?:order)?($|-\d+)/,`border-width`],[/^b(?:order)?-([tblrxyse])($|-\d+)/,(e,t)=>`border-${t?.[1]}-width`],[/^(?:border|b)-(?:color-)?(.+)$/,`border-color`],[/^(?:border|b)-([rltbse])-(?:color-)?(.+)$/,(e,t)=>`border-${t?.[1]}-color`],[/^outline-\d+/,`outline-width`],[[`outline`,r`^outline-${a}$`],`outline-style`],[r`^divide-${a}$`,`divide-style`],[/^divide-(x|y)($|-\d+)/,(e,t)=>`divide-${t?.[1]}-width`],[[`ring`,/^ring-\d+/],`ring-width`],[[/^ring-offset-\d+/],`ring-offset-width`],[[`shadow`,...m(`shadow-`,[`inner`,`none`]),r`^shadow-${i}$`],`box-shadow`],[m(`border-`,[`collapse`,`separate`]),`border-collapse`],[m(`table-`,[`auto`,`fixed`]),`table-layout`],[m(`caption-`,[`top`,`bottom`]),`caption-side`],[m(`scroll-`,[`auto`,`smooth`]),`scroll-behavior`],[m(`snap-`,[`start`,`end`,`center`,`align-none`]),`scroll-snap-align`],[m(`snap-`,[`normal`,`always`]),`scroll-snap-stop`],[m(`snap-`,[`none`,`x`,`y`,`both`,`mandatory`,`proximity`]),`scroll-snap-type`],[/^stroke-\d+/,`stroke-width`],[[`sr-only`,`not-sr-only`],`Screen-Readers`],[/^(flex-)?grow($|-\d+$)/,`flex-grow`],[/^(flex-)?shrink($|-\d+$)/,`flex-shrink`],...[`ring-inset`,`divide-x-reverse`,`divide-y-reverse`].map(e=>[e,e]),...[`resize`,`blur`,`drop-shadow`,`grayscale`,`invert`,`sepia`,`backdrop-blur`,`backdrop-grayscale`,`backdrop-invert`,`backdrop-sepia`].map(e=>[r`^${e}($|-)`,e])],s=new Map,c=new Map;for(let[e,t]of o){let n=[e].flat(),r=n.filter(e=>typeof e==`string`),i=n.filter(e=>typeof e==`object`&&e instanceof RegExp);r.forEach(e=>{let n=typeof t==`string`?t:t(e);s.set(e,n)}),i.forEach(e=>{c.set(e,t)})}function l(e){if(s.has(e))return s.get(e);for(let[t,n]of c.entries())if(t.test(e)){let r=t.exec(e),i=typeof n==`string`?n:n(e,r);return i}}function u(e){return d.map(e=>typeof e==`string`?[e,e]:e).find(([t,n])=>e.startsWith(`${t}-`))}const d=[`break-after`,`break-before`,`break-inside`,`grid-flow`,`align`,`whitespace`,`mix-blend`,`bg-blend`,`ease`,`origin`,`cursor`,`touch`,`color`,[`text`,`color`],[`c`,`color`],[`bg`,`background-color`],[`decoration`,`text-decoration-color`],[`from`,`gradient-color-stops`],[`divide`,`divide-color`],[`outline`,`outline-color`],[`ring`,`ring-color`],[`ring-offset`,`ring-offset-color`],[`shadow`,`box-shadow-color`],[`accent`,`accent-color`],[`caret`,`caret-color`],`fill`,`stroke`];function f(e){return p.has(e)?p.get(e):e}const p=new Map(Object.entries({leading:`line-height`,col:`grid-column`,"col-span":`grid-column`,"col-start":`grid-column-start`,"col-end":`grid-column-end`,row:`grid-row`,"row-span":`grid-row`,"row-start":`grid-row-start`,"row-end":`grid-row-end`,m:[`mt`,`mb`,`ml`,`mr`],mx:[`ml`,`mr`],my:[`mt`,`mb`],p:[`pt`,`pb`,`pl`,`pr`],px:[`pl`,`pr`],py:[`pt`,`pb`]}));function m(e,n){return t(e.endsWith(`-`),"prefix must end with `-`"),n.map(t=>e+t)}function h(t){return typeof t==`boolean`?[]:e((t||``).split(` `).map(e=>e.trim()).filter(Boolean))}function g(...t){let n=new Map,r=t.map(h).flat().filter(Boolean);return r.forEach(i),e(Array.from(n.values())).join(` `);function i(e){let t=e,r;function i(e){[e].flat().forEach(e=>{n.set(r?r+e:e,t)})}function a(){let t=l(e);if(t)return i(t),!0}function o(){let t=u(e);if(!t)return;let[n,r]=t,a=f(r);return i(a),!0}function s(){let t=e,n=/(\[[\w,()/-]+\])$/;n.test(e)&&(t=e.replace(n,function(e,t){return`*`.repeat(t.length)})),t.includes(`--`)&&(t=t.replaceAll(`--`,`-*`));let r=t.lastIndexOf(`-`);if(r===-1)return;let a=f(e.slice(0,r));return i(a),!0}function c(){return i(f(e))}function d(){let t=/^(?:[\w-]+:)+/,n=t.exec(e);n&&(r=n[0].split(/(?<=:)(?:\b|$)/).filter(Boolean).sort().join(``),e=e.slice(r.length))}let p=a()||o();p||(d(),a()||o()||s()||c())}}export{h as getClassList,g as unoMerge};
File without changes