UNPKG

eslint-plugin-better-tailwindcss

Version:

auto-wraps tailwind classes after a certain print width or class count into multiple lines to improve readability.

50 lines 2.17 kB
import { getUnknownClasses } from "./unknown-classes.async.v4.js"; export function getCanonicalClasses(tailwindContext, classes, options) { const result = {}; if (typeof tailwindContext?.canonicalizeCandidates !== "function") { for (const className of classes) { result[className] = { input: [className], output: className }; } return result; } // tailwind currently crashes when unknown classes are passed to canonicalizeCandidates const unknownClasses = getUnknownClasses(tailwindContext, classes); const knownClasses = classes.filter(className => !unknownClasses.includes(className)); const canonicalizedClasses = tailwindContext.canonicalizeCandidates?.(knownClasses, options); const removedClasses = knownClasses.filter(className => !canonicalizedClasses.includes(className)); const originalClasses = knownClasses.filter(className => canonicalizedClasses.includes(className)); const canonicalClasses = canonicalizedClasses.filter(className => !classes.includes(className)); for (const originalClass of originalClasses) { result[originalClass] = { input: [originalClass], output: originalClass }; } for (const unknownClass of unknownClasses) { result[unknownClass] = { input: [unknownClass], output: unknownClass }; } if (canonicalClasses.length === 0) { return result; } for (const canonicalClass of canonicalClasses) { const necessaryClasses = removedClasses.filter(removedClass => { const subset = removedClasses.filter(className => className !== removedClass); const subsetCanonical = tailwindContext.canonicalizeCandidates(subset, options); return !subsetCanonical.includes(canonicalClass); }); for (const originalClass of necessaryClasses) { result[originalClass] = { input: necessaryClasses, output: canonicalClass }; } } return result; } //# sourceMappingURL=canonical-classes.async.v4.js.map