From a398cd21b53b31f0ef26b49942427e09ab0dd70e Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Thu, 10 Feb 2022 18:10:38 +0100 Subject: [PATCH] prefer Tailwind's `context.sortClassList()` if it exists We have to keep the existing code for now, since the plugin will prefer the user's tailwind version. Hopefully we can remove this in future versions. --- src/index.js | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/index.js b/src/index.js index 168b9bc..a23b3e7 100644 --- a/src/index.js +++ b/src/index.js @@ -59,25 +59,29 @@ function sortClasses( suffix = `${whitespace.pop() ?? ''}${classes.pop() ?? ''}` } - let classNamesWithOrder = [] - for (let className of classes) { - let order = - env - .generateRules(new Set([className]), env.context) - .sort(([a], [z]) => bigSign(z - a))[0]?.[0] ?? null - classNamesWithOrder.push([className, order]) - } + if (env.context.sortClassList) { + classes = env.context.sortClassList(classes) + } else { + let classNamesWithOrder = [] + for (let className of classes) { + let order = + env + .generateRules(new Set([className]), env.context) + .sort(([a], [z]) => bigSign(z - a))[0]?.[0] ?? null + classNamesWithOrder.push([className, order]) + } - classes = classNamesWithOrder - .sort(([, a], [, z]) => { - if (a === z) return 0 - // if (a === null) return options.unknownClassPosition === 'start' ? -1 : 1 - // if (z === null) return options.unknownClassPosition === 'start' ? 1 : -1 - if (a === null) return -1 - if (z === null) return 1 - return bigSign(a - z) - }) - .map(([className]) => className) + classes = classNamesWithOrder + .sort(([, a], [, z]) => { + if (a === z) return 0 + // if (a === null) return options.unknownClassPosition === 'start' ? -1 : 1 + // if (z === null) return options.unknownClassPosition === 'start' ? 1 : -1 + if (a === null) return -1 + if (z === null) return 1 + return bigSign(a - z) + }) + .map(([className]) => className) + } for (let i = 0; i < classes.length; i++) { result += `${classes[i]}${whitespace[i] ?? ''}`