UNPKG

flowbite-react

Version:

Official React components built for Flowbite and Tailwind CSS

1 lines 3.89 kB
{"version":3,"file":"apply-prefix-v3.cjs","sources":["../../src/helpers/apply-prefix-v3.ts"],"sourcesContent":["const cache = new Map<string, string>();\n\n/**\n * Applies a prefix to class names while preserving modifiers and arbitrary values.\n *\n * @param classNames - A string containing one or more CSS class names separated by spaces\n * @param prefix - The prefix to be added to each class name\n * @param separator - The separator used between class name parts (default \":\")\n * @returns A new string with the prefix applied to each class name\n */\nexport function applyPrefixV3(classNames: string, prefix: string, separator = \":\"): string {\n if (!classNames.trim().length || !prefix.trim().length) {\n return classNames;\n }\n\n classNames = classNames.trim();\n prefix = prefix.trim();\n separator = separator.trim();\n\n const cacheKey = `${classNames}.${prefix}.${separator}`;\n const cacheValue = cache.get(cacheKey);\n\n if (cacheValue) {\n return cacheValue;\n }\n\n const result = classNames\n .split(/\\s+/)\n .map((className) => {\n className = className.trim();\n\n if (!className.length) {\n return className;\n }\n\n if (className.startsWith(\"[\") && className.endsWith(\"]\")) {\n return className;\n }\n\n const parts = className.split(separator);\n const baseClass = parts.pop() ?? \"\";\n\n let prefixedBaseClass = baseClass;\n\n let modifiers = \"\";\n if (prefixedBaseClass[0] === \"!\") {\n modifiers = \"!\";\n prefixedBaseClass = prefixedBaseClass.slice(1);\n }\n if (prefixedBaseClass[0] === \"-\") {\n modifiers += \"-\";\n prefixedBaseClass = prefixedBaseClass.slice(1);\n }\n\n if (prefixedBaseClass.startsWith(prefix)) {\n return className;\n }\n\n prefixedBaseClass = modifiers + prefix + prefixedBaseClass;\n\n if (!parts.length) {\n return prefixedBaseClass;\n }\n\n return `${parts.join(separator)}${separator}${prefixedBaseClass}`;\n })\n .join(\" \");\n\n cache.set(cacheKey, result);\n\n return result;\n}\n"],"names":[],"mappings":";;AACA,MAAM,KAAK,mBAAmB,IAAI,GAAG,EAAE;AAChC,SAAS,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAG,GAAG,EAAE;AACnE,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;AAC1D,IAAI,OAAO,UAAU;AACrB;AACA,EAAE,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE;AAChC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE;AACxB,EAAE,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE;AAC9B,EAAE,MAAM,QAAQ,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACzD,EAAE,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxC,EAAE,IAAI,UAAU,EAAE;AAClB,IAAI,OAAO,UAAU;AACrB;AACA,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK;AAC5D,IAAI,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE;AAChC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC3B,MAAM,OAAO,SAAS;AACtB;AACA,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC9D,MAAM,OAAO,SAAS;AACtB;AACA,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5C,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;AACvC,IAAI,IAAI,iBAAiB,GAAG,SAAS;AACrC,IAAI,IAAI,SAAS,GAAG,EAAE;AACtB,IAAI,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACtC,MAAM,SAAS,GAAG,GAAG;AACrB,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD;AACA,IAAI,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACtC,MAAM,SAAS,IAAI,GAAG;AACtB,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD;AACA,IAAI,IAAI,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC9C,MAAM,OAAO,SAAS;AACtB;AACA,IAAI,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,iBAAiB;AAC9D,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACvB,MAAM,OAAO,iBAAiB;AAC9B;AACA,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACrE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACd,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC7B,EAAE,OAAO,MAAM;AACf;;;;"}