Skip to content

Commit 6518954

Browse files
fix/media-query-stripping
Issue 2388
1 parent b2407a1 commit 6518954

File tree

1 file changed

+33
-6
lines changed

1 file changed

+33
-6
lines changed

packages/tailwind/src/utils/css/make-inline-styles-for.ts

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,25 +30,52 @@ export function makeInlineStylesFor(
3030

3131
let residualClasses = [...classes];
3232
const styles: Record<string, string> = {};
33+
const classesWithNonInlinableStyles = new Set<string>();
34+
35+
tailwindStylesRoot.walkRules((rule) => {
36+
const isInAtRule = rule.parent?.type === 'atrule';
37+
38+
let hasPseudoSelectors = false;
39+
selectorParser((selector) => {
40+
selector.walkPseudos(() => {
41+
hasPseudoSelectors = true;
42+
});
43+
}).processSync(rule.selector);
44+
45+
const isNonInlinable = isInAtRule || hasPseudoSelectors;
46+
47+
if (isNonInlinable) {
48+
selectorParser((selector) => {
49+
selector.walkClasses((v) => {
50+
classesWithNonInlinableStyles.add(unescapeClass(v.value));
51+
});
52+
}).processSync(rule.selector);
53+
}
54+
});
55+
56+
const inlinableClasses = new Set<string>();
3357

3458
walkInlinableRules(tailwindStylesRoot, (rule) => {
35-
const classesOnSelector: string[] = [];
3659
selectorParser((selector) => {
3760
selector.walkClasses((v) => {
38-
classesOnSelector.push(unescapeClass(v.value));
61+
inlinableClasses.add(unescapeClass(v.value));
3962
});
4063
}).processSync(rule.selector);
4164

42-
residualClasses = residualClasses.filter((singleClass) => {
43-
return !classesOnSelector.includes(singleClass);
44-
});
45-
4665
rule.walkDecls((declaration) => {
4766
styles[convertCssPropertyToReactProperty(declaration.prop)] =
4867
declaration.value + (declaration.important ? '!important' : '');
4968
});
5069
});
5170

71+
residualClasses = residualClasses.filter((singleClass) => {
72+
const isInlinable = inlinableClasses.has(singleClass);
73+
const hasNonInlinableStyles =
74+
classesWithNonInlinableStyles.has(singleClass);
75+
76+
return !isInlinable || hasNonInlinableStyles;
77+
});
78+
5279
return {
5380
styles,
5481
residualClassName: residualClasses.join(' '),

0 commit comments

Comments
 (0)