Skip to content

Commit f7e2de5

Browse files
committed
Refactor
1 parent 3df6999 commit f7e2de5

File tree

1 file changed

+70
-72
lines changed

1 file changed

+70
-72
lines changed

packages/tailwindcss-language-service/src/completionProvider.ts

Lines changed: 70 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ export function completionsFromClassList(
138138
}
139139

140140
let items: CompletionItem[] = []
141+
let seenVariants = new Set<string>()
141142

142143
if (!important) {
143144
let variantOrder = 0
@@ -163,85 +164,82 @@ export function completionsFromClassList(
163164
}
164165
}
165166

166-
items.push(
167-
...state.variants.flatMap((variant) => {
168-
let items: CompletionItem[] = []
169-
170-
if (variant.isArbitrary) {
171-
items.push(
172-
variantItem({
173-
label: `${variant.name}${variant.hasDash ? '-' : ''}[]${sep}`,
174-
insertTextFormat: 2,
175-
textEditText: `${variant.name}${variant.hasDash ? '-' : ''}[\${1}]${sep}\${0}`,
176-
// command: {
177-
// title: '',
178-
// command: 'tailwindCSS.onInsertArbitraryVariantSnippet',
179-
// arguments: [variant.name, replacementRange],
180-
// },
181-
})
167+
for (let variant of state.variants) {
168+
if (existingVariants.includes(variant.name)) {
169+
continue
170+
}
171+
172+
if (variant.isArbitrary) {
173+
items.push(
174+
variantItem({
175+
label: `${variant.name}${variant.hasDash ? '-' : ''}[]${sep}`,
176+
insertTextFormat: 2,
177+
textEditText: `${variant.name}${variant.hasDash ? '-' : ''}[\${1}]${sep}\${0}`,
178+
// command: {
179+
// title: '',
180+
// command: 'tailwindCSS.onInsertArbitraryVariantSnippet',
181+
// arguments: [variant.name, replacementRange],
182+
// },
183+
})
184+
)
185+
} else {
186+
let shouldSortVariants = !semver.gte(state.version, '2.99.0')
187+
let resultingVariants = [...existingVariants, variant.name]
188+
189+
if (shouldSortVariants) {
190+
let allVariants = state.variants.map(({ name }) => name)
191+
resultingVariants = resultingVariants.sort(
192+
(a, b) => allVariants.indexOf(b) - allVariants.indexOf(a)
182193
)
183-
} else if (!existingVariants.includes(variant.name)) {
184-
let shouldSortVariants = !semver.gte(state.version, '2.99.0')
185-
let resultingVariants = [...existingVariants, variant.name]
186-
187-
if (shouldSortVariants) {
188-
let allVariants = state.variants.map(({ name }) => name)
189-
resultingVariants = resultingVariants.sort(
190-
(a, b) => allVariants.indexOf(b) - allVariants.indexOf(a)
191-
)
192-
}
194+
}
193195

194-
items.push(
195-
variantItem({
196-
label: `${variant.name}${sep}`,
197-
detail: variant
198-
.selectors()
199-
.map((selector) => addPixelEquivalentsToMediaQuery(selector, rootFontSize))
200-
.join(', '),
201-
textEditText: resultingVariants[resultingVariants.length - 1] + sep,
202-
additionalTextEdits:
203-
shouldSortVariants && resultingVariants.length > 1
204-
? [
205-
{
206-
newText:
207-
resultingVariants.slice(0, resultingVariants.length - 1).join(sep) +
208-
sep,
209-
range: {
210-
start: {
211-
...classListRange.start,
212-
character: classListRange.end.character - partialClassName.length,
213-
},
214-
end: {
215-
...replacementRange.start,
216-
character: replacementRange.start.character,
217-
},
196+
items.push(
197+
variantItem({
198+
label: `${variant.name}${sep}`,
199+
detail: variant
200+
.selectors()
201+
.map((selector) => addPixelEquivalentsToMediaQuery(selector, rootFontSize))
202+
.join(', '),
203+
textEditText: resultingVariants[resultingVariants.length - 1] + sep,
204+
additionalTextEdits:
205+
shouldSortVariants && resultingVariants.length > 1
206+
? [
207+
{
208+
newText:
209+
resultingVariants.slice(0, resultingVariants.length - 1).join(sep) + sep,
210+
range: {
211+
start: {
212+
...classListRange.start,
213+
character: classListRange.end.character - partialClassName.length,
214+
},
215+
end: {
216+
...replacementRange.start,
217+
character: replacementRange.start.character,
218218
},
219219
},
220-
]
221-
: [],
222-
})
223-
)
224-
}
220+
},
221+
]
222+
: [],
223+
})
224+
)
225+
}
225226

226-
if (variant.values.length) {
227-
items.push(
228-
...variant.values
229-
.filter((value) => !existingVariants.includes(`${variant.name}-${value}`))
230-
.map((value) =>
231-
variantItem({
232-
label:
233-
value === 'DEFAULT'
234-
? `${variant.name}${sep}`
235-
: `${variant.name}${variant.hasDash ? '-' : ''}${value}${sep}`,
236-
detail: variant.selectors({ value }).join(', '),
237-
})
238-
)
239-
)
227+
for (let value of variant.values ?? []) {
228+
if (existingVariants.includes(`${variant.name}-${value}`)) {
229+
continue
240230
}
241231

242-
return items
243-
})
244-
)
232+
items.push(
233+
variantItem({
234+
label:
235+
value === 'DEFAULT'
236+
? `${variant.name}${sep}`
237+
: `${variant.name}${variant.hasDash ? '-' : ''}${value}${sep}`,
238+
detail: variant.selectors({ value }).join(', '),
239+
})
240+
)
241+
}
242+
}
245243
}
246244

247245
if (state.classList) {

0 commit comments

Comments
 (0)