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