3 const _ = require("lodash");
5 const keywordSets = {};
7 keywordSets.nonLengthUnits = new Set([
8 // Relative length units
27 keywordSets.lengthUnits = new Set([
28 // Relative length units
33 // Viewport-percentage lengths
39 // Absolute length units
47 // Flexible length units
51 keywordSets.units = uniteSets(
52 keywordSets.nonLengthUnits,
53 keywordSets.lengthUnits
56 keywordSets.colorFunctionNames = new Set([
65 keywordSets.camelCaseFunctionNames = new Set([
79 keywordSets.basicKeywords = new Set(["initial", "inherit", "unset"]);
81 keywordSets.fontFamilyKeywords = uniteSets(keywordSets.basicKeywords, [
89 keywordSets.fontWeightRelativeKeywords = new Set(["bolder", "lighter"]);
91 keywordSets.fontWeightAbsoluteKeywords = new Set(["bold"]);
93 keywordSets.fontWeightNumericKeywords = new Set([
105 keywordSets.fontWeightKeywords = uniteSets(
106 keywordSets.basicKeywords,
107 keywordSets.fontWeightRelativeKeywords,
108 keywordSets.fontWeightAbsoluteKeywords,
109 keywordSets.fontWeightNumericKeywords
112 keywordSets.animationNameKeywords = uniteSets(keywordSets.basicKeywords, [
116 keywordSets.animationTimingFunctionKeywords = uniteSets(
117 keywordSets.basicKeywords,
131 keywordSets.animationIterationCountKeywords = new Set(["infinite"]);
133 keywordSets.animationDirectionKeywords = uniteSets(keywordSets.basicKeywords, [
140 keywordSets.animationFillModeKeywords = new Set([
147 keywordSets.animationPlayStateKeywords = uniteSets(keywordSets.basicKeywords, [
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
163 // These are the ones that can have single-colon notation
164 keywordSets.levelOneAndTwoPseudoElements = new Set([
171 // These are the ones that require double-colon notation
172 keywordSets.levelThreePseudoElements = new Set([
188 keywordSets.pseudoElements = uniteSets(
189 keywordSets.levelOneAndTwoPseudoElements,
190 keywordSets.levelThreePseudoElements
193 keywordSets.aNPlusBNotationPseudoClasses = new Set([
202 keywordSets.linguisticPseudoClasses = new Set(["dir", "lang"]);
204 keywordSets.atRulePagePseudoClasses = new Set([
211 keywordSets.otherPseudoClasses = new Set([
263 keywordSets.webkitProprietaryPseudoElements = new Set([
267 "scrollbar-track-piece",
273 keywordSets.webkitProprietaryPseudoClasses = new Set([
287 keywordSets.pseudoClasses = uniteSets(
288 keywordSets.aNPlusBNotationPseudoClasses,
289 keywordSets.linguisticPseudoClasses,
290 keywordSets.otherPseudoClasses
293 keywordSets.shorthandTimeProperties = new Set(["transition", "animation"]);
295 keywordSets.longhandTimeProperties = new Set([
296 "transition-duration",
298 "animation-duration",
302 keywordSets.timeProperties = uniteSets(
303 keywordSets.shorthandTimeProperties,
304 keywordSets.longhandTimeProperties
307 keywordSets.camelCaseKeywords = new Set([
310 "optimizeLegibility",
311 "geometricPrecision",
321 // https://developer.mozilla.org/docs/Web/CSS/counter-increment
322 keywordSets.counterIncrementKeywords = uniteSets(keywordSets.basicKeywords, [
326 keywordSets.counterResetKeywords = uniteSets(keywordSets.basicKeywords, [
330 keywordSets.gridRowKeywords = uniteSets(keywordSets.basicKeywords, [
335 keywordSets.gridColumnKeywords = uniteSets(keywordSets.basicKeywords, [
340 keywordSets.gridAreaKeywords = uniteSets(keywordSets.basicKeywords, [
345 // https://developer.mozilla.org/ru/docs/Web/CSS/list-style-type
346 keywordSets.listStyleTypeKeywords = uniteSets(keywordSets.basicKeywords, [
353 "decimal-leading-zero",
365 "cjk-earthly-branch",
381 "korean-hangul-formal",
382 "korean-hanja-formal",
383 "korean-hanja-informal",
391 "simp-chinese-formal",
392 "simp-chinese-informal",
397 "trad-chinese-formal",
398 "trad-chinese-informal",
402 // Non-standard extensions (without prefixe)
404 "ethiopic-halehame-am",
405 "ethiopic-halehame-ti-er",
406 "ethiopic-halehame-ti-et",
412 keywordSets.listStylePositionKeywords = uniteSets(keywordSets.basicKeywords, [
417 keywordSets.listStyleImageKeywords = uniteSets(keywordSets.basicKeywords, [
421 keywordSets.listStyleShorthandKeywords = uniteSets(
422 keywordSets.basicKeywords,
423 keywordSets.listStyleTypeKeywords,
424 keywordSets.listStylePositionKeywords,
425 keywordSets.listStyleImageKeywords
428 keywordSets.fontStyleKeywords = uniteSets(keywordSets.basicKeywords, [
434 keywordSets.fontVariantKeywords = uniteSets(keywordSets.basicKeywords, [
440 "no-common-ligatures",
441 "discretionary-ligatures",
442 "no-discretionary-ligatures",
443 "historical-ligatures",
444 "no-historical-ligatures",
458 "diagonal-fractions",
469 "proportional-width",
473 keywordSets.fontStretchKeywords = uniteSets(keywordSets.basicKeywords, [
484 keywordSets.fontSizeKeywords = uniteSets(keywordSets.basicKeywords, [
496 keywordSets.lineHeightKeywords = uniteSets(keywordSets.basicKeywords, [
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
511 keywordSets.keyframeSelectorKeywords = new Set(["from", "to"]);
513 // https://developer.mozilla.org/en/docs/Web/CSS/At-rule
514 keywordSets.atRules = new Set([
524 "font-feature-values",
539 // https://drafts.csswg.org/mediaqueries/#descdef-media-update
540 keywordSets.deprecatedMediaFeatureNames = new Set([
541 "device-aspect-ratio",
544 "max-device-aspect-ratio",
547 "min-device-aspect-ratio",
552 // https://drafts.csswg.org/mediaqueries/#descdef-media-update
553 keywordSets.mediaFeatureNames = uniteSets(
554 keywordSets.deprecatedMediaFeatureNames,
592 // https://www.w3.org/TR/CSS22/ui.html#system-colors
593 keywordSets.systemColors = new Set([
608 "inactivecaptiontext",
624 // htmlTags includes only "standard" tags. So we augment it with older tags etc.
625 keywordSets.nonStandardHtmlTags = new Set([
650 function uniteSets() {
651 const sets = Array.from(arguments);
654 sets.reduce((result, set) => {
655 return result.concat(_.toArray(set));
660 module.exports = keywordSets;