Skip to content

Commit 634b8c6

Browse files
committed
Fix mode identification when using nested presets (#431)
1 parent e786ece commit 634b8c6

File tree

1 file changed

+25
-15
lines changed
  • packages/tailwindcss-language-server/src

1 file changed

+25
-15
lines changed

packages/tailwindcss-language-server/src/server.ts

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,29 @@ interface ProjectService {
176176
onCodeAction(params: CodeActionParams): Promise<CodeAction[]>
177177
}
178178

179+
function getMode(config: any): unknown {
180+
if (typeof config.mode !== 'undefined') {
181+
return config.mode
182+
}
183+
if (Array.isArray(config.presets)) {
184+
for (let i = config.presets.length - 1; i >= 0; i--) {
185+
let mode = getMode(config.presets[i])
186+
if (typeof mode !== 'undefined') {
187+
return mode
188+
}
189+
}
190+
}
191+
}
192+
193+
function deleteMode(config: any): void {
194+
delete config.mode
195+
if (Array.isArray(config.presets)) {
196+
for (let preset of config.presets) {
197+
deleteMode(preset)
198+
}
199+
}
200+
}
201+
179202
async function createProjectService(
180203
folder: string,
181204
connection: Connection,
@@ -755,7 +778,6 @@ async function createProjectService(
755778
const sepLocation = semver.gte(tailwindcss.version, '0.99.0')
756779
? ['separator']
757780
: ['options', 'separator']
758-
let presetModes: any[] = []
759781
let presetVariants: any[] = []
760782
let originalConfig: any
761783

@@ -771,20 +793,8 @@ async function createProjectService(
771793
dset(exports, sepLocation, `__TWSEP__${separator}__TWSEP__`)
772794
exports[isV3 ? 'content' : 'purge'] = []
773795

774-
let mode: any
775-
if (Array.isArray(exports.presets)) {
776-
for (let preset of exports.presets) {
777-
if (typeof preset.mode !== 'undefined') {
778-
mode = preset.mode
779-
}
780-
presetModes.push(preset.mode)
781-
delete preset.mode
782-
}
783-
}
784-
if (typeof exports.mode !== 'undefined') {
785-
mode = exports.mode
786-
}
787-
delete exports.mode
796+
let mode = getMode(exports)
797+
deleteMode(exports)
788798

789799
let isJit = isV3 || (state.modules.jit && mode === 'jit')
790800

0 commit comments

Comments
 (0)