tw-merge
Version:
Merge CSS utility classes without style conflicts - small and zero config
1 lines • 3.37 kB
Source Map (JSON)
{"version":3,"file":"utils.mjs","sources":["../../src/lib/utils.ts"],"sourcesContent":["export function isNumericValue(value?: string) {\n if (!value) return true;\n const arbitraryValue = value.match(/^\\[(.*)\\]$/)?.[1];\n return !isNaN(parseInt(arbitraryValue ?? value));\n}\n\nfunction sortContextSection(section: string[], separator: string) {\n return section\n .sort((a, b) => {\n if (a.startsWith(\"[\") || b.startsWith(\"[\")) return 0;\n return a.localeCompare(b);\n })\n .join(separator);\n}\n\nexport function normalizeContext(context: string, separator: string) {\n if (!context) return context;\n const important = context.endsWith(\"!\");\n const variants = context.replace(/:!?$/, \"\").split(separator);\n let section: string[] = [];\n let normalizedSections: string[] = [];\n function commitSection() {\n if (section.length > 0)\n normalizedSections.push(sortContextSection(section, separator));\n }\n for (let i = 0; i < variants.length; i++) {\n const variant = variants[i]!;\n if (variant.startsWith(\"[\")) {\n // is arbitrary variant\n commitSection();\n normalizedSections.push(variant);\n section = [];\n } else section.push(variant);\n }\n commitSection();\n\n return `${normalizedSections.join(separator)}${separator}${\n important ? \"!\" : \"\"\n }`;\n}\n"],"names":["isNumericValue","value","arbitraryValue","match","isNaN","parseInt","sortContextSection","section","separator","sort","a","b","startsWith","localeCompare","join","normalizeContext","context","important","endsWith","variants","replace","split","normalizedSections","commitSection","length","push","i","variant"],"mappings":"AAAM,SAAUA,cAAc,CAACC,KAAc,EAAA;AAAA,EAAA,IAAA,YAAA,CAAA;AAC3C,EAAA,IAAI,CAACA,KAAK,EAAE,OAAO,IAAI,CAAA;EACvB,IAAMC,cAAc,GAAGD,CAAAA,YAAAA,GAAAA,KAAK,CAACE,KAAK,CAAC,YAAY,CAAC,KAAA,IAAA,GAAA,KAAA,CAAA,GAAzB,YAA4B,CAAA,CAAC,CAAC,CAAA;EACrD,OAAO,CAACC,KAAK,CAACC,QAAQ,CAACH,cAAc,IAAA,IAAA,GAAdA,cAAc,GAAID,KAAK,CAAC,CAAC,CAAA;AAClD,CAAA;AAEA,SAASK,kBAAkB,CAACC,OAAiB,EAAEC,SAAiB,EAAA;EAC9D,OAAOD,OAAO,CACXE,IAAI,CAAC,UAACC,CAAC,EAAEC,CAAC,EAAI;AACb,IAAA,IAAID,CAAC,CAACE,UAAU,CAAC,GAAG,CAAC,IAAID,CAAC,CAACC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAA;AACpD,IAAA,OAAOF,CAAC,CAACG,aAAa,CAACF,CAAC,CAAC,CAAA;AAC3B,GAAC,CAAC,CACDG,IAAI,CAACN,SAAS,CAAC,CAAA;AACpB,CAAA;AAEgB,SAAAO,gBAAgB,CAACC,OAAe,EAAER,SAAiB,EAAA;AACjE,EAAA,IAAI,CAACQ,OAAO,EAAE,OAAOA,OAAO,CAAA;AAC5B,EAAA,IAAMC,SAAS,GAAGD,OAAO,CAACE,QAAQ,CAAC,GAAG,CAAC,CAAA;AACvC,EAAA,IAAMC,QAAQ,GAAGH,OAAO,CAACI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAACC,KAAK,CAACb,SAAS,CAAC,CAAA;EAC7D,IAAID,OAAO,GAAa,EAAE,CAAA;EAC1B,IAAIe,kBAAkB,GAAa,EAAE,CAAA;AACrC,EAAA,SAASC,aAAa,GAAA;AACpB,IAAA,IAAIhB,OAAO,CAACiB,MAAM,GAAG,CAAC,EACpBF,kBAAkB,CAACG,IAAI,CAACnB,kBAAkB,CAACC,OAAO,EAAEC,SAAS,CAAC,CAAC,CAAA;AACnE,GAAA;AACA,EAAA,KAAK,IAAIkB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,QAAQ,CAACK,MAAM,EAAEE,CAAC,EAAE,EAAE;AACxC,IAAA,IAAMC,OAAO,GAAGR,QAAQ,CAACO,CAAC,CAAE,CAAA;AAC5B,IAAA,IAAIC,OAAO,CAACf,UAAU,CAAC,GAAG,CAAC,EAAE;AAC3B;AACAW,MAAAA,aAAa,EAAE,CAAA;AACfD,MAAAA,kBAAkB,CAACG,IAAI,CAACE,OAAO,CAAC,CAAA;AAChCpB,MAAAA,OAAO,GAAG,EAAE,CAAA;AACb,KAAA,MAAMA,OAAO,CAACkB,IAAI,CAACE,OAAO,CAAC,CAAA;AAC7B,GAAA;AACDJ,EAAAA,aAAa,EAAE,CAAA;AAEf,EAAA,OAAA,EAAA,GAAUD,kBAAkB,CAACR,IAAI,CAACN,SAAS,CAAC,GAAGA,SAAS,IACtDS,SAAS,GAAG,GAAG,GAAG,EACpB,CAAA,CAAA;AACF;;;;"}