MCPcopy
hub / github.com/tailwindlabs/tailwindcss / getClassList

Function getClassList

packages/tailwindcss/src/intellisense.ts:24–79  ·  view source on GitHub ↗
(design: DesignSystem)

Source from the content-addressed store, hash-verified

22const IS_FRACTION = /^\d+\/\d+$/
23
24export function getClassList(design: DesignSystem): ClassEntry[] {
25 let items = new DefaultMap<string, ClassItem>((utility) => ({
26 name: utility,
27 utility,
28 fraction: false,
29 modifiers: [],
30 }))
31
32 // Static utilities only work as-is
33 for (let utility of design.utilities.keys('static')) {
34 let completions = design.utilities.getCompletions(utility)
35 if (completions.length === 0) continue
36
37 let item = items.get(utility)
38 item.fraction = false
39 item.modifiers = []
40 }
41
42 // Functional utilities have their own list of completions
43 for (let utility of design.utilities.keys('functional')) {
44 let completions = design.utilities.getCompletions(utility)
45
46 for (let group of completions) {
47 for (let value of group.values) {
48 let fraction = value !== null && IS_FRACTION.test(value)
49
50 let name = value === null ? utility : `${utility}-${value}`
51
52 let item = items.get(name)
53 item.utility = utility
54 item.fraction ||= fraction
55 item.modifiers.push(...group.modifiers)
56
57 if (group.supportsNegative) {
58 let item = items.get(`-${name}`)
59 item.utility = `-${utility}`
60 item.fraction ||= fraction
61 item.modifiers.push(...group.modifiers)
62 }
63
64 // Deduplicate modifiers
65 item.modifiers = Array.from(new Set(item.modifiers))
66 }
67 }
68 }
69
70 if (items.size === 0) return []
71
72 // Sort utilities by their class name
73 let list = Array.from(items.values())
74 list.sort((a, b) => compare(a.name, b.name))
75
76 let entries = sortFractionsLast(list)
77
78 return entries
79}
80
81function sortFractionsLast(list: ClassItem[]) {

Callers 1

getClassListFunction · 0.90

Calls 5

getMethod · 0.95
compareFunction · 0.90
sortFractionsLastFunction · 0.85
keysMethod · 0.45
getCompletionsMethod · 0.45

Tested by

no test coverage detected