1 | 'use strict';
|
2 |
|
3 | const keywordSets = {};
|
4 |
|
5 | keywordSets.nonLengthUnits = new Set([
|
6 |
|
7 | '%',
|
8 |
|
9 | 's',
|
10 | 'ms',
|
11 |
|
12 | 'deg',
|
13 | 'grad',
|
14 | 'turn',
|
15 | 'rad',
|
16 |
|
17 | 'Hz',
|
18 | 'kHz',
|
19 |
|
20 | 'dpi',
|
21 | 'dpcm',
|
22 | 'dppx',
|
23 | ]);
|
24 |
|
25 | keywordSets.lengthUnits = new Set([
|
26 |
|
27 | 'em',
|
28 | 'ex',
|
29 | 'ch',
|
30 | 'rem',
|
31 |
|
32 | 'vh',
|
33 | 'vw',
|
34 | 'vmin',
|
35 | 'vmax',
|
36 | 'vm',
|
37 |
|
38 | 'px',
|
39 | 'mm',
|
40 | 'cm',
|
41 | 'in',
|
42 | 'pt',
|
43 | 'pc',
|
44 | 'q',
|
45 |
|
46 | 'fr',
|
47 | ]);
|
48 |
|
49 | keywordSets.units = uniteSets(keywordSets.nonLengthUnits, keywordSets.lengthUnits);
|
50 |
|
51 | keywordSets.colorFunctionNames = new Set(['rgb', 'rgba', 'hsl', 'hsla', 'hwb', 'gray']);
|
52 |
|
53 | keywordSets.camelCaseFunctionNames = new Set([
|
54 | 'translateX',
|
55 | 'translateY',
|
56 | 'translateZ',
|
57 | 'scaleX',
|
58 | 'scaleY',
|
59 | 'scaleZ',
|
60 | 'rotateX',
|
61 | 'rotateY',
|
62 | 'rotateZ',
|
63 | 'skewX',
|
64 | 'skewY',
|
65 | ]);
|
66 |
|
67 | keywordSets.basicKeywords = new Set(['initial', 'inherit', 'unset']);
|
68 |
|
69 | keywordSets.systemFontValues = uniteSets(keywordSets.basicKeywords, [
|
70 | 'caption',
|
71 | 'icon',
|
72 | 'menu',
|
73 | 'message-box',
|
74 | 'small-caption',
|
75 | 'status-bar',
|
76 | ]);
|
77 |
|
78 | keywordSets.fontFamilyKeywords = uniteSets(keywordSets.basicKeywords, [
|
79 | 'serif',
|
80 | 'sans-serif',
|
81 | 'cursive',
|
82 | 'fantasy',
|
83 | 'monospace',
|
84 | 'system-ui',
|
85 | ]);
|
86 |
|
87 | keywordSets.fontWeightRelativeKeywords = new Set(['bolder', 'lighter']);
|
88 |
|
89 | keywordSets.fontWeightAbsoluteKeywords = new Set(['bold']);
|
90 |
|
91 | keywordSets.fontWeightNumericKeywords = new Set([
|
92 | '100',
|
93 | '200',
|
94 | '300',
|
95 | '400',
|
96 | '500',
|
97 | '600',
|
98 | '700',
|
99 | '800',
|
100 | '900',
|
101 | ]);
|
102 |
|
103 | keywordSets.fontWeightKeywords = uniteSets(
|
104 | keywordSets.basicKeywords,
|
105 | keywordSets.fontWeightRelativeKeywords,
|
106 | keywordSets.fontWeightAbsoluteKeywords,
|
107 | keywordSets.fontWeightNumericKeywords,
|
108 | );
|
109 |
|
110 | keywordSets.animationNameKeywords = uniteSets(keywordSets.basicKeywords, ['none']);
|
111 |
|
112 | keywordSets.animationTimingFunctionKeywords = uniteSets(keywordSets.basicKeywords, [
|
113 | 'linear',
|
114 | 'ease',
|
115 | 'ease-in',
|
116 | 'ease-in-out',
|
117 | 'ease-out',
|
118 | 'step-start',
|
119 | 'step-end',
|
120 | 'steps',
|
121 | 'cubic-bezier',
|
122 | ]);
|
123 |
|
124 | keywordSets.animationIterationCountKeywords = new Set(['infinite']);
|
125 |
|
126 | keywordSets.animationDirectionKeywords = uniteSets(keywordSets.basicKeywords, [
|
127 | 'normal',
|
128 | 'reverse',
|
129 | 'alternate',
|
130 | 'alternate-reverse',
|
131 | ]);
|
132 |
|
133 | keywordSets.animationFillModeKeywords = new Set(['none', 'forwards', 'backwards', 'both']);
|
134 |
|
135 | keywordSets.animationPlayStateKeywords = uniteSets(keywordSets.basicKeywords, [
|
136 | 'running',
|
137 | 'paused',
|
138 | ]);
|
139 |
|
140 |
|
141 | keywordSets.animationShorthandKeywords = uniteSets(
|
142 | keywordSets.basicKeywords,
|
143 | keywordSets.animationNameKeywords,
|
144 | keywordSets.animationTimingFunctionKeywords,
|
145 | keywordSets.animationIterationCountKeywords,
|
146 | keywordSets.animationDirectionKeywords,
|
147 | keywordSets.animationFillModeKeywords,
|
148 | keywordSets.animationPlayStateKeywords,
|
149 | );
|
150 |
|
151 |
|
152 | keywordSets.levelOneAndTwoPseudoElements = new Set([
|
153 | 'before',
|
154 | 'after',
|
155 | 'first-line',
|
156 | 'first-letter',
|
157 | ]);
|
158 |
|
159 |
|
160 | keywordSets.levelThreePseudoElements = new Set([
|
161 | 'before',
|
162 | 'after',
|
163 | 'first-line',
|
164 | 'first-letter',
|
165 | 'selection',
|
166 | 'spelling-error',
|
167 | 'grammar-error',
|
168 | 'backdrop',
|
169 | 'marker',
|
170 | 'placeholder',
|
171 | 'shadow',
|
172 | 'slotted',
|
173 | 'content',
|
174 | ]);
|
175 |
|
176 | keywordSets.shadowTreePseudoElements = new Set(['part']);
|
177 |
|
178 | keywordSets.vendorSpecificPseudoElements = new Set([
|
179 | '-moz-progress-bar',
|
180 | '-moz-range-progress',
|
181 | '-moz-range-thumb',
|
182 | '-moz-range-track',
|
183 | '-ms-browse',
|
184 | '-ms-check',
|
185 | '-ms-clear',
|
186 | '-ms-expand',
|
187 | '-ms-fill',
|
188 | '-ms-fill-lower',
|
189 | '-ms-fill-upper',
|
190 | '-ms-reveal',
|
191 | '-ms-thumb',
|
192 | '-ms-ticks-after',
|
193 | '-ms-ticks-before',
|
194 | '-ms-tooltip',
|
195 | '-ms-track',
|
196 | '-ms-value',
|
197 | '-webkit-progress-bar',
|
198 | '-webkit-progress-value',
|
199 | '-webkit-slider-runnable-track',
|
200 | '-webkit-slider-thumb',
|
201 | ]);
|
202 |
|
203 | keywordSets.pseudoElements = uniteSets(
|
204 | keywordSets.levelOneAndTwoPseudoElements,
|
205 | keywordSets.levelThreePseudoElements,
|
206 | keywordSets.vendorSpecificPseudoElements,
|
207 | keywordSets.shadowTreePseudoElements,
|
208 | );
|
209 |
|
210 | keywordSets.aNPlusBNotationPseudoClasses = new Set([
|
211 | 'nth-child',
|
212 | 'nth-column',
|
213 | 'nth-last-child',
|
214 | 'nth-last-column',
|
215 | 'nth-last-of-type',
|
216 | 'nth-of-type',
|
217 | ]);
|
218 |
|
219 | keywordSets.linguisticPseudoClasses = new Set(['dir', 'lang']);
|
220 |
|
221 | keywordSets.atRulePagePseudoClasses = new Set(['first', 'right', 'left', 'blank']);
|
222 |
|
223 | keywordSets.otherPseudoClasses = new Set([
|
224 | 'active',
|
225 | 'any-link',
|
226 | 'blank',
|
227 | 'checked',
|
228 | 'contains',
|
229 | 'current',
|
230 | 'default',
|
231 | 'defined',
|
232 | 'disabled',
|
233 | 'drop',
|
234 | 'empty',
|
235 | 'enabled',
|
236 | 'first-child',
|
237 | 'first-of-type',
|
238 | 'focus',
|
239 | 'focus-ring',
|
240 | 'focus-within',
|
241 | 'focus-visible',
|
242 | 'fullscreen',
|
243 | 'future',
|
244 | 'has',
|
245 | 'host',
|
246 | 'host-context',
|
247 | 'hover',
|
248 | 'indeterminate',
|
249 | 'in-range',
|
250 | 'invalid',
|
251 | 'is',
|
252 | 'last-child',
|
253 | 'last-of-type',
|
254 | 'link',
|
255 | 'matches',
|
256 | 'not',
|
257 | 'only-child',
|
258 | 'only-of-type',
|
259 | 'optional',
|
260 | 'out-of-range',
|
261 | 'past',
|
262 | 'placeholder-shown',
|
263 | 'playing',
|
264 | 'paused',
|
265 | 'read-only',
|
266 | 'read-write',
|
267 | 'required',
|
268 | 'root',
|
269 | 'scope',
|
270 | 'target',
|
271 | 'user-error',
|
272 | 'user-invalid',
|
273 | 'val',
|
274 | 'valid',
|
275 | 'visited',
|
276 | ]);
|
277 |
|
278 | keywordSets.webkitProprietaryPseudoElements = new Set([
|
279 | 'scrollbar',
|
280 | 'scrollbar-button',
|
281 | 'scrollbar-track',
|
282 | 'scrollbar-track-piece',
|
283 | 'scrollbar-thumb',
|
284 | 'scrollbar-corner',
|
285 | 'resize',
|
286 | ]);
|
287 |
|
288 | keywordSets.webkitProprietaryPseudoClasses = new Set([
|
289 | 'horizontal',
|
290 | 'vertical',
|
291 | 'decrement',
|
292 | 'increment',
|
293 | 'start',
|
294 | 'end',
|
295 | 'double-button',
|
296 | 'single-button',
|
297 | 'no-button',
|
298 | 'corner-present',
|
299 | 'window-inactive',
|
300 | ]);
|
301 |
|
302 | keywordSets.pseudoClasses = uniteSets(
|
303 | keywordSets.aNPlusBNotationPseudoClasses,
|
304 | keywordSets.linguisticPseudoClasses,
|
305 | keywordSets.otherPseudoClasses,
|
306 | );
|
307 |
|
308 | keywordSets.shorthandTimeProperties = new Set(['transition', 'animation']);
|
309 |
|
310 | keywordSets.longhandTimeProperties = new Set([
|
311 | 'transition-duration',
|
312 | 'transition-delay',
|
313 | 'animation-duration',
|
314 | 'animation-delay',
|
315 | ]);
|
316 |
|
317 | keywordSets.timeProperties = uniteSets(
|
318 | keywordSets.shorthandTimeProperties,
|
319 | keywordSets.longhandTimeProperties,
|
320 | );
|
321 |
|
322 | keywordSets.camelCaseKeywords = new Set([
|
323 | 'optimizeSpeed',
|
324 | 'optimizeQuality',
|
325 | 'optimizeLegibility',
|
326 | 'geometricPrecision',
|
327 | 'currentColor',
|
328 | 'crispEdges',
|
329 | 'visiblePainted',
|
330 | 'visibleFill',
|
331 | 'visibleStroke',
|
332 | 'sRGB',
|
333 | 'linearRGB',
|
334 | ]);
|
335 |
|
336 |
|
337 | keywordSets.counterIncrementKeywords = uniteSets(keywordSets.basicKeywords, ['none']);
|
338 |
|
339 | keywordSets.counterResetKeywords = uniteSets(keywordSets.basicKeywords, ['none']);
|
340 |
|
341 | keywordSets.gridRowKeywords = uniteSets(keywordSets.basicKeywords, ['auto', 'span']);
|
342 |
|
343 | keywordSets.gridColumnKeywords = uniteSets(keywordSets.basicKeywords, ['auto', 'span']);
|
344 |
|
345 | keywordSets.gridAreaKeywords = uniteSets(keywordSets.basicKeywords, ['auto', 'span']);
|
346 |
|
347 |
|
348 | keywordSets.listStyleTypeKeywords = uniteSets(keywordSets.basicKeywords, [
|
349 | 'none',
|
350 | 'disc',
|
351 | 'circle',
|
352 | 'square',
|
353 | 'decimal',
|
354 | 'cjk-decimal',
|
355 | 'decimal-leading-zero',
|
356 | 'lower-roman',
|
357 | 'upper-roman',
|
358 | 'lower-greek',
|
359 | 'lower-alpha',
|
360 | 'lower-latin',
|
361 | 'upper-alpha',
|
362 | 'upper-latin',
|
363 | 'arabic-indic',
|
364 | 'armenian',
|
365 | 'bengali',
|
366 | 'cambodian',
|
367 | 'cjk-earthly-branch',
|
368 | 'cjk-ideographic',
|
369 | 'devanagari',
|
370 | 'ethiopic-numeric',
|
371 | 'georgian',
|
372 | 'gujarati',
|
373 | 'gurmukhi',
|
374 | 'hebrew',
|
375 | 'hiragana',
|
376 | 'hiragana-iroha',
|
377 | 'japanese-formal',
|
378 | 'japanese-informal',
|
379 | 'kannada',
|
380 | 'katakana',
|
381 | 'katakana-iroha',
|
382 | 'khmer',
|
383 | 'korean-hangul-formal',
|
384 | 'korean-hanja-formal',
|
385 | 'korean-hanja-informal',
|
386 | 'lao',
|
387 | 'lower-armenian',
|
388 | 'malayalam',
|
389 | 'mongolian',
|
390 | 'myanmar',
|
391 | 'oriya',
|
392 | 'persian',
|
393 | 'simp-chinese-formal',
|
394 | 'simp-chinese-informal',
|
395 | 'tamil',
|
396 | 'telugu',
|
397 | 'thai',
|
398 | 'tibetan',
|
399 | 'trad-chinese-formal',
|
400 | 'trad-chinese-informal',
|
401 | 'upper-armenian',
|
402 | 'disclosure-open',
|
403 | 'disclosure-closed',
|
404 |
|
405 | 'ethiopic-halehame',
|
406 | 'ethiopic-halehame-am',
|
407 | 'ethiopic-halehame-ti-er',
|
408 | 'ethiopic-halehame-ti-et',
|
409 | 'hangul',
|
410 | 'hangul-consonant',
|
411 | 'urdu',
|
412 | ]);
|
413 |
|
414 | keywordSets.listStylePositionKeywords = uniteSets(keywordSets.basicKeywords, ['inside', 'outside']);
|
415 |
|
416 | keywordSets.listStyleImageKeywords = uniteSets(keywordSets.basicKeywords, ['none']);
|
417 |
|
418 | keywordSets.listStyleShorthandKeywords = uniteSets(
|
419 | keywordSets.basicKeywords,
|
420 | keywordSets.listStyleTypeKeywords,
|
421 | keywordSets.listStylePositionKeywords,
|
422 | keywordSets.listStyleImageKeywords,
|
423 | );
|
424 |
|
425 | keywordSets.fontStyleKeywords = uniteSets(keywordSets.basicKeywords, [
|
426 | 'normal',
|
427 | 'italic',
|
428 | 'oblique',
|
429 | ]);
|
430 |
|
431 | keywordSets.fontVariantKeywords = uniteSets(keywordSets.basicKeywords, [
|
432 | 'normal',
|
433 | 'none',
|
434 | 'historical-forms',
|
435 | 'none',
|
436 | 'common-ligatures',
|
437 | 'no-common-ligatures',
|
438 | 'discretionary-ligatures',
|
439 | 'no-discretionary-ligatures',
|
440 | 'historical-ligatures',
|
441 | 'no-historical-ligatures',
|
442 | 'contextual',
|
443 | 'no-contextual',
|
444 | 'small-caps',
|
445 | 'small-caps',
|
446 | 'all-small-caps',
|
447 | 'petite-caps',
|
448 | 'all-petite-caps',
|
449 | 'unicase',
|
450 | 'titling-caps',
|
451 | 'lining-nums',
|
452 | 'oldstyle-nums',
|
453 | 'proportional-nums',
|
454 | 'tabular-nums',
|
455 | 'diagonal-fractions',
|
456 | 'stacked-fractions',
|
457 | 'ordinal',
|
458 | 'slashed-zero',
|
459 | 'jis78',
|
460 | 'jis83',
|
461 | 'jis90',
|
462 | 'jis04',
|
463 | 'simplified',
|
464 | 'traditional',
|
465 | 'full-width',
|
466 | 'proportional-width',
|
467 | 'ruby',
|
468 | ]);
|
469 |
|
470 | keywordSets.fontStretchKeywords = uniteSets(keywordSets.basicKeywords, [
|
471 | 'semi-condensed',
|
472 | 'condensed',
|
473 | 'extra-condensed',
|
474 | 'ultra-condensed',
|
475 | 'semi-expanded',
|
476 | 'expanded',
|
477 | 'extra-expanded',
|
478 | 'ultra-expanded',
|
479 | ]);
|
480 |
|
481 | keywordSets.fontSizeKeywords = uniteSets(keywordSets.basicKeywords, [
|
482 | 'xx-small',
|
483 | 'x-small',
|
484 | 'small',
|
485 | 'medium',
|
486 | 'large',
|
487 | 'x-large',
|
488 | 'xx-large',
|
489 | 'larger',
|
490 | 'smaller',
|
491 | ]);
|
492 |
|
493 | keywordSets.lineHeightKeywords = uniteSets(keywordSets.basicKeywords, ['normal']);
|
494 |
|
495 | keywordSets.fontShorthandKeywords = uniteSets(
|
496 | keywordSets.basicKeywords,
|
497 | keywordSets.fontStyleKeywords,
|
498 | keywordSets.fontVariantKeywords,
|
499 | keywordSets.fontWeightKeywords,
|
500 | keywordSets.fontStretchKeywords,
|
501 | keywordSets.fontSizeKeywords,
|
502 | keywordSets.lineHeightKeywords,
|
503 | keywordSets.fontFamilyKeywords,
|
504 | );
|
505 |
|
506 | keywordSets.keyframeSelectorKeywords = new Set(['from', 'to']);
|
507 |
|
508 |
|
509 | keywordSets.pageMarginAtRules = new Set([
|
510 | 'top-left-corner',
|
511 | 'top-left',
|
512 | 'top-center',
|
513 | 'top-right',
|
514 | 'top-right-corner',
|
515 | 'bottom-left-corner',
|
516 | 'bottom-left',
|
517 | 'bottom-center',
|
518 | 'bottom-right',
|
519 | 'bottom-right-corner',
|
520 | 'left-top',
|
521 | 'left-middle',
|
522 | 'left-bottom',
|
523 | 'right-top',
|
524 | 'right-middle',
|
525 | 'right-bottom',
|
526 | ]);
|
527 |
|
528 |
|
529 | keywordSets.atRules = uniteSets(keywordSets.pageMarginAtRules, [
|
530 | 'annotation',
|
531 | 'apply',
|
532 | 'character-variant',
|
533 | 'charset',
|
534 | 'counter-style',
|
535 | 'custom-media',
|
536 | 'custom-selector',
|
537 | 'document',
|
538 | 'font-face',
|
539 | 'font-feature-values',
|
540 | 'import',
|
541 | 'keyframes',
|
542 | 'media',
|
543 | 'namespace',
|
544 | 'nest',
|
545 | 'ornaments',
|
546 | 'page',
|
547 | 'styleset',
|
548 | 'stylistic',
|
549 | 'supports',
|
550 | 'swash',
|
551 | 'viewport',
|
552 | ]);
|
553 |
|
554 |
|
555 | keywordSets.deprecatedMediaFeatureNames = new Set([
|
556 | 'device-aspect-ratio',
|
557 | 'device-height',
|
558 | 'device-width',
|
559 | 'max-device-aspect-ratio',
|
560 | 'max-device-height',
|
561 | 'max-device-width',
|
562 | 'min-device-aspect-ratio',
|
563 | 'min-device-height',
|
564 | 'min-device-width',
|
565 | ]);
|
566 |
|
567 |
|
568 | keywordSets.mediaFeatureNames = uniteSets(keywordSets.deprecatedMediaFeatureNames, [
|
569 | 'any-hover',
|
570 | 'any-pointer',
|
571 | 'aspect-ratio',
|
572 | 'color',
|
573 | 'color-gamut',
|
574 | 'color-index',
|
575 | 'forced-colors',
|
576 | 'grid',
|
577 | 'height',
|
578 | 'hover',
|
579 | 'inverted-colors',
|
580 | 'light-level',
|
581 | 'max-aspect-ratio',
|
582 | 'max-color',
|
583 | 'max-color-index',
|
584 | 'max-height',
|
585 | 'max-monochrome',
|
586 | 'max-resolution',
|
587 | 'max-width',
|
588 | 'min-aspect-ratio',
|
589 | 'min-color',
|
590 | 'min-color-index',
|
591 | 'min-height',
|
592 | 'min-monochrome',
|
593 | 'min-resolution',
|
594 | 'min-width',
|
595 | 'monochrome',
|
596 | 'orientation',
|
597 | 'overflow-block',
|
598 | 'overflow-inline',
|
599 | 'pointer',
|
600 | 'prefers-color-scheme',
|
601 | 'prefers-reduced-motion',
|
602 | 'prefers-reduced-transparency',
|
603 | 'resolution',
|
604 | 'scan',
|
605 | 'scripting',
|
606 | 'update',
|
607 | 'width',
|
608 | ]);
|
609 |
|
610 |
|
611 | keywordSets.systemColors = new Set([
|
612 | 'activeborder',
|
613 | 'activecaption',
|
614 | 'appworkspace',
|
615 | 'background',
|
616 | 'buttonface',
|
617 | 'buttonhighlight',
|
618 | 'buttonshadow',
|
619 | 'buttontext',
|
620 | 'captiontext',
|
621 | 'graytext',
|
622 | 'highlight',
|
623 | 'highlighttext',
|
624 | 'inactiveborder',
|
625 | 'inactivecaption',
|
626 | 'inactivecaptiontext',
|
627 | 'infobackground',
|
628 | 'infotext',
|
629 | 'menu',
|
630 | 'menutext',
|
631 | 'scrollbar',
|
632 | 'threeddarkshadow',
|
633 | 'threedface',
|
634 | 'threedhighlight',
|
635 | 'threedlightshadow',
|
636 | 'threedshadow',
|
637 | 'window',
|
638 | 'windowframe',
|
639 | 'windowtext',
|
640 | ]);
|
641 |
|
642 |
|
643 | keywordSets.nonStandardHtmlTags = new Set([
|
644 | 'acronym',
|
645 | 'applet',
|
646 | 'basefont',
|
647 | 'big',
|
648 | 'blink',
|
649 | 'center',
|
650 | 'content',
|
651 | 'dir',
|
652 | 'font',
|
653 | 'frame',
|
654 | 'frameset',
|
655 | 'hgroup',
|
656 | 'isindex',
|
657 | 'keygen',
|
658 | 'listing',
|
659 | 'marquee',
|
660 | 'noembed',
|
661 | 'plaintext',
|
662 | 'spacer',
|
663 | 'strike',
|
664 | 'tt',
|
665 | 'xmp',
|
666 | ]);
|
667 |
|
668 |
|
669 |
|
670 |
|
671 | function uniteSets(...args) {
|
672 | return new Set(
|
673 | Array.from(args).reduce((/** @type {string[]} */ result, set) => {
|
674 | return result.concat(Array.from(set));
|
675 | }, []),
|
676 | );
|
677 | }
|
678 |
|
679 | module.exports = keywordSets;
|