Skip to content

Commit 5384f6f

Browse files
authored
find colors quicker by sorting by most-used (#384)
closes #383
1 parent 6bfcda7 commit 5384f6f

File tree

2 files changed

+158
-138
lines changed

2 files changed

+158
-138
lines changed

src/index.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -541,20 +541,23 @@ export function analyze(css, options = {}) {
541541
return this.skip
542542
}
543543

544-
if (namedColors.has(nodeName)) {
544+
// A keyword is most likely to be 'transparent' or 'currentColor'
545+
if (colorKeywords.has(nodeName)) {
545546
let stringified = stringifyNode(valueNode)
546547
colors.push(stringified, property, loc)
547-
colorFormats.p('named', loc)
548+
colorFormats.p(nodeName.toLowerCase(), loc)
548549
return
549550
}
550551

551-
if (colorKeywords.has(nodeName)) {
552+
// Or it can be a named color
553+
if (namedColors.has(nodeName)) {
552554
let stringified = stringifyNode(valueNode)
553555
colors.push(stringified, property, loc)
554-
colorFormats.p(nodeName.toLowerCase(), loc)
556+
colorFormats.p('named', loc)
555557
return
556558
}
557559

560+
// Or it can be a system color
558561
if (systemColors.has(nodeName)) {
559562
let stringified = stringifyNode(valueNode)
560563
colors.push(stringified, property, loc)
@@ -569,6 +572,7 @@ export function analyze(css, options = {}) {
569572
return this.skip
570573
}
571574

575+
// rgb(a), hsl(a), color(), hwb(), lch(), lab(), oklab(), oklch()
572576
if (colorFunctions.has(nodeName)) {
573577
colors.push(stringifyNode(valueNode), property, valueNode.loc)
574578
colorFormats.p(nodeName.toLowerCase(), valueNode.loc)

src/values/colors.js

Lines changed: 150 additions & 134 deletions
Original file line numberDiff line numberDiff line change
@@ -5,193 +5,209 @@ export const namedColors = new KeywordSet([
55
// Spec: https://drafts.csswg.org/css-color/#named-colors
66

77
// Heuristic: popular names first for quick finding in set.has()
8+
// See: https://docs.google.com/spreadsheets/d/1OU8ahxC5oYU8VRryQs9BzHToaXcOntVlh6KUHjm15G4/edit#gid=2096495459
89
'white',
910
'black',
1011
'red',
11-
'blue',
1212
'gray',
13+
'silver',
1314
'grey',
1415
'green',
15-
'rebeccapurple',
16-
'yellow',
1716
'orange',
18-
19-
'aliceblue',
20-
'antiquewhite',
21-
'aqua',
22-
'aquamarine',
23-
'azure',
24-
'beige',
25-
'bisque',
26-
'blanchedalmond',
27-
'blueviolet',
17+
'blue',
18+
'dimgray',
19+
'whitesmoke',
20+
'lightgray',
21+
'lightgrey',
22+
'yellow',
23+
'gold',
24+
'pink',
25+
'gainsboro',
26+
'magenta',
27+
'purple',
28+
'darkgray',
29+
'navy',
30+
'darkred',
31+
'teal',
32+
'maroon',
33+
'darkgrey',
34+
'tomato',
35+
'darkorange',
2836
'brown',
29-
'burlywood',
30-
'cadetblue',
31-
'chartreuse',
32-
'chocolate',
33-
'coral',
34-
'cornflowerblue',
35-
'cornsilk',
3637
'crimson',
37-
'cyan',
38+
'lightyellow',
39+
'slategray',
40+
'salmon',
41+
'lightgreen',
42+
'lightblue',
43+
'orangered',
44+
'aliceblue',
45+
'dodgerblue',
46+
'lime',
3847
'darkblue',
39-
'darkcyan',
4048
'darkgoldenrod',
41-
'darkgray',
49+
'skyblue',
50+
'royalblue',
4251
'darkgreen',
43-
'darkgrey',
44-
'darkkhaki',
45-
'darkmagenta',
46-
'darkolivegreen',
47-
'darkorange',
48-
'darkorchid',
49-
'darkred',
50-
'darksalmon',
51-
'darkseagreen',
52-
'darkslateblue',
53-
'darkslategray',
54-
'darkslategrey',
55-
'darkturquoise',
56-
'darkviolet',
57-
'deeppink',
58-
'deepskyblue',
59-
'dimgray',
52+
'ivory',
53+
'olive',
54+
'aqua',
55+
'turquoise',
56+
'cyan',
57+
'khaki',
58+
'beige',
59+
'snow',
60+
'ghostwhite',
61+
'limegreen',
62+
'coral',
6063
'dimgrey',
61-
'dodgerblue',
64+
'hotpink',
65+
'midnightblue',
6266
'firebrick',
63-
'floralwhite',
67+
'indigo',
68+
'wheat',
69+
'mediumblue',
70+
'lightpink',
71+
'plum',
72+
'azure',
73+
'violet',
74+
'lavender',
75+
'deepskyblue',
76+
'darkslategrey',
77+
'goldenrod',
78+
'cornflowerblue',
79+
'lightskyblue',
80+
'indianred',
81+
'yellowgreen',
82+
'saddlebrown',
83+
'palegreen',
84+
'bisque',
85+
'tan',
86+
'antiquewhite',
87+
'steelblue',
6488
'forestgreen',
6589
'fuchsia',
66-
'gainsboro',
67-
'ghostwhite',
68-
'gold',
69-
'goldenrod',
90+
'mediumaquamarine',
91+
'seagreen',
92+
'sienna',
93+
'deeppink',
94+
'mediumseagreen',
95+
'peru',
7096
'greenyellow',
71-
'honeydew',
72-
'hotpink',
73-
'indianred',
74-
'indigo',
75-
'ivory',
76-
'khaki',
77-
'lavender',
78-
'lavenderblush',
79-
'lawngreen',
80-
'lemonchiffon',
81-
'lightblue',
82-
'lightcoral',
83-
'lightcyan',
8497
'lightgoldenrodyellow',
85-
'lightgray',
86-
'lightgreen',
87-
'lightgrey',
88-
'lightpink',
89-
'lightsalmon',
90-
'lightseagreen',
91-
'lightskyblue',
92-
'lightslategray',
93-
'lightslategrey',
98+
'orchid',
99+
'cadetblue',
100+
'navajowhite',
94101
'lightsteelblue',
95-
'lightyellow',
96-
'lime',
97-
'limegreen',
102+
'slategrey',
98103
'linen',
99-
'magenta',
100-
'maroon',
101-
'mediumaquamarine',
102-
'mediumblue',
103-
'mediumorchid',
104+
'lightseagreen',
105+
'darkcyan',
106+
'lightcoral',
107+
'aquamarine',
108+
'blueviolet',
109+
'cornsilk',
110+
'lightsalmon',
111+
'chocolate',
112+
'lightslategray',
113+
'floralwhite',
114+
'darkturquoise',
115+
'darkslategray',
116+
'rebeccapurple',
117+
'burlywood',
118+
'chartreuse',
119+
'lightcyan',
120+
'lemonchiffon',
121+
'palevioletred',
122+
'darkslateblue',
104123
'mediumpurple',
105-
'mediumseagreen',
106-
'mediumslateblue',
107-
'mediumspringgreen',
108-
'mediumturquoise',
109-
'mediumvioletred',
110-
'midnightblue',
111-
'mintcream',
124+
'lawngreen',
125+
'slateblue',
126+
'darkseagreen',
127+
'blanchedalmond',
112128
'mistyrose',
113-
'moccasin',
114-
'navajowhite',
115-
'navy',
116-
'oldlace',
117-
'olive',
129+
'darkolivegreen',
130+
'seashell',
118131
'olivedrab',
119-
'orangered',
120-
'orchid',
121-
'palegoldenrod',
122-
'palegreen',
123-
'paleturquoise',
124-
'palevioletred',
125-
'papayawhip',
126132
'peachpuff',
127-
'peru',
128-
'pink',
129-
'plum',
133+
'darkviolet',
130134
'powderblue',
131-
'purple',
132-
'rosybrown',
133-
'royalblue',
134-
'saddlebrown',
135-
'salmon',
135+
'darkmagenta',
136+
'lightslategrey',
137+
'honeydew',
138+
'palegoldenrod',
139+
'darkkhaki',
140+
'oldlace',
141+
'mintcream',
136142
'sandybrown',
137-
'seagreen',
138-
'seashell',
139-
'sienna',
140-
'silver',
141-
'skyblue',
142-
'slateblue',
143-
'slategray',
144-
'slategrey',
145-
'snow',
146-
'springgreen',
147-
'steelblue',
148-
'tan',
149-
'teal',
143+
'mediumturquoise',
144+
'papayawhip',
145+
'paleturquoise',
146+
'mediumvioletred',
150147
'thistle',
151-
'tomato',
152-
'turquoise',
153-
'violet',
154-
'wheat',
155-
'whitesmoke',
156-
'yellowgreen',
148+
'springgreen',
149+
'moccasin',
150+
'rosybrown',
151+
'lavenderblush',
152+
'mediumslateblue',
153+
'darkorchid',
154+
'mediumorchid',
155+
'darksalmon',
156+
'mediumspringgreen',
157157
])
158158

159159
export const systemColors = new KeywordSet([
160160
// CSS System Colors
161161
// Spec: https://drafts.csswg.org/css-color/#css-system-colors
162+
// TODO: Deprecated CSS System colors
163+
// Spec: https://drafts.csswg.org/css-color/#deprecated-system-colors
164+
'background',
165+
'buttontext',
166+
'highlight',
167+
'windowtext',
168+
'graytext',
169+
'highlighttext',
170+
'buttonface',
171+
'window',
172+
'buttonshadow',
173+
'buttonhighlight',
174+
'menu',
175+
'windowframe',
176+
'activeborder',
177+
'infotext',
178+
'infobackground',
179+
'activecaption',
180+
'menutext',
181+
'scrollbar',
182+
'inactivecaption',
183+
'appworkspace',
184+
'inactiveborder',
185+
'inactivecaptiontext',
162186
'canvas',
163187
'canvastext',
164188
'linktext',
165189
'visitedtext',
166190
'activetext',
167-
'buttonface',
168-
'buttontext',
169191
'buttonborder',
170192
'field',
171193
'fieldtext',
172-
'highlight',
173-
'highlighttext',
174194
'selecteditem',
175195
'selecteditemtext',
176196
'mark',
177197
'marktext',
178-
'graytext',
179-
180-
// TODO: Deprecated CSS System colors
181-
// Spec: https://drafts.csswg.org/css-color/#deprecated-system-colors
182198
])
183199

184200
export const colorFunctions = new KeywordSet([
185-
'rgb',
186201
'rgba',
187-
'hsl',
202+
'rgb',
188203
'hsla',
204+
'hsl',
205+
'color',
189206
'hwb',
190-
'lab',
191207
'lch',
208+
'lab',
192209
'oklab',
193210
'oklch',
194-
'color',
195211
])
196212

197213
export const colorKeywords = new KeywordSet([

0 commit comments

Comments
 (0)