Skip to content

Commit 482b5bc

Browse files
committed
fix @​apply in plugins in jit mode
1 parent b17afd9 commit 482b5bc

File tree

3 files changed

+35
-19
lines changed

3 files changed

+35
-19
lines changed

packages/tailwindcss-language-service/src/util/jit.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,16 @@ export function generateRules(state: State, classNames: string[]): { root: Root;
1313
.module(new Set(classNames), state.jitContext)
1414
.sort(([a], [z]) => bigSign(a - z))
1515

16-
let actualRules: Rule[] = []
16+
let root = state.modules.postcss.module.root({ nodes: rules.map(([, rule]) => rule) })
17+
state.modules.jit.expandApplyAtRules.module(state.jitContext)(root)
1718

18-
for (let [, rule] of rules) {
19-
if (rule.type === 'rule') {
20-
actualRules.push(rule)
21-
} else if (rule.walkRules) {
22-
rule.walkRules((subRule) => {
23-
actualRules.push(subRule)
24-
})
25-
}
26-
}
19+
let actualRules: Rule[] = []
20+
root.walkRules((subRule) => {
21+
actualRules.push(subRule)
22+
})
2723

2824
return {
29-
root: state.modules.postcss.module.root({ nodes: rules.map(([, rule]) => rule) }),
25+
root,
3026
rules: actualRules,
3127
}
3228
}

packages/tailwindcss-language-service/src/util/state.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,11 @@ export interface State {
7676
postcss?: { version: string; module: Postcss }
7777
postcssSelectorParser?: { module: any }
7878
resolveConfig?: { module: any }
79-
jit?: { generateRules: { module: any }; setupContext: { module: any } }
79+
jit?: {
80+
generateRules: { module: any }
81+
setupContext: { module: any }
82+
expandApplyAtRules: { module: any }
83+
}
8084
}
8185
browserslist?: string[]
8286
featureFlags?: FeatureFlags

src/server.ts

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,11 @@ async function createProjectService(
445445
resolveFrom(configDir, 'tailwindcss/lib/jit/lib/setupContext')
446446
).default,
447447
},
448+
expandApplyAtRules: {
449+
module: __non_webpack_require__(
450+
resolveFrom(configDir, 'tailwindcss/lib/jit/lib/expandApplyAtRules')
451+
).default,
452+
},
448453
}
449454
} catch (_) {
450455
try {
@@ -459,6 +464,11 @@ async function createProjectService(
459464
resolveFrom(configDir, 'tailwindcss/jit/lib/setupContext')
460465
),
461466
},
467+
expandApplyAtRules: {
468+
module: __non_webpack_require__(
469+
resolveFrom(configDir, 'tailwindcss/jit/lib/expandApplyAtRules')
470+
),
471+
},
462472
}
463473
} catch (_) {}
464474
}
@@ -491,6 +501,10 @@ async function createProjectService(
491501
if (applyComplexClasses && !applyComplexClasses.default.__patched) {
492502
let _applyComplexClasses = applyComplexClasses.default
493503
applyComplexClasses.default = (config, ...args) => {
504+
if (state.jit) {
505+
return state.modules.jit.expandApplyAtRules.module(state.jitContext)
506+
}
507+
494508
let configClone = klona(config)
495509
configClone.separator = typeof state.separator === 'undefined' ? ':' : state.separator
496510

@@ -629,6 +643,15 @@ async function createProjectService(
629643
throw error
630644
}
631645

646+
if (state.jit) {
647+
state.jitContext = state.modules.jit.setupContext.module(state.configPath)(
648+
{ opts: {}, messages: [] },
649+
state.modules.postcss.module.root()
650+
)
651+
state.jitContext.tailwindConfig.separator =
652+
typeof userSeperator === 'undefined' ? ':' : userSeperator
653+
}
654+
632655
let postcssResult: Result
633656
try {
634657
postcssResult = await postcss
@@ -690,13 +713,6 @@ async function createProjectService(
690713
state.plugins = await getPlugins(config)
691714
state.classNames = (await extractClassNames(postcssResult.root)) as ClassNames
692715

693-
if (state.jit) {
694-
state.jitContext = state.modules.jit.setupContext.module(state.configPath)(
695-
{ opts: {}, messages: [] },
696-
state.modules.postcss.module.root()
697-
)
698-
}
699-
700716
state.variants = getVariants(state)
701717

702718
state.enabled = true

0 commit comments

Comments
 (0)