eslint-plugin-better-tailwindcss
Version:
auto-wraps tailwind classes after a certain print width or class count into multiple lines to improve readability.
33 lines • 1.59 kB
JavaScript
import { escapeForRegex } from "../async-utils/escape.js";
import { normalize } from "../async-utils/path.js";
import { getCachedRegex } from "../async-utils/regex.js";
import { getPrefix } from "./prefix.async.v3.js";
export async function getDissectedClasses(ctx, tailwindContext, classes) {
const utils = await import(normalize(`${ctx.installation}/lib/util/splitAtTopLevelOnly.js`));
const prefix = getPrefix(tailwindContext);
const separator = tailwindContext.tailwindConfig.separator ?? ":";
return classes.reduce((acc, className) => {
const splitChunks = utils.splitAtTopLevelOnly?.(className, separator) ?? utils.default?.splitAtTopLevelOnly?.(className, separator);
const variants = splitChunks.slice(0, -1);
let base = className
.replace(new RegExp(`^${escapeForRegex(variants.join(separator) + separator)}`), "")
.replace(new RegExp(`^${escapeForRegex(prefix)}`), "");
const isNegative = base.startsWith("-");
base = base.replace(getCachedRegex(/^-/), "");
const isImportantAtStart = base.startsWith("!");
base = base.replace(getCachedRegex(/^!/), "");
const isImportantAtEnd = base.endsWith("!");
base = base.replace(getCachedRegex(/!$/), "");
acc[className] = {
base,
className,
important: [isImportantAtStart, isImportantAtEnd],
negative: isNegative,
prefix,
separator,
variants
};
return acc;
}, {});
}
//# sourceMappingURL=dissect-classes.async.v3.js.map