Skip to content

Commit c0f1a9e

Browse files
Improve canCollapseWhitespaceIn handling for "tailwindPreserveWhitespace": true (#428)
* Improve `canCollapseWhitespaceIn` handling for `tailwindPreserveWhitespace: true` * Fix type error * Bring back check in `sortClasses` The CSS tests fail and removing this means we’ll need to do this check in 9 separate places so centralizing it is simpler. Though some of those places don’t appear to be tested right now meaning we’re missing some necessary test coverage. --------- Co-authored-by: Jordan Pittman <jordan@cryptica.me>
1 parent 9b3e8c8 commit c0f1a9e

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

src/index.ts

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ function transformDynamicAngularAttribute(attr: any, env: TransformerEnv) {
108108
StringLiteral(node, path) {
109109
if (!node.value) return
110110

111-
let collapseWhitespace = canCollapseWhitespaceIn(path)
111+
let collapseWhitespace = canCollapseWhitespaceIn(path, env)
112112

113113
changes.push({
114114
start: node.start + 1,
@@ -124,7 +124,7 @@ function transformDynamicAngularAttribute(attr: any, env: TransformerEnv) {
124124
TemplateLiteral(node, path) {
125125
if (!node.quasis.length) return
126126

127-
let collapseWhitespace = canCollapseWhitespaceIn(path)
127+
let collapseWhitespace = canCollapseWhitespaceIn(path, env)
128128

129129
for (let i = 0; i < node.quasis.length; i++) {
130130
let quasi = node.quasis[i]
@@ -143,10 +143,12 @@ function transformDynamicAngularAttribute(attr: any, env: TransformerEnv) {
143143
// And does not end with a space
144144
ignoreLast: i < node.expressions.length && !/\s$/.test(quasi.value.raw),
145145

146-
collapseWhitespace: {
147-
start: collapseWhitespace.start && i === 0,
148-
end: collapseWhitespace.end && i >= node.expressions.length,
149-
},
146+
collapseWhitespace: collapseWhitespace
147+
? {
148+
start: collapseWhitespace.start && i === 0,
149+
end: collapseWhitespace.end && i >= node.expressions.length,
150+
}
151+
: false,
150152
}),
151153
})
152154
}
@@ -604,7 +606,14 @@ function isSortableExpression(
604606
return false
605607
}
606608

607-
function canCollapseWhitespaceIn(path: Path<import('@babel/types').Node, any>) {
609+
function canCollapseWhitespaceIn(
610+
path: Path<import('@babel/types').Node, any>,
611+
env: TransformerEnv,
612+
): false | { start: boolean; end: boolean } {
613+
if (env.options.tailwindPreserveWhitespace) {
614+
return false
615+
}
616+
608617
let start = true
609618
let end = true
610619

@@ -656,7 +665,7 @@ function transformJavaScript(ast: import('@babel/types').Node, { env }: Transfor
656665

657666
function sortInside(ast: import('@babel/types').Node) {
658667
visit(ast, (node, path) => {
659-
let collapseWhitespace = canCollapseWhitespaceIn(path)
668+
let collapseWhitespace = canCollapseWhitespaceIn(path, env)
660669

661670
if (isStringLiteral(node)) {
662671
sortStringLiteral(node, { env, collapseWhitespace })
@@ -712,7 +721,7 @@ function transformJavaScript(ast: import('@babel/types').Node, { env }: Transfor
712721
return
713722
}
714723

715-
let collapseWhitespace = canCollapseWhitespaceIn(path)
724+
let collapseWhitespace = canCollapseWhitespaceIn(path, env)
716725

717726
sortTemplateLiteral(node.quasi, {
718727
env,

0 commit comments

Comments
 (0)